@mininglamp-oss/cc-channel-octo 1.0.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/CHANGELOG.md +349 -0
- package/LICENSE +191 -0
- package/README.md +577 -0
- package/config.bot.example.json +15 -0
- package/config.example.json +33 -0
- package/dist/agent-bridge.d.ts +79 -0
- package/dist/agent-bridge.js +392 -0
- package/dist/agent-bridge.js.map +1 -0
- package/dist/commands.d.ts +57 -0
- package/dist/commands.js +121 -0
- package/dist/commands.js.map +1 -0
- package/dist/config.d.ts +278 -0
- package/dist/config.js +330 -0
- package/dist/config.js.map +1 -0
- package/dist/cron-evaluator.d.ts +53 -0
- package/dist/cron-evaluator.js +191 -0
- package/dist/cron-evaluator.js.map +1 -0
- package/dist/cron-fire-marker.d.ts +24 -0
- package/dist/cron-fire-marker.js +25 -0
- package/dist/cron-fire-marker.js.map +1 -0
- package/dist/cron-scheduler.d.ts +46 -0
- package/dist/cron-scheduler.js +114 -0
- package/dist/cron-scheduler.js.map +1 -0
- package/dist/cron-store.d.ts +62 -0
- package/dist/cron-store.js +63 -0
- package/dist/cron-store.js.map +1 -0
- package/dist/cron-tool.d.ts +44 -0
- package/dist/cron-tool.js +151 -0
- package/dist/cron-tool.js.map +1 -0
- package/dist/cwd-resolver.d.ts +72 -0
- package/dist/cwd-resolver.js +166 -0
- package/dist/cwd-resolver.js.map +1 -0
- package/dist/db-adapter.d.ts +21 -0
- package/dist/db-adapter.js +64 -0
- package/dist/db-adapter.js.map +1 -0
- package/dist/file-inline-wrap.d.ts +94 -0
- package/dist/file-inline-wrap.js +243 -0
- package/dist/file-inline-wrap.js.map +1 -0
- package/dist/gateway.d.ts +100 -0
- package/dist/gateway.js +420 -0
- package/dist/gateway.js.map +1 -0
- package/dist/group-config.d.ts +41 -0
- package/dist/group-config.js +104 -0
- package/dist/group-config.js.map +1 -0
- package/dist/group-context.d.ts +64 -0
- package/dist/group-context.js +396 -0
- package/dist/group-context.js.map +1 -0
- package/dist/inbound.d.ts +136 -0
- package/dist/inbound.js +667 -0
- package/dist/inbound.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.js +922 -0
- package/dist/index.js.map +1 -0
- package/dist/media-inbound.d.ts +38 -0
- package/dist/media-inbound.js +131 -0
- package/dist/media-inbound.js.map +1 -0
- package/dist/mention-utils.d.ts +99 -0
- package/dist/mention-utils.js +185 -0
- package/dist/mention-utils.js.map +1 -0
- package/dist/octo/api.d.ts +148 -0
- package/dist/octo/api.js +320 -0
- package/dist/octo/api.js.map +1 -0
- package/dist/octo/socket.d.ts +102 -0
- package/dist/octo/socket.js +793 -0
- package/dist/octo/socket.js.map +1 -0
- package/dist/octo/types.d.ts +126 -0
- package/dist/octo/types.js +35 -0
- package/dist/octo/types.js.map +1 -0
- package/dist/prompt-safety.d.ts +78 -0
- package/dist/prompt-safety.js +148 -0
- package/dist/prompt-safety.js.map +1 -0
- package/dist/session-router.d.ts +127 -0
- package/dist/session-router.js +432 -0
- package/dist/session-router.js.map +1 -0
- package/dist/session-store.d.ts +89 -0
- package/dist/session-store.js +297 -0
- package/dist/session-store.js.map +1 -0
- package/dist/skill-linker.d.ts +31 -0
- package/dist/skill-linker.js +160 -0
- package/dist/skill-linker.js.map +1 -0
- package/dist/stream-relay.d.ts +42 -0
- package/dist/stream-relay.js +243 -0
- package/dist/stream-relay.js.map +1 -0
- package/dist/url-policy.d.ts +103 -0
- package/dist/url-policy.js +290 -0
- package/dist/url-policy.js.map +1 -0
- package/package.json +79 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inbound image download for native multimodal (issue #86).
|
|
3
|
+
*
|
|
4
|
+
* Octo delivers images as URLs. To let the agent actually SEE an image (not just
|
|
5
|
+
* a URL string), we download it INTO the session's cwd sandbox so the model can
|
|
6
|
+
* open it with the Read tool (the Claude Agent SDK's Read supports image files).
|
|
7
|
+
* Writing under the session cwd means:
|
|
8
|
+
* - the agent can reach it with a relative path,
|
|
9
|
+
* - it's isolated per session (same partition as history/memory), and
|
|
10
|
+
* - the existing 7-day cwd janitor reclaims it — no separate cleanup needed.
|
|
11
|
+
*
|
|
12
|
+
* Reuses the same SSRF/redirect/size hardening as the file-download path.
|
|
13
|
+
*/
|
|
14
|
+
/** Subdir (under the session cwd) where downloaded inbound images land. */
|
|
15
|
+
export declare const INBOUND_MEDIA_DIR = ".cc-octo-media";
|
|
16
|
+
/** Per-image hard cap. Claude's vision API rejects very large images; 5 MB
|
|
17
|
+
* matches the inbound file cap and is comfortably above any real chat image. */
|
|
18
|
+
export declare const MAX_IMAGE_BYTES: number;
|
|
19
|
+
/** Max images materialized from a single message (e.g. a RichText with many). */
|
|
20
|
+
export declare const MAX_IMAGES_PER_MESSAGE = 6;
|
|
21
|
+
export type ImageDownloadResult = {
|
|
22
|
+
localPath: string;
|
|
23
|
+
relPath: string;
|
|
24
|
+
} | {
|
|
25
|
+
error: string;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Download one image URL into `<cwdDir>/.cc-octo-media/`. Returns the absolute
|
|
29
|
+
* path and the path relative to the cwd (what we show the agent). On any
|
|
30
|
+
* problem (SSRF reject, non-image type, oversize, HTTP error) returns
|
|
31
|
+
* `{ error }` so the caller can fall back to the URL marker.
|
|
32
|
+
*/
|
|
33
|
+
export declare function downloadInboundImage(params: {
|
|
34
|
+
url: string;
|
|
35
|
+
cwdDir: string;
|
|
36
|
+
botToken: string;
|
|
37
|
+
apiUrl: string;
|
|
38
|
+
}): Promise<ImageDownloadResult>;
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inbound image download for native multimodal (issue #86).
|
|
3
|
+
*
|
|
4
|
+
* Octo delivers images as URLs. To let the agent actually SEE an image (not just
|
|
5
|
+
* a URL string), we download it INTO the session's cwd sandbox so the model can
|
|
6
|
+
* open it with the Read tool (the Claude Agent SDK's Read supports image files).
|
|
7
|
+
* Writing under the session cwd means:
|
|
8
|
+
* - the agent can reach it with a relative path,
|
|
9
|
+
* - it's isolated per session (same partition as history/memory), and
|
|
10
|
+
* - the existing 7-day cwd janitor reclaims it — no separate cleanup needed.
|
|
11
|
+
*
|
|
12
|
+
* Reuses the same SSRF/redirect/size hardening as the file-download path.
|
|
13
|
+
*/
|
|
14
|
+
import { createWriteStream } from 'node:fs';
|
|
15
|
+
import { mkdir, unlink } from 'node:fs/promises';
|
|
16
|
+
import { join, relative } from 'node:path';
|
|
17
|
+
import { randomUUID } from 'node:crypto';
|
|
18
|
+
import { assertPublicUrl, fetchWithRedirectGuard } from './url-policy.js';
|
|
19
|
+
import { isSameHost } from './inbound.js';
|
|
20
|
+
/** Subdir (under the session cwd) where downloaded inbound images land. */
|
|
21
|
+
export const INBOUND_MEDIA_DIR = '.cc-octo-media';
|
|
22
|
+
/** Per-image hard cap. Claude's vision API rejects very large images; 5 MB
|
|
23
|
+
* matches the inbound file cap and is comfortably above any real chat image. */
|
|
24
|
+
export const MAX_IMAGE_BYTES = 5 * 1024 * 1024;
|
|
25
|
+
/** Max images materialized from a single message (e.g. a RichText with many). */
|
|
26
|
+
export const MAX_IMAGES_PER_MESSAGE = 6;
|
|
27
|
+
const IMAGE_DOWNLOAD_TIMEOUT_MS = 30_000;
|
|
28
|
+
/**
|
|
29
|
+
* Content-Type → file extension for the image formats Claude can natively read.
|
|
30
|
+
* A response whose type isn't here is rejected (we don't feed unknown blobs to
|
|
31
|
+
* the model as "images").
|
|
32
|
+
*/
|
|
33
|
+
const ALLOWED_IMAGE_TYPES = {
|
|
34
|
+
'image/png': 'png',
|
|
35
|
+
'image/jpeg': 'jpg',
|
|
36
|
+
'image/jpg': 'jpg',
|
|
37
|
+
'image/gif': 'gif',
|
|
38
|
+
'image/webp': 'webp',
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Download one image URL into `<cwdDir>/.cc-octo-media/`. Returns the absolute
|
|
42
|
+
* path and the path relative to the cwd (what we show the agent). On any
|
|
43
|
+
* problem (SSRF reject, non-image type, oversize, HTTP error) returns
|
|
44
|
+
* `{ error }` so the caller can fall back to the URL marker.
|
|
45
|
+
*/
|
|
46
|
+
export async function downloadInboundImage(params) {
|
|
47
|
+
const { url, cwdDir, botToken, apiUrl } = params;
|
|
48
|
+
// SSRF defense — reject private/loopback/link-local (and re-checked per hop
|
|
49
|
+
// inside fetchWithRedirectGuard).
|
|
50
|
+
try {
|
|
51
|
+
await assertPublicUrl(url);
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
return { error: `拒绝下载: ${String(err)}` };
|
|
55
|
+
}
|
|
56
|
+
const signal = AbortSignal.timeout(IMAGE_DOWNLOAD_TIMEOUT_MS);
|
|
57
|
+
let resp;
|
|
58
|
+
try {
|
|
59
|
+
// Scope Authorization PER HOP: only send the bot token while the current
|
|
60
|
+
// hop is same-host as apiUrl (a redirect to another host drops it).
|
|
61
|
+
resp = await fetchWithRedirectGuard(url, (currentUrl) => {
|
|
62
|
+
const headers = {};
|
|
63
|
+
if (isSameHost(currentUrl, apiUrl))
|
|
64
|
+
headers.Authorization = `Bearer ${botToken}`;
|
|
65
|
+
return { headers, signal };
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
catch (err) {
|
|
69
|
+
return { error: `下载失败: ${String(err)}` };
|
|
70
|
+
}
|
|
71
|
+
if (!resp.ok)
|
|
72
|
+
return { error: `下载失败 HTTP ${resp.status}` };
|
|
73
|
+
// Only accept image content types Claude can read.
|
|
74
|
+
const rawType = (resp.headers.get('content-type') ?? '').split(';')[0].trim().toLowerCase();
|
|
75
|
+
const ext = ALLOWED_IMAGE_TYPES[rawType];
|
|
76
|
+
if (!ext)
|
|
77
|
+
return { error: `不支持的图片类型: ${rawType || '未知'}` };
|
|
78
|
+
const body = resp.body;
|
|
79
|
+
if (!body)
|
|
80
|
+
return { error: '响应无内容' };
|
|
81
|
+
const dir = join(cwdDir, INBOUND_MEDIA_DIR);
|
|
82
|
+
await mkdir(dir, { recursive: true });
|
|
83
|
+
const localPath = join(dir, `${randomUUID()}.${ext}`);
|
|
84
|
+
// Stream to disk with a hard size cap (abort + delete on overflow).
|
|
85
|
+
const reader = body.getReader();
|
|
86
|
+
const ws = createWriteStream(localPath);
|
|
87
|
+
/** Tear down the write stream and remove the (possibly partial) file. */
|
|
88
|
+
const cleanup = async () => {
|
|
89
|
+
await new Promise((resolve) => {
|
|
90
|
+
// destroy() then wait for 'close' so the fd is released before unlink,
|
|
91
|
+
// avoiding a race where unlink runs before the file is fully created.
|
|
92
|
+
ws.once('close', () => resolve());
|
|
93
|
+
ws.destroy();
|
|
94
|
+
});
|
|
95
|
+
await unlink(localPath).catch(() => { });
|
|
96
|
+
};
|
|
97
|
+
let total = 0;
|
|
98
|
+
try {
|
|
99
|
+
for (;;) {
|
|
100
|
+
const { done, value } = await reader.read();
|
|
101
|
+
if (done)
|
|
102
|
+
break;
|
|
103
|
+
total += value.byteLength;
|
|
104
|
+
if (total > MAX_IMAGE_BYTES) {
|
|
105
|
+
try {
|
|
106
|
+
reader.cancel();
|
|
107
|
+
}
|
|
108
|
+
catch { /* ignore */ }
|
|
109
|
+
await cleanup();
|
|
110
|
+
return { error: `图片超过大小上限 ${Math.round(MAX_IMAGE_BYTES / 1024 / 1024)}MB` };
|
|
111
|
+
}
|
|
112
|
+
if (!ws.write(value))
|
|
113
|
+
await new Promise((r) => ws.once('drain', r));
|
|
114
|
+
}
|
|
115
|
+
ws.end();
|
|
116
|
+
await new Promise((resolve, reject) => {
|
|
117
|
+
ws.on('finish', () => resolve());
|
|
118
|
+
ws.on('error', reject);
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
catch (err) {
|
|
122
|
+
await cleanup();
|
|
123
|
+
return { error: `下载失败: ${String(err)}` };
|
|
124
|
+
}
|
|
125
|
+
if (total === 0) {
|
|
126
|
+
await cleanup();
|
|
127
|
+
return { error: '图片为空' };
|
|
128
|
+
}
|
|
129
|
+
return { localPath, relPath: relative(cwdDir, localPath) };
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=media-inbound.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-inbound.js","sourceRoot":"","sources":["../src/media-inbound.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @mention parsing utilities for outbound messages.
|
|
3
|
+
*
|
|
4
|
+
* Supports two formats in agent output:
|
|
5
|
+
* - v2 structured: @[uid:displayName] — precise, generated from system prompt
|
|
6
|
+
* - v1 plain: @name — resolved against memberMap (displayName → uid)
|
|
7
|
+
*
|
|
8
|
+
* Also detects @all / @所有人 for mentionAll signaling.
|
|
9
|
+
*/
|
|
10
|
+
import type { MentionEntity } from "./octo/types.js";
|
|
11
|
+
/**
|
|
12
|
+
* Plain @name pattern.
|
|
13
|
+
*
|
|
14
|
+
* Pre-boundary (lookbehind): @ must be preceded by line start or non-alphanumeric
|
|
15
|
+
* character (blacklist approach excludes emails like `user@example.com`).
|
|
16
|
+
*
|
|
17
|
+
* Name charset: letters, digits, underscore, CJK ideographs, Hangul, Kana,
|
|
18
|
+
* Latin extended (accented), dot, hyphen.
|
|
19
|
+
*
|
|
20
|
+
* Capture groups:
|
|
21
|
+
* match[0] = full @name (lookbehind doesn't consume chars)
|
|
22
|
+
* match[1] = name (without @)
|
|
23
|
+
*/
|
|
24
|
+
export declare const MENTION_PATTERN: RegExp;
|
|
25
|
+
/**
|
|
26
|
+
* Structured @[uid:displayName] pattern (adapter↔LLM internal format).
|
|
27
|
+
*
|
|
28
|
+
* uid charset: [\w.\-]+ — covers all known Octo uid formats.
|
|
29
|
+
* name charset: [^\]\n]+ — anything except closing bracket and newline.
|
|
30
|
+
*/
|
|
31
|
+
export declare const STRUCTURED_MENTION_PATTERN: RegExp;
|
|
32
|
+
export interface StructuredMention {
|
|
33
|
+
uid: string;
|
|
34
|
+
name: string;
|
|
35
|
+
/** Offset of @[uid:name] in source text (UTF-16 code units). */
|
|
36
|
+
offset: number;
|
|
37
|
+
/** Full length of @[uid:name] match. */
|
|
38
|
+
length: number;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Parse @[uid:name] structured mentions from text.
|
|
42
|
+
*
|
|
43
|
+
* Used to extract LLM-emitted structured mentions for conversion to plain
|
|
44
|
+
* @name + MentionEntity payload.
|
|
45
|
+
*/
|
|
46
|
+
export declare function parseStructuredMentions(text: string): StructuredMention[];
|
|
47
|
+
export interface ConvertResult {
|
|
48
|
+
/** Human-readable content with @[uid:name] replaced by @name. */
|
|
49
|
+
content: string;
|
|
50
|
+
/** Mention entities with offsets pointing into the converted content. */
|
|
51
|
+
entities: MentionEntity[];
|
|
52
|
+
/** UIDs in entities (same order as entities, sorted by offset). */
|
|
53
|
+
uids: string[];
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Replace @[uid:name] with @name and produce entities pointing to the @name
|
|
57
|
+
* positions in the output.
|
|
58
|
+
*
|
|
59
|
+
* Uses an incremental build algorithm: walks mentions in offset order, copying
|
|
60
|
+
* the gap before each mention, then the replacement, tracking the precise
|
|
61
|
+
* output offset for each entity. Avoids indexOf rescans that would mis-bind
|
|
62
|
+
* same-name mentions.
|
|
63
|
+
*/
|
|
64
|
+
export declare function convertStructuredMentions(text: string, mentions: StructuredMention[]): ConvertResult;
|
|
65
|
+
/**
|
|
66
|
+
* Try to match the longest displayName from memberMap starting at @-position.
|
|
67
|
+
*
|
|
68
|
+
* `sortedNames` must be sorted by length descending.
|
|
69
|
+
* Boundary check: char after the matched name must be a name-terminator
|
|
70
|
+
* (non-name char) to prevent partial matches like "@Anyang Su" hitting
|
|
71
|
+
* "@Anyang Superman".
|
|
72
|
+
*/
|
|
73
|
+
export declare function tryLongestMemberMatch(text: string, atPos: number, memberMap: Map<string, string>, sortedNames: string[]): {
|
|
74
|
+
name: string;
|
|
75
|
+
uid: string;
|
|
76
|
+
} | undefined;
|
|
77
|
+
/**
|
|
78
|
+
* Build entities from plain @name text via memberMap (displayName → uid).
|
|
79
|
+
*
|
|
80
|
+
* Skips @all / @所有人 (handled separately as mentionAll).
|
|
81
|
+
*/
|
|
82
|
+
export declare function buildEntitiesFromFallback(content: string, memberMap: Map<string, string>): {
|
|
83
|
+
entities: MentionEntity[];
|
|
84
|
+
uids: string[];
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Resolve all mentions in text — runs both structured and plain pipelines,
|
|
88
|
+
* deduplicates by offset, and detects @all / @所有人.
|
|
89
|
+
*
|
|
90
|
+
* @param content Raw text possibly containing @[uid:name] and/or @name
|
|
91
|
+
* @param memberMap Optional displayName→uid map for @name resolution
|
|
92
|
+
* @returns finalContent (with @[uid:name] replaced by @name) + entities + uids + mentionAll
|
|
93
|
+
*/
|
|
94
|
+
export declare function resolveMentions(content: string, memberMap?: Map<string, string>): {
|
|
95
|
+
finalContent: string;
|
|
96
|
+
mentionUids: string[];
|
|
97
|
+
mentionEntities: MentionEntity[];
|
|
98
|
+
mentionAll: boolean;
|
|
99
|
+
};
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @mention parsing utilities for outbound messages.
|
|
3
|
+
*
|
|
4
|
+
* Supports two formats in agent output:
|
|
5
|
+
* - v2 structured: @[uid:displayName] — precise, generated from system prompt
|
|
6
|
+
* - v1 plain: @name — resolved against memberMap (displayName → uid)
|
|
7
|
+
*
|
|
8
|
+
* Also detects @all / @所有人 for mentionAll signaling.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Plain @name pattern.
|
|
12
|
+
*
|
|
13
|
+
* Pre-boundary (lookbehind): @ must be preceded by line start or non-alphanumeric
|
|
14
|
+
* character (blacklist approach excludes emails like `user@example.com`).
|
|
15
|
+
*
|
|
16
|
+
* Name charset: letters, digits, underscore, CJK ideographs, Hangul, Kana,
|
|
17
|
+
* Latin extended (accented), dot, hyphen.
|
|
18
|
+
*
|
|
19
|
+
* Capture groups:
|
|
20
|
+
* match[0] = full @name (lookbehind doesn't consume chars)
|
|
21
|
+
* match[1] = name (without @)
|
|
22
|
+
*/
|
|
23
|
+
export const MENTION_PATTERN = /(?:^|(?<=\s|[^a-zA-Z0-9]))@([\w\u00C0-\u024F\u4e00-\u9fff\u3040-\u30FF\uAC00-\uD7AF.\-]+)/g;
|
|
24
|
+
/**
|
|
25
|
+
* Structured @[uid:displayName] pattern (adapter↔LLM internal format).
|
|
26
|
+
*
|
|
27
|
+
* uid charset: [\w.\-]+ — covers all known Octo uid formats.
|
|
28
|
+
* name charset: [^\]\n]+ — anything except closing bracket and newline.
|
|
29
|
+
*/
|
|
30
|
+
export const STRUCTURED_MENTION_PATTERN = /@\[([\w.\-]+):([^\]\n]+)\]/g;
|
|
31
|
+
/**
|
|
32
|
+
* Parse @[uid:name] structured mentions from text.
|
|
33
|
+
*
|
|
34
|
+
* Used to extract LLM-emitted structured mentions for conversion to plain
|
|
35
|
+
* @name + MentionEntity payload.
|
|
36
|
+
*/
|
|
37
|
+
export function parseStructuredMentions(text) {
|
|
38
|
+
const results = [];
|
|
39
|
+
const pattern = new RegExp(STRUCTURED_MENTION_PATTERN.source, "g");
|
|
40
|
+
let match;
|
|
41
|
+
while ((match = pattern.exec(text)) !== null) {
|
|
42
|
+
results.push({
|
|
43
|
+
uid: match[1],
|
|
44
|
+
name: match[2],
|
|
45
|
+
offset: match.index,
|
|
46
|
+
length: match[0].length,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
return results;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Replace @[uid:name] with @name and produce entities pointing to the @name
|
|
53
|
+
* positions in the output.
|
|
54
|
+
*
|
|
55
|
+
* Uses an incremental build algorithm: walks mentions in offset order, copying
|
|
56
|
+
* the gap before each mention, then the replacement, tracking the precise
|
|
57
|
+
* output offset for each entity. Avoids indexOf rescans that would mis-bind
|
|
58
|
+
* same-name mentions.
|
|
59
|
+
*/
|
|
60
|
+
export function convertStructuredMentions(text, mentions) {
|
|
61
|
+
const sorted = [...mentions].sort((a, b) => a.offset - b.offset);
|
|
62
|
+
const entities = [];
|
|
63
|
+
const uids = [];
|
|
64
|
+
let content = "";
|
|
65
|
+
let cursor = 0;
|
|
66
|
+
for (const m of sorted) {
|
|
67
|
+
content += text.substring(cursor, m.offset);
|
|
68
|
+
const replacement = `@${m.name}`;
|
|
69
|
+
const newOffset = content.length;
|
|
70
|
+
content += replacement;
|
|
71
|
+
entities.push({
|
|
72
|
+
uid: m.uid,
|
|
73
|
+
offset: newOffset,
|
|
74
|
+
length: replacement.length,
|
|
75
|
+
});
|
|
76
|
+
uids.push(m.uid);
|
|
77
|
+
cursor = m.offset + m.length;
|
|
78
|
+
}
|
|
79
|
+
content += text.substring(cursor);
|
|
80
|
+
return { content, entities, uids };
|
|
81
|
+
}
|
|
82
|
+
// ── Build entities from plain @name via memberMap (v1 fallback) ─────────────
|
|
83
|
+
/** Char class for valid name characters (mirrors MENTION_PATTERN inner set, no space). */
|
|
84
|
+
const NAME_CHAR_RE = /[\w\u00C0-\u024F\u4e00-\u9fff\u3040-\u30FF\uAC00-\uD7AF.\-]/;
|
|
85
|
+
/**
|
|
86
|
+
* Try to match the longest displayName from memberMap starting at @-position.
|
|
87
|
+
*
|
|
88
|
+
* `sortedNames` must be sorted by length descending.
|
|
89
|
+
* Boundary check: char after the matched name must be a name-terminator
|
|
90
|
+
* (non-name char) to prevent partial matches like "@Anyang Su" hitting
|
|
91
|
+
* "@Anyang Superman".
|
|
92
|
+
*/
|
|
93
|
+
export function tryLongestMemberMatch(text, atPos, memberMap, sortedNames) {
|
|
94
|
+
const after = text.substring(atPos + 1);
|
|
95
|
+
for (const candidate of sortedNames) {
|
|
96
|
+
if (after.startsWith(candidate)) {
|
|
97
|
+
const ch = text[atPos + 1 + candidate.length];
|
|
98
|
+
if (ch === undefined || !NAME_CHAR_RE.test(ch)) {
|
|
99
|
+
const uid = memberMap.get(candidate);
|
|
100
|
+
if (uid)
|
|
101
|
+
return { name: candidate, uid };
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return undefined;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Build entities from plain @name text via memberMap (displayName → uid).
|
|
109
|
+
*
|
|
110
|
+
* Skips @all / @所有人 (handled separately as mentionAll).
|
|
111
|
+
*/
|
|
112
|
+
export function buildEntitiesFromFallback(content, memberMap) {
|
|
113
|
+
const entities = [];
|
|
114
|
+
const uids = [];
|
|
115
|
+
// Sort by length descending — longest-prefix-match handles names with spaces.
|
|
116
|
+
const sortedNames = [...memberMap.keys()].sort((a, b) => b.length - a.length);
|
|
117
|
+
const pattern = new RegExp(MENTION_PATTERN.source, "g");
|
|
118
|
+
let match;
|
|
119
|
+
while ((match = pattern.exec(content)) !== null) {
|
|
120
|
+
const name = match[1];
|
|
121
|
+
// Skip @all / @所有人 — they go through mentionAll, not entities.
|
|
122
|
+
if (name.toLowerCase() === "all" || name === "所有人")
|
|
123
|
+
continue;
|
|
124
|
+
let uid;
|
|
125
|
+
let matchedName = name;
|
|
126
|
+
const longer = tryLongestMemberMatch(content, match.index, memberMap, sortedNames);
|
|
127
|
+
if (longer) {
|
|
128
|
+
uid = longer.uid;
|
|
129
|
+
matchedName = longer.name;
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
uid = memberMap.get(name);
|
|
133
|
+
}
|
|
134
|
+
if (!uid)
|
|
135
|
+
continue;
|
|
136
|
+
const atName = `@${matchedName}`;
|
|
137
|
+
entities.push({ uid, offset: match.index, length: atName.length });
|
|
138
|
+
uids.push(uid);
|
|
139
|
+
// Advance past full match to avoid re-matching trailing chars of long names.
|
|
140
|
+
pattern.lastIndex = match.index + atName.length;
|
|
141
|
+
}
|
|
142
|
+
return { entities, uids };
|
|
143
|
+
}
|
|
144
|
+
// ── Top-level mention resolution ────────────────────────────────────────────
|
|
145
|
+
/**
|
|
146
|
+
* Resolve all mentions in text — runs both structured and plain pipelines,
|
|
147
|
+
* deduplicates by offset, and detects @all / @所有人.
|
|
148
|
+
*
|
|
149
|
+
* @param content Raw text possibly containing @[uid:name] and/or @name
|
|
150
|
+
* @param memberMap Optional displayName→uid map for @name resolution
|
|
151
|
+
* @returns finalContent (with @[uid:name] replaced by @name) + entities + uids + mentionAll
|
|
152
|
+
*/
|
|
153
|
+
export function resolveMentions(content, memberMap) {
|
|
154
|
+
let finalContent = content;
|
|
155
|
+
let entities = [];
|
|
156
|
+
// v2: @[uid:name] → @name + entities
|
|
157
|
+
const structured = parseStructuredMentions(finalContent);
|
|
158
|
+
if (structured.length > 0) {
|
|
159
|
+
const converted = convertStructuredMentions(finalContent, structured);
|
|
160
|
+
finalContent = converted.content;
|
|
161
|
+
entities = [...converted.entities];
|
|
162
|
+
}
|
|
163
|
+
// v1: @name fallback via memberMap (skip offsets already covered by v2)
|
|
164
|
+
if (memberMap && memberMap.size > 0) {
|
|
165
|
+
const fallback = buildEntitiesFromFallback(finalContent, memberMap);
|
|
166
|
+
const existingOffsets = new Set(entities.map(e => e.offset));
|
|
167
|
+
for (const e of fallback.entities) {
|
|
168
|
+
if (!existingOffsets.has(e.offset))
|
|
169
|
+
entities.push(e);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
// Sort by offset, derive uids from sorted entities.
|
|
173
|
+
entities.sort((a, b) => a.offset - b.offset);
|
|
174
|
+
const mentionUids = entities.map(e => e.uid);
|
|
175
|
+
// @all / @所有人 detection. The trailing boundary must be a NON-name char (or
|
|
176
|
+
// end-of-string), NOT a generic `[^\w]`. The old `[^\w]` treated `@all-members`
|
|
177
|
+
// / `@allen`… wait, `@allen` was already blocked by `[^\w]` (e is `\w`); the
|
|
178
|
+
// real false positive was `@all-foo` / `@all.x` (hyphen/dot are `[^\w]`),
|
|
179
|
+
// wrongly broadcasting to everyone in a large group. Excluding the name-char
|
|
180
|
+
// class (which includes `-` and `.`) fixes that while still matching a real
|
|
181
|
+
// standalone token followed by space, CJK punctuation (`@所有人,`), `!`, or EOS.
|
|
182
|
+
const mentionAll = new RegExp(`(?:^|(?<=\\s))@(?:all|所有人)(?!${NAME_CHAR_RE.source})`, 'i').test(finalContent);
|
|
183
|
+
return { finalContent, mentionUids, mentionEntities: entities, mentionAll };
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=mention-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mention-utils.js","sourceRoot":"","sources":["../src/mention-utils.ts"],"names":[],"mappings":"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"}
|