agent-messenger 2.24.0 → 2.25.0
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.
- package/.claude-plugin/plugin.json +1 -1
- package/.github/workflows/ci.yml +4 -0
- package/bun.lock +0 -71
- package/dist/package.json +4 -4
- package/dist/src/platforms/kakaotalk/token-extractor.d.ts.map +1 -1
- package/dist/src/platforms/kakaotalk/token-extractor.js +11 -38
- package/dist/src/platforms/kakaotalk/token-extractor.js.map +1 -1
- package/dist/src/platforms/slack/commands/auth.d.ts.map +1 -1
- package/dist/src/platforms/slack/commands/auth.js +32 -5
- package/dist/src/platforms/slack/commands/auth.js.map +1 -1
- package/dist/src/platforms/slack/ensure-auth.d.ts +1 -0
- package/dist/src/platforms/slack/ensure-auth.d.ts.map +1 -1
- package/dist/src/platforms/slack/ensure-auth.js +47 -0
- package/dist/src/platforms/slack/ensure-auth.js.map +1 -1
- package/dist/src/platforms/slack/token-extractor.d.ts.map +1 -1
- package/dist/src/platforms/slack/token-extractor.js +5 -11
- package/dist/src/platforms/slack/token-extractor.js.map +1 -1
- package/dist/src/platforms/webex/client.d.ts +1 -0
- package/dist/src/platforms/webex/client.d.ts.map +1 -1
- package/dist/src/platforms/webex/client.js +17 -1
- package/dist/src/platforms/webex/client.js.map +1 -1
- package/dist/src/platforms/webex/commands/message.d.ts +4 -0
- package/dist/src/platforms/webex/commands/message.d.ts.map +1 -1
- package/dist/src/platforms/webex/commands/message.js +16 -1
- package/dist/src/platforms/webex/commands/message.js.map +1 -1
- package/dist/src/shared/chromium/cookie-reader.d.ts.map +1 -1
- package/dist/src/shared/chromium/cookie-reader.js +4 -19
- package/dist/src/shared/chromium/cookie-reader.js.map +1 -1
- package/dist/src/shared/sqlite.d.ts +10 -0
- package/dist/src/shared/sqlite.d.ts.map +1 -0
- package/dist/src/shared/sqlite.js +46 -0
- package/dist/src/shared/sqlite.js.map +1 -0
- package/docs/content/docs/cli/webex.mdx +7 -0
- package/docs/content/docs/sdk/webex.mdx +7 -0
- package/package.json +4 -4
- package/skills/agent-channeltalk/SKILL.md +1 -1
- package/skills/agent-channeltalkbot/SKILL.md +1 -1
- package/skills/agent-discord/SKILL.md +1 -1
- package/skills/agent-discordbot/SKILL.md +1 -1
- package/skills/agent-instagram/SKILL.md +1 -1
- package/skills/agent-kakaotalk/SKILL.md +1 -1
- package/skills/agent-line/SKILL.md +1 -1
- package/skills/agent-slack/SKILL.md +1 -1
- package/skills/agent-slackbot/SKILL.md +1 -1
- package/skills/agent-teams/SKILL.md +1 -1
- package/skills/agent-telegram/SKILL.md +1 -1
- package/skills/agent-telegrambot/SKILL.md +1 -1
- package/skills/agent-webex/SKILL.md +6 -1
- package/skills/agent-webexbot/SKILL.md +1 -1
- package/skills/agent-wechatbot/SKILL.md +1 -1
- package/skills/agent-whatsapp/SKILL.md +1 -1
- package/skills/agent-whatsappbot/SKILL.md +1 -1
- package/src/platforms/channeltalk/token-extractor.test.ts +2 -2
- package/src/platforms/kakaotalk/token-extractor.ts +13 -36
- package/src/platforms/slack/commands/auth.ts +33 -5
- package/src/platforms/slack/ensure-auth.test.ts +130 -19
- package/src/platforms/slack/ensure-auth.ts +51 -0
- package/src/platforms/slack/token-extractor-node-test.ts +5 -3
- package/src/platforms/slack/token-extractor.ts +4 -11
- package/src/platforms/webex/client.test.ts +74 -0
- package/src/platforms/webex/client.ts +20 -1
- package/src/platforms/webex/commands/message.test.ts +29 -1
- package/src/platforms/webex/commands/message.ts +18 -0
- package/src/shared/chromium/cookie-reader-node-test.ts +70 -0
- package/src/shared/chromium/cookie-reader-node.test.ts +10 -0
- package/src/shared/chromium/cookie-reader.ts +4 -21
- package/src/shared/sqlite.ts +61 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../../../../src/platforms/webex/commands/message.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../../../../src/platforms/webex/commands/message.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cookie-reader.d.ts","sourceRoot":"","sources":["../../../../src/shared/chromium/cookie-reader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cookie-reader.d.ts","sourceRoot":"","sources":["../../../../src/shared/chromium/cookie-reader.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B;;;OAGG;IACG,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAoBhF;;;OAGG;IACG,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAoBvF,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,YAAY;IAuBpB,OAAO,CAAC,WAAW;CAOpB"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { copyFileSync, existsSync, rmSync } from 'node:fs';
|
|
2
|
-
import { createRequire } from 'node:module';
|
|
3
2
|
import { tmpdir } from 'node:os';
|
|
4
3
|
import { join } from 'node:path';
|
|
5
|
-
|
|
4
|
+
import { openReadonlyDatabase } from '../../shared/sqlite.js';
|
|
6
5
|
/**
|
|
7
6
|
* Reads Chromium SQLite cookie databases with Bun/Node dual-runtime support.
|
|
8
7
|
* Copies the database to a temp file to avoid lock contention when the app is running.
|
|
@@ -60,28 +59,14 @@ export class ChromiumCookieReader {
|
|
|
60
59
|
return join(tmpdir(), `chromium-cookies-${Date.now()}-${Math.random().toString(36).slice(2)}.db`);
|
|
61
60
|
}
|
|
62
61
|
executeQuery(tempPath, sql, params, mode) {
|
|
63
|
-
|
|
64
|
-
const { Database } = require('bun:sqlite');
|
|
65
|
-
const db = new Database(tempPath, { readonly: true });
|
|
66
|
-
try {
|
|
67
|
-
const stmt = db.query(sql);
|
|
68
|
-
if (mode === 'all') {
|
|
69
|
-
return (params ? stmt.all(...params) : stmt.all());
|
|
70
|
-
}
|
|
71
|
-
return (params ? stmt.get(...params) : stmt.get());
|
|
72
|
-
}
|
|
73
|
-
finally {
|
|
74
|
-
db.close();
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
const Database = require('better-sqlite3');
|
|
78
|
-
const db = new Database(tempPath, { readonly: true });
|
|
62
|
+
const db = openReadonlyDatabase(tempPath);
|
|
79
63
|
try {
|
|
80
64
|
const stmt = db.prepare(sql);
|
|
81
65
|
if (mode === 'all') {
|
|
82
66
|
return (params ? stmt.all(...params) : stmt.all());
|
|
83
67
|
}
|
|
84
|
-
|
|
68
|
+
const row = params ? stmt.get(...params) : stmt.get();
|
|
69
|
+
return (row ?? null);
|
|
85
70
|
}
|
|
86
71
|
finally {
|
|
87
72
|
db.close();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cookie-reader.js","sourceRoot":"","sources":["../../../../src/shared/chromium/cookie-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAC1D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cookie-reader.js","sourceRoot":"","sources":["../../../../src/shared/chromium/cookie-reader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface ReadonlyStatement {
|
|
2
|
+
get(...params: unknown[]): unknown;
|
|
3
|
+
all(...params: unknown[]): unknown[];
|
|
4
|
+
}
|
|
5
|
+
export interface ReadonlyDatabase {
|
|
6
|
+
prepare(sql: string): ReadonlyStatement;
|
|
7
|
+
close(): void;
|
|
8
|
+
}
|
|
9
|
+
export declare function openReadonlyDatabase(path: string): ReadonlyDatabase;
|
|
10
|
+
//# sourceMappingURL=sqlite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../src/shared/sqlite.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;IAClC,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAAA;CACrC;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAAA;IACvC,KAAK,IAAI,IAAI,CAAA;CACd;AAaD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAmCnE"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
const require = createRequire(import.meta.url);
|
|
3
|
+
// Uses the runtime's built-in driver (bun:sqlite on Bun, node:sqlite on Node >= 22.13)
|
|
4
|
+
// to avoid a native addon dependency.
|
|
5
|
+
//
|
|
6
|
+
// Runtime quirks callers must respect (both drivers behave this way):
|
|
7
|
+
// - BLOB columns are returned as Uint8Array, not Buffer. Wrap with Buffer.from()
|
|
8
|
+
// before any Buffer-specific call (e.g. .toString('utf8'), node:crypto helpers).
|
|
9
|
+
// - node:sqlite throws ERR_OUT_OF_RANGE when reading an INTEGER above
|
|
10
|
+
// Number.MAX_SAFE_INTEGER, so never SELECT raw microsecond timestamps such as
|
|
11
|
+
// Chromium's *_utc columns; use them only in WHERE / ORDER BY clauses.
|
|
12
|
+
export function openReadonlyDatabase(path) {
|
|
13
|
+
if (typeof globalThis.Bun !== 'undefined') {
|
|
14
|
+
const { Database } = require('bun:sqlite');
|
|
15
|
+
return new Database(path, { readonly: true });
|
|
16
|
+
}
|
|
17
|
+
let DatabaseSync;
|
|
18
|
+
// node:sqlite emits a one-time ExperimentalWarning to stderr on load
|
|
19
|
+
// (Node < 24.15) that clutters the CLI's output. Suppress just that warning
|
|
20
|
+
// while loading the module, then restore the original handler.
|
|
21
|
+
const originalEmitWarning = process.emitWarning;
|
|
22
|
+
const filteredEmitWarning = (...args) => {
|
|
23
|
+
const [warning, second] = args;
|
|
24
|
+
const name = warning instanceof Error
|
|
25
|
+
? warning.name
|
|
26
|
+
: typeof second === 'string'
|
|
27
|
+
? second
|
|
28
|
+
: second?.type;
|
|
29
|
+
const message = warning instanceof Error ? warning.message : String(warning);
|
|
30
|
+
if (name === 'ExperimentalWarning' && message.includes('SQLite'))
|
|
31
|
+
return;
|
|
32
|
+
originalEmitWarning.apply(process, args);
|
|
33
|
+
};
|
|
34
|
+
process.emitWarning = filteredEmitWarning;
|
|
35
|
+
try {
|
|
36
|
+
DatabaseSync = require('node:sqlite').DatabaseSync;
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
throw new Error('SQLite support requires Node.js >= 22.13.0 (the built-in node:sqlite module) or Bun. Please upgrade Node.js.');
|
|
40
|
+
}
|
|
41
|
+
finally {
|
|
42
|
+
process.emitWarning = originalEmitWarning;
|
|
43
|
+
}
|
|
44
|
+
return new DatabaseSync(path, { readOnly: true });
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=sqlite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../../src/shared/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAE3C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAc9C,uFAAuF;AACvF,sCAAsC;AACtC,EAAE;AACF,sEAAsE;AACtE,iFAAiF;AACjF,mFAAmF;AACnF,sEAAsE;AACtE,gFAAgF;AAChF,yEAAyE;AACzE,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,IAAI,OAAO,UAAU,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;QAC1C,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;QAC1C,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAqB,CAAA;IACnE,CAAC;IAED,IAAI,YAAyC,CAAA;IAC7C,qEAAqE;IACrE,4EAA4E;IAC5E,+DAA+D;IAC/D,MAAM,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAA;IAC/C,MAAM,mBAAmB,GAAG,CAAC,GAAG,IAAe,EAAQ,EAAE;QACvD,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,IAAI,CAAA;QAC9B,MAAM,IAAI,GACR,OAAO,YAAY,KAAK;YACtB,CAAC,CAAC,OAAO,CAAC,IAAI;YACd,CAAC,CAAC,OAAO,MAAM,KAAK,QAAQ;gBAC1B,CAAC,CAAC,MAAM;gBACR,CAAC,CAAE,MAAwC,EAAE,IAAI,CAAA;QACvD,MAAM,OAAO,GAAG,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAC5E,IAAI,IAAI,KAAK,qBAAqB,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,OACjE;QAAC,mBAAyD,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IAClF,CAAC,CAAA;IACD,OAAO,CAAC,WAAW,GAAG,mBAAiD,CAAA;IACvE,IAAI,CAAC;QACH,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,YAAY,CAAA;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,8GAA8G,CAC/G,CAAA;IACH,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,WAAW,GAAG,mBAAmB,CAAA;IAC3C,CAAC;IAED,OAAO,IAAI,YAAY,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;AACnD,CAAC"}
|
|
@@ -193,8 +193,15 @@ agent-webex message edit msg123 abc123 "Updated text" --markdown
|
|
|
193
193
|
# Delete a message
|
|
194
194
|
agent-webex message delete <message-id>
|
|
195
195
|
agent-webex message delete <message-id> --force
|
|
196
|
+
|
|
197
|
+
# Send a typing indicator ("…is typing")
|
|
198
|
+
agent-webex message typing <space-id>
|
|
199
|
+
# Clear the typing indicator
|
|
200
|
+
agent-webex message typing <space-id> --stop
|
|
196
201
|
```
|
|
197
202
|
|
|
203
|
+
Typing indicators require an extracted (browser) or password token — bot and OAuth tokens are not supported. The indicator is ephemeral and auto-expires after a few seconds.
|
|
204
|
+
|
|
198
205
|
### Member Commands
|
|
199
206
|
|
|
200
207
|
```bash
|
|
@@ -84,8 +84,15 @@ await client.editMessage(messageId, roomId, '**Updated**', { markdown: true })
|
|
|
84
84
|
|
|
85
85
|
// Delete a message
|
|
86
86
|
await client.deleteMessage(messageId)
|
|
87
|
+
|
|
88
|
+
// Send a typing indicator ("…is typing")
|
|
89
|
+
await client.setTyping(roomId)
|
|
90
|
+
// Clear the typing indicator
|
|
91
|
+
await client.setTyping(roomId, false)
|
|
87
92
|
```
|
|
88
93
|
|
|
94
|
+
Typing indicators are sent over Webex's internal conversation service, which the public REST API does not expose. They require an extracted (browser) or password token — bot and OAuth tokens have no device URL and throw a `WebexError`. The indicator is ephemeral and auto-expires after a few seconds, so re-send periodically to sustain it.
|
|
95
|
+
|
|
89
96
|
### People
|
|
90
97
|
|
|
91
98
|
```typescript
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-messenger",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.25.0",
|
|
4
4
|
"description": "Multi-platform messaging CLI for AI agents (Slack, Discord, Teams, Webex, Telegram, Telegram Bot, WhatsApp, LINE, Instagram, KakaoTalk, Channel Talk)",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -171,7 +171,6 @@
|
|
|
171
171
|
"@hapi/boom": "^10.0.1",
|
|
172
172
|
"@slack/web-api": "^6.9.0",
|
|
173
173
|
"@whiskeysockets/baileys": "^7.0.0-rc.9",
|
|
174
|
-
"better-sqlite3": "^12.0.0",
|
|
175
174
|
"blessed": "^0.1.81",
|
|
176
175
|
"bson": "^6.10.4",
|
|
177
176
|
"classic-level": "^3.0.0",
|
|
@@ -192,7 +191,6 @@
|
|
|
192
191
|
"zod": "^4.3.6"
|
|
193
192
|
},
|
|
194
193
|
"devDependencies": {
|
|
195
|
-
"@types/better-sqlite3": "^7.6.8",
|
|
196
194
|
"@types/blessed": "^0.1.27",
|
|
197
195
|
"@types/bun": "latest",
|
|
198
196
|
"@types/hapi__boom": "^9.0.1",
|
|
@@ -211,9 +209,11 @@
|
|
|
211
209
|
"koffi": "^2.15.2",
|
|
212
210
|
"prebuilt-tdlib": "0.1008062.2"
|
|
213
211
|
},
|
|
212
|
+
"engines": {
|
|
213
|
+
"node": ">=22.13.0"
|
|
214
|
+
},
|
|
214
215
|
"trustedDependencies": [
|
|
215
216
|
"@whiskeysockets/baileys",
|
|
216
|
-
"better-sqlite3",
|
|
217
217
|
"classic-level",
|
|
218
218
|
"protobufjs"
|
|
219
219
|
]
|
|
@@ -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.
|
|
4
|
+
version: 2.25.0
|
|
5
5
|
allowed-tools: Bash(agent-channeltalk:*)
|
|
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.
|
|
4
|
+
version: 2.25.0
|
|
5
5
|
allowed-tools: Bash(agent-webex:*)
|
|
6
6
|
metadata:
|
|
7
7
|
openclaw:
|
|
@@ -304,6 +304,10 @@ agent-webex message delete <message-id> --force
|
|
|
304
304
|
# Edit a message
|
|
305
305
|
agent-webex message edit <message-id> <space-id> <text>
|
|
306
306
|
agent-webex message edit <message-id> <space-id> "Updated text" --markdown
|
|
307
|
+
|
|
308
|
+
# Send a typing indicator (requires extracted/browser or password token)
|
|
309
|
+
agent-webex message typing <space-id>
|
|
310
|
+
agent-webex message typing <space-id> --stop
|
|
307
311
|
```
|
|
308
312
|
|
|
309
313
|
### Member Commands
|
|
@@ -467,6 +471,7 @@ See the [Webex SDK documentation](https://agent-messenger.dev/docs/sdk/webex) fo
|
|
|
467
471
|
- No reactions / emoji support
|
|
468
472
|
- No thread support
|
|
469
473
|
- No message search
|
|
474
|
+
- Typing indicators require an extracted (browser) or password token; bot/OAuth tokens are not supported for typing
|
|
470
475
|
- No voice/video or meeting support
|
|
471
476
|
- No space management (create/delete spaces, roles)
|
|
472
477
|
|
|
@@ -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.
|
|
4
|
+
version: 2.25.0
|
|
5
5
|
allowed-tools: Bash(agent-webexbot:*)
|
|
6
6
|
metadata:
|
|
7
7
|
openclaw:
|
|
@@ -457,8 +457,8 @@ async function createCookieDatabase(
|
|
|
457
457
|
|
|
458
458
|
const { createRequire } = await import('node:module')
|
|
459
459
|
const req = createRequire(import.meta.url)
|
|
460
|
-
const
|
|
461
|
-
const db = new
|
|
460
|
+
const { DatabaseSync } = req('node:sqlite')
|
|
461
|
+
const db = new DatabaseSync(dbPath)
|
|
462
462
|
db.exec('CREATE TABLE cookies (name TEXT, value TEXT, encrypted_value BLOB, host_key TEXT)')
|
|
463
463
|
const statement = db.prepare('INSERT INTO cookies (name, value, encrypted_value, host_key) VALUES (?, ?, ?, ?)')
|
|
464
464
|
for (const row of rows) {
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { execSync } from 'node:child_process'
|
|
2
2
|
import { copyFileSync, existsSync, readFileSync, rmSync } from 'node:fs'
|
|
3
|
-
import { createRequire } from 'node:module'
|
|
4
3
|
import { homedir, tmpdir } from 'node:os'
|
|
5
4
|
import { join } from 'node:path'
|
|
6
5
|
|
|
7
|
-
import
|
|
6
|
+
import { openReadonlyDatabase } from '@/shared/sqlite'
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
import type { ExtractedKakaoToken } from './types'
|
|
10
9
|
|
|
11
10
|
export class KakaoTokenExtractor {
|
|
12
11
|
private platform: NodeJS.Platform
|
|
@@ -106,23 +105,12 @@ export class KakaoTokenExtractor {
|
|
|
106
105
|
time_stamp: number
|
|
107
106
|
}
|
|
108
107
|
|
|
108
|
+
const db = openReadonlyDatabase(dbPath)
|
|
109
109
|
let rows: CacheRow[]
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
rows = db.query(sql).all() as CacheRow[]
|
|
115
|
-
} finally {
|
|
116
|
-
db.close()
|
|
117
|
-
}
|
|
118
|
-
} else {
|
|
119
|
-
const Database = require('better-sqlite3')
|
|
120
|
-
const db = new Database(dbPath, { readonly: true })
|
|
121
|
-
try {
|
|
122
|
-
rows = db.prepare(sql).all() as CacheRow[]
|
|
123
|
-
} finally {
|
|
124
|
-
db.close()
|
|
125
|
-
}
|
|
110
|
+
try {
|
|
111
|
+
rows = db.prepare(sql).all() as CacheRow[]
|
|
112
|
+
} finally {
|
|
113
|
+
db.close()
|
|
126
114
|
}
|
|
127
115
|
|
|
128
116
|
this.debug(`Found ${rows.length} cached request(s) to kakao.com`)
|
|
@@ -166,24 +154,13 @@ export class KakaoTokenExtractor {
|
|
|
166
154
|
`
|
|
167
155
|
|
|
168
156
|
type CacheRow = { request_object: Uint8Array | Buffer | null; request_key: string }
|
|
169
|
-
let authRows: CacheRow[]
|
|
170
157
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
db.close()
|
|
178
|
-
}
|
|
179
|
-
} else {
|
|
180
|
-
const Database = require('better-sqlite3')
|
|
181
|
-
const db = new Database(dbPath, { readonly: true })
|
|
182
|
-
try {
|
|
183
|
-
authRows = db.prepare(sql).all() as CacheRow[]
|
|
184
|
-
} finally {
|
|
185
|
-
db.close()
|
|
186
|
-
}
|
|
158
|
+
const db = openReadonlyDatabase(dbPath)
|
|
159
|
+
let authRows: CacheRow[]
|
|
160
|
+
try {
|
|
161
|
+
authRows = db.prepare(sql).all() as CacheRow[]
|
|
162
|
+
} finally {
|
|
163
|
+
db.close()
|
|
187
164
|
}
|
|
188
165
|
|
|
189
166
|
for (const row of authRows) {
|
|
@@ -8,7 +8,8 @@ import { debug } from '@/shared/utils/stderr'
|
|
|
8
8
|
|
|
9
9
|
import { SlackClient, SlackError } from '../client'
|
|
10
10
|
import { CredentialManager } from '../credential-manager'
|
|
11
|
-
import { refreshCookie, tryWebTokenRefresh } from '../ensure-auth'
|
|
11
|
+
import { refreshCookie, refreshKnownWorkspaceDomains, tryWebTokenRefresh } from '../ensure-auth'
|
|
12
|
+
import type { RefreshResult } from '../ensure-auth'
|
|
12
13
|
import { loginWithQr } from '../qr-http-login'
|
|
13
14
|
import { type ExtractedWorkspace, TokenExtractor } from '../token-extractor'
|
|
14
15
|
|
|
@@ -80,6 +81,8 @@ async function extractAction(options: {
|
|
|
80
81
|
|
|
81
82
|
const validWorkspaces = []
|
|
82
83
|
const failureReasons: string[] = []
|
|
84
|
+
const resolvedTeamIds = new Set<string>()
|
|
85
|
+
const refreshCache = new Map<string, RefreshResult | null>()
|
|
83
86
|
for (const ws of workspaces) {
|
|
84
87
|
if (options.debug) {
|
|
85
88
|
debug(`[debug] Testing credentials for ${ws.workspace_id}...`)
|
|
@@ -88,10 +91,14 @@ async function extractAction(options: {
|
|
|
88
91
|
try {
|
|
89
92
|
const client = await new SlackClient().login({ token: ws.token, cookie: ws.cookie })
|
|
90
93
|
const authInfo = await client.testAuth()
|
|
94
|
+
if (!authInfo.team_id) throw new SlackError('testAuth returned empty team_id', 'invalid_auth')
|
|
91
95
|
ws.workspace_id = authInfo.team_id
|
|
92
96
|
ws.workspace_name = authInfo.team || ws.workspace_name
|
|
93
|
-
|
|
94
|
-
|
|
97
|
+
if (!resolvedTeamIds.has(ws.workspace_id)) {
|
|
98
|
+
resolvedTeamIds.add(ws.workspace_id)
|
|
99
|
+
validWorkspaces.push(ws)
|
|
100
|
+
await credManager.setWorkspace(ws)
|
|
101
|
+
}
|
|
95
102
|
|
|
96
103
|
if (options.debug) {
|
|
97
104
|
debug(`[debug] ✓ Valid: ${authInfo.team} (${authInfo.user})`)
|
|
@@ -112,11 +119,12 @@ async function extractAction(options: {
|
|
|
112
119
|
: `${ws.workspace_id} (trying all known domains)`
|
|
113
120
|
debug(`[debug] Attempting web token refresh for ${target}...`)
|
|
114
121
|
}
|
|
115
|
-
const refreshed = await tryWebTokenRefresh(ws, workspaceDomains)
|
|
116
|
-
if (refreshed) {
|
|
122
|
+
const refreshed = await tryWebTokenRefresh(ws, workspaceDomains, { resolvedTeamIds, refreshCache })
|
|
123
|
+
if (refreshed && !resolvedTeamIds.has(refreshed.workspace_id)) {
|
|
117
124
|
ws.token = refreshed.token
|
|
118
125
|
ws.workspace_id = refreshed.workspace_id
|
|
119
126
|
ws.workspace_name = refreshed.workspace_name
|
|
127
|
+
resolvedTeamIds.add(ws.workspace_id)
|
|
120
128
|
validWorkspaces.push(ws)
|
|
121
129
|
await credManager.setWorkspace(ws)
|
|
122
130
|
|
|
@@ -129,6 +137,26 @@ async function extractAction(options: {
|
|
|
129
137
|
}
|
|
130
138
|
}
|
|
131
139
|
|
|
140
|
+
for (const cookie of new Set(workspaces.map((ws) => ws.cookie).filter(Boolean))) {
|
|
141
|
+
const enumerated = await refreshKnownWorkspaceDomains(cookie, workspaceDomains, {
|
|
142
|
+
resolvedTeamIds,
|
|
143
|
+
refreshCache,
|
|
144
|
+
})
|
|
145
|
+
for (const result of enumerated) {
|
|
146
|
+
const ws: ExtractedWorkspace = {
|
|
147
|
+
workspace_id: result.workspace_id,
|
|
148
|
+
workspace_name: result.workspace_name,
|
|
149
|
+
token: result.token,
|
|
150
|
+
cookie,
|
|
151
|
+
}
|
|
152
|
+
validWorkspaces.push(ws)
|
|
153
|
+
await credManager.setWorkspace(ws)
|
|
154
|
+
if (options.debug) {
|
|
155
|
+
debug(`[debug] ✓ Recovered via domain enumeration: ${result.workspace_id}/${result.workspace_name}`)
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
132
160
|
if (validWorkspaces.length === 0) {
|
|
133
161
|
const errorMessage = getExtractionErrorMessage(failureReasons)
|
|
134
162
|
console.log(
|