agent-messenger 1.10.0 → 1.10.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.
- package/.claude-plugin/plugin.json +1 -1
- package/dist/package.json +1 -1
- package/dist/src/platforms/slack/commands/auth.d.ts +2 -0
- package/dist/src/platforms/slack/commands/auth.d.ts.map +1 -1
- package/dist/src/platforms/slack/commands/auth.js +10 -1
- package/dist/src/platforms/slack/commands/auth.js.map +1 -1
- package/package.json +1 -1
- package/skills/agent-discord/SKILL.md +1 -1
- package/skills/agent-discordbot/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/src/platforms/slack/commands/auth.test.ts +45 -1
- package/src/platforms/slack/commands/auth.ts +17 -5
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-messenger",
|
|
3
|
-
"version": "1.10.
|
|
3
|
+
"version": "1.10.1",
|
|
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/dist/package.json
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
+
import { type ExtractedWorkspace } from '../token-extractor.js';
|
|
3
|
+
export declare function formatCredentialDebug(ws: ExtractedWorkspace, showSecrets?: boolean): string;
|
|
2
4
|
export declare function getExtractionErrorMessage(failureReasons: string[]): string;
|
|
3
5
|
export declare const authCommand: Command;
|
|
4
6
|
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -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;
|
|
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;AAMnC,OAAO,EAAE,KAAK,kBAAkB,EAAkB,MAAM,oBAAoB,CAAA;AAE5E,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,kBAAkB,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAI3F;AA8LD,wBAAgB,yBAAyB,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,MAAM,CAQ1E;AAED,eAAO,MAAM,WAAW,SAsBrB,CAAA"}
|
|
@@ -5,8 +5,16 @@ import { SlackClient, SlackError } from '../client.js';
|
|
|
5
5
|
import { CredentialManager } from '../credential-manager.js';
|
|
6
6
|
import { refreshCookie } from '../ensure-auth.js';
|
|
7
7
|
import { TokenExtractor } from '../token-extractor.js';
|
|
8
|
+
export function formatCredentialDebug(ws, showSecrets) {
|
|
9
|
+
const tokenDisplay = showSecrets ? ws.token : `${ws.token.substring(0, 20)}...`;
|
|
10
|
+
const cookieDisplay = showSecrets ? ws.cookie : ws.cookie ? 'present' : 'missing';
|
|
11
|
+
return `${ws.workspace_id}: token=${tokenDisplay}, cookie=${cookieDisplay}`;
|
|
12
|
+
}
|
|
8
13
|
async function extractAction(options) {
|
|
9
14
|
try {
|
|
15
|
+
if (options.unsafelyShowSecrets) {
|
|
16
|
+
options.debug = true;
|
|
17
|
+
}
|
|
10
18
|
const debugLog = options.debug ? (msg) => console.error(`[debug] ${msg}`) : undefined;
|
|
11
19
|
const extractor = new TokenExtractor(undefined, undefined, undefined, debugLog);
|
|
12
20
|
if (process.platform === 'darwin') {
|
|
@@ -32,7 +40,7 @@ async function extractAction(options) {
|
|
|
32
40
|
if (options.debug) {
|
|
33
41
|
console.error(`[debug] Found ${workspaces.length} workspace(s)`);
|
|
34
42
|
for (const ws of workspaces) {
|
|
35
|
-
console.error(`[debug] - ${ws
|
|
43
|
+
console.error(`[debug] - ${formatCredentialDebug(ws, options.unsafelyShowSecrets)}`);
|
|
36
44
|
}
|
|
37
45
|
}
|
|
38
46
|
if (workspaces.length === 0) {
|
|
@@ -165,6 +173,7 @@ export const authCommand = new Command('auth')
|
|
|
165
173
|
.description('Extract tokens from Slack desktop app')
|
|
166
174
|
.option('--pretty', 'Pretty print JSON output')
|
|
167
175
|
.option('--debug', 'Show debug output for troubleshooting')
|
|
176
|
+
.option('--unsafely-show-secrets', 'Show full token and cookie values in debug output')
|
|
168
177
|
.action(extractAction))
|
|
169
178
|
.addCommand(new Command('logout')
|
|
170
179
|
.description('Logout from workspace')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../../src/platforms/slack/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../../src/platforms/slack/commands/auth.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@ import { afterAll, beforeEach, describe, expect, mock, test } from 'bun:test'
|
|
|
2
2
|
import { mkdirSync, rmSync } from 'node:fs'
|
|
3
3
|
import { homedir } from 'node:os'
|
|
4
4
|
import { join } from 'node:path'
|
|
5
|
-
import { getExtractionErrorMessage } from '@/platforms/slack/commands/auth'
|
|
5
|
+
import { formatCredentialDebug, getExtractionErrorMessage } from '@/platforms/slack/commands/auth'
|
|
6
6
|
import { CredentialManager } from '@/platforms/slack/credential-manager'
|
|
7
7
|
import { type ExtractedWorkspace, TokenExtractor } from '@/platforms/slack/token-extractor'
|
|
8
8
|
|
|
@@ -352,6 +352,50 @@ describe('Output Formatting', () => {
|
|
|
352
352
|
})
|
|
353
353
|
})
|
|
354
354
|
|
|
355
|
+
describe('formatCredentialDebug', () => {
|
|
356
|
+
const ws = {
|
|
357
|
+
workspace_id: 'T123ABC',
|
|
358
|
+
workspace_name: 'test-workspace',
|
|
359
|
+
token:
|
|
360
|
+
'xoxc-1234567890123-4567890123456-7890123456789-abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890',
|
|
361
|
+
cookie: 'xoxd-abc123def456ghi789jkl012mno345pqr678stu901vwx234yz',
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
test('truncates token and hides cookie by default', () => {
|
|
365
|
+
const result = formatCredentialDebug(ws)
|
|
366
|
+
|
|
367
|
+
expect(result).toContain('T123ABC')
|
|
368
|
+
expect(result).toContain(`${ws.token.substring(0, 20)}...`)
|
|
369
|
+
expect(result).not.toContain(ws.token)
|
|
370
|
+
expect(result).toContain('cookie=present')
|
|
371
|
+
expect(result).not.toContain(ws.cookie)
|
|
372
|
+
})
|
|
373
|
+
|
|
374
|
+
test('shows full token and cookie when showSecrets is true', () => {
|
|
375
|
+
const result = formatCredentialDebug(ws, true)
|
|
376
|
+
|
|
377
|
+
expect(result).toContain(ws.token)
|
|
378
|
+
expect(result).toContain(ws.cookie)
|
|
379
|
+
expect(result).not.toContain('...')
|
|
380
|
+
expect(result).not.toContain('present')
|
|
381
|
+
})
|
|
382
|
+
|
|
383
|
+
test('shows cookie=missing when cookie is empty and secrets hidden', () => {
|
|
384
|
+
const wsNoCookie = { ...ws, cookie: '' }
|
|
385
|
+
const result = formatCredentialDebug(wsNoCookie)
|
|
386
|
+
|
|
387
|
+
expect(result).toContain('cookie=missing')
|
|
388
|
+
})
|
|
389
|
+
|
|
390
|
+
test('shows empty cookie value when cookie is empty and secrets shown', () => {
|
|
391
|
+
const wsNoCookie = { ...ws, cookie: '' }
|
|
392
|
+
const result = formatCredentialDebug(wsNoCookie, true)
|
|
393
|
+
|
|
394
|
+
expect(result).toContain('cookie=')
|
|
395
|
+
expect(result).not.toContain('cookie=missing')
|
|
396
|
+
})
|
|
397
|
+
})
|
|
398
|
+
|
|
355
399
|
describe('getExtractionErrorMessage', () => {
|
|
356
400
|
test('returns cookie failure message for missing_cookie', () => {
|
|
357
401
|
expect(getExtractionErrorMessage(['missing_cookie'])).toContain('Cookie extraction failed')
|
|
@@ -4,10 +4,23 @@ import { formatOutput } from '@/shared/utils/output'
|
|
|
4
4
|
import { SlackClient, SlackError } from '../client'
|
|
5
5
|
import { CredentialManager } from '../credential-manager'
|
|
6
6
|
import { refreshCookie } from '../ensure-auth'
|
|
7
|
-
import { TokenExtractor } from '../token-extractor'
|
|
7
|
+
import { type ExtractedWorkspace, TokenExtractor } from '../token-extractor'
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
export function formatCredentialDebug(ws: ExtractedWorkspace, showSecrets?: boolean): string {
|
|
10
|
+
const tokenDisplay = showSecrets ? ws.token : `${ws.token.substring(0, 20)}...`
|
|
11
|
+
const cookieDisplay = showSecrets ? ws.cookie : ws.cookie ? 'present' : 'missing'
|
|
12
|
+
return `${ws.workspace_id}: token=${tokenDisplay}, cookie=${cookieDisplay}`
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
async function extractAction(options: {
|
|
16
|
+
pretty?: boolean
|
|
17
|
+
debug?: boolean
|
|
18
|
+
unsafelyShowSecrets?: boolean
|
|
19
|
+
}): Promise<void> {
|
|
10
20
|
try {
|
|
21
|
+
if (options.unsafelyShowSecrets) {
|
|
22
|
+
options.debug = true
|
|
23
|
+
}
|
|
11
24
|
const debugLog = options.debug ? (msg: string) => console.error(`[debug] ${msg}`) : undefined
|
|
12
25
|
const extractor = new TokenExtractor(undefined, undefined, undefined, debugLog)
|
|
13
26
|
|
|
@@ -37,9 +50,7 @@ async function extractAction(options: { pretty?: boolean; debug?: boolean }): Pr
|
|
|
37
50
|
if (options.debug) {
|
|
38
51
|
console.error(`[debug] Found ${workspaces.length} workspace(s)`)
|
|
39
52
|
for (const ws of workspaces) {
|
|
40
|
-
console.error(
|
|
41
|
-
`[debug] - ${ws.workspace_id}: token=${ws.token.substring(0, 20)}..., cookie=${ws.cookie ? 'present' : 'missing'}`,
|
|
42
|
-
)
|
|
53
|
+
console.error(`[debug] - ${formatCredentialDebug(ws, options.unsafelyShowSecrets)}`)
|
|
43
54
|
}
|
|
44
55
|
}
|
|
45
56
|
|
|
@@ -206,6 +217,7 @@ export const authCommand = new Command('auth')
|
|
|
206
217
|
.description('Extract tokens from Slack desktop app')
|
|
207
218
|
.option('--pretty', 'Pretty print JSON output')
|
|
208
219
|
.option('--debug', 'Show debug output for troubleshooting')
|
|
220
|
+
.option('--unsafely-show-secrets', 'Show full token and cookie values in debug output')
|
|
209
221
|
.action(extractAction),
|
|
210
222
|
)
|
|
211
223
|
.addCommand(
|