System events: add local timestamps in prompt injection

Closes #245
This commit is contained in:
Shadow
2026-01-12 21:38:49 -06:00
parent 78a3d965e0
commit fcc814accd
4 changed files with 71 additions and 6 deletions

View File

@@ -2,7 +2,7 @@
// prefixed to the next prompt. We intentionally avoid persistence to keep
// events ephemeral. Events are session-scoped and require an explicit key.
type SystemEvent = { text: string; ts: number };
export type SystemEvent = { text: string; ts: number };
const MAX_EVENTS = 20;
@@ -66,11 +66,11 @@ export function enqueueSystemEvent(text: string, options: SystemEventOptions) {
if (entry.queue.length > MAX_EVENTS) entry.queue.shift();
}
export function drainSystemEvents(sessionKey: string): string[] {
export function drainSystemEventEntries(sessionKey: string): SystemEvent[] {
const key = requireSessionKey(sessionKey);
const entry = queues.get(key);
if (!entry || entry.queue.length === 0) return [];
const out = entry.queue.map((e) => e.text);
const out = entry.queue.slice();
entry.queue.length = 0;
entry.lastText = null;
entry.lastContextKey = null;
@@ -78,6 +78,10 @@ export function drainSystemEvents(sessionKey: string): string[] {
return out;
}
export function drainSystemEvents(sessionKey: string): string[] {
return drainSystemEventEntries(sessionKey).map((event) => event.text);
}
export function peekSystemEvents(sessionKey: string): string[] {
const key = requireSessionKey(sessionKey);
return queues.get(key)?.queue.map((e) => e.text) ?? [];