@mininglamp-oss/cc-channel-octo 1.0.1-dev.60b73f3

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 (87) hide show
  1. package/CHANGELOG.md +349 -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 +79 -0
  7. package/dist/agent-bridge.js +392 -0
  8. package/dist/agent-bridge.js.map +1 -0
  9. package/dist/commands.d.ts +57 -0
  10. package/dist/commands.js +121 -0
  11. package/dist/commands.js.map +1 -0
  12. package/dist/config.d.ts +287 -0
  13. package/dist/config.js +332 -0
  14. package/dist/config.js.map +1 -0
  15. package/dist/cron-evaluator.d.ts +53 -0
  16. package/dist/cron-evaluator.js +191 -0
  17. package/dist/cron-evaluator.js.map +1 -0
  18. package/dist/cron-fire-marker.d.ts +24 -0
  19. package/dist/cron-fire-marker.js +25 -0
  20. package/dist/cron-fire-marker.js.map +1 -0
  21. package/dist/cron-scheduler.d.ts +46 -0
  22. package/dist/cron-scheduler.js +114 -0
  23. package/dist/cron-scheduler.js.map +1 -0
  24. package/dist/cron-store.d.ts +62 -0
  25. package/dist/cron-store.js +63 -0
  26. package/dist/cron-store.js.map +1 -0
  27. package/dist/cron-tool.d.ts +44 -0
  28. package/dist/cron-tool.js +151 -0
  29. package/dist/cron-tool.js.map +1 -0
  30. package/dist/cwd-resolver.d.ts +72 -0
  31. package/dist/cwd-resolver.js +166 -0
  32. package/dist/cwd-resolver.js.map +1 -0
  33. package/dist/db-adapter.d.ts +21 -0
  34. package/dist/db-adapter.js +64 -0
  35. package/dist/db-adapter.js.map +1 -0
  36. package/dist/file-inline-wrap.d.ts +94 -0
  37. package/dist/file-inline-wrap.js +243 -0
  38. package/dist/file-inline-wrap.js.map +1 -0
  39. package/dist/gateway.d.ts +100 -0
  40. package/dist/gateway.js +420 -0
  41. package/dist/gateway.js.map +1 -0
  42. package/dist/group-config.d.ts +41 -0
  43. package/dist/group-config.js +104 -0
  44. package/dist/group-config.js.map +1 -0
  45. package/dist/group-context.d.ts +81 -0
  46. package/dist/group-context.js +466 -0
  47. package/dist/group-context.js.map +1 -0
  48. package/dist/inbound.d.ts +136 -0
  49. package/dist/inbound.js +667 -0
  50. package/dist/inbound.js.map +1 -0
  51. package/dist/index.d.ts +33 -0
  52. package/dist/index.js +932 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/media-inbound.d.ts +38 -0
  55. package/dist/media-inbound.js +131 -0
  56. package/dist/media-inbound.js.map +1 -0
  57. package/dist/mention-utils.d.ts +108 -0
  58. package/dist/mention-utils.js +199 -0
  59. package/dist/mention-utils.js.map +1 -0
  60. package/dist/octo/api.d.ts +148 -0
  61. package/dist/octo/api.js +320 -0
  62. package/dist/octo/api.js.map +1 -0
  63. package/dist/octo/socket.d.ts +102 -0
  64. package/dist/octo/socket.js +793 -0
  65. package/dist/octo/socket.js.map +1 -0
  66. package/dist/octo/types.d.ts +126 -0
  67. package/dist/octo/types.js +35 -0
  68. package/dist/octo/types.js.map +1 -0
  69. package/dist/prompt-safety.d.ts +78 -0
  70. package/dist/prompt-safety.js +148 -0
  71. package/dist/prompt-safety.js.map +1 -0
  72. package/dist/session-router.d.ts +144 -0
  73. package/dist/session-router.js +490 -0
  74. package/dist/session-router.js.map +1 -0
  75. package/dist/session-store.d.ts +89 -0
  76. package/dist/session-store.js +297 -0
  77. package/dist/session-store.js.map +1 -0
  78. package/dist/skill-linker.d.ts +31 -0
  79. package/dist/skill-linker.js +160 -0
  80. package/dist/skill-linker.js.map +1 -0
  81. package/dist/stream-relay.d.ts +42 -0
  82. package/dist/stream-relay.js +243 -0
  83. package/dist/stream-relay.js.map +1 -0
  84. package/dist/url-policy.d.ts +103 -0
  85. package/dist/url-policy.js +290 -0
  86. package/dist/url-policy.js.map +1 -0
  87. package/package.json +79 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket.js","sourceRoot":"","sources":["../../src/octo/socket.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,126 @@
1
+ /** Octo Bot API types. */
2
+ export interface BotRegisterResp {
3
+ robot_id: string;
4
+ im_token: string;
5
+ ws_url: string;
6
+ api_url: string;
7
+ owner_uid: string;
8
+ owner_channel_id: string;
9
+ }
10
+ export interface BotMessage {
11
+ message_id: string;
12
+ message_seq: number;
13
+ from_uid: string;
14
+ from_name?: string;
15
+ channel_id?: string;
16
+ channel_type?: ChannelType;
17
+ timestamp: number;
18
+ payload: MessagePayload;
19
+ /** True when this message is part of a streaming sequence (WuKongIM settingByte bit 1). */
20
+ streamOn?: boolean;
21
+ }
22
+ /**
23
+ * 单个 mention 的精确位置描述。
24
+ * offset/length 的单位为 UTF-16 code units(与 JS string.length 一致)。
25
+ */
26
+ export interface MentionEntity {
27
+ /** 被 @ 用户的唯一标识符 */
28
+ uid: string;
29
+ /** @name 在 content 中的起始位置(包括 @ 符号) */
30
+ offset: number;
31
+ /** @name 的完整长度(包括 @ 符号) */
32
+ length: number;
33
+ }
34
+ export interface MentionPayload {
35
+ uids?: string[];
36
+ entities?: MentionEntity[];
37
+ /**
38
+ * Legacy "@all" flag. Server outbound double-writes this for legacy clients
39
+ * even after the three-state split landed (server-side semantic: all=humans).
40
+ * Adapter treats `all=1` as a humans-only signal (NOT ais) to match the
41
+ * server's authoritative decision.
42
+ */
43
+ all?: boolean | number;
44
+ /**
45
+ * Three-state mention (server-authoritative, PR-A landed on octo-server #94).
46
+ * `humans=1` → "@所有人", `ais=1` → "@所有AI". Both can co-exist.
47
+ * Adapter only reads these; it never decides semantics — server is the
48
+ * source of truth and rewrites legacy `all=1` into the canonical form
49
+ * before adapter sees it.
50
+ */
51
+ humans?: boolean | number;
52
+ ais?: boolean | number;
53
+ }
54
+ export interface ReplyPayload {
55
+ payload?: MessagePayload;
56
+ from_uid?: string;
57
+ from_name?: string;
58
+ }
59
+ export interface MessagePayload {
60
+ type: MessageType;
61
+ content?: string;
62
+ url?: string;
63
+ name?: string;
64
+ mention?: MentionPayload;
65
+ reply?: ReplyPayload;
66
+ event?: {
67
+ type: string;
68
+ version?: number;
69
+ updated_by?: string;
70
+ group_no?: string;
71
+ short_id?: string;
72
+ };
73
+ [key: string]: unknown;
74
+ }
75
+ export interface SendMessageResult {
76
+ message_id: string;
77
+ client_msg_no: string;
78
+ message_seq: number;
79
+ }
80
+ /** Channel types */
81
+ export declare enum ChannelType {
82
+ DM = 1,
83
+ Group = 2,
84
+ CommunityTopic = 5
85
+ }
86
+ /** Message content types */
87
+ export declare enum MessageType {
88
+ Text = 1,
89
+ Image = 2,
90
+ GIF = 3,
91
+ Voice = 4,
92
+ Video = 5,
93
+ Location = 6,
94
+ Card = 7,
95
+ File = 8,
96
+ MultipleForward = 11,
97
+ /** Rich text (text + inline images), introduced in upstream v1.0.x */
98
+ RichText = 14
99
+ }
100
+ /**
101
+ * RichText(=14) block type constants.
102
+ *
103
+ * Wire format from upstream uses strings ("text" / "image"), matching the
104
+ * server's RichTextBlockText / RichTextBlockImage tags from octo-lib.
105
+ */
106
+ export declare const RICH_TEXT_BLOCK_TEXT = "text";
107
+ export declare const RICH_TEXT_BLOCK_IMAGE = "image";
108
+ /** Placeholder rendered for an inline image when assembling plain text. */
109
+ export declare const RICH_TEXT_IMAGE_PLACEHOLDER = "[\u56FE\u7247]";
110
+ export interface ForwardUser {
111
+ uid: string;
112
+ name: string;
113
+ }
114
+ export interface ForwardMessage {
115
+ message_id?: string;
116
+ from_uid: string;
117
+ timestamp?: number;
118
+ payload: {
119
+ type: number;
120
+ content?: string;
121
+ url?: string;
122
+ name?: string;
123
+ users?: ForwardUser[];
124
+ msgs?: ForwardMessage[];
125
+ };
126
+ }
@@ -0,0 +1,35 @@
1
+ // Forked from openclaw-channel-octo v1.0.13 (2026-06-04)
2
+ // Source: https://github.com/Mininglamp-OSS/openclaw-channel-octo
3
+ /** Channel types */
4
+ export var ChannelType;
5
+ (function (ChannelType) {
6
+ ChannelType[ChannelType["DM"] = 1] = "DM";
7
+ ChannelType[ChannelType["Group"] = 2] = "Group";
8
+ ChannelType[ChannelType["CommunityTopic"] = 5] = "CommunityTopic";
9
+ })(ChannelType || (ChannelType = {}));
10
+ /** Message content types */
11
+ export var MessageType;
12
+ (function (MessageType) {
13
+ MessageType[MessageType["Text"] = 1] = "Text";
14
+ MessageType[MessageType["Image"] = 2] = "Image";
15
+ MessageType[MessageType["GIF"] = 3] = "GIF";
16
+ MessageType[MessageType["Voice"] = 4] = "Voice";
17
+ MessageType[MessageType["Video"] = 5] = "Video";
18
+ MessageType[MessageType["Location"] = 6] = "Location";
19
+ MessageType[MessageType["Card"] = 7] = "Card";
20
+ MessageType[MessageType["File"] = 8] = "File";
21
+ MessageType[MessageType["MultipleForward"] = 11] = "MultipleForward";
22
+ /** Rich text (text + inline images), introduced in upstream v1.0.x */
23
+ MessageType[MessageType["RichText"] = 14] = "RichText";
24
+ })(MessageType || (MessageType = {}));
25
+ /**
26
+ * RichText(=14) block type constants.
27
+ *
28
+ * Wire format from upstream uses strings ("text" / "image"), matching the
29
+ * server's RichTextBlockText / RichTextBlockImage tags from octo-lib.
30
+ */
31
+ export const RICH_TEXT_BLOCK_TEXT = "text";
32
+ export const RICH_TEXT_BLOCK_IMAGE = "image";
33
+ /** Placeholder rendered for an inline image when assembling plain text. */
34
+ export const RICH_TEXT_IMAGE_PLACEHOLDER = '[图片]';
35
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/octo/types.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,kEAAkE;AAyFlE,oBAAoB;AACpB,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,yCAAM,CAAA;IACN,+CAAS,CAAA;IACT,iEAAkB,CAAA;AACpB,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB;AAED,4BAA4B;AAC5B,MAAM,CAAN,IAAY,WAYX;AAZD,WAAY,WAAW;IACrB,6CAAQ,CAAA;IACR,+CAAS,CAAA;IACT,2CAAO,CAAA;IACP,+CAAS,CAAA;IACT,+CAAS,CAAA;IACT,qDAAY,CAAA;IACZ,6CAAQ,CAAA;IACR,6CAAQ,CAAA;IACR,oEAAoB,CAAA;IACpB,sEAAsE;IACtE,sDAAa,CAAA;AACf,CAAC,EAZW,WAAW,KAAX,WAAW,QAYtB;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAC3C,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAAC;AAE7C,2EAA2E;AAC3E,MAAM,CAAC,MAAM,2BAA2B,GAAG,MAAM,CAAC"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Prompt-safety helpers — the SINGLE source of truth for neutralizing
3
+ * user-controlled text before it enters the agent system prompt.
4
+ *
5
+ * Threat: the system prompt is a flat string with structural markers —
6
+ * section headers (`[Group context]`, `[Conversation history]`, `[Quoted
7
+ * message from ...]`) and per-turn role labels (`[user <name>]:`,
8
+ * `[assistant <name>]:`). Every one of those is emitted by OUR renderers. If a
9
+ * user-controlled name or body reproduces one, it forges structure the model
10
+ * then trusts — and in shared-group mode the forged turn is seen by every
11
+ * member (cross-user context poisoning).
12
+ *
13
+ * Coherent policy (defined here, used everywhere):
14
+ * - Names that go INTO a label -> sanitizeDisplayName (strip the label
15
+ * delimiters `[` `]` and line breaks, cap length).
16
+ * - Bodies INSIDE a labeled line -> escapeRoleLabels (escape a line-leading
17
+ * role label so it is inert text, not a turn boundary).
18
+ * - Assembled blocks -> escapeSectionMarkers (escape a line-leading SECTION
19
+ * header). Orthogonal to the above; applied once per block.
20
+ *
21
+ * Escaping is per-FRAGMENT, before the fragment is wrapped in a label — you
22
+ * cannot escape the assembled block, because that would also clobber the
23
+ * legitimate labels our own renderers add.
24
+ */
25
+ /** Max rendered length for a user display name in a prompt label. */
26
+ export declare const MAX_DISPLAY_NAME_LEN = 128;
27
+ /**
28
+ * The privileged "current message" anchor, emitted by assembleUserMessage
29
+ * (file-inline-wrap.ts) to demarcate the real request from read-only background,
30
+ * and named in SECURITY_PROMPT_PREFIX (agent-bridge.ts) so the model knows to
31
+ * respond only to text after it (#132). SINGLE SOURCE OF TRUTH: both the emitter
32
+ * and the system-prompt reference import this, so the literal (note the em-dash
33
+ * U+2014, not a hyphen) can never silently diverge between the three sites. The
34
+ * SECTION_MARKER_RE above is deliberately broad enough to always escape it even
35
+ * if the suffix is reworded; a unit test pins that invariant.
36
+ */
37
+ export declare const CURRENT_MESSAGE_ANCHOR = "[Current message \u2014 respond to this ONLY]";
38
+ /**
39
+ * Sanitize a user-controlled display name for safe placement inside a prompt
40
+ * label such as `[user <name>]:` or `[Quoted message from <name>]:`. Strips the
41
+ * label delimiters and line terminators, caps length, and falls back to
42
+ * `fallback` if nothing survives.
43
+ */
44
+ export declare function sanitizeDisplayName(name: unknown, fallback?: string): string;
45
+ /**
46
+ * Escape a line-leading role label in user-authored CONTENT so it renders as
47
+ * literal text inside its turn rather than forging a new turn boundary:
48
+ * `[assistant bot]: x` -> `\[assistant bot]: x`.
49
+ */
50
+ export declare function escapeRoleLabels(content: string): string;
51
+ /**
52
+ * Escape line-leading SECTION markers in an assembled, user-influenced block so
53
+ * a sender cannot inject a fake section boundary. (Formerly
54
+ * `sanitizeForSystemPrompt` in agent-bridge.)
55
+ */
56
+ export declare function escapeSectionMarkers(text: string): string;
57
+ /**
58
+ * Full neutralization for a free-form user-authored BODY embedded in the prompt
59
+ * (reply quotes, forwarded transcripts): escape both role labels and section
60
+ * markers. For per-line-rendered history, the renderer escapes content itself.
61
+ */
62
+ export declare function sanitizePromptBody(text: string): string;
63
+ /**
64
+ * Branded string that has provably passed through a prompt-safety escaper. It is
65
+ * a plain string at runtime, but only the functions below can MINT one, so a
66
+ * system-prompt assembler that requires `SafeText` for its user-controlled
67
+ * fragments makes "raw user text reached the prompt" a compile error rather than
68
+ * a convention every call site must remember. (Finding #10 — choke-point depth.)
69
+ */
70
+ export type SafeText = string & {
71
+ readonly __promptSafe: unique symbol;
72
+ };
73
+ /** Mint SafeText from a user-authored BODY (escapes role labels + section markers). */
74
+ export declare function safeBody(text: string): SafeText;
75
+ /** Mint SafeText from already-per-line-escaped content that only needs section-marker escaping (e.g. rendered history). */
76
+ export declare function safeSectioned(text: string): SafeText;
77
+ /** Mint SafeText from operator-TRUSTED text (GROUP.md, config systemPrompt, our own constants) — no escaping, but the brand documents the trust decision at the call site. */
78
+ export declare function trustedText(text: string): SafeText;
@@ -0,0 +1,148 @@
1
+ /**
2
+ * Prompt-safety helpers — the SINGLE source of truth for neutralizing
3
+ * user-controlled text before it enters the agent system prompt.
4
+ *
5
+ * Threat: the system prompt is a flat string with structural markers —
6
+ * section headers (`[Group context]`, `[Conversation history]`, `[Quoted
7
+ * message from ...]`) and per-turn role labels (`[user <name>]:`,
8
+ * `[assistant <name>]:`). Every one of those is emitted by OUR renderers. If a
9
+ * user-controlled name or body reproduces one, it forges structure the model
10
+ * then trusts — and in shared-group mode the forged turn is seen by every
11
+ * member (cross-user context poisoning).
12
+ *
13
+ * Coherent policy (defined here, used everywhere):
14
+ * - Names that go INTO a label -> sanitizeDisplayName (strip the label
15
+ * delimiters `[` `]` and line breaks, cap length).
16
+ * - Bodies INSIDE a labeled line -> escapeRoleLabels (escape a line-leading
17
+ * role label so it is inert text, not a turn boundary).
18
+ * - Assembled blocks -> escapeSectionMarkers (escape a line-leading SECTION
19
+ * header). Orthogonal to the above; applied once per block.
20
+ *
21
+ * Escaping is per-FRAGMENT, before the fragment is wrapped in a label — you
22
+ * cannot escape the assembled block, because that would also clobber the
23
+ * legitimate labels our own renderers add.
24
+ */
25
+ /** Max rendered length for a user display name in a prompt label. */
26
+ export const MAX_DISPLAY_NAME_LEN = 128;
27
+ /**
28
+ * Section markers that delimit structural sections of the system prompt. If
29
+ * these appear at the start of a line inside user-controlled text they are
30
+ * escaped so a sender cannot inject a fake structural boundary (S3 fix).
31
+ *
32
+ * Covers EVERY structural marker any renderer emits \u2014 including the G10
33
+ * segmentation markers (`[answered history]`, `[new messages]`), the group
34
+ * context header (`[Recent group messages]`), the trusted-instructions header
35
+ * (`[Group instructions]`), and the truncation notices \u2014 so user content cannot
36
+ * forge a boundary the model treats as real structure.
37
+ *
38
+ * `Current message[^\]]*` (not the bare `Current message`) matches the FULL
39
+ * anchor `[Current message \u2014 respond to this ONLY]` that assembleUserMessage
40
+ * (#132) prepends to the real request, the same way `Quoted message from [^\]]*`
41
+ * covers its variable suffix. The anchor is a PRIVILEGED marker \u2014 the system
42
+ * prompt tells the model to "respond ONLY to the text after it" \u2014 so a group
43
+ * member who typed it verbatim into a non-@ message (which lands in the
44
+ * [Recent group messages] read-only background) could otherwise forge a second
45
+ * "current message" and have their injected text treated as the request. The
46
+ * bare-`]` form alone left that gap open (#132 review).
47
+ *
48
+ * The exact emitted form is exported as CURRENT_MESSAGE_ANCHOR (single source of
49
+ * truth \u2014 see below). The branch here is intentionally BROADER than that constant
50
+ * (any `[Current message\u2026]` variant is escaped), so the two cannot drift into a
51
+ * gap; a drift-guard test asserts the constant is matched by this regex.
52
+ *
53
+ * The leading `([^\S\r\n]*)` group absorbs indentation (spaces/tabs) before the
54
+ * `[`, mirroring ROLE_LABEL_RE. Without it `^\[` only matched COLUMN-0 markers, so
55
+ * a forged marker preceded by a single space/tab slipped through unescaped \u2014 and
56
+ * group-delta content can contain newlines (group-context.ts), so an attacker can
57
+ * plant an indented line. escapeSectionMarkers preserves the captured whitespace
58
+ * and backslash-escapes the `[` (#133 review: yujiawei P0). `Prior conversation
59
+ * history[^\]]*` is included so the first-turn/fallback history header
60
+ * (index.ts) is covered too \u2014 making the "cannot drift into a gap" claim hold.
61
+ */
62
+ const SECTION_MARKER_RE = /^([^\S\r\n]*)\[(Group context|Conversation history|Prior conversation history[^\]]*|Current message[^\]]*|Quoted message from [^\]]*|answered history|new messages|Recent group messages|Group instructions|older messages dropped|older turns dropped)\]/gim;
63
+ /**
64
+ * The privileged "current message" anchor, emitted by assembleUserMessage
65
+ * (file-inline-wrap.ts) to demarcate the real request from read-only background,
66
+ * and named in SECURITY_PROMPT_PREFIX (agent-bridge.ts) so the model knows to
67
+ * respond only to text after it (#132). SINGLE SOURCE OF TRUTH: both the emitter
68
+ * and the system-prompt reference import this, so the literal (note the em-dash
69
+ * U+2014, not a hyphen) can never silently diverge between the three sites. The
70
+ * SECTION_MARKER_RE above is deliberately broad enough to always escape it even
71
+ * if the suffix is reworded; a unit test pins that invariant.
72
+ */
73
+ export const CURRENT_MESSAGE_ANCHOR = '[Current message \u2014 respond to this ONLY]';
74
+ /**
75
+ * Line-leading turn label (`[user ...]:` / `[assistant ...]:`),
76
+ * case-insensitive, multiline. Only line-leading labels are structural;
77
+ * incidental mid-sentence `[assistant ...]` is left alone to minimize false
78
+ * positives. The leading group `[^\S\r\n]*` matches in-line spaces/tabs (never
79
+ * line breaks, which `^` already anchors) so an indented forged label is caught.
80
+ *
81
+ * NOTE: callers must normalizeLineBreaks() the text first \u2014 JS `^`(m) only
82
+ * anchors after LF/CR/LS/PS, NOT NEL(U+0085)/VT(U+000B)/FF(U+000C), which a
83
+ * model may still treat as a new line.
84
+ */
85
+ const ROLE_LABEL_RE = /^([^\S\r\n]*)(\[(?:user|assistant)\b[^\]\r\n]*\]:)/gim;
86
+ /** Bracket delimiters + all line/para separators that could forge a boundary. */
87
+ const NAME_UNSAFE_RE = /[[\]\r\n\v\f\u0085\u2028\u2029]/g;
88
+ /**
89
+ * Unicode line/paragraph separators that JS regex `^`(m) does NOT anchor on but
90
+ * a model may render as a new line: NEL, VT, FF. Normalized to `\n` before
91
+ * label/section escaping so a forged marker after one of them is still caught.
92
+ */
93
+ const EXTRA_LINE_BREAKS_RE = /[\v\f\u0085]/g;
94
+ function normalizeLineBreaks(text) {
95
+ return text.replace(EXTRA_LINE_BREAKS_RE, '\n');
96
+ }
97
+ /**
98
+ * Sanitize a user-controlled display name for safe placement inside a prompt
99
+ * label such as `[user <name>]:` or `[Quoted message from <name>]:`. Strips the
100
+ * label delimiters and line terminators, caps length, and falls back to
101
+ * `fallback` if nothing survives.
102
+ */
103
+ export function sanitizeDisplayName(name, fallback = '') {
104
+ const cleaned = String(name ?? '')
105
+ .replace(NAME_UNSAFE_RE, ' ')
106
+ .slice(0, MAX_DISPLAY_NAME_LEN)
107
+ .trim();
108
+ return cleaned.length > 0 ? cleaned : fallback;
109
+ }
110
+ /**
111
+ * Escape a line-leading role label in user-authored CONTENT so it renders as
112
+ * literal text inside its turn rather than forging a new turn boundary:
113
+ * `[assistant bot]: x` -> `\[assistant bot]: x`.
114
+ */
115
+ export function escapeRoleLabels(content) {
116
+ return normalizeLineBreaks(content).replace(ROLE_LABEL_RE, (_m, ws, label) => `${ws}\\${label}`);
117
+ }
118
+ /**
119
+ * Escape line-leading SECTION markers in an assembled, user-influenced block so
120
+ * a sender cannot inject a fake section boundary. (Formerly
121
+ * `sanitizeForSystemPrompt` in agent-bridge.)
122
+ */
123
+ export function escapeSectionMarkers(text) {
124
+ // ws = captured leading indentation (preserved); inner = marker name. Escaping
125
+ // the `[` after the whitespace neutralizes both column-0 and indented forgeries.
126
+ return normalizeLineBreaks(text).replace(SECTION_MARKER_RE, (_m, ws, inner) => `${ws}\\[${inner}]`);
127
+ }
128
+ /**
129
+ * Full neutralization for a free-form user-authored BODY embedded in the prompt
130
+ * (reply quotes, forwarded transcripts): escape both role labels and section
131
+ * markers. For per-line-rendered history, the renderer escapes content itself.
132
+ */
133
+ export function sanitizePromptBody(text) {
134
+ return escapeSectionMarkers(escapeRoleLabels(text));
135
+ }
136
+ /** Mint SafeText from a user-authored BODY (escapes role labels + section markers). */
137
+ export function safeBody(text) {
138
+ return sanitizePromptBody(text);
139
+ }
140
+ /** Mint SafeText from already-per-line-escaped content that only needs section-marker escaping (e.g. rendered history). */
141
+ export function safeSectioned(text) {
142
+ return escapeSectionMarkers(text);
143
+ }
144
+ /** Mint SafeText from operator-TRUSTED text (GROUP.md, config systemPrompt, our own constants) — no escaping, but the brand documents the trust decision at the call site. */
145
+ export function trustedText(text) {
146
+ return text;
147
+ }
148
+ //# sourceMappingURL=prompt-safety.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-safety.js","sourceRoot":"","sources":["../src/prompt-safety.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,qEAAqE;AACrE,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAExC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,iBAAiB,GACrB,8PAA8P,CAAC;AAEjQ;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,+CAA+C,CAAC;AAEtF;;;;;;;;;;GAUG;AACH,MAAM,aAAa,GACjB,uDAAuD,CAAC;AAE1D,iFAAiF;AACjF,MAAM,cAAc,GAAG,kCAAkC,CAAC;AAE1D;;;;GAIG;AACH,MAAM,oBAAoB,GAAG,eAAe,CAAC;AAE7C,SAAS,mBAAmB,CAAC,IAAY;IACvC,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;AAClD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAa,EAAE,QAAQ,GAAG,EAAE;IAC9D,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;SAC/B,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;SAC5B,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC;SAC9B,IAAI,EAAE,CAAC;IACV,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,EAAU,EAAE,KAAa,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,EAAE,CAAC,CAAC;AACnH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,+EAA+E;IAC/E,iFAAiF;IACjF,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC,OAAO,CACtC,iBAAiB,EACjB,CAAC,EAAE,EAAE,EAAU,EAAE,KAAa,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,GAAG,CACvD,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,oBAAoB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AACtD,CAAC;AAWD,uFAAuF;AACvF,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,OAAO,kBAAkB,CAAC,IAAI,CAAa,CAAC;AAC9C,CAAC;AAED,2HAA2H;AAC3H,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,oBAAoB,CAAC,IAAI,CAAa,CAAC;AAChD,CAAC;AAED,8KAA8K;AAC9K,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,IAAgB,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Session Router — routing + concurrency control + mention gate + rate limiting.
3
+ */
4
+ import type { Config } from './config.js';
5
+ import type { BotMessage } from './octo/types.js';
6
+ export interface RouteResult {
7
+ sessionKey: string;
8
+ shouldProcess: boolean;
9
+ message: BotMessage;
10
+ /** User content with leading @botname stripped (for LLM input). */
11
+ cleanContent?: string;
12
+ /**
13
+ * Reason for rejection when shouldProcess is false.
14
+ *
15
+ * Only emitted for cases where the caller should treat the message as
16
+ * 'do-not-cache-in-group-context' (rate-limited or oversized — these are
17
+ * actively-rejected messages from a flooder). Silent-drop cases (blocked
18
+ * bot, self message, system event, not mentioned) leave rejectionReason
19
+ * undefined: those messages are legitimate group chatter the agent
20
+ * should still see in [Group context].
21
+ *
22
+ * C1 / P2.5 (Stage 6): added to fix the channel where rate-limited or
23
+ * oversized messages still polluted the group context cache. C1 follow-up
24
+ * cleanup (齐静春 PR#41 review): trimmed to the 2 reasons actually emitted
25
+ * so the type doesn't suggest a wider contract than the code provides.
26
+ * Add more reasons here when corresponding emit sites land.
27
+ */
28
+ rejectionReason?: 'rate_limited' | 'oversized';
29
+ }
30
+ export declare class SessionRouter {
31
+ private readonly config;
32
+ private readonly robotId;
33
+ /** G18: owner_uid from registerBot. Stored for future permission model. */
34
+ private readonly ownerUid;
35
+ private readonly inboundQueues;
36
+ private readonly tokenBuckets;
37
+ /** G20: per-user buckets keyed by from_uid alone (cross-channel rate limit). */
38
+ private readonly userBuckets;
39
+ private globalBucket;
40
+ /**
41
+ * G14: UIDs known to be bots. Initialized with this bot's robotId; can be
42
+ * extended via registerKnownBot() for future multi-bot deployments.
43
+ */
44
+ private readonly knownBotUids;
45
+ constructor(config: Config, robotId: string, ownerUid?: string);
46
+ /** G14: register another known bot uid (future multi-bot support). */
47
+ registerKnownBot(uid: string): void;
48
+ /** G18: owner_uid stored from registerBot. Used by future permission model. */
49
+ getOwnerUid(): string;
50
+ /**
51
+ * Acquire a per-session lock for the full message handling pipeline.
52
+ * Callers (e.g. index.ts) use this to ensure the entire handleMessage
53
+ * chain — not just routing — runs serially per session key.
54
+ */
55
+ withSessionLock<T>(key: string, fn: () => Promise<T>): Promise<T>;
56
+ /**
57
+ * Route a message and, if it should be processed, run the handler callback
58
+ * under the same per-session lock. This ensures no gap between route decision
59
+ * and pipeline execution — concurrent same-session messages cannot interleave.
60
+ */
61
+ /**
62
+ * Route a message and, if it should be processed, run the handler callback
63
+ * under the same per-session lock. This ensures no gap between route decision
64
+ * and pipeline execution — concurrent same-session messages cannot interleave.
65
+ *
66
+ * Returns the RouteResult (or `null` for silent-drop cases) so the caller
67
+ * can inspect `rejectionReason` to decide whether the message should still
68
+ * influence downstream side-effects like group context caching
69
+ * (C1 / P2.5 — stage 6).
70
+ */
71
+ routeAndHandle(msg: BotMessage, handler: (result: RouteResult) => Promise<void>): Promise<RouteResult | null>;
72
+ /**
73
+ * #141: Run the handler under a dispatch timeout so a hung turn (a stuck SDK
74
+ * query, a wedged tool subprocess, a stalled stream) cannot block the session
75
+ * forever. The handler runs inside withSessionLock — if it never returns, the
76
+ * lock's gate never resolves and EVERY subsequent message for this session is
77
+ * stuck permanently (silent). Racing the handler against a timeout guarantees
78
+ * the lock releases.
79
+ *
80
+ * Scope (mirrors openclaw #75): we do NOT cancel the in-flight turn — the SDK
81
+ * query keeps running to completion in the background; we only unblock the
82
+ * queue. Worst case is a delayed real reply arriving after the apology.
83
+ *
84
+ * `timeoutError` is a per-invocation Error so the catch identifies OUR timeout
85
+ * by reference equality, never by string comparison (a same-text upstream
86
+ * error must not be misclassified).
87
+ */
88
+ private runHandlerWithTimeout;
89
+ route(msg: BotMessage): Promise<RouteResult | null>;
90
+ sessionKey(msg: BotMessage): string;
91
+ /**
92
+ * Extract spaceId from channel_id.
93
+ * DM format: s{spaceId}_{uid1}@s{spaceId}_{uid2}
94
+ * Group format: s{spaceId}_{groupNo} (but groups already use channel_id in key)
95
+ */
96
+ private extractSpaceId;
97
+ private isBlockedBot;
98
+ /**
99
+ * G14: Heuristic bot detection. Octo bot uids conventionally end in `_bot`.
100
+ * This is NOT a perfect check — a human could pick that suffix — but it
101
+ * catches the common case where a bot DMs another bot and triggers an
102
+ * uncontrolled response loop. Bots whitelisted in `allowedBotUids` bypass
103
+ * this gate.
104
+ */
105
+ private looksLikeBot;
106
+ private isAllowedBot;
107
+ private isGroupLike;
108
+ /**
109
+ * Allowlist of channel types we actually converse on: DM, Group, and
110
+ * CommunityTopic. Octo also emits system/command channels (e.g. channel_type
111
+ * 8 "systemcmdonline" on connect) which are NOT user conversations — those
112
+ * must be dropped, otherwise they fall through the DM/group gates and get
113
+ * answered with an unsolicited LLM reply. Found in live deployment (#68).
114
+ */
115
+ private isSupportedChannel;
116
+ private isMentioned;
117
+ /**
118
+ * #115: True for a GENUINE in-process cron fire — `payload._cronFire` AND a
119
+ * matching per-process nonce. Such messages bypass the group @mention gate
120
+ * (owner-gated at creation, bound to this session). A forged inbound payload
121
+ * can set `_cronFire` but not the secret nonce, so it does not pass. Real
122
+ * inbound messages never carry the marker.
123
+ */
124
+ private isCronFire;
125
+ private processMessage;
126
+ /**
127
+ * G20 fix: Check all three rate limits (global, per-session, per-user) in
128
+ * one pass. Refills all three buckets, then either consumes 1 token from
129
+ * each (when all pass) or returns the blocking bucket (when any fails).
130
+ *
131
+ * Returns null on success (tokens consumed), or the blocking bucket on
132
+ * failure (no tokens consumed). The caller uses the blocking bucket's
133
+ * `notified` flag to debounce the "请稍后再试" reply per-bucket, so a user
134
+ * blocked by per-user limit doesn't get spammed when their per-session
135
+ * bucket still has tokens.
136
+ */
137
+ private checkAllRateLimits;
138
+ private getOrCreateBucket;
139
+ private getOrCreateGlobalBucket;
140
+ private refillBucket;
141
+ /** Remove token buckets that haven't been used in 5 minutes. */
142
+ private cleanStaleBuckets;
143
+ private replySafe;
144
+ }