@mininglamp-oss/cc-channel-octo 1.0.1-dev.0ac574a

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/CHANGELOG.md +361 -0
  2. package/LICENSE +191 -0
  3. package/README.md +577 -0
  4. package/config.bot.example.json +15 -0
  5. package/config.example.json +33 -0
  6. package/dist/agent-bridge.d.ts +91 -0
  7. package/dist/agent-bridge.js +397 -0
  8. package/dist/agent-bridge.js.map +1 -0
  9. package/dist/cli.d.ts +109 -0
  10. package/dist/cli.js +467 -0
  11. package/dist/cli.js.map +1 -0
  12. package/dist/commands.d.ts +57 -0
  13. package/dist/commands.js +121 -0
  14. package/dist/commands.js.map +1 -0
  15. package/dist/config.d.ts +294 -0
  16. package/dist/config.js +344 -0
  17. package/dist/config.js.map +1 -0
  18. package/dist/configure.d.ts +11 -0
  19. package/dist/configure.js +106 -0
  20. package/dist/configure.js.map +1 -0
  21. package/dist/cron-evaluator.d.ts +53 -0
  22. package/dist/cron-evaluator.js +191 -0
  23. package/dist/cron-evaluator.js.map +1 -0
  24. package/dist/cron-fire-marker.d.ts +24 -0
  25. package/dist/cron-fire-marker.js +25 -0
  26. package/dist/cron-fire-marker.js.map +1 -0
  27. package/dist/cron-scheduler.d.ts +46 -0
  28. package/dist/cron-scheduler.js +114 -0
  29. package/dist/cron-scheduler.js.map +1 -0
  30. package/dist/cron-store.d.ts +62 -0
  31. package/dist/cron-store.js +63 -0
  32. package/dist/cron-store.js.map +1 -0
  33. package/dist/cron-tool.d.ts +44 -0
  34. package/dist/cron-tool.js +151 -0
  35. package/dist/cron-tool.js.map +1 -0
  36. package/dist/cwd-resolver.d.ts +72 -0
  37. package/dist/cwd-resolver.js +166 -0
  38. package/dist/cwd-resolver.js.map +1 -0
  39. package/dist/db-adapter.d.ts +21 -0
  40. package/dist/db-adapter.js +64 -0
  41. package/dist/db-adapter.js.map +1 -0
  42. package/dist/file-inline-wrap.d.ts +94 -0
  43. package/dist/file-inline-wrap.js +243 -0
  44. package/dist/file-inline-wrap.js.map +1 -0
  45. package/dist/gateway.d.ts +105 -0
  46. package/dist/gateway.js +425 -0
  47. package/dist/gateway.js.map +1 -0
  48. package/dist/group-config.d.ts +41 -0
  49. package/dist/group-config.js +104 -0
  50. package/dist/group-config.js.map +1 -0
  51. package/dist/group-context.d.ts +81 -0
  52. package/dist/group-context.js +466 -0
  53. package/dist/group-context.js.map +1 -0
  54. package/dist/inbound.d.ts +136 -0
  55. package/dist/inbound.js +667 -0
  56. package/dist/inbound.js.map +1 -0
  57. package/dist/index.d.ts +65 -0
  58. package/dist/index.js +1026 -0
  59. package/dist/index.js.map +1 -0
  60. package/dist/media-inbound.d.ts +38 -0
  61. package/dist/media-inbound.js +131 -0
  62. package/dist/media-inbound.js.map +1 -0
  63. package/dist/mention-utils.d.ts +108 -0
  64. package/dist/mention-utils.js +199 -0
  65. package/dist/mention-utils.js.map +1 -0
  66. package/dist/octo/api.d.ts +148 -0
  67. package/dist/octo/api.js +320 -0
  68. package/dist/octo/api.js.map +1 -0
  69. package/dist/octo/socket.d.ts +102 -0
  70. package/dist/octo/socket.js +793 -0
  71. package/dist/octo/socket.js.map +1 -0
  72. package/dist/octo/types.d.ts +126 -0
  73. package/dist/octo/types.js +35 -0
  74. package/dist/octo/types.js.map +1 -0
  75. package/dist/prompt-safety.d.ts +78 -0
  76. package/dist/prompt-safety.js +148 -0
  77. package/dist/prompt-safety.js.map +1 -0
  78. package/dist/session-router.d.ts +144 -0
  79. package/dist/session-router.js +490 -0
  80. package/dist/session-router.js.map +1 -0
  81. package/dist/session-store.d.ts +89 -0
  82. package/dist/session-store.js +297 -0
  83. package/dist/session-store.js.map +1 -0
  84. package/dist/skill-linker.d.ts +31 -0
  85. package/dist/skill-linker.js +160 -0
  86. package/dist/skill-linker.js.map +1 -0
  87. package/dist/stream-relay.d.ts +42 -0
  88. package/dist/stream-relay.js +243 -0
  89. package/dist/stream-relay.js.map +1 -0
  90. package/dist/url-policy.d.ts +103 -0
  91. package/dist/url-policy.js +290 -0
  92. package/dist/url-policy.js.map +1 -0
  93. 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,108 @@
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
+ * @param isValidUid Optional A8 (#143) membership predicate. When provided, a
93
+ * structured `@[uid:name]` whose uid fails the predicate (e.g. a hallucinated
94
+ * uid not in the group's member list) is DOWNGRADED to plain text: the
95
+ * human-readable `@name` stays in the body (convertStructuredMentions already
96
+ * replaced `@[uid:name]` with `@name`), but no entity/uid is emitted, so no
97
+ * bogus notification is sent. Omit it (DMs, or to preserve legacy behavior) to
98
+ * trust every structured uid. v1 `@name` entities are inherently members (they
99
+ * come from memberMap) so they are not re-checked. Best-effort: only as fresh
100
+ * as the caller's member snapshot (see GroupContext.isMember).
101
+ * @returns finalContent (with @[uid:name] replaced by @name) + entities + uids + mentionAll
102
+ */
103
+ export declare function resolveMentions(content: string, memberMap?: Map<string, string>, isValidUid?: (uid: string) => boolean): {
104
+ finalContent: string;
105
+ mentionUids: string[];
106
+ mentionEntities: MentionEntity[];
107
+ mentionAll: boolean;
108
+ };
@@ -0,0 +1,199 @@
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
+ * @param isValidUid Optional A8 (#143) membership predicate. When provided, a
152
+ * structured `@[uid:name]` whose uid fails the predicate (e.g. a hallucinated
153
+ * uid not in the group's member list) is DOWNGRADED to plain text: the
154
+ * human-readable `@name` stays in the body (convertStructuredMentions already
155
+ * replaced `@[uid:name]` with `@name`), but no entity/uid is emitted, so no
156
+ * bogus notification is sent. Omit it (DMs, or to preserve legacy behavior) to
157
+ * trust every structured uid. v1 `@name` entities are inherently members (they
158
+ * come from memberMap) so they are not re-checked. Best-effort: only as fresh
159
+ * as the caller's member snapshot (see GroupContext.isMember).
160
+ * @returns finalContent (with @[uid:name] replaced by @name) + entities + uids + mentionAll
161
+ */
162
+ export function resolveMentions(content, memberMap, isValidUid) {
163
+ let finalContent = content;
164
+ let entities = [];
165
+ // v2: @[uid:name] → @name + entities
166
+ const structured = parseStructuredMentions(finalContent);
167
+ if (structured.length > 0) {
168
+ const converted = convertStructuredMentions(finalContent, structured);
169
+ finalContent = converted.content;
170
+ // A8 (#143): drop entities for uids that aren't real members — the `@name`
171
+ // text is already in finalContent, so dropping the entity downgrades a
172
+ // hallucinated mention to harmless plain text instead of a bogus @ notify.
173
+ entities = isValidUid
174
+ ? converted.entities.filter((e) => isValidUid(e.uid))
175
+ : [...converted.entities];
176
+ }
177
+ // v1: @name fallback via memberMap (skip offsets already covered by v2)
178
+ if (memberMap && memberMap.size > 0) {
179
+ const fallback = buildEntitiesFromFallback(finalContent, memberMap);
180
+ const existingOffsets = new Set(entities.map(e => e.offset));
181
+ for (const e of fallback.entities) {
182
+ if (!existingOffsets.has(e.offset))
183
+ entities.push(e);
184
+ }
185
+ }
186
+ // Sort by offset, derive uids from sorted entities.
187
+ entities.sort((a, b) => a.offset - b.offset);
188
+ const mentionUids = entities.map(e => e.uid);
189
+ // @all / @所有人 detection. The trailing boundary must be a NON-name char (or
190
+ // end-of-string), NOT a generic `[^\w]`. The old `[^\w]` treated `@all-members`
191
+ // / `@allen`… wait, `@allen` was already blocked by `[^\w]` (e is `\w`); the
192
+ // real false positive was `@all-foo` / `@all.x` (hyphen/dot are `[^\w]`),
193
+ // wrongly broadcasting to everyone in a large group. Excluding the name-char
194
+ // class (which includes `-` and `.`) fixes that while still matching a real
195
+ // standalone token followed by space, CJK punctuation (`@所有人,`), `!`, or EOS.
196
+ const mentionAll = new RegExp(`(?:^|(?<=\\s))@(?:all|所有人)(?!${NAME_CHAR_RE.source})`, 'i').test(finalContent);
197
+ return { finalContent, mentionUids, mentionEntities: entities, mentionAll };
198
+ }
199
+ //# 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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"}