@yefengr/pi-reach 0.0.4 → 0.0.6

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 (53) hide show
  1. package/dist/attachments/reservation.fixture.d.ts +1 -0
  2. package/dist/attachments/reservation.fixture.js +25 -0
  3. package/dist/attachments/reservation.fixture.js.map +1 -0
  4. package/dist/attachments/reservations.d.ts +21 -0
  5. package/dist/attachments/reservations.js +189 -0
  6. package/dist/attachments/reservations.js.map +1 -0
  7. package/dist/attachments/safe-files.d.ts +17 -0
  8. package/dist/attachments/safe-files.js +108 -0
  9. package/dist/attachments/safe-files.js.map +1 -0
  10. package/dist/attachments/storage-path.d.ts +4 -0
  11. package/dist/attachments/storage-path.js +47 -0
  12. package/dist/attachments/storage-path.js.map +1 -0
  13. package/dist/attachments/store.d.ts +55 -0
  14. package/dist/attachments/store.js +536 -0
  15. package/dist/attachments/store.js.map +1 -0
  16. package/dist/attachments/types.d.ts +48 -0
  17. package/dist/attachments/types.js +20 -0
  18. package/dist/attachments/types.js.map +1 -0
  19. package/dist/index.js +30 -24
  20. package/dist/index.js.map +1 -1
  21. package/dist/runtime/attachment_binding.d.ts +17 -0
  22. package/dist/runtime/attachment_binding.js +70 -0
  23. package/dist/runtime/attachment_binding.js.map +1 -0
  24. package/dist/runtime/create_owner_binding.d.ts +27 -0
  25. package/dist/runtime/create_owner_binding.js +22 -0
  26. package/dist/runtime/create_owner_binding.js.map +1 -0
  27. package/dist/timeline/attachment_content.d.ts +21 -0
  28. package/dist/timeline/attachment_content.js +83 -0
  29. package/dist/timeline/attachment_content.js.map +1 -0
  30. package/dist/timeline/attachment_delivery.d.ts +65 -0
  31. package/dist/timeline/attachment_delivery.js +150 -0
  32. package/dist/timeline/attachment_delivery.js.map +1 -0
  33. package/dist/timeline/runtime.d.ts +4 -2
  34. package/dist/timeline/runtime.js +33 -34
  35. package/dist/timeline/runtime.js.map +1 -1
  36. package/dist/timeline/user_delivery.d.ts +7 -0
  37. package/dist/timeline/user_delivery.js +21 -12
  38. package/dist/timeline/user_delivery.js.map +1 -1
  39. package/dist/timeline/user_delivery_binding.d.ts +6 -1
  40. package/dist/timeline/user_delivery_binding.js +17 -1
  41. package/dist/timeline/user_delivery_binding.js.map +1 -1
  42. package/dist/timeline/v2_service.d.ts +6 -1
  43. package/dist/timeline/v2_service.js +16 -8
  44. package/dist/timeline/v2_service.js.map +1 -1
  45. package/dist/vendor/protocol/session/attachments.d.ts +78 -0
  46. package/dist/vendor/protocol/session/attachments.js +150 -0
  47. package/dist/vendor/protocol/session/frames.d.ts +500 -0
  48. package/dist/vendor/protocol/session/frames.js +37 -4
  49. package/dist/vendor/protocol/session/index.d.ts +1 -0
  50. package/dist/vendor/protocol/session/index.js +1 -0
  51. package/dist/vendor/protocol/session/schema.d.ts +2 -2
  52. package/dist/vendor/protocol/session/schema.js +2 -0
  53. package/package.json +1 -1
@@ -0,0 +1,150 @@
1
+ import { createHash } from "node:crypto";
2
+ import { ATTACHMENT_METADATA_TYPE, ATTACHMENT_MESSAGE_TYPE, attachmentMetadataSchema, attachmentMessageBindingSchema, } from "../vendor/protocol/session/index.js";
3
+ import { attachmentContent, attachmentDisplayBlocks, attachmentQueueDisplay } from "./attachment_content.js";
4
+ import { MAX_USER_DELIVERY_BYTES } from "./user_delivery.js";
5
+ export const MAX_ATTACHMENT_DELIVERY_RECORDS = 4096;
6
+ export const MAX_ATTACHMENT_DELIVERY_BYTES = MAX_USER_DELIVERY_BYTES;
7
+ // 两个 native ID 和 byte 计数变化的预留,压缩后也继续计入预算。
8
+ const JOURNAL_RECORD_RESERVE_BYTES = 256;
9
+ export function attachmentReplayFrames(frame, query, sessionId, leafId) {
10
+ const invalidSteer = frame.attachment_ids && frame.streaming_behavior === "steer";
11
+ const replay = invalidSteer ? "conflict" : query?.(frame);
12
+ if (replay === "conflict")
13
+ return [{ protocol_version: 2, type: "protocol_error", target_channel_id: frame.channel_id,
14
+ in_reply_to: frame.id, code: "invalid_message",
15
+ message: invalidSteer ? "Attachments cannot be submitted as steer." : "client_request_id payload conflict" }];
16
+ if (!replay)
17
+ return null;
18
+ const base = { protocol_version: 2, type: "user_message_status",
19
+ target_channel_id: frame.channel_id, in_reply_to: frame.id,
20
+ session_id: sessionId, leaf_id: leafId, client_request_id: frame.client_request_id };
21
+ if (replay.status === "unknown_delivery")
22
+ return [{ ...base, status: "unknown_delivery" }];
23
+ return [{ ...base, status: "committed", message_id: replay.messageId,
24
+ ...(replay.groupId ? { group_id: replay.groupId } : {}) }];
25
+ }
26
+ /** 与 store 同寿命;保护记录不逐出,耗尽预算后拒绝新请求而非允许重复投递。 */
27
+ export class AttachmentDelivery {
28
+ store;
29
+ journal = new Map();
30
+ journalBytes = 0;
31
+ constructor(store) {
32
+ this.store = store;
33
+ }
34
+ replay(frame, ownerId, manager, runtime) {
35
+ const record = this.journal.get(this.key(ownerId, frame.client_request_id, manager));
36
+ if (!record)
37
+ return null;
38
+ if (record.fingerprint !== this.fingerprint(frame))
39
+ return "conflict";
40
+ if (!record.mayHaveDelivered)
41
+ return null;
42
+ const event = record.messageId && runtime.recover(manager).find((event) => event.kind === "user" && event.event_id === record.messageId && event.sender_ref === ownerId);
43
+ return event ? { status: "committed", messageId: event.event_id, groupId: event.group_id }
44
+ : { status: "unknown_delivery" };
45
+ }
46
+ prepare(frame, ownerId, manager, runtime) {
47
+ if (!frame.attachment_ids || frame.streaming_behavior === "steer")
48
+ throw new Error("invalid attachment message");
49
+ const key = this.key(ownerId, frame.client_request_id, manager);
50
+ const existing = this.journal.get(key);
51
+ if (existing) {
52
+ if (existing.fingerprint !== this.fingerprint(frame) || existing.mayHaveDelivered)
53
+ throw new Error("attachment replay required");
54
+ if (existing.heavy)
55
+ return this.prepared(key, existing, existing.heavy);
56
+ }
57
+ else if (this.journal.size >= MAX_ATTACHMENT_DELIVERY_RECORDS)
58
+ return null;
59
+ const scope = { ownerId, sessionId: manager.getSessionId(), uploadScope: this.store.scopeFor(manager.getSessionId()) };
60
+ const files = this.store.resolve(scope, frame.attachment_ids);
61
+ const metadata = existing ? this.nativeMetadata(existing, manager) : attachmentMetadataSchema.parse({
62
+ version: 1, client_request_id: frame.client_request_id, sender_ref: ownerId,
63
+ text: frame.text, attachments: files.map((file) => file.descriptor),
64
+ });
65
+ if (!metadata)
66
+ throw new Error("attachment metadata is unavailable on current branch");
67
+ const heavy = { metadata, content: attachmentContent(frame.text, files) };
68
+ const record = existing ?? { fingerprint: this.fingerprint(frame), scope, ids: [...frame.attachment_ids],
69
+ requestId: frame.client_request_id, mayHaveDelivered: false, bytes: 0 };
70
+ // 在 append 前核算完整正文、preview、路径和保护 token;为两个后续 native ID 预留空间。
71
+ const bytes = this.recordBytes(key, { ...record, heavy }) + JOURNAL_RECORD_RESERVE_BYTES;
72
+ if (this.journalBytes - record.bytes + bytes > MAX_ATTACHMENT_DELIVERY_BYTES)
73
+ return null;
74
+ if (!existing)
75
+ record.metadataEntryId = runtime.appendDeferredCustom(manager, ATTACHMENT_METADATA_TYPE, metadata);
76
+ this.journalBytes += bytes - record.bytes;
77
+ record.bytes = bytes;
78
+ record.heavy = heavy;
79
+ this.journal.set(key, record);
80
+ return this.prepared(key, record, heavy);
81
+ }
82
+ beforeSend(correlation, manager) {
83
+ const record = this.find(correlation, manager);
84
+ if (!record)
85
+ return;
86
+ if (record.mayHaveDelivered)
87
+ throw new Error("attachment delivery is uncertain");
88
+ this.store.retain(record.scope, record.ids);
89
+ // 必须在调用 Pi 前置位;同步抛错也无法证明未投递。
90
+ record.mayHaveDelivered = true;
91
+ this.release(this.key(record.scope.ownerId, record.requestId, manager), record);
92
+ }
93
+ started(started, manager, runtime) {
94
+ if (started.role !== "user")
95
+ return started;
96
+ const record = this.find(started.correlation, manager);
97
+ if (!record || !record.mayHaveDelivered)
98
+ return started;
99
+ const metadata = this.nativeMetadata(record, manager);
100
+ if (!metadata)
101
+ throw new Error("attachment metadata is unavailable on current branch");
102
+ if (!record.messageId) {
103
+ const binding = attachmentMessageBindingSchema.parse({ version: 1, client_request_id: record.requestId,
104
+ sender_ref: record.scope.ownerId, message_id: started.eventId });
105
+ runtime.appendDeferredCustom(manager, ATTACHMENT_MESSAGE_TYPE, binding);
106
+ record.messageId = started.eventId;
107
+ }
108
+ return { ...started, blocks: attachmentDisplayBlocks(metadata) };
109
+ }
110
+ reset() { this.journal.clear(); this.journalBytes = 0; }
111
+ prepared(key, record, heavy) {
112
+ return { content: heavy.content, payload: { text: heavy.metadata.text,
113
+ attachment_ids: [...record.ids], attachment_metadata: heavy.metadata, display_text: attachmentQueueDisplay(heavy.metadata),
114
+ on_release: () => this.release(key, record) } };
115
+ }
116
+ release(key, record) {
117
+ if (this.journal.get(key) !== record || !record.heavy)
118
+ return;
119
+ record.heavy = undefined;
120
+ const bytes = this.recordBytes(key, record) + JOURNAL_RECORD_RESERVE_BYTES;
121
+ this.journalBytes += bytes - record.bytes;
122
+ record.bytes = bytes;
123
+ }
124
+ nativeMetadata(record, manager) {
125
+ const entry = manager.getBranch().find((entry) => entry.id === record.metadataEntryId
126
+ && entry.type === "custom" && entry.customType === ATTACHMENT_METADATA_TYPE);
127
+ if (!entry || entry.type !== "custom")
128
+ return null;
129
+ const parsed = attachmentMetadataSchema.safeParse(entry.data);
130
+ return parsed.success && parsed.data.sender_ref === record.scope.ownerId
131
+ && parsed.data.client_request_id === record.requestId ? parsed.data : null;
132
+ }
133
+ recordBytes(key, record) {
134
+ return Buffer.byteLength(key, "utf8") + Buffer.byteLength(JSON.stringify(record), "utf8");
135
+ }
136
+ find(correlation, manager) {
137
+ if (!correlation.senderRef || !correlation.clientRequestId)
138
+ return undefined;
139
+ return this.journal.get(this.key(correlation.senderRef, correlation.clientRequestId, manager));
140
+ }
141
+ key(ownerId, requestId, manager) {
142
+ return JSON.stringify([manager.getSessionId(), this.store.scopeFor(manager.getSessionId()), ownerId, requestId]);
143
+ }
144
+ fingerprint(frame) {
145
+ return createHash("sha256").update(JSON.stringify([
146
+ frame.text, [...(frame.attachment_ids ?? [])].sort(), frame.streaming_behavior ?? null,
147
+ ])).digest("hex");
148
+ }
149
+ }
150
+ //# sourceMappingURL=attachment_delivery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment_delivery.js","sourceRoot":"","sources":["../../src/timeline/attachment_delivery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EACL,wBAAwB,EAAE,uBAAuB,EACjD,wBAAwB,EAAE,8BAA8B,GAEzD,MAAM,4BAA4B,CAAC;AAIpC,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAC7G,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,MAAM,CAAC,MAAM,+BAA+B,GAAG,IAAI,CAAC;AACpD,MAAM,CAAC,MAAM,6BAA6B,GAAG,uBAAuB,CAAC;AACrE,0CAA0C;AAC1C,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAgBzC,MAAM,UAAU,sBAAsB,CAAC,KAAY,EAAE,KAAuD,EAC1G,SAAiB,EAAE,MAAqB;IACxC,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,kBAAkB,KAAK,OAAO,CAAC;IAClF,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;IAC1D,IAAI,MAAM,KAAK,UAAU;QAAE,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,KAAK,CAAC,UAAU;gBACnH,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,iBAAiB;gBAC9C,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,oCAAoC,EAAE,CAAC,CAAC;IAChH,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,IAAI,GAAG,EAAE,gBAAgB,EAAE,CAAU,EAAE,IAAI,EAAE,qBAA8B;QAC/E,iBAAiB,EAAE,KAAK,CAAC,UAAU,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE;QAC1D,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,EAAE,CAAC;IACvF,IAAI,MAAM,CAAC,MAAM,KAAK,kBAAkB;QAAE,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC3F,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,SAAS;YAClE,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,8CAA8C;AAC9C,MAAM,OAAO,kBAAkB;IAGR;IAFJ,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC7C,YAAY,GAAG,CAAC,CAAC;IACzB,YAAqB,KAAsB;QAAtB,UAAK,GAAL,KAAK,CAAiB;IAAG,CAAC;IAE/C,MAAM,CAAC,KAAY,EAAE,OAAe,EAAE,OAAuB,EAAE,OAAwB;QACrF,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC;QACrF,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,IAAI,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YAAE,OAAO,UAAU,CAAC;QACtE,IAAI,CAAC,MAAM,CAAC,gBAAgB;YAAE,OAAO,IAAI,CAAC;QAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CACxE,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,UAAU,KAAK,OAAO,CAAC,CAAC;QAChG,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE;YACxF,CAAC,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;IACrC,CAAC;IAED,OAAO,CAAC,KAAY,EAAE,OAAe,EAAE,OAAuB,EAAE,OAAwB;QACtF,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,kBAAkB,KAAK,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QACjH,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,QAAQ,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,gBAAgB;gBAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;YACjI,IAAI,QAAQ,CAAC,KAAK;gBAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC1E,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,+BAA+B;YAAE,OAAO,IAAI,CAAC;QAE7E,MAAM,KAAK,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,YAAY,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC;QACvH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,KAAK,CAAC;YAClG,OAAO,EAAE,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,EAAE,UAAU,EAAE,OAAO;YAC3E,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;SACpE,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QACvF,MAAM,KAAK,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;QAC1E,MAAM,MAAM,GAAW,QAAQ,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC;YAC9G,SAAS,EAAE,KAAK,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAC1E,6DAA6D;QAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,4BAA4B,CAAC;QACzF,IAAI,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,KAAK,GAAG,KAAK,GAAG,6BAA6B;YAAE,OAAO,IAAI,CAAC;QAC1F,IAAI,CAAC,QAAQ;YAAE,MAAM,CAAC,eAAe,GAAG,OAAO,CAAC,oBAAoB,CAAC,OAAO,EAAE,wBAAwB,EAAE,QAAQ,CAAC,CAAC;QAClH,IAAI,CAAC,YAAY,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1C,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,UAAU,CAAC,WAAwB,EAAE,OAAuB;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,IAAI,MAAM,CAAC,gBAAgB;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACjF,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5C,6BAA6B;QAC7B,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;IAClF,CAAC;IAED,OAAO,CAAC,OAAwB,EAAE,OAAuB,EAAE,OAAwB;QACjF,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,OAAO,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB;YAAE,OAAO,OAAO,CAAC;QACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QACvF,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,8BAA8B,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,SAAS;gBACpG,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YACnE,OAAO,CAAC,oBAAoB,CAAC,OAAO,EAAE,uBAAuB,EAAE,OAAO,CAAC,CAAC;YACxE,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;QACrC,CAAC;QACD,OAAO,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC;IACnE,CAAC;IAED,KAAK,KAAW,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC;IAEtD,QAAQ,CAAC,GAAW,EAAE,MAAc,EAAE,KAAmC;QAC/E,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI;gBACnE,cAAc,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,mBAAmB,EAAE,KAAK,CAAC,QAAQ,EAAE,YAAY,EAAE,sBAAsB,CAAC,KAAK,CAAC,QAAQ,CAAC;gBAC1H,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;IACpD,CAAC;IAEO,OAAO,CAAC,GAAW,EAAE,MAAc;QACzC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK;YAAE,OAAO;QAC9D,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,4BAA4B,CAAC;QAC3E,IAAI,CAAC,YAAY,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1C,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAEO,cAAc,CAAC,MAAc,EAAE,OAAuB;QAC5D,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,MAAM,CAAC,eAAe;eAChF,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,KAAK,wBAAwB,CAAC,CAAC;QAC/E,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACnD,MAAM,MAAM,GAAG,wBAAwB,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9D,OAAO,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO;eACnE,MAAM,CAAC,IAAI,CAAC,iBAAiB,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/E,CAAC;IAEO,WAAW,CAAC,GAAW,EAAE,MAAc;QAC7C,OAAO,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IAC5F,CAAC;IAEO,IAAI,CAAC,WAAwB,EAAE,OAAuB;QAC5D,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,CAAC,WAAW,CAAC,eAAe;YAAE,OAAO,SAAS,CAAC;QAC7E,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;IACjG,CAAC;IAEO,GAAG,CAAC,OAAe,EAAE,SAAiB,EAAE,OAAuB;QACrE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;IACnH,CAAC;IAEO,WAAW,CAAC,KAAY;QAC9B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;YAChD,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,kBAAkB,IAAI,IAAI;SACvF,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;CACF"}
@@ -22,6 +22,7 @@ export type TimelineStarted = {
22
22
  };
23
23
  export type TimelineRuntimeOptions = {
24
24
  onStarted?: (started: TimelineStarted) => void;
25
+ prepareStarted?: (started: TimelineStarted, manager: SessionManager, runtime: TimelineRuntime) => TimelineStarted;
25
26
  onPublished?: (event: TimelineEvent, correlation: Correlation) => void;
26
27
  onPartial?: (partial: TimelinePartial, correlation: Correlation) => void;
27
28
  };
@@ -38,6 +39,7 @@ export declare class TimelineRuntime {
38
39
  private active;
39
40
  private readonly onStarted?;
40
41
  private readonly onPartial?;
42
+ private readonly prepareStarted?;
41
43
  constructor(options?: TimelineRuntimeOptions);
42
44
  attach(sessionManager: SessionManager): void;
43
45
  resetSession(sessionManager: SessionManager): void;
@@ -59,6 +61,8 @@ export declare class TimelineRuntime {
59
61
  onMessageStart(message: unknown, sessionManager: SessionManager): TimelineStarted | null;
60
62
  onMessageUpdate(event: MessageUpdateEvent, sessionManager: SessionManager): void;
61
63
  onMessageEnd(message: unknown, sessionManager: SessionManager): void;
64
+ appendDeferredCustom(sessionManager: SessionManager, customType: string, data: unknown): string;
65
+ private recoverForPublication;
62
66
  private publishWhenVisible;
63
67
  onToolExecutionStart(event: ToolExecutionStartEvent, sessionManager: SessionManager): void;
64
68
  onToolExecutionUpdate(event: ToolExecutionUpdateEvent, sessionManager: SessionManager): void;
@@ -79,10 +83,8 @@ export declare class TimelineRuntime {
79
83
  private asMessageRecord;
80
84
  private messageRole;
81
85
  private timestamp;
82
- private userBlocks;
83
86
  private assistantBlocks;
84
87
  private textFromContent;
85
88
  private nonEmpty;
86
- private base64Length;
87
89
  }
88
90
  export {};
@@ -1,6 +1,7 @@
1
1
  import { AsyncLocalStorage } from "node:async_hooks";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import { MarkerSchemaV2, TimelineEventSchema } from "../protocol/v2/index.js";
4
+ import { attachmentRecords, attachmentDisplayBlocks, userContentBlocks } from "./attachment_content.js";
4
5
  import { partialDeltaChunks } from "./partial_delta.js";
5
6
  import { TimelinePublications } from "./publication.js";
6
7
  import { isRunEndMarker, runEndEvent, runEndMarker, runEndStatus } from "./run_end.js";
@@ -27,8 +28,10 @@ export class TimelineRuntime {
27
28
  active = false;
28
29
  onStarted;
29
30
  onPartial;
31
+ prepareStarted;
30
32
  constructor(options = {}) {
31
33
  this.onStarted = options.onStarted;
34
+ this.prepareStarted = options.prepareStarted;
32
35
  this.onPartial = options.onPartial;
33
36
  this.publications = new TimelinePublications((event, correlation) => {
34
37
  options.onPublished?.(event, correlation);
@@ -98,7 +101,7 @@ export class TimelineRuntime {
98
101
  onTurnEnd(sessionManager) {
99
102
  if (this.sessionManager !== sessionManager)
100
103
  return;
101
- this.publications.flush(() => this.recover(sessionManager));
104
+ this.publications.flush(() => this.recoverForPublication(sessionManager));
102
105
  }
103
106
  /** 为本次运行的组写入 run_end marker,并在同组正式消息发布之后推送。 */
104
107
  onAgentEnd(messages) {
@@ -135,13 +138,14 @@ export class TimelineRuntime {
135
138
  const pending = { message: objectMessage, role: record.role, marker, correlation, identity: this.messageIdentity(record) };
136
139
  this.pending.set(objectMessage, pending);
137
140
  this.pendingByRole[record.role].push(pending);
138
- const started = {
141
+ let started = {
139
142
  eventId: markerId,
140
143
  groupId,
141
144
  role: record.role,
142
145
  correlation: { ...correlation },
143
- blocks: record.role === "user" ? this.userBlocks(record.content) : [],
146
+ blocks: record.role === "user" ? userContentBlocks(record.content) : [],
144
147
  };
148
+ started = this.prepareStarted?.(started, sessionManager, this) ?? started;
145
149
  this.onStarted?.(started);
146
150
  return started;
147
151
  }
@@ -193,9 +197,26 @@ export class TimelineRuntime {
193
197
  this.pendingByRole[pending.role] = this.pendingByRole[pending.role].filter((candidate) => candidate !== pending);
194
198
  this.publishWhenVisible(sessionManager, pending.marker.event_id, pending.correlation);
195
199
  }
200
+ appendDeferredCustom(sessionManager, customType, data) {
201
+ this.attach(sessionManager);
202
+ const id = sessionManager.appendCustomEntry(customType, data);
203
+ this.publishWhenVisible(sessionManager, id, { origin: "unknown", delivery: "unknown" });
204
+ return id;
205
+ }
206
+ recoverForPublication(manager) {
207
+ const events = this.recover(manager);
208
+ const visible = new Set(events.map((event) => event.event_id));
209
+ const branch = manager.getBranch();
210
+ const cutoff = branch.findIndex((entry) => entry.type === "custom" && entry.customType === TIMELINE_MARKER
211
+ && !visible.has(entry.id) && this.parseMarker(entry.data) !== null);
212
+ if (cutoff < 0)
213
+ return events;
214
+ const before = new Set(branch.slice(0, cutoff).map((entry) => entry.id));
215
+ return events.filter((event) => before.has(event.event_id));
216
+ }
196
217
  publishWhenVisible(sessionManager, markerId, correlation) {
197
- this.publications.defer(markerId, correlation, () => this.sessionManager === sessionManager ? this.recover(sessionManager) : [], () => this.sessionManager === sessionManager && sessionManager.getBranch().some((entry) => entry.type === "custom"
198
- && entry.customType === TIMELINE_MARKER && entry.id === markerId));
218
+ this.publications.defer(markerId, correlation, () => this.sessionManager === sessionManager ? this.recoverForPublication(sessionManager) : [], () => this.sessionManager === sessionManager && sessionManager.getBranch().some((entry) => entry.type === "custom"
219
+ && entry.id === markerId));
199
220
  }
200
221
  onToolExecutionStart(event, sessionManager) {
201
222
  if (this.sessionManager !== sessionManager || !this.active)
@@ -232,6 +253,7 @@ export class TimelineRuntime {
232
253
  const branch = sessionManager.getBranch();
233
254
  const legacyGroup = `legacy:${sessionManager.getSessionId()}`;
234
255
  const recoveryTools = recoverToolCalls(branch);
256
+ const attachmentMessages = attachmentRecords(sessionManager);
235
257
  const positions = new Map(branch.map((entry, index) => [entry.id, index]));
236
258
  const matched = new Set();
237
259
  const recovered = [];
@@ -252,7 +274,7 @@ export class TimelineRuntime {
252
274
  if (!target)
253
275
  continue;
254
276
  matched.add(target.id);
255
- const event = this.toTimelineEvent(target, marker, this.correlationFromMarker(marker), sessionManager, recoveryTools.get(target.id));
277
+ const event = this.toTimelineEvent(target, marker, this.correlationFromMarker(marker), sessionManager, recoveryTools.get(target.id), attachmentMessages.get(marker.event_id));
256
278
  if (event)
257
279
  recovered.push({ event, branchPosition: positions.get(target.id) });
258
280
  }
@@ -264,7 +286,7 @@ export class TimelineRuntime {
264
286
  const marker = role === "user"
265
287
  ? { version: 2, event_id: entry.id, group_id: legacyGroup, kind: "user", origin: "unknown", delivery: "unknown" }
266
288
  : { version: 2, event_id: entry.id, group_id: legacyGroup, kind: role === "assistant" ? "assistant" : "tool" };
267
- event = this.toTimelineEvent(entry, marker, this.correlationFromMarker(marker), sessionManager, recoveryTools.get(entry.id));
289
+ event = this.toTimelineEvent(entry, marker, this.correlationFromMarker(marker), sessionManager, recoveryTools.get(entry.id), attachmentMessages.get(marker.event_id));
268
290
  }
269
291
  }
270
292
  else if (entry.type !== "message") {
@@ -370,7 +392,7 @@ export class TimelineRuntime {
370
392
  }
371
393
  return undefined;
372
394
  }
373
- toTimelineEvent(entry, marker, correlation, sessionManager, association) {
395
+ toTimelineEvent(entry, marker, correlation, sessionManager, association, attachmentMetadata) {
374
396
  const message = this.asMessageRecord(entry.message);
375
397
  if (!message)
376
398
  return null;
@@ -385,7 +407,9 @@ export class TimelineRuntime {
385
407
  const senderRef = marker.kind === "user" && marker.sender_ref ? { sender_ref: marker.sender_ref } : {};
386
408
  return TimelineEventSchema.parse({
387
409
  ...base, group_id: groupId, kind: "user", message_id: marker.event_id,
388
- blocks: this.userBlocks(message.content), origin: correlation.origin, delivery: correlation.delivery,
410
+ blocks: attachmentMetadata && attachmentMetadata.sender_ref === senderRef.sender_ref
411
+ ? attachmentDisplayBlocks(attachmentMetadata) : userContentBlocks(message.content),
412
+ origin: correlation.origin, delivery: correlation.delivery,
389
413
  status: "committed", ...senderRef,
390
414
  });
391
415
  }
@@ -475,23 +499,6 @@ export class TimelineRuntime {
475
499
  return messageTimestamp;
476
500
  return Date.now();
477
501
  }
478
- userBlocks(content) {
479
- if (typeof content === "string")
480
- return [{ type: "text", text: content }];
481
- if (!Array.isArray(content))
482
- return [{ type: "text", text: "" }];
483
- return content.flatMap((part) => {
484
- if (!part || typeof part !== "object")
485
- return [];
486
- const item = part;
487
- if (item.type === "text" && typeof item.text === "string")
488
- return [{ type: "text", text: item.text }];
489
- if (item.type === "image" && typeof item.data === "string" && typeof item.mimeType === "string") {
490
- return [{ type: "image", mime_type: item.mimeType, data: item.data, byte_length: this.base64Length(item.data) }];
491
- }
492
- return [];
493
- });
494
- }
495
502
  assistantBlocks(content) {
496
503
  if (typeof content === "string")
497
504
  return [{ type: "text", text: content }];
@@ -523,13 +530,5 @@ export class TimelineRuntime {
523
530
  nonEmpty(value) {
524
531
  return value.trim() || "tool failed";
525
532
  }
526
- base64Length(value) {
527
- try {
528
- return Buffer.from(value, "base64").byteLength;
529
- }
530
- catch {
531
- return 0;
532
- }
533
- }
534
533
  }
535
534
  //# sourceMappingURL=runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/timeline/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/timeline/runtime.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { AttachmentMetadata } from "../vendor/protocol/session/index.js";
1
2
  import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
2
3
  import type { ServerFrame, TimelineEvent } from "../protocol/v2/index.js";
3
4
  import type { Correlation, TimelineStarted } from "./runtime.js";
@@ -16,6 +17,11 @@ export type UserDeliveryPayload = Readonly<{
16
17
  data: string;
17
18
  mime: string;
18
19
  }>[];
20
+ attachment_ids?: readonly string[];
21
+ attachment_metadata?: AttachmentMetadata;
22
+ display_text?: string;
23
+ /** 释放 queue 持有的附件展示/正文,不影响可能已投递的幂等保护。 */
24
+ on_release?: () => void;
19
25
  }>;
20
26
  export type UserDeliveryScope = {
21
27
  readonly ownerId: string;
@@ -84,6 +90,7 @@ export declare class UserDeliveryQueue {
84
90
  private rescheduleAfterMutation;
85
91
  private findTarget;
86
92
  private matches;
93
+ private followCurrentTip;
87
94
  private itemFor;
88
95
  private jobFor;
89
96
  private isCurrentScope;
@@ -39,7 +39,7 @@ export class UserDeliveryQueue {
39
39
  const existing = this.findTarget(scope.ownerId, scope.service, scope.clientRequestId);
40
40
  if (existing)
41
41
  return payloadEquals(existing.payload, payload) ? "duplicate" : "conflict";
42
- const bytes = contentBytes(content);
42
+ const bytes = contentBytes(content) + (payload.attachment_metadata ? Buffer.byteLength(JSON.stringify(payload), "utf8") : 0);
43
43
  const deliveryToken = randomUUID();
44
44
  const job = {
45
45
  scope: { ...scope, deliveryToken },
@@ -121,14 +121,10 @@ export class UserDeliveryQueue {
121
121
  const job = this.jobFor(started.correlation);
122
122
  if (!job)
123
123
  return null;
124
+ this.followCurrentTip(job);
124
125
  if (!this.isCurrentScope(job.scope)) {
125
- if (job.state === "in_flight" && job.scope.sessionId === job.scope.service.sessionId) {
126
- job.scope = { ...job.scope, leafId: job.scope.service.leafId };
127
- }
128
- if (!this.isCurrentScope(job.scope)) {
129
- this.remove(job);
130
- return null;
131
- }
126
+ this.remove(job);
127
+ return null;
132
128
  }
133
129
  if (job.state !== "in_flight" && job.state !== "timed_out")
134
130
  return null;
@@ -178,9 +174,7 @@ export class UserDeliveryQueue {
178
174
  this.remove(job);
179
175
  continue;
180
176
  }
181
- if (job.state === "queued" && job.scope.sessionId === job.scope.service.sessionId && job.scope.leafId !== job.scope.service.leafId) {
182
- job.scope = { ...job.scope, leafId: job.scope.service.leafId };
183
- }
177
+ this.followCurrentTip(job);
184
178
  if (!this.isCurrentScope(job.scope)) {
185
179
  this.remove(job);
186
180
  continue;
@@ -211,6 +205,7 @@ export class UserDeliveryQueue {
211
205
  failBeforeStart(job, retainLateRecord) {
212
206
  if (job.state !== "in_flight" || !this.jobs.has(job.scope.deliveryToken))
213
207
  return;
208
+ this.followCurrentTip(job);
214
209
  this.clearTimer(job);
215
210
  this.releasePayload(job);
216
211
  if (this.active === job)
@@ -264,17 +259,27 @@ export class UserDeliveryQueue {
264
259
  return undefined;
265
260
  }
266
261
  matches(job, ownerId, service) {
262
+ if (job.scope.ownerId === ownerId && job.scope.service === service)
263
+ this.followCurrentTip(job);
267
264
  return job.scope.ownerId === ownerId
268
265
  && job.scope.service === service
269
266
  && job.scope.sessionId === service.sessionId
270
267
  && job.scope.leafId === service.leafId
271
268
  && this.isCurrentScope(job.scope);
272
269
  }
270
+ followCurrentTip(job) {
271
+ // 普通 native append 会推进 leaf;显式 reset 必须先 clearAll,且跟随后仍检查 isCurrent。
272
+ if ((job.state === "queued" || job.state === "in_flight" || job.state === "timed_out")
273
+ && job.scope.sessionId === job.scope.service.sessionId
274
+ && job.scope.leafId !== job.scope.service.leafId) {
275
+ job.scope = { ...job.scope, leafId: job.scope.service.leafId };
276
+ }
277
+ }
273
278
  itemFor(job) {
274
279
  const payload = job.payload ?? { text: "" };
275
280
  return {
276
281
  id: job.scope.clientRequestId,
277
- text: payload.text,
282
+ text: payload.display_text ?? payload.text,
278
283
  ...(payload.images?.length ? { images: payload.images.map((image) => ({ ...image })) } : {}),
279
284
  sender_ref: job.scope.ownerId,
280
285
  editable: job.state === "queued",
@@ -290,6 +295,7 @@ export class UserDeliveryQueue {
290
295
  releasePayload(job) {
291
296
  if (job.content === undefined)
292
297
  return;
298
+ job.payload?.on_release?.();
293
299
  job.content = undefined;
294
300
  job.payload = undefined;
295
301
  this.queuedPayloadCount -= 1;
@@ -331,6 +337,9 @@ function positiveInteger(value, fallback) {
331
337
  function copyPayload(payload) {
332
338
  return {
333
339
  text: payload.text,
340
+ ...(payload.attachment_ids ? { attachment_ids: [...payload.attachment_ids],
341
+ attachment_metadata: payload.attachment_metadata, display_text: payload.display_text,
342
+ on_release: payload.on_release } : {}),
334
343
  ...(payload.images?.length ? { images: payload.images.map((image) => ({ ...image })) } : {}),
335
344
  };
336
345
  }