@mininglamp-oss/cc-channel-octo 1.0.3-dev.660b13a → 1.0.3-dev.688f404

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 (49) hide show
  1. package/config.bot.example.json +2 -1
  2. package/config.example.json +8 -1
  3. package/dist/agent-bridge.js +6 -1
  4. package/dist/agent-bridge.js.map +1 -1
  5. package/dist/config.d.ts +57 -0
  6. package/dist/config.js +8 -0
  7. package/dist/config.js.map +1 -1
  8. package/dist/group-config.d.ts +18 -9
  9. package/dist/group-config.js +47 -10
  10. package/dist/group-config.js.map +1 -1
  11. package/dist/group-context.d.ts +18 -0
  12. package/dist/group-context.js +86 -7
  13. package/dist/group-context.js.map +1 -1
  14. package/dist/group-md-cache.d.ts +69 -0
  15. package/dist/group-md-cache.js +93 -0
  16. package/dist/group-md-cache.js.map +1 -0
  17. package/dist/group-md-events.d.ts +43 -0
  18. package/dist/group-md-events.js +43 -0
  19. package/dist/group-md-events.js.map +1 -0
  20. package/dist/group-md-tool.d.ts +49 -0
  21. package/dist/group-md-tool.js +95 -0
  22. package/dist/group-md-tool.js.map +1 -0
  23. package/dist/group-md-writeback.d.ts +97 -0
  24. package/dist/group-md-writeback.js +118 -0
  25. package/dist/group-md-writeback.js.map +1 -0
  26. package/dist/group-md.d.ts +53 -0
  27. package/dist/group-md.js +98 -0
  28. package/dist/group-md.js.map +1 -0
  29. package/dist/index.d.ts +3 -1
  30. package/dist/index.js +92 -15
  31. package/dist/index.js.map +1 -1
  32. package/dist/octo/api.d.ts +98 -1
  33. package/dist/octo/api.js +136 -1
  34. package/dist/octo/api.js.map +1 -1
  35. package/dist/octo/channel-id.d.ts +36 -0
  36. package/dist/octo/channel-id.js +52 -0
  37. package/dist/octo/channel-id.js.map +1 -0
  38. package/dist/octo/types.d.ts +22 -0
  39. package/dist/octo/types.js.map +1 -1
  40. package/dist/prompt-safety.d.ts +20 -0
  41. package/dist/prompt-safety.js +24 -0
  42. package/dist/prompt-safety.js.map +1 -1
  43. package/dist/session-router.d.ts +35 -1
  44. package/dist/session-router.js +66 -3
  45. package/dist/session-router.js.map +1 -1
  46. package/dist/session-store.d.ts +26 -0
  47. package/dist/session-store.js +64 -1
  48. package/dist/session-store.js.map +1 -1
  49. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { ChannelType, type MentionEntity, type SendMessageResult } from "./types.js";
1
+ import { ChannelType, type MentionEntity, type SendMessageResult, type Thread, type ThreadMember } from "./types.js";
2
2
  /**
3
3
  * Generate a client-side idempotency key (UUID) for outbound messages.
4
4
  *
@@ -146,3 +146,100 @@ export declare function getChannelMessages(params: {
146
146
  endMessageSeq?: number;
147
147
  signal?: AbortSignal;
148
148
  }): Promise<HistoricalMessage[]>;
149
+ /** Create a thread under a parent group. POST /v1/bot/groups/{groupNo}/threads */
150
+ export declare function createThread(params: {
151
+ apiUrl: string;
152
+ botToken: string;
153
+ groupNo: string;
154
+ name: string;
155
+ /** Optional: anchor the thread to the message it was started from. Accepted as
156
+ * a string to stay int64-safe, but emitted on the wire as a bare JSON number
157
+ * (the server rejects a quoted value); see rawInt64. */
158
+ sourceMessageId?: string;
159
+ signal?: AbortSignal;
160
+ }): Promise<Thread | undefined>;
161
+ /** List threads under a parent group. GET /v1/bot/groups/{groupNo}/threads */
162
+ export declare function listThreads(params: {
163
+ apiUrl: string;
164
+ botToken: string;
165
+ groupNo: string;
166
+ signal?: AbortSignal;
167
+ }): Promise<Thread[]>;
168
+ /** Get a single thread. GET /v1/bot/groups/{groupNo}/threads/{shortId} */
169
+ export declare function getThread(params: {
170
+ apiUrl: string;
171
+ botToken: string;
172
+ groupNo: string;
173
+ shortId: string;
174
+ signal?: AbortSignal;
175
+ }): Promise<Thread>;
176
+ /** Delete a thread. DELETE /v1/bot/groups/{groupNo}/threads/{shortId} */
177
+ export declare function deleteThread(params: {
178
+ apiUrl: string;
179
+ botToken: string;
180
+ groupNo: string;
181
+ shortId: string;
182
+ signal?: AbortSignal;
183
+ }): Promise<void>;
184
+ /** List a thread's members. GET /v1/bot/groups/{groupNo}/threads/{shortId}/members */
185
+ export declare function listThreadMembers(params: {
186
+ apiUrl: string;
187
+ botToken: string;
188
+ groupNo: string;
189
+ shortId: string;
190
+ signal?: AbortSignal;
191
+ }): Promise<ThreadMember[]>;
192
+ /** Join a thread. POST /v1/bot/groups/{groupNo}/threads/{shortId}/join */
193
+ export declare function joinThread(params: {
194
+ apiUrl: string;
195
+ botToken: string;
196
+ groupNo: string;
197
+ shortId: string;
198
+ signal?: AbortSignal;
199
+ }): Promise<void>;
200
+ /** Leave a thread. POST /v1/bot/groups/{groupNo}/threads/{shortId}/leave */
201
+ export declare function leaveThread(params: {
202
+ apiUrl: string;
203
+ botToken: string;
204
+ groupNo: string;
205
+ shortId: string;
206
+ signal?: AbortSignal;
207
+ }): Promise<void>;
208
+ /** Server GROUP.md payload returned by GET /v1/bot/groups/{groupNo}/md. */
209
+ export interface GroupMd {
210
+ content: string;
211
+ version: number;
212
+ updated_at: string | null;
213
+ updated_by: string;
214
+ }
215
+ /**
216
+ * Fetch a group's server-side GROUP.md. GET /v1/bot/groups/{groupNo}/md.
217
+ *
218
+ * Throws on any non-2xx (including 404 "no GROUP.md set") — the caller decides
219
+ * how to degrade. The server-first fetch orchestrator (group-md.ts) catches and
220
+ * falls back to the local instruction file, so a 404 cleanly downgrades to local.
221
+ */
222
+ export declare function getGroupMd(params: {
223
+ apiUrl: string;
224
+ botToken: string;
225
+ groupNo: string;
226
+ signal?: AbortSignal;
227
+ }): Promise<GroupMd>;
228
+ /**
229
+ * Update a group's server-side GROUP.md (requires bot_admin permission).
230
+ * PUT /v1/bot/groups/{groupNo}/md, body `{ content }` → `{ version }`.
231
+ *
232
+ * NOTE (P2-A scope): this client function is restored alongside getGroupMd, but
233
+ * is intentionally NOT wired into any write-back path here — the PUT trigger
234
+ * chain is owned by a separate work item. Mirrors postJson's timeout, Bearer
235
+ * auth and error-message format.
236
+ */
237
+ export declare function updateGroupMd(params: {
238
+ apiUrl: string;
239
+ botToken: string;
240
+ groupNo: string;
241
+ content: string;
242
+ signal?: AbortSignal;
243
+ }): Promise<{
244
+ version: number;
245
+ }>;
package/dist/octo/api.js CHANGED
@@ -1,7 +1,10 @@
1
1
  // Forked from openclaw-channel-octo v1.0.13 (2026-06-04)
2
2
  // Source: https://github.com/Mininglamp-OSS/openclaw-channel-octo
3
- // Removed: COS upload, GROUP.md API, OBO, rich text, media, thread/group management,
3
+ // Removed: COS upload, OBO, rich text, media, group management,
4
4
  // read receipts, bot groups list, group info, mention prefs, space members.
5
+ // Restored: thread lifecycle (create/list/get/delete/members/join/leave) — see
6
+ // "Thread Lifecycle" section below; GROUP.md server API (get/update) —
7
+ // see "Group Markdown (GROUP.md)" section below.
5
8
  import { MessageType, } from "./types.js";
6
9
  import { randomUUID } from "node:crypto";
7
10
  const DEFAULT_TIMEOUT_MS = 30_000;
@@ -322,4 +325,136 @@ export async function getChannelMessages(params) {
322
325
  return [];
323
326
  }
324
327
  }
328
+ // ─── Thread Lifecycle ────────────────────────────────────────────────────────
329
+ //
330
+ // Restores the bot thread (CommunityTopic) lifecycle endpoints that were removed
331
+ // at fork time (see file header). Path / method / auth are a verbatim restore of
332
+ // openclaw-channel-octo api-fetch.ts (createThread … leaveThread); each call is
333
+ // routed through this client's postJson/getJson/requestNoBody helpers so it
334
+ // shares the same timeout, Bearer auth, int64-safe JSON parse, and error-message
335
+ // format as the rest of the API surface.
336
+ /**
337
+ * Issue a request that carries neither a request body nor a meaningful response
338
+ * body (thread delete / join / leave). Mirrors postJson's timeout, Bearer auth,
339
+ * and error-message format. A 2xx with an empty body resolves to void.
340
+ */
341
+ async function requestNoBody(apiUrl, botToken, method, path, signal) {
342
+ const url = `${apiUrl.replace(/\/+$/, "")}${path}`;
343
+ const effectiveSignal = signal ?? AbortSignal.timeout(DEFAULT_TIMEOUT_MS);
344
+ const resp = await fetch(url, {
345
+ method,
346
+ headers: { Authorization: `Bearer ${botToken}` },
347
+ signal: effectiveSignal,
348
+ });
349
+ if (!resp.ok) {
350
+ const text = await resp.text().catch(() => "");
351
+ throw new Error(`Octo API ${path} failed (${resp.status}): ${text || resp.statusText}`);
352
+ }
353
+ }
354
+ /**
355
+ * Serialize an int64 id (e.g. a snowflake message id) into a request body as a
356
+ * *bare JSON number* with full precision preserved.
357
+ *
358
+ * The Octo backend requires `source_message_id` to be a JSON number — a quoted
359
+ * string is rejected with 400 request_invalid. But a 19-digit snowflake exceeds
360
+ * Number.MAX_SAFE_INTEGER (2^53-1), so the value must never pass through a JS
361
+ * `number`, which would silently truncate it. We therefore keep it as a string
362
+ * end-to-end and hand it to JSON.stringify verbatim via JSON.rawJSON (Node >=21),
363
+ * yielding wire JSON such as `"source_message_id":2071497871135346688`.
364
+ *
365
+ * JSON.rawJSON is not in the ES2022 lib typings yet, so it is accessed through a
366
+ * narrow cast rather than `any`.
367
+ */
368
+ function rawInt64(value) {
369
+ if (!/^-?[0-9]+$/.test(value)) {
370
+ throw new Error(`int64 id must be a base-10 integer string, got: ${value}`);
371
+ }
372
+ return JSON.rawJSON(value);
373
+ }
374
+ /** Create a thread under a parent group. POST /v1/bot/groups/{groupNo}/threads */
375
+ export async function createThread(params) {
376
+ const body = { name: params.name };
377
+ if (params.sourceMessageId != null)
378
+ body.source_message_id = rawInt64(params.sourceMessageId);
379
+ return await postJson(params.apiUrl, params.botToken, `/v1/bot/groups/${encodeURIComponent(params.groupNo)}/threads`, body, params.signal);
380
+ }
381
+ /** List threads under a parent group. GET /v1/bot/groups/{groupNo}/threads */
382
+ export async function listThreads(params) {
383
+ const data = await getJson(params.apiUrl, params.botToken, `/v1/bot/groups/${encodeURIComponent(params.groupNo)}/threads`, params.signal);
384
+ // Tolerate both a bare array and a `{ threads: [...] }` envelope, mirroring
385
+ // getGroupMembers' defensive shape handling.
386
+ const threads = Array.isArray(data?.threads)
387
+ ? data.threads
388
+ : Array.isArray(data)
389
+ ? data
390
+ : [];
391
+ return threads;
392
+ }
393
+ /** Get a single thread. GET /v1/bot/groups/{groupNo}/threads/{shortId} */
394
+ export async function getThread(params) {
395
+ return await getJson(params.apiUrl, params.botToken, `/v1/bot/groups/${encodeURIComponent(params.groupNo)}/threads/${encodeURIComponent(params.shortId)}`, params.signal);
396
+ }
397
+ /** Delete a thread. DELETE /v1/bot/groups/{groupNo}/threads/{shortId} */
398
+ export async function deleteThread(params) {
399
+ await requestNoBody(params.apiUrl, params.botToken, "DELETE", `/v1/bot/groups/${encodeURIComponent(params.groupNo)}/threads/${encodeURIComponent(params.shortId)}`, params.signal);
400
+ }
401
+ /** List a thread's members. GET /v1/bot/groups/{groupNo}/threads/{shortId}/members */
402
+ export async function listThreadMembers(params) {
403
+ const data = await getJson(params.apiUrl, params.botToken, `/v1/bot/groups/${encodeURIComponent(params.groupNo)}/threads/${encodeURIComponent(params.shortId)}/members`, params.signal);
404
+ const members = Array.isArray(data?.members)
405
+ ? data.members
406
+ : Array.isArray(data)
407
+ ? data
408
+ : [];
409
+ return members;
410
+ }
411
+ /** Join a thread. POST /v1/bot/groups/{groupNo}/threads/{shortId}/join */
412
+ export async function joinThread(params) {
413
+ await requestNoBody(params.apiUrl, params.botToken, "POST", `/v1/bot/groups/${encodeURIComponent(params.groupNo)}/threads/${encodeURIComponent(params.shortId)}/join`, params.signal);
414
+ }
415
+ /** Leave a thread. POST /v1/bot/groups/{groupNo}/threads/{shortId}/leave */
416
+ export async function leaveThread(params) {
417
+ await requestNoBody(params.apiUrl, params.botToken, "POST", `/v1/bot/groups/${encodeURIComponent(params.groupNo)}/threads/${encodeURIComponent(params.shortId)}/leave`, params.signal);
418
+ }
419
+ /**
420
+ * Fetch a group's server-side GROUP.md. GET /v1/bot/groups/{groupNo}/md.
421
+ *
422
+ * Throws on any non-2xx (including 404 "no GROUP.md set") — the caller decides
423
+ * how to degrade. The server-first fetch orchestrator (group-md.ts) catches and
424
+ * falls back to the local instruction file, so a 404 cleanly downgrades to local.
425
+ */
426
+ export async function getGroupMd(params) {
427
+ return await getJson(params.apiUrl, params.botToken, `/v1/bot/groups/${encodeURIComponent(params.groupNo)}/md`, params.signal);
428
+ }
429
+ /**
430
+ * Update a group's server-side GROUP.md (requires bot_admin permission).
431
+ * PUT /v1/bot/groups/{groupNo}/md, body `{ content }` → `{ version }`.
432
+ *
433
+ * NOTE (P2-A scope): this client function is restored alongside getGroupMd, but
434
+ * is intentionally NOT wired into any write-back path here — the PUT trigger
435
+ * chain is owned by a separate work item. Mirrors postJson's timeout, Bearer
436
+ * auth and error-message format.
437
+ */
438
+ export async function updateGroupMd(params) {
439
+ const path = `/v1/bot/groups/${encodeURIComponent(params.groupNo)}/md`;
440
+ const url = `${params.apiUrl.replace(/\/+$/, "")}${path}`;
441
+ const effectiveSignal = params.signal ?? AbortSignal.timeout(DEFAULT_TIMEOUT_MS);
442
+ const resp = await fetch(url, {
443
+ method: "PUT",
444
+ headers: {
445
+ ...DEFAULT_HEADERS,
446
+ Authorization: `Bearer ${params.botToken}`,
447
+ },
448
+ body: JSON.stringify({ content: params.content }),
449
+ signal: effectiveSignal,
450
+ });
451
+ if (!resp.ok) {
452
+ const text = await resp.text().catch(() => "");
453
+ throw new Error(`Octo API ${path} failed (${resp.status}): ${text || resp.statusText}`);
454
+ }
455
+ const text = await resp.text();
456
+ if (!text)
457
+ return { version: 0 };
458
+ return parseOctoJson(text);
459
+ }
325
460
  //# sourceMappingURL=api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/octo/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/octo/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * CommunityTopic (thread) channel-id helpers.
3
+ *
4
+ * Octo encodes a thread's channel_id as `<groupNo>____<shortId>` — the parent
5
+ * group number, four underscores, then the thread short id. A plain group's
6
+ * channel_id has no separator. These pure functions are the single place that
7
+ * knows the composite format, so callers that need the parent group number
8
+ * (e.g. roster / @-mention lookups that must hit `/groups/{groupNo}/members`)
9
+ * or the thread short id never re-implement the split and drift apart.
10
+ *
11
+ * Splitting always uses the FIRST `____` occurrence (`indexOf`), so a shortId
12
+ * that itself contains the separator stays intact on the right-hand side.
13
+ */
14
+ /**
15
+ * Separator between parent group_no and thread short_id in Octo's
16
+ * CommunityTopic channel-id format (`<groupNo>____<shortId>`, 4 underscores).
17
+ */
18
+ export declare const THREAD_ID_SEPARATOR = "____";
19
+ /**
20
+ * Extract the parent group number from a channelId.
21
+ * Thread channelId format: "groupNo____shortId" → "groupNo".
22
+ * Group channelId format: "groupNo" → "groupNo" (returned unchanged).
23
+ */
24
+ export declare function extractParentGroupNo(channelId: string): string;
25
+ /**
26
+ * Extract the thread shortId from a channelId.
27
+ * Only thread channelIds contain a shortId; group channelIds return null.
28
+ *
29
+ * Edge case: if channelId ends with "____" (no shortId portion), returns null.
30
+ * Callers that require a non-empty shortId should check for falsy values.
31
+ */
32
+ export declare function extractThreadShortId(channelId: string): string | null;
33
+ /**
34
+ * Check if a channelId is a thread (CommunityTopic) composite id.
35
+ */
36
+ export declare function isThreadChannelId(channelId: string): boolean;
@@ -0,0 +1,52 @@
1
+ // Forked from openclaw-channel-octo v1.0.13 (2026-06-04)
2
+ // Source: https://github.com/Mininglamp-OSS/openclaw-channel-octo
3
+ // - constants.ts (THREAD_ID_SEPARATOR)
4
+ // - group-md.ts (extractParentGroupNo / extractThreadShortId / isThreadChannelId)
5
+ /**
6
+ * CommunityTopic (thread) channel-id helpers.
7
+ *
8
+ * Octo encodes a thread's channel_id as `<groupNo>____<shortId>` — the parent
9
+ * group number, four underscores, then the thread short id. A plain group's
10
+ * channel_id has no separator. These pure functions are the single place that
11
+ * knows the composite format, so callers that need the parent group number
12
+ * (e.g. roster / @-mention lookups that must hit `/groups/{groupNo}/members`)
13
+ * or the thread short id never re-implement the split and drift apart.
14
+ *
15
+ * Splitting always uses the FIRST `____` occurrence (`indexOf`), so a shortId
16
+ * that itself contains the separator stays intact on the right-hand side.
17
+ */
18
+ /**
19
+ * Separator between parent group_no and thread short_id in Octo's
20
+ * CommunityTopic channel-id format (`<groupNo>____<shortId>`, 4 underscores).
21
+ */
22
+ export const THREAD_ID_SEPARATOR = "____";
23
+ /**
24
+ * Extract the parent group number from a channelId.
25
+ * Thread channelId format: "groupNo____shortId" → "groupNo".
26
+ * Group channelId format: "groupNo" → "groupNo" (returned unchanged).
27
+ */
28
+ export function extractParentGroupNo(channelId) {
29
+ const sep = channelId.indexOf(THREAD_ID_SEPARATOR);
30
+ return sep >= 0 ? channelId.slice(0, sep) : channelId;
31
+ }
32
+ /**
33
+ * Extract the thread shortId from a channelId.
34
+ * Only thread channelIds contain a shortId; group channelIds return null.
35
+ *
36
+ * Edge case: if channelId ends with "____" (no shortId portion), returns null.
37
+ * Callers that require a non-empty shortId should check for falsy values.
38
+ */
39
+ export function extractThreadShortId(channelId) {
40
+ const sep = channelId.indexOf(THREAD_ID_SEPARATOR);
41
+ if (sep < 0)
42
+ return null;
43
+ const id = channelId.slice(sep + THREAD_ID_SEPARATOR.length);
44
+ return id || null;
45
+ }
46
+ /**
47
+ * Check if a channelId is a thread (CommunityTopic) composite id.
48
+ */
49
+ export function isThreadChannelId(channelId) {
50
+ return channelId.includes(THREAD_ID_SEPARATOR);
51
+ }
52
+ //# sourceMappingURL=channel-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel-id.js","sourceRoot":"","sources":["../../src/octo/channel-id.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,kEAAkE;AAClE,yCAAyC;AACzC,oFAAoF;AAEpF;;;;;;;;;;;;GAYG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAE1C;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAAiB;IACpD,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACnD,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACxD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAAiB;IACpD,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACnD,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC7D,OAAO,EAAE,IAAI,IAAI,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAiB;IACjD,OAAO,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;AACjD,CAAC"}
@@ -83,6 +83,28 @@ export declare enum ChannelType {
83
83
  Group = 2,
84
84
  CommunityTopic = 5
85
85
  }
86
+ /**
87
+ * A thread (CommunityTopic) under a parent group, as returned by the Octo bot
88
+ * thread lifecycle endpoints. A thread's channel_id is the composite
89
+ * `<groupNo>____<shortId>` (see octo/channel-id.ts).
90
+ */
91
+ export interface Thread {
92
+ /** Thread short id; the right-hand side of the composite channel_id. */
93
+ short_id: string;
94
+ name: string;
95
+ /** uid of the member who created the thread. */
96
+ creator_uid: string;
97
+ /** Lifecycle status flag (server-defined). Absent on the create response. */
98
+ status?: number;
99
+ /** Current member count. Present on getThread. */
100
+ member_count?: number;
101
+ }
102
+ /** A single member of a thread, as returned by listThreadMembers. */
103
+ export interface ThreadMember {
104
+ uid: string;
105
+ /** Member role within the thread (server-defined). */
106
+ role: number;
107
+ }
86
108
  /** Message content types */
87
109
  export declare enum MessageType {
88
110
  Text = 1,
@@ -1 +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"}
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;AA0BD,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"}
@@ -42,6 +42,26 @@ export declare const CURRENT_MESSAGE_ANCHOR = "[Current message \u2014 respond t
42
42
  * `fallback` if nothing survives.
43
43
  */
44
44
  export declare function sanitizeDisplayName(name: unknown, fallback?: string): string;
45
+ /**
46
+ * Format a sender label for prompt display: `name(uid)` when a name is present,
47
+ * otherwise the bare `uid`. Both fields go through sanitizeDisplayName so a
48
+ * user-controlled name (or, defensively, uid) cannot inject brackets, colons,
49
+ * or line breaks that would forge a role/section boundary. Mirrors
50
+ * openclaw-channel-octo's buildSenderPrefix — the shared convention across
51
+ * both Octo channel adapters, so a Claude-Code / Claw agent sees the same
52
+ * `name(uid)` shape whether the transport is cc-channel-octo or
53
+ * openclaw-channel-octo.
54
+ *
55
+ * Used at two sites:
56
+ * 1. The `[Current message — respond to this ONLY]` anchor body in
57
+ * index.ts, so the bot can tell WHO sent the request being replied to
58
+ * (previously the current message was anonymous, forcing the model to
59
+ * guess from context).
60
+ * 2. Each line of the `[Recent group messages]` block in group-context.ts,
61
+ * so the historical background carries uid too — the two blocks now
62
+ * agree on identity semantics.
63
+ */
64
+ export declare function formatSenderLabel(fromUid: unknown, fromName: unknown): string;
45
65
  /**
46
66
  * Escape a line-leading role label in user-authored CONTENT so it renders as
47
67
  * literal text inside its turn rather than forging a new turn boundary:
@@ -107,6 +107,30 @@ export function sanitizeDisplayName(name, fallback = '') {
107
107
  .trim();
108
108
  return cleaned.length > 0 ? cleaned : fallback;
109
109
  }
110
+ /**
111
+ * Format a sender label for prompt display: `name(uid)` when a name is present,
112
+ * otherwise the bare `uid`. Both fields go through sanitizeDisplayName so a
113
+ * user-controlled name (or, defensively, uid) cannot inject brackets, colons,
114
+ * or line breaks that would forge a role/section boundary. Mirrors
115
+ * openclaw-channel-octo's buildSenderPrefix — the shared convention across
116
+ * both Octo channel adapters, so a Claude-Code / Claw agent sees the same
117
+ * `name(uid)` shape whether the transport is cc-channel-octo or
118
+ * openclaw-channel-octo.
119
+ *
120
+ * Used at two sites:
121
+ * 1. The `[Current message — respond to this ONLY]` anchor body in
122
+ * index.ts, so the bot can tell WHO sent the request being replied to
123
+ * (previously the current message was anonymous, forcing the model to
124
+ * guess from context).
125
+ * 2. Each line of the `[Recent group messages]` block in group-context.ts,
126
+ * so the historical background carries uid too — the two blocks now
127
+ * agree on identity semantics.
128
+ */
129
+ export function formatSenderLabel(fromUid, fromName) {
130
+ const uid = sanitizeDisplayName(fromUid, 'unknown');
131
+ const name = sanitizeDisplayName(fromName, '');
132
+ return name.length > 0 ? `${name}(${uid})` : uid;
133
+ }
110
134
  /**
111
135
  * Escape a line-leading role label in user-authored CONTENT so it renders as
112
136
  * literal text inside its turn rather than forging a new turn boundary:
@@ -1 +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"}
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;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAgB,EAAE,QAAiB;IACnE,MAAM,GAAG,GAAG,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,mBAAmB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC/C,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACnD,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"}
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import type { Config } from './config.js';
5
5
  import type { BotMessage } from './octo/types.js';
6
+ import type { GroupMdCache } from './group-md-cache.js';
6
7
  export interface RouteResult {
7
8
  sessionKey: string;
8
9
  shouldProcess: boolean;
@@ -42,7 +43,14 @@ export declare class SessionRouter {
42
43
  * extended via registerKnownBot() for future multi-bot deployments.
43
44
  */
44
45
  private readonly knownBotUids;
45
- constructor(config: Config, robotId: string, ownerUid?: string);
46
+ /**
47
+ * P2-B: in-memory server GROUP.md cache (A's P2-A cache). Held so a GROUP.md
48
+ * change event can invalidate the affected group's entry, forcing the next
49
+ * turn to re-fetch the authoritative copy. Optional — omitted (or with
50
+ * `serverMd` off) the event path is a harmless no-op.
51
+ */
52
+ private readonly groupMdCache?;
53
+ constructor(config: Config, robotId: string, ownerUid?: string, groupMdCache?: GroupMdCache);
46
54
  /** G14: register another known bot uid (future multi-bot support). */
47
55
  registerKnownBot(uid: string): void;
48
56
  /**
@@ -130,6 +138,32 @@ export declare class SessionRouter {
130
138
  * inbound messages never carry the marker.
131
139
  */
132
140
  private isCronFire;
141
+ /**
142
+ * P2-B: react to a server system event that signals a GROUP.md change by
143
+ * invalidating that group's cached server GROUP.md, so the next turn re-fetches
144
+ * the authoritative copy over the authenticated bot token (never trusting the
145
+ * event payload as the new content — see group-md-events.ts for the
146
+ * forged-event poisoning rationale). Non-md system events (join/leave, etc.)
147
+ * match nothing here and fall through to the caller's `return null`, so they
148
+ * are dropped exactly as before.
149
+ *
150
+ * Gated on `serverMd`: with the flag off the cache is never populated, so there
151
+ * is nothing to invalidate. Best-effort and never throws — a malformed event
152
+ * must not wedge the router (the caller drops the event regardless).
153
+ *
154
+ * The group is identified from the event's `group_no`: these events are
155
+ * delivered on a system/DM channel (a group event on the group's own channel
156
+ * dies at the mention gate above, never reaching here — XIN-173), so the
157
+ * arriving `channel_id` is the sender, not the group. The channel is only a
158
+ * fallback when `group_no` is absent AND the event happens to have arrived on a
159
+ * group-like channel (e.g. a mention-free group, the one group path that
160
+ * reaches this point). Using the event-supplied `group_no` is safe despite the
161
+ * event being untrusted: invalidation is non-destructive — the worst a forged
162
+ * event can do is force a redundant authenticated re-fetch of the real value,
163
+ * never inject content (the new GROUP.md is always re-fetched, never read from
164
+ * the event body — see group-md-events.ts).
165
+ */
166
+ private handleGroupMdEvent;
133
167
  private processMessage;
134
168
  /**
135
169
  * G20 fix: Check all three rate limits (global, per-session, per-user) in