agent-messenger 1.10.3 β†’ 1.10.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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-messenger",
3
- "version": "1.10.3",
3
+ "version": "1.10.4",
4
4
  "description": "Messaging platform interaction skills for AI agents. Interact with Slack, Discord, and Microsoft Teams - send messages, read channels, manage reactions, upload files, and more through simple CLI interfaces.",
5
5
  "author": {
6
6
  "name": "devxoul",
package/README.md CHANGED
@@ -10,38 +10,40 @@ A unified, agent-friendly CLI for messaging platforms. Zero-config credential ex
10
10
 
11
11
  ## Table of Contents
12
12
 
13
- - [Why Agent Messenger?](#-why-agent-messenger)
14
- - [Installation](#-installation)
15
- - [Agent Skills](#-agent-skills)
13
+ - [Why Agent Messenger?](#why-agent-messenger)
14
+ - [Installation](#installation)
15
+ - [Agent Skills](#agent-skills)
16
16
  - [SkillPad](#skillpad)
17
17
  - [Skills CLI](#skills-cli)
18
18
  - [Claude Code Plugin](#claude-code-plugin)
19
19
  - [OpenCode Plugin](#opencode-plugin)
20
- - [Quick Start](#-quick-start)
21
- - [Supported Platforms](#-supported-platforms)
22
- - [Platform Guides](#-platform-guides)
23
- - [Use Cases](#-use-cases)
20
+ - [Quick Start](#quick-start)
21
+ - [Supported Platforms](#supported-platforms)
22
+ - [Platform Guides](#platform-guides)
23
+ - [Use Cases](#use-cases)
24
24
  - [Gathering Context](#gathering-context)
25
25
  - [Communicating & Reporting](#communicating--reporting)
26
26
  - [Automation & Pipelines](#automation--pipelines)
27
27
  - [...and More](#and-more)
28
- - [Philosophy](#-philosophy)
29
- - [Contributing](#-contributing)
30
- - [License](#-license)
28
+ - [Philosophy](#philosophy)
29
+ - [Contributing](#contributing)
30
+ - [Thanks](#thanks)
31
+ - [License](#license)
31
32
 
32
- ## πŸ€” Why Agent Messenger?
33
+ ## Why Agent Messenger?
33
34
 
34
35
  Messaging platforms only offer Bot tokens for API accessβ€”your AI agent can never act **as you**. Agent Messenger extracts user credentials directly from your installed desktop apps, letting your agent operate on your behalf. Bot tokens are fully supported too for server-side and CI/CD use cases.
35
36
 
36
- - 🎭 **Act as yourself, not a bot** β€” Extracted user tokens let your agent operate on your behalf
37
- - πŸ”‘ **No API keys needed** β€” Automatically extracts credentials from your installed desktop apps
38
- - ⚑ **Zero setup** β€” Credentials are auto-extracted on first command. No manual auth step required
39
- - 🌐 **One interface, multiple platforms** β€” Learn once, use everywhere (Slack, Discord, Teams)
40
- - πŸ€– **AI-agent friendly** β€” JSON output by default, perfect for LLM tool use
41
- - πŸ‘€ **Human friendly too** β€” Add `--pretty` for readable output
42
- - ⚑ **Token efficient** β€” CLI, not MCP. Load only what you need. ([Why not MCP?](#philosophy))
37
+ - **Act as yourself, not a bot** β€” Extracted user tokens let your agent operate on your behalf
38
+ - **No API keys needed** β€” Automatically extracts credentials from your installed desktop apps
39
+ - **Zero setup** β€” Credentials are auto-extracted on first command. No manual auth step required
40
+ - **One interface, multiple platforms** β€” Learn once, use everywhere (Slack, Discord, Teams)
41
+ - **AI-agent friendly** β€” JSON output by default, perfect for LLM tool use
42
+ - **Agent memory** β€” Remembers workspace IDs, channel names, and preferences across sessions
43
+ - **Human friendly too** β€” Add `--pretty` for readable output
44
+ - **Token efficient** β€” CLI, not MCP. Load only what you need. ([Why not MCP?](#philosophy))
43
45
 
44
- ## πŸ“¦ Installation
46
+ ## Installation
45
47
 
46
48
  ```bash
47
49
  npm install -g agent-messenger
@@ -56,7 +58,7 @@ This installs:
56
58
  - `agent-discordbot` β€” Discord Bot CLI (bot token, for server-side/CI/CD)
57
59
  - `agent-teams` β€” Microsoft Teams CLI
58
60
 
59
- ## 🧩 Agent Skills
61
+ ## Agent Skills
60
62
 
61
63
  Agent Messenger includes [Agent Skills](https://agentskills.io/) that teach your AI agent how to use these CLIs effectively. Five skills are available:
62
64
 
@@ -106,7 +108,7 @@ Add to your `opencode.jsonc`:
106
108
  }
107
109
  ```
108
110
 
109
- ## πŸš€ Quick Start
111
+ ## Quick Start
110
112
 
111
113
  Get up and running in 30 seconds:
112
114
 
@@ -120,7 +122,7 @@ agent-slack message send general "Hello from the CLI!"
120
122
 
121
123
  That's it. Credentials are extracted automatically from your Slack desktop app on first run. No OAuth flows. No API tokens. No configuration files.
122
124
 
123
- ## πŸ“‹ Supported Platforms
125
+ ## Supported Platforms
124
126
 
125
127
  | Feature | Slack | Discord | Teams |
126
128
  |---------|:-----:|:-------:|:-----:|
@@ -142,7 +144,7 @@ That's it. Credentials are extracted automatically from your Slack desktop app o
142
144
 
143
145
  > ⚠️ **Teams tokens expire in 60-90 minutes.** Re-run `agent-teams auth extract` to refresh. See [Teams Guide](skills/agent-teams/SKILL.md) for details.
144
146
 
145
- ## πŸ“– Platform Guides
147
+ ## Platform Guides
146
148
 
147
149
  - **[Slack Guide](https://agent-messenger.dev/docs/integrations/slack)** β€” Full command reference for Slack
148
150
  - **[Slack Bot Guide](https://agent-messenger.dev/docs/integrations/slackbot)** β€” Bot token integration for server-side and CI/CD
@@ -150,7 +152,7 @@ That's it. Credentials are extracted automatically from your Slack desktop app o
150
152
  - **[Discord Bot Guide](https://agent-messenger.dev/docs/integrations/discordbot)** β€” Bot token integration for server-side and CI/CD
151
153
  - **[Teams Guide](https://agent-messenger.dev/docs/integrations/teams)** β€” Full command reference for Microsoft Teams
152
154
 
153
- ## πŸ’‘ Use Cases
155
+ ## Use Cases
154
156
 
155
157
  ### Gathering Context
156
158
 
@@ -197,7 +199,7 @@ Wire messaging into your CI, scripts, or agent workflows.
197
199
  ### ...and More
198
200
 
199
201
  These are just starting points. Your agent has full read/write access to Slack, Discord, and Teams β€” anything you'd do manually in a chat app, it can handle for you. If you build something cool with Agent Messenger, [let me know](https://x.com/devxoul)!
200
- ## πŸ’­ Philosophy
202
+ ## Philosophy
201
203
 
202
204
  **Why not MCP?** MCP servers expose all tools at once, bloating context and confusing agents. **[Agent Skills](https://agentskills.io/) + agent-friendly CLI** offer a better approachβ€”load what you need, when you need it. Fewer tokens, cleaner context, better output.
203
205
 
@@ -205,7 +207,7 @@ These are just starting points. Your agent has full read/write access to Slack,
205
207
 
206
208
  Inspired by [agent-browser](https://github.com/vercel-labs/agent-browser) from Vercel Labs.
207
209
 
208
- ## 🀝 Contributing
210
+ ## Contributing
209
211
 
210
212
  ```bash
211
213
  bun install # Install dependencies
@@ -216,6 +218,10 @@ bun lint # Lint
216
218
  bun run build # Build
217
219
  ```
218
220
 
219
- ## πŸ“„ License
221
+ ## Thanks
222
+
223
+ - [@goden-park](https://github.com/goden-park)
224
+
225
+ ## License
220
226
 
221
227
  MIT
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-messenger",
3
- "version": "1.10.3",
3
+ "version": "1.10.4",
4
4
  "description": "Multi-platform messaging CLI for AI agents (Slack, Discord, Teams)",
5
5
  "repository": {
6
6
  "type": "git",
@@ -13,6 +13,7 @@ export declare class TokenExtractor {
13
13
  constructor(platform?: NodeJS.Platform, slackDir?: string, keyCache?: DerivedKeyCache, debugLog?: (message: string) => void);
14
14
  private debug;
15
15
  getSlackDir(): string;
16
+ private findMsixSlackDir;
16
17
  extractCookie(): Promise<string>;
17
18
  extract(): Promise<ExtractedWorkspace[]>;
18
19
  private extractTokensFromLevelDB;
@@ -22,6 +23,8 @@ export declare class TokenExtractor {
22
23
  private extractFromLevelDB;
23
24
  private extractViaClassicLevelCopy;
24
25
  private extractViaClassicLevel;
26
+ private extractTokensFromBlobFiles;
27
+ private findFilesRecursive;
25
28
  private extractTokensFromLDBFiles;
26
29
  private extractTokenFromLogFile;
27
30
  private extractTokenFromBuffer;
@@ -1 +1 @@
1
- {"version":3,"file":"token-extractor.d.ts","sourceRoot":"","sources":["../../../../src/platforms/slack/token-extractor.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAIlE,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AA+BD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,QAAQ,CAAoC;gBAGlD,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,EAC1B,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,eAAe,EAC1B,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI;IAatC,OAAO,CAAC,KAAK;IAIb,WAAW,IAAI,MAAM;IAkCf,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAoBhC,OAAO,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAqChC,wBAAwB;IA8BtC,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,YAAY;YASN,kBAAkB;YAclB,0BAA0B;YA2B1B,sBAAsB;IAyBpC,OAAO,CAAC,yBAAyB;IAoCjC,OAAO,CAAC,uBAAuB;IAmC/B,OAAO,CAAC,sBAAsB;IA8F9B,OAAO,CAAC,eAAe;IAmBvB,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,gBAAgB;YAqBV,uBAAuB;IAerC,OAAO,CAAC,gBAAgB;IAwExB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IA6BlD,OAAO,CAAC,gBAAgB;IAuBxB,OAAO,CAAC,qBAAqB;IAiB7B,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IA2BzD,mBAAmB,IAAI,MAAM,GAAG,IAAI;IA0BpC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAyB9C,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,aAAa,CAAQ;YAEf,kBAAkB;IA0BhC,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,yBAAyB;IAwB3B,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAKpC,mBAAmB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAyB9C"}
1
+ {"version":3,"file":"token-extractor.d.ts","sourceRoot":"","sources":["../../../../src/platforms/slack/token-extractor.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAIlE,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAgCD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,QAAQ,CAAoC;gBAGlD,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,EAC1B,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,eAAe,EAC1B,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI;IAatC,OAAO,CAAC,KAAK;IAIb,WAAW,IAAI,MAAM;IAyCrB,OAAO,CAAC,gBAAgB;IAuClB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAoBhC,OAAO,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAqChC,wBAAwB;IAkCtC,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,YAAY;YASN,kBAAkB;YAclB,0BAA0B;YA2B1B,sBAAsB;IAyBpC,OAAO,CAAC,0BAA0B;IAkClC,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,yBAAyB;IAoCjC,OAAO,CAAC,uBAAuB;IAmC/B,OAAO,CAAC,sBAAsB;IA8F9B,OAAO,CAAC,eAAe;IAmBvB,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,gBAAgB;YAqBV,uBAAuB;IAerC,OAAO,CAAC,gBAAgB;IAwExB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IA6BlD,OAAO,CAAC,gBAAgB;IAuBxB,OAAO,CAAC,qBAAqB;IAiB7B,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IA2BzD,mBAAmB,IAAI,MAAM,GAAG,IAAI;IA0BpC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAyB9C,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,aAAa,CAAQ;YAEf,kBAAkB;IA0BhC,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,yBAAyB;IAwB3B,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAKpC,mBAAmB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAyB9C"}
@@ -13,6 +13,7 @@ const SOURCE_PRIORITY = {
13
13
  'json-single': 4,
14
14
  'log-file': 3,
15
15
  'classic-level': 2,
16
+ 'blob-file': 1,
16
17
  'ldb-file': 1,
17
18
  };
18
19
  const DIR_TIER_PRIORITY = {
@@ -55,12 +56,56 @@ export class TokenExtractor {
55
56
  }
56
57
  case 'linux':
57
58
  return join(homedir(), '.config', 'Slack');
58
- case 'win32':
59
+ case 'win32': {
60
+ // Check MSIX (Microsoft Store / GPO) package path first
61
+ const msixPath = this.findMsixSlackDir();
62
+ if (msixPath) {
63
+ return msixPath;
64
+ }
65
+ // Direct download version
59
66
  return join(process.env.APPDATA || join(homedir(), 'AppData', 'Roaming'), 'Slack');
67
+ }
60
68
  default:
61
69
  throw new Error(`Unsupported platform: ${this.platform}`);
62
70
  }
63
71
  }
72
+ findMsixSlackDir() {
73
+ const packagesDir = join(process.env.LOCALAPPDATA || join(homedir(), 'AppData', 'Local'), 'Packages');
74
+ if (!existsSync(packagesDir)) {
75
+ this.debug('MSIX Packages directory not found');
76
+ return null;
77
+ }
78
+ try {
79
+ const entries = readdirSync(packagesDir, { withFileTypes: true });
80
+ let best = null;
81
+ for (const entry of entries) {
82
+ if (!entry.isDirectory() || !entry.name.toLowerCase().includes('slack')) {
83
+ continue;
84
+ }
85
+ const slackData = join(packagesDir, entry.name, 'LocalCache', 'Roaming', 'Slack');
86
+ this.debug(`Found MSIX candidate: ${entry.name}`);
87
+ if (!existsSync(join(slackData, 'storage')) && !existsSync(join(slackData, 'Local Storage'))) {
88
+ this.debug(` No Slack data at ${slackData}`);
89
+ continue;
90
+ }
91
+ const mtime = statSync(slackData).mtimeMs;
92
+ this.debug(` Valid Slack data found (mtime: ${new Date(mtime).toISOString()})`);
93
+ if (!best || mtime > best.mtimeMs) {
94
+ best = { path: slackData, mtimeMs: mtime };
95
+ }
96
+ }
97
+ if (best) {
98
+ this.debug(`Using MSIX Slack dir: ${best.path}`);
99
+ }
100
+ else {
101
+ this.debug('No valid MSIX Slack data found, falling back to APPDATA');
102
+ }
103
+ return best?.path ?? null;
104
+ }
105
+ catch {
106
+ return null;
107
+ }
108
+ }
64
109
  async extractCookie() {
65
110
  if (!existsSync(this.slackDir)) {
66
111
  return '';
@@ -130,6 +175,9 @@ export class TokenExtractor {
130
175
  }
131
176
  catch { }
132
177
  }
178
+ // Chromium offloads large IndexedDB values to external *.indexeddb.blob/ files
179
+ const blobTokens = this.extractTokensFromBlobFiles(baseDir, tier);
180
+ tokens.push(...blobTokens);
133
181
  }
134
182
  return this.deduplicateTokens(tokens);
135
183
  }
@@ -246,6 +294,57 @@ export class TokenExtractor {
246
294
  }
247
295
  return tokens;
248
296
  }
297
+ extractTokensFromBlobFiles(baseDir, dirTier) {
298
+ const tokens = [];
299
+ try {
300
+ const entries = readdirSync(baseDir, { withFileTypes: true });
301
+ for (const entry of entries) {
302
+ if (!entry.isDirectory() || !entry.name.endsWith('.indexeddb.blob'))
303
+ continue;
304
+ const blobDir = join(baseDir, entry.name);
305
+ this.debug(`Scanning blob directory: ${blobDir}`);
306
+ const files = this.findFilesRecursive(blobDir);
307
+ for (const filePath of files) {
308
+ try {
309
+ const stat = statSync(filePath);
310
+ if (stat.size > 10 * 1024 * 1024)
311
+ continue;
312
+ const content = readFileSync(filePath);
313
+ const xoxcMarker = Buffer.from('xoxc-');
314
+ let idx = content.indexOf(xoxcMarker, 0);
315
+ while (idx !== -1) {
316
+ const tokenData = this.extractTokenFromBuffer(content, idx);
317
+ if (tokenData) {
318
+ this.debug(`Found token in blob file: ${filePath}`);
319
+ tokens.push({ ...tokenData, source: 'blob-file', dirTier });
320
+ }
321
+ idx = content.indexOf(xoxcMarker, idx + 5);
322
+ }
323
+ }
324
+ catch { }
325
+ }
326
+ }
327
+ }
328
+ catch { }
329
+ return tokens;
330
+ }
331
+ findFilesRecursive(dir) {
332
+ const files = [];
333
+ try {
334
+ const entries = readdirSync(dir, { withFileTypes: true });
335
+ for (const entry of entries) {
336
+ const fullPath = join(dir, entry.name);
337
+ if (entry.isDirectory()) {
338
+ files.push(...this.findFilesRecursive(fullPath));
339
+ }
340
+ else if (entry.isFile()) {
341
+ files.push(fullPath);
342
+ }
343
+ }
344
+ }
345
+ catch { }
346
+ return files;
347
+ }
249
348
  extractTokensFromLDBFiles(dbPath, dirTier) {
250
349
  const tokens = [];
251
350
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"token-extractor.js","sourceRoot":"","sources":["../../../../src/platforms/slack/token-extractor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token-extractor.js","sourceRoot":"","sources":["../../../../src/platforms/slack/token-extractor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-messenger",
3
- "version": "1.10.3",
3
+ "version": "1.10.4",
4
4
  "description": "Multi-platform messaging CLI for AI agents (Slack, Discord, Teams)",
5
5
  "repository": {
6
6
  "type": "git",
@@ -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: 1.10.3
4
+ version: 1.10.4
5
5
  allowed-tools: Bash(agent-discord:*)
6
6
  metadata:
7
7
  openclaw:
@@ -37,6 +37,8 @@ Credentials are extracted automatically from the Discord desktop app on first us
37
37
 
38
38
  On macOS, the system may prompt for your Keychain password the first time (required to decrypt Discord's stored token). This is a one-time prompt.
39
39
 
40
+ **IMPORTANT**: NEVER guide the user to open a web browser, use DevTools, or manually copy tokens from a browser. Always use `agent-discord auth extract` to obtain tokens from the desktop app.
41
+
40
42
  ### Multi-Server Support
41
43
 
42
44
  ```bash
@@ -53,6 +55,80 @@ agent-discord server current
53
55
  agent-discord auth status
54
56
  ```
55
57
 
58
+ ## Memory
59
+
60
+ 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.
61
+
62
+ ### Reading Memory
63
+
64
+ At the **start of every task**, read `~/.config/agent-messenger/MEMORY.md` using the `Read` tool to load any previously discovered server IDs, channel IDs, user IDs, and preferences.
65
+
66
+ - If the file doesn't exist yet, that's fine β€” proceed without it and create it when you first have useful information to store.
67
+ - If the file can't be read (permissions, missing directory), proceed without memory β€” don't error out.
68
+
69
+ ### Writing Memory
70
+
71
+ After discovering useful information, update `~/.config/agent-messenger/MEMORY.md` using the `Write` tool. Write triggers include:
72
+
73
+ - After discovering server IDs and names (from `server list`, `snapshot`, etc.)
74
+ - After discovering useful channel IDs and names (from `channel list`, `snapshot`, etc.)
75
+ - After discovering user IDs and names (from `user list`, `user me`, etc.)
76
+ - After the user gives you an alias or preference ("call this the dev server", "my main channel is X")
77
+ - After discovering channel structure (categories, voice channels)
78
+
79
+ When writing, include the **complete file content** β€” the `Write` tool overwrites the entire file.
80
+
81
+ ### What to Store
82
+
83
+ - Server IDs with names
84
+ - Channel IDs with names and categories
85
+ - User IDs with display names
86
+ - User-given aliases ("dev server", "announcements channel")
87
+ - Commonly used thread IDs
88
+ - Any user preference expressed during interaction
89
+
90
+ ### What NOT to Store
91
+
92
+ Never store tokens, credentials, or any sensitive data. Never store full message content (just IDs and channel context). Never store file upload contents.
93
+
94
+ ### Handling Stale Data
95
+
96
+ If a memorized ID returns an error (channel not found, server not found), remove it from `MEMORY.md`. Don't blindly trust memorized data β€” verify when something seems off. Prefer re-listing over using a memorized ID that might be stale.
97
+
98
+ ### Format / Example
99
+
100
+ ```markdown
101
+ # Agent Messenger Memory
102
+
103
+ ## Discord Servers
104
+
105
+ - `1234567890123456` β€” Acme Dev (default)
106
+ - `9876543210987654` β€” Open Source Community
107
+
108
+ ## Channels (Acme Dev)
109
+
110
+ - `1111111111111111` β€” #general (General category)
111
+ - `2222222222222222` β€” #engineering (Engineering category)
112
+ - `3333333333333333` β€” #deploys (Engineering category)
113
+
114
+ ## Users (Acme Dev)
115
+
116
+ - `4444444444444444` β€” Alice (server owner)
117
+ - `5555555555555555` β€” Bob
118
+
119
+ ## Aliases
120
+
121
+ - "dev server" β†’ `1234567890123456` (Acme Dev)
122
+ - "deploys" β†’ `3333333333333333` (#deploys in Acme Dev)
123
+
124
+ ## Notes
125
+
126
+ - User prefers --pretty output for snapshots
127
+ - Main server is "Acme Dev"
128
+ ```
129
+
130
+ > Memory lets you skip repeated `channel list` and `server list` calls. When you already know an ID from a previous session, use it directly.
131
+
56
132
  ## Commands
57
133
 
58
134
  ### Auth Commands
@@ -260,7 +260,7 @@ With extracted credentials, agent-discord has the same permissions as you in Dis
260
260
 
261
261
  ## Manual Token Management (Advanced)
262
262
 
263
- If automatic extraction fails, you can manually create credentials:
263
+ If automatic extraction fails, you can manually create the credentials file:
264
264
 
265
265
  ```bash
266
266
  # Create config directory
@@ -284,11 +284,6 @@ EOF
284
284
  chmod 600 ~/.config/agent-messenger/discord-credentials.json
285
285
  ```
286
286
 
287
- To find your token manually:
288
- 1. Open Discord in browser (not desktop app)
289
- 2. Open DevTools -> Network tab
290
- 3. Make any API call (send message, etc.)
291
- 4. Find request to `discord.com/api`
292
- 5. Copy `Authorization` header value
287
+ If the user already has a token value, they can populate the file above. Otherwise, always prefer `agent-discord auth extract` to obtain the token automatically from the desktop app.
293
288
 
294
289
  **Warning**: Self-botting (using user tokens for automation) may violate Discord's Terms of Service. Use responsibly and at your own risk.
@@ -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: 1.10.3
4
+ version: 1.10.4
5
5
  allowed-tools: Bash(agent-discordbot:*)
6
6
  metadata:
7
7
  openclaw:
@@ -108,6 +108,83 @@ agent-discordbot auth remove deploy
108
108
 
109
109
  The `--bot <id>` flag is available on all commands to override the active bot for a single invocation.
110
110
 
111
+ ## Memory
112
+
113
+ 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.
114
+
115
+ ### Reading Memory
116
+
117
+ At the **start of every task**, read `~/.config/agent-messenger/MEMORY.md` using the `Read` tool to load any previously discovered server IDs, channel IDs, user IDs, and preferences.
118
+
119
+ - If the file doesn't exist yet, that's fine β€” proceed without it and create it when you first have useful information to store.
120
+ - If the file can't be read (permissions, missing directory), proceed without memory β€” don't error out.
121
+
122
+ ### Writing Memory
123
+
124
+ After discovering useful information, update `~/.config/agent-messenger/MEMORY.md` using the `Write` tool. Write triggers include:
125
+
126
+ - After discovering server IDs and names (from `server list`, etc.)
127
+ - After discovering useful channel IDs and names (from `channel list`, etc.)
128
+ - After discovering user IDs and names (from `user list`, etc.)
129
+ - After the user gives you an alias or preference ("call this the alerts bot", "my main server is X")
130
+ - After setting up bot identifiers (from `auth list`)
131
+
132
+ When writing, include the **complete file content** β€” the `Write` tool overwrites the entire file.
133
+
134
+ ### What to Store
135
+
136
+ - Server IDs with names
137
+ - Channel IDs with names and categories
138
+ - User IDs with display names
139
+ - Bot identifiers and their purposes
140
+ - User-given aliases ("alerts bot", "announcements channel")
141
+ - Any user preference expressed during interaction
142
+
143
+ ### What NOT to Store
144
+
145
+ Never store bot tokens, credentials, or any sensitive data. Never store full message content (just IDs and channel context). Never store file upload contents.
146
+
147
+ ### Handling Stale Data
148
+
149
+ If a memorized ID returns an error (channel not found, server not found), remove it from `MEMORY.md`. Don't blindly trust memorized data β€” verify when something seems off. Prefer re-listing over using a memorized ID that might be stale.
150
+
151
+ ### Format / Example
152
+
153
+ ```markdown
154
+ # Agent Messenger Memory
155
+
156
+ ## Discord Servers (Bot)
157
+
158
+ - `1234567890123456` β€” Acme Dev
159
+
160
+ ## Bots (Acme Dev)
161
+
162
+ - `deploy` β€” Deploy Bot (active)
163
+ - `alert` β€” Alert Bot
164
+
165
+ ## Channels (Acme Dev)
166
+
167
+ - `1111111111111111` β€” #general (General category)
168
+ - `2222222222222222` β€” #engineering (Engineering category)
169
+ - `3333333333333333` β€” #deploys (Engineering category)
170
+
171
+ ## Users (Acme Dev)
172
+
173
+ - `4444444444444444` β€” Alice (server owner)
174
+ - `5555555555555555` β€” Bob
175
+
176
+ ## Aliases
177
+
178
+ - "deploys" β†’ `3333333333333333` (#deploys in Acme Dev)
179
+
180
+ ## Notes
181
+
182
+ - Deploy Bot is used for CI/CD notifications
183
+ - Alert Bot is used for error monitoring
184
+ ```
185
+
186
+ > Memory lets you skip repeated `channel list` and `server list` calls. When you already know an ID from a previous session, use it directly.
187
+
111
188
  ## Commands
112
189
 
113
190
  ### Auth Commands
@@ -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: 1.10.3
4
+ version: 1.10.4
5
5
  allowed-tools: Bash(agent-slack:*)
6
6
  metadata:
7
7
  openclaw:
@@ -37,6 +37,8 @@ Credentials are extracted automatically from the Slack desktop app on first use.
37
37
 
38
38
  On macOS, the system may prompt for your Keychain password the first time (required to decrypt Slack's stored token). This is a one-time prompt.
39
39
 
40
+ **IMPORTANT**: NEVER guide the user to open a web browser, use DevTools, or manually copy tokens from a browser. Always use `agent-slack auth extract` to obtain tokens from the desktop app.
41
+
40
42
  ### Multi-Workspace Support
41
43
 
42
44
  ```bash
@@ -56,6 +58,80 @@ agent-slack workspace remove <workspace-id>
56
58
  agent-slack auth status
57
59
  ```
58
60
 
61
+ ## Memory
62
+
63
+ 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.
64
+
65
+ ### Reading Memory
66
+
67
+ At the **start of every task**, read `~/.config/agent-messenger/MEMORY.md` using the `Read` tool to load any previously discovered workspace IDs, channel IDs, user IDs, and preferences.
68
+
69
+ - If the file doesn't exist yet, that's fine β€” proceed without it and create it when you first have useful information to store.
70
+ - If the file can't be read (permissions, missing directory), proceed without memory β€” don't error out.
71
+
72
+ ### Writing Memory
73
+
74
+ After discovering useful information, update `~/.config/agent-messenger/MEMORY.md` using the `Write` tool. Write triggers include:
75
+
76
+ - After discovering workspace IDs (from `workspace list`)
77
+ - After discovering useful channel IDs and names (from `channel list`, `snapshot`, etc.)
78
+ - After discovering user IDs and names (from `user list`, `user me`, etc.)
79
+ - After the user gives you an alias or preference ("call this the deploys channel", "my main workspace is X")
80
+ - After discovering channel structure (sidebar sections, channel categories)
81
+
82
+ When writing, include the **complete file content** β€” the `Write` tool overwrites the entire file.
83
+
84
+ ### What to Store
85
+
86
+ - Workspace IDs with names
87
+ - Channel IDs with names and purpose
88
+ - User IDs with display names
89
+ - User-given aliases ("deploys channel", "main workspace")
90
+ - Commonly used thread timestamps
91
+ - Any user preference expressed during interaction
92
+
93
+ ### What NOT to Store
94
+
95
+ Never store tokens, cookies, credentials, or any sensitive data. Never store full message content (just IDs and channel context). Never store file upload contents.
96
+
97
+ ### Handling Stale Data
98
+
99
+ If a memorized ID returns an error (channel not found, user not found), remove it from `MEMORY.md`. Don't blindly trust memorized data β€” verify when something seems off. Prefer re-listing over using a memorized ID that might be stale.
100
+
101
+ ### Format / Example
102
+
103
+ ```markdown
104
+ # Agent Messenger Memory
105
+
106
+ ## Slack Workspaces
107
+
108
+ - `T0ABC1234` β€” Acme Corp (default)
109
+ - `T0DEF5678` β€” Side Project
110
+
111
+ ## Channels (Acme Corp)
112
+
113
+ - `C012ABC` β€” #general (company-wide announcements)
114
+ - `C034DEF` β€” #engineering (team discussion)
115
+ - `C056GHI` β€” #deploys (CI/CD notifications)
116
+
117
+ ## Users (Acme Corp)
118
+
119
+ - `U0ABC123` β€” Alice (engineering lead)
120
+ - `U0DEF456` β€” Bob (backend)
121
+
122
+ ## Aliases
123
+
124
+ - "deploys" β†’ `C056GHI` (#deploys in Acme Corp)
125
+ - "main workspace" β†’ `T0ABC1234` (Acme Corp)
126
+
127
+ ## Notes
128
+
129
+ - User prefers --pretty output for snapshots
130
+ - Main workspace is "Acme Corp"
131
+ ```
132
+
133
+ > Memory lets you skip repeated `channel list` and `workspace list` calls. When you already know an ID from a previous session, use it directly.
134
+
59
135
  ## Commands
60
136
 
61
137
  ### Auth Commands
@@ -296,7 +296,7 @@ With extracted credentials, agent-slack has the same permissions as you in the S
296
296
 
297
297
  ## Manual Token Management (Advanced)
298
298
 
299
- If automatic extraction fails, you can manually create credentials:
299
+ If automatic extraction fails, you can manually create the credentials file:
300
300
 
301
301
  ```bash
302
302
  # Create config directory
@@ -321,12 +321,4 @@ EOF
321
321
  chmod 600 ~/.config/agent-messenger/slack-credentials.json
322
322
  ```
323
323
 
324
- To find tokens manually:
325
- 1. Open Slack in browser (not desktop app)
326
- 2. Open DevTools β†’ Network tab
327
- 3. Make any API call (send message, etc.)
328
- 4. Find request to `api.slack.com`
329
- 5. Copy `token` from request payload (xoxc)
330
- 6. Copy `d` cookie from request headers (xoxd)
331
-
332
- **Note**: Browser tokens may have different permissions than desktop app tokens.
324
+ If the user already has token values, they can populate the file above. Otherwise, always prefer `agent-slack auth extract` to obtain tokens automatically from the desktop app.
@@ -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: 1.10.3
4
+ version: 1.10.4
5
5
  allowed-tools: Bash(agent-slackbot:*)
6
6
  metadata:
7
7
  openclaw:
@@ -118,6 +118,83 @@ export E2E_SLACKBOT_WORKSPACE_ID=T123456
118
118
  export E2E_SLACKBOT_WORKSPACE_NAME="My Workspace"
119
119
  ```
120
120
 
121
+ ## Memory
122
+
123
+ 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.
124
+
125
+ ### Reading Memory
126
+
127
+ At the **start of every task**, read `~/.config/agent-messenger/MEMORY.md` using the `Read` tool to load any previously discovered workspace IDs, channel IDs, user IDs, and preferences.
128
+
129
+ - If the file doesn't exist yet, that's fine β€” proceed without it and create it when you first have useful information to store.
130
+ - If the file can't be read (permissions, missing directory), proceed without memory β€” don't error out.
131
+
132
+ ### Writing Memory
133
+
134
+ After discovering useful information, update `~/.config/agent-messenger/MEMORY.md` using the `Write` tool. Write triggers include:
135
+
136
+ - After discovering workspace IDs (from `auth status`)
137
+ - After discovering useful channel IDs and names (from `channel list`, etc.)
138
+ - After discovering user IDs and names (from `user list`, etc.)
139
+ - After the user gives you an alias or preference ("call this the alerts bot", "my main workspace is X")
140
+ - After setting up bot identifiers (from `auth list`)
141
+
142
+ When writing, include the **complete file content** β€” the `Write` tool overwrites the entire file.
143
+
144
+ ### What to Store
145
+
146
+ - Workspace IDs with names
147
+ - Channel IDs with names and purpose
148
+ - User IDs with display names
149
+ - Bot identifiers and their purposes
150
+ - User-given aliases ("alerts bot", "deploys channel")
151
+ - Any user preference expressed during interaction
152
+
153
+ ### What NOT to Store
154
+
155
+ Never store bot tokens, credentials, or any sensitive data. Never store full message content (just IDs and channel context). Never store file upload contents.
156
+
157
+ ### Handling Stale Data
158
+
159
+ If a memorized ID returns an error (channel not found, user not found), remove it from `MEMORY.md`. Don't blindly trust memorized data β€” verify when something seems off. Prefer re-listing over using a memorized ID that might be stale.
160
+
161
+ ### Format / Example
162
+
163
+ ```markdown
164
+ # Agent Messenger Memory
165
+
166
+ ## Slack Workspaces (Bot)
167
+
168
+ - `T0ABC1234` β€” Acme Corp
169
+
170
+ ## Bots (Acme Corp)
171
+
172
+ - `deploy` β€” Deploy Bot (active)
173
+ - `alert` β€” Alert Bot
174
+
175
+ ## Channels (Acme Corp)
176
+
177
+ - `C012ABC` β€” #general (company-wide announcements)
178
+ - `C034DEF` β€” #engineering (team discussion)
179
+ - `C056GHI` β€” #deploys (CI/CD notifications)
180
+
181
+ ## Users (Acme Corp)
182
+
183
+ - `U0ABC123` β€” Alice (engineering lead)
184
+ - `U0DEF456` β€” Bob (backend)
185
+
186
+ ## Aliases
187
+
188
+ - "deploys" β†’ `C056GHI` (#deploys in Acme Corp)
189
+
190
+ ## Notes
191
+
192
+ - Deploy Bot is used for CI/CD notifications
193
+ - Alert Bot is used for error monitoring
194
+ ```
195
+
196
+ > Memory lets you skip repeated `channel list` and `auth list` calls. When you already know an ID from a previous session, use it directly.
197
+
121
198
  ## Commands
122
199
 
123
200
  ### Message Commands
@@ -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: 1.10.3
4
+ version: 1.10.4
5
5
  allowed-tools: Bash(agent-teams:*)
6
6
  metadata:
7
7
  openclaw:
@@ -37,6 +37,8 @@ Credentials are extracted automatically from the Teams desktop app on first use.
37
37
 
38
38
  Teams tokens expire in 60-90 minutes. The CLI automatically re-extracts a fresh token when the current one expires, so you don't need to manage token lifecycle manually.
39
39
 
40
+ **IMPORTANT**: NEVER guide the user to open a web browser, use DevTools, or manually copy tokens from a browser. Always use `agent-teams auth extract` to obtain tokens from the desktop app.
41
+
40
42
  ### Multi-Team Support
41
43
 
42
44
  ```bash
@@ -64,6 +66,80 @@ agent-teams auth switch-account personal
64
66
  agent-teams snapshot --account work
65
67
  ```
66
68
 
69
+ ## Memory
70
+
71
+ 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.
72
+
73
+ ### Reading Memory
74
+
75
+ At the **start of every task**, read `~/.config/agent-messenger/MEMORY.md` using the `Read` tool to load any previously discovered team IDs, channel IDs, user IDs, and preferences.
76
+
77
+ - If the file doesn't exist yet, that's fine β€” proceed without it and create it when you first have useful information to store.
78
+ - If the file can't be read (permissions, missing directory), proceed without memory β€” don't error out.
79
+
80
+ ### Writing Memory
81
+
82
+ After discovering useful information, update `~/.config/agent-messenger/MEMORY.md` using the `Write` tool. Write triggers include:
83
+
84
+ - After discovering team IDs and names (from `team list`, `snapshot`, etc.)
85
+ - After discovering useful channel IDs and names (from `channel list`, `snapshot`, etc.)
86
+ - After discovering user IDs and names (from `user list`, `user me`, etc.)
87
+ - After the user gives you an alias or preference ("call this the standup channel", "my main team is X")
88
+ - After discovering channel structure (standard vs private channels)
89
+
90
+ When writing, include the **complete file content** β€” the `Write` tool overwrites the entire file.
91
+
92
+ ### What to Store
93
+
94
+ - Team IDs with names
95
+ - Channel IDs with names and team context
96
+ - User IDs with display names
97
+ - User-given aliases ("standup channel", "main team")
98
+ - Account preferences (work vs personal)
99
+ - Any user preference expressed during interaction
100
+
101
+ ### What NOT to Store
102
+
103
+ Never store tokens, credentials, or any sensitive data. Never store full message content (just IDs and channel context). Never store file upload contents.
104
+
105
+ ### Handling Stale Data
106
+
107
+ If a memorized ID returns an error (channel not found, team not found), remove it from `MEMORY.md`. Don't blindly trust memorized data β€” verify when something seems off. Prefer re-listing over using a memorized ID that might be stale.
108
+
109
+ ### Format / Example
110
+
111
+ ```markdown
112
+ # Agent Messenger Memory
113
+
114
+ ## Teams
115
+
116
+ - `team-id-1` β€” Acme Corp (default, work account)
117
+ - `team-id-2` β€” Side Project (personal account)
118
+
119
+ ## Channels (Acme Corp)
120
+
121
+ - `channel-id-1` β€” General
122
+ - `channel-id-2` β€” Engineering
123
+ - `channel-id-3` β€” Standups
124
+
125
+ ## Users (Acme Corp)
126
+
127
+ - `user-id-1` β€” Alice (engineering lead)
128
+ - `user-id-2` β€” Bob (backend)
129
+
130
+ ## Aliases
131
+
132
+ - "standup" β†’ `channel-id-3` (Standups in Acme Corp)
133
+ - "main team" β†’ `team-id-1` (Acme Corp)
134
+
135
+ ## Notes
136
+
137
+ - User prefers work account by default
138
+ - Main team is "Acme Corp"
139
+ ```
140
+
141
+ > Memory lets you skip repeated `channel list` and `team list` calls. When you already know an ID from a previous session, use it directly.
142
+
67
143
  ## Commands
68
144
 
69
145
  ### Auth Commands
@@ -340,7 +340,7 @@ With extracted credentials, agent-teams has the same permissions as you in Teams
340
340
 
341
341
  ## Manual Token Management (Advanced)
342
342
 
343
- If automatic extraction fails, you can manually create credentials:
343
+ If automatic extraction fails, you can manually create the credentials file:
344
344
 
345
345
  ```bash
346
346
  # Create config directory
@@ -365,11 +365,6 @@ EOF
365
365
  chmod 600 ~/.config/agent-messenger/teams-credentials.json
366
366
  ```
367
367
 
368
- To find your token manually:
369
- 1. Open Teams in browser (teams.microsoft.com)
370
- 2. Open DevTools -> Application tab
371
- 3. Go to Cookies -> teams.microsoft.com
372
- 4. Find `skypetoken_asm` cookie
373
- 5. Copy the value
368
+ If the user already has a token value, they can populate the file above. Otherwise, always prefer `agent-teams auth extract` to obtain the token automatically from the desktop app.
374
369
 
375
370
  **Warning**: Using user tokens for automation may violate Microsoft's Terms of Service. Use responsibly and at your own risk.
@@ -503,6 +503,108 @@ describe('TokenExtractor Windows DPAPI', () => {
503
503
  })
504
504
  })
505
505
 
506
+ describe('TokenExtractor IndexedDB blob files', () => {
507
+ test('extracts token from blob file when not in LevelDB', async () => {
508
+ // given β€” token only exists in an IndexedDB blob file, not in LevelDB
509
+ const slackDir = mkdtempSync(join(tmpdir(), 'slack-blob-'))
510
+ tempDirs.push(slackDir)
511
+
512
+ const hex64 = 'a'.repeat(64)
513
+ const token = `xoxc-1111111111-2222222222-3333333333-${hex64}`
514
+
515
+ const blobDir = join(slackDir, 'IndexedDB', 'https_app.slack.com_0.indexeddb.blob', '2', '05')
516
+ mkdirSync(blobDir, { recursive: true })
517
+ writeFileSync(join(blobDir, '584'), `"team_name":"blob-workspace"T12345678"token":"${token}"`)
518
+
519
+ // when
520
+ const extractor = new TokenExtractor('darwin', slackDir)
521
+ const result = await extractor.extract()
522
+
523
+ // then
524
+ expect(result.length).toBe(1)
525
+ expect(result[0].token).toBe(token)
526
+ expect(result[0].workspace_id).toBe('T12345678')
527
+ })
528
+
529
+ test('extracts tokens from both LevelDB and blob files for different teams', async () => {
530
+ // given β€” one workspace token in LevelDB, another in blob file
531
+ const slackDir = mkdtempSync(join(tmpdir(), 'slack-blob-multi-'))
532
+ tempDirs.push(slackDir)
533
+
534
+ const hex64a = 'a'.repeat(64)
535
+ const hex64b = 'b'.repeat(64)
536
+ const tokenA = `xoxc-1111111111-2222222222-3333333333-${hex64a}`
537
+ const tokenB = `xoxc-4444444444-5555555555-6666666666-${hex64b}`
538
+
539
+ const leveldbDir = join(slackDir, 'IndexedDB', 'https_app.slack.com_0.indexeddb.leveldb')
540
+ mkdirSync(leveldbDir, { recursive: true })
541
+ writeFileSync(join(leveldbDir, '000001.log'), `"${tokenA}"TAAAAAAAA"name":"leveldb-ws"`)
542
+
543
+ const blobDir = join(slackDir, 'IndexedDB', 'https_app.slack.com_0.indexeddb.blob', '2', '05')
544
+ mkdirSync(blobDir, { recursive: true })
545
+ writeFileSync(join(blobDir, '584'), `"team_name":"blob-ws"TBBBBBBBBB"token":"${tokenB}"`)
546
+
547
+ // when
548
+ const extractor = new TokenExtractor('darwin', slackDir)
549
+ const result = await extractor.extract()
550
+
551
+ // then β€” both workspaces are extracted
552
+ expect(result.length).toBe(2)
553
+ const teamIds = result.map((r) => r.workspace_id).sort()
554
+ expect(teamIds).toEqual(['TAAAAAAAA', 'TBBBBBBBBB'])
555
+ })
556
+
557
+ test('LevelDB token wins over blob file token for same team', async () => {
558
+ // given β€” same team in both LevelDB (.log = highest raw priority) and blob file
559
+ const slackDir = mkdtempSync(join(tmpdir(), 'slack-blob-dedup-'))
560
+ tempDirs.push(slackDir)
561
+
562
+ const hex64ldb = 'a'.repeat(64)
563
+ const hex64blob = 'b'.repeat(64)
564
+ const ldbToken = `xoxc-1111111111-2222222222-3333333333-${hex64ldb}`
565
+ const blobToken = `xoxc-4444444444-5555555555-6666666666-${hex64blob}`
566
+
567
+ const leveldbDir = join(slackDir, 'IndexedDB', 'https_app.slack.com_0.indexeddb.leveldb')
568
+ mkdirSync(leveldbDir, { recursive: true })
569
+ writeFileSync(join(leveldbDir, '000001.log'), `"${ldbToken}"T12345678"name":"ldb-workspace"`)
570
+
571
+ const blobDir = join(slackDir, 'IndexedDB', 'https_app.slack.com_0.indexeddb.blob', '2', '05')
572
+ mkdirSync(blobDir, { recursive: true })
573
+ writeFileSync(join(blobDir, '584'), `"team_name":"blob-workspace"T12345678"token":"${blobToken}"`)
574
+
575
+ // when
576
+ const extractor = new TokenExtractor('darwin', slackDir)
577
+ const result = await extractor.extract()
578
+
579
+ // then β€” .log source (priority 3) beats blob-file (priority 1)
580
+ expect(result.length).toBe(1)
581
+ expect(result[0].token).toBe(ldbToken)
582
+ })
583
+
584
+ test('skips blob files larger than 10MB', async () => {
585
+ // given β€” blob file exceeds size limit
586
+ const slackDir = mkdtempSync(join(tmpdir(), 'slack-blob-large-'))
587
+ tempDirs.push(slackDir)
588
+
589
+ const hex64 = 'a'.repeat(64)
590
+ const token = `xoxc-1111111111-2222222222-3333333333-${hex64}`
591
+
592
+ const blobDir = join(slackDir, 'IndexedDB', 'https_app.slack.com_0.indexeddb.blob', '1', '00')
593
+ mkdirSync(blobDir, { recursive: true })
594
+
595
+ const largeContent = Buffer.alloc(11 * 1024 * 1024)
596
+ Buffer.from(`"team_name":"large"T12345678"${token}"`).copy(largeContent)
597
+ writeFileSync(join(blobDir, '1'), largeContent)
598
+
599
+ // when
600
+ const extractor = new TokenExtractor('darwin', slackDir)
601
+ const result = await extractor.extract()
602
+
603
+ // then
604
+ expect(result.length).toBe(0)
605
+ })
606
+ })
607
+
506
608
  describe('TokenExtractor getWorkspaceDomains', () => {
507
609
  test('reads workspace domains from root-state.json', () => {
508
610
  // given
@@ -16,7 +16,7 @@ export interface ExtractedWorkspace {
16
16
  cookie: string
17
17
  }
18
18
 
19
- type TokenSource = 'json-teams' | 'json-single' | 'log-file' | 'ldb-file' | 'classic-level'
19
+ type TokenSource = 'json-teams' | 'json-single' | 'log-file' | 'ldb-file' | 'classic-level' | 'blob-file'
20
20
  type TokenDirTier = 'storage' | 'local-storage' | 'indexeddb'
21
21
 
22
22
  interface RawTokenInfo {
@@ -36,6 +36,7 @@ const SOURCE_PRIORITY: Record<TokenSource, number> = {
36
36
  'json-single': 4,
37
37
  'log-file': 3,
38
38
  'classic-level': 2,
39
+ 'blob-file': 1,
39
40
  'ldb-file': 1,
40
41
  }
41
42
 
@@ -99,13 +100,59 @@ export class TokenExtractor {
99
100
  }
100
101
  case 'linux':
101
102
  return join(homedir(), '.config', 'Slack')
102
- case 'win32':
103
+ case 'win32': {
104
+ // Check MSIX (Microsoft Store / GPO) package path first
105
+ const msixPath = this.findMsixSlackDir()
106
+ if (msixPath) {
107
+ return msixPath
108
+ }
109
+ // Direct download version
103
110
  return join(process.env.APPDATA || join(homedir(), 'AppData', 'Roaming'), 'Slack')
111
+ }
104
112
  default:
105
113
  throw new Error(`Unsupported platform: ${this.platform}`)
106
114
  }
107
115
  }
108
116
 
117
+ private findMsixSlackDir(): string | null {
118
+ const packagesDir = join(process.env.LOCALAPPDATA || join(homedir(), 'AppData', 'Local'), 'Packages')
119
+ if (!existsSync(packagesDir)) {
120
+ this.debug('MSIX Packages directory not found')
121
+ return null
122
+ }
123
+
124
+ try {
125
+ const entries = readdirSync(packagesDir, { withFileTypes: true })
126
+ let best: { path: string; mtimeMs: number } | null = null
127
+
128
+ for (const entry of entries) {
129
+ if (!entry.isDirectory() || !entry.name.toLowerCase().includes('slack')) {
130
+ continue
131
+ }
132
+ const slackData = join(packagesDir, entry.name, 'LocalCache', 'Roaming', 'Slack')
133
+ this.debug(`Found MSIX candidate: ${entry.name}`)
134
+ if (!existsSync(join(slackData, 'storage')) && !existsSync(join(slackData, 'Local Storage'))) {
135
+ this.debug(` No Slack data at ${slackData}`)
136
+ continue
137
+ }
138
+ const mtime = statSync(slackData).mtimeMs
139
+ this.debug(` Valid Slack data found (mtime: ${new Date(mtime).toISOString()})`)
140
+ if (!best || mtime > best.mtimeMs) {
141
+ best = { path: slackData, mtimeMs: mtime }
142
+ }
143
+ }
144
+
145
+ if (best) {
146
+ this.debug(`Using MSIX Slack dir: ${best.path}`)
147
+ } else {
148
+ this.debug('No valid MSIX Slack data found, falling back to APPDATA')
149
+ }
150
+ return best?.path ?? null
151
+ } catch {
152
+ return null
153
+ }
154
+ }
155
+
109
156
  async extractCookie(): Promise<string> {
110
157
  if (!existsSync(this.slackDir)) {
111
158
  return ''
@@ -188,6 +235,10 @@ export class TokenExtractor {
188
235
  tokens.push(...extracted)
189
236
  } catch {}
190
237
  }
238
+
239
+ // Chromium offloads large IndexedDB values to external *.indexeddb.blob/ files
240
+ const blobTokens = this.extractTokensFromBlobFiles(baseDir, tier)
241
+ tokens.push(...blobTokens)
191
242
  }
192
243
 
193
244
  return this.deduplicateTokens(tokens)
@@ -311,6 +362,56 @@ export class TokenExtractor {
311
362
  return tokens
312
363
  }
313
364
 
365
+ private extractTokensFromBlobFiles(baseDir: string, dirTier: TokenDirTier): TokenInfo[] {
366
+ const tokens: TokenInfo[] = []
367
+ try {
368
+ const entries = readdirSync(baseDir, { withFileTypes: true })
369
+ for (const entry of entries) {
370
+ if (!entry.isDirectory() || !entry.name.endsWith('.indexeddb.blob')) continue
371
+
372
+ const blobDir = join(baseDir, entry.name)
373
+ this.debug(`Scanning blob directory: ${blobDir}`)
374
+ const files = this.findFilesRecursive(blobDir)
375
+
376
+ for (const filePath of files) {
377
+ try {
378
+ const stat = statSync(filePath)
379
+ if (stat.size > 10 * 1024 * 1024) continue
380
+
381
+ const content = readFileSync(filePath)
382
+ const xoxcMarker = Buffer.from('xoxc-')
383
+ let idx = content.indexOf(xoxcMarker, 0)
384
+ while (idx !== -1) {
385
+ const tokenData = this.extractTokenFromBuffer(content, idx)
386
+ if (tokenData) {
387
+ this.debug(`Found token in blob file: ${filePath}`)
388
+ tokens.push({ ...tokenData, source: 'blob-file', dirTier })
389
+ }
390
+ idx = content.indexOf(xoxcMarker, idx + 5)
391
+ }
392
+ } catch {}
393
+ }
394
+ }
395
+ } catch {}
396
+ return tokens
397
+ }
398
+
399
+ private findFilesRecursive(dir: string): string[] {
400
+ const files: string[] = []
401
+ try {
402
+ const entries = readdirSync(dir, { withFileTypes: true })
403
+ for (const entry of entries) {
404
+ const fullPath = join(dir, entry.name)
405
+ if (entry.isDirectory()) {
406
+ files.push(...this.findFilesRecursive(fullPath))
407
+ } else if (entry.isFile()) {
408
+ files.push(fullPath)
409
+ }
410
+ }
411
+ } catch {}
412
+ return files
413
+ }
414
+
314
415
  private extractTokensFromLDBFiles(dbPath: string, dirTier: TokenDirTier): TokenInfo[] {
315
416
  const tokens: TokenInfo[] = []
316
417
  try {