@tutti-os/agent-activity-core 0.0.3

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/merge.ts","../src/controller.ts","../src/selectors.ts"],"sourcesContent":["import type { AgentActivityMessage } from \"./types.ts\";\n\nexport function mergeAgentActivityMessages<\n T extends AgentActivityMessage = AgentActivityMessage\n>(currentMessages: readonly T[], incomingMessages: readonly T[]): T[] {\n if (incomingMessages.length === 0) {\n return [...currentMessages];\n }\n\n const byMessageId = new Map<string, T>();\n for (const message of currentMessages) {\n byMessageId.set(message.messageId, cloneAgentActivityMessage(message));\n }\n\n for (const incoming of incomingMessages) {\n const existing = byMessageId.get(incoming.messageId);\n if (!existing || shouldReplaceAgentActivityMessage(existing, incoming)) {\n byMessageId.set(\n incoming.messageId,\n existing\n ? mergeAgentActivityMessage(existing, incoming)\n : cloneAgentActivityMessage(incoming)\n );\n }\n }\n\n return [...byMessageId.values()].sort(compareAgentActivityMessages);\n}\n\nexport function compareAgentActivityMessages(\n left: AgentActivityMessage,\n right: AgentActivityMessage\n): number {\n return (\n left.version - right.version ||\n (left.id ?? 0) - (right.id ?? 0) ||\n left.messageId.localeCompare(right.messageId)\n );\n}\n\nexport function latestAgentActivityMessageVersion(\n messages: readonly AgentActivityMessage[]\n): number {\n return messages.reduce(\n (latestVersion, message) => Math.max(latestVersion, message.version),\n 0\n );\n}\n\nexport function areAgentActivityMessageArraysEqual(\n left: readonly AgentActivityMessage[],\n right: readonly AgentActivityMessage[]\n): boolean {\n if (left.length !== right.length) {\n return false;\n }\n for (let index = 0; index < left.length; index += 1) {\n if (!areAgentActivityMessagesEqual(left[index]!, right[index]!)) {\n return false;\n }\n }\n return true;\n}\n\nexport function areAgentActivityMessagesEqual(\n left: AgentActivityMessage,\n right: AgentActivityMessage\n): boolean {\n return (\n left.workspaceId === right.workspaceId &&\n left.agentSessionId === right.agentSessionId &&\n left.messageId === right.messageId &&\n Object.is(left.id, right.id) &&\n left.version === right.version &&\n Object.is(left.turnId, right.turnId) &&\n left.role === right.role &&\n left.kind === right.kind &&\n Object.is(left.status, right.status) &&\n Object.is(left.occurredAtUnixMs, right.occurredAtUnixMs) &&\n Object.is(left.startedAtUnixMs, right.startedAtUnixMs) &&\n Object.is(left.completedAtUnixMs, right.completedAtUnixMs) &&\n areJsonLikeValuesEqual(left.payload, right.payload)\n );\n}\n\nexport function cloneAgentActivityMessage<\n T extends AgentActivityMessage = AgentActivityMessage\n>(message: T): T {\n return {\n ...message,\n payload: { ...message.payload }\n };\n}\n\nfunction mergeAgentActivityMessage<T extends AgentActivityMessage>(\n existing: T,\n incoming: T\n): T {\n return {\n ...existing,\n ...incoming,\n payload: {\n ...existing.payload,\n ...incoming.payload\n }\n };\n}\n\nfunction shouldReplaceAgentActivityMessage(\n existing: AgentActivityMessage,\n incoming: AgentActivityMessage\n): boolean {\n if (incoming.version !== existing.version) {\n return incoming.version > existing.version;\n }\n return (incoming.id ?? 0) >= (existing.id ?? 0);\n}\n\nfunction areJsonLikeValuesEqual(left: unknown, right: unknown): boolean {\n if (Object.is(left, right)) {\n return true;\n }\n if (Array.isArray(left) || Array.isArray(right)) {\n if (!Array.isArray(left) || !Array.isArray(right)) {\n return false;\n }\n if (left.length !== right.length) {\n return false;\n }\n for (let index = 0; index < left.length; index += 1) {\n if (!areJsonLikeValuesEqual(left[index], right[index])) {\n return false;\n }\n }\n return true;\n }\n const leftRecord = recordValue(left);\n const rightRecord = recordValue(right);\n if (!leftRecord || !rightRecord) {\n return false;\n }\n const keys = new Set([\n ...Object.keys(leftRecord),\n ...Object.keys(rightRecord)\n ]);\n for (const key of keys) {\n if (!areJsonLikeValuesEqual(leftRecord[key], rightRecord[key])) {\n return false;\n }\n }\n return true;\n}\n\nfunction recordValue(value: unknown): Record<string, unknown> | null {\n return typeof value === \"object\" && value !== null\n ? (value as Record<string, unknown>)\n : null;\n}\n","import type { AgentActivityAdapter } from \"./adapter.ts\";\nimport {\n areAgentActivityMessageArraysEqual,\n cloneAgentActivityMessage,\n latestAgentActivityMessageVersion,\n mergeAgentActivityMessages\n} from \"./merge.ts\";\nimport type {\n AgentActivityComposerOptions,\n AgentActivityLoadComposerOptionsInput,\n AgentActivityMessage,\n AgentActivityMessageOrder,\n AgentActivityMessagePage,\n AgentActivityStatePatch,\n AgentActivitySession,\n AgentActivitySessionEventEnvelope,\n AgentActivitySnapshot,\n AgentActivityUpdatedApplyResult,\n AgentActivityUpdatedEvent\n} from \"./types.ts\";\n\nexport interface CreateAgentActivityControllerInput {\n adapter: AgentActivityAdapter;\n autoRetainSessionEvents?: boolean;\n workspaceId: string;\n}\n\nexport interface AgentActivityController {\n getSnapshot(): AgentActivitySnapshot;\n subscribe(listener: AgentActivitySnapshotListener): () => void;\n load(signal?: AbortSignal): Promise<AgentActivitySnapshot>;\n loadComposerOptions(\n input: Omit<AgentActivityLoadComposerOptionsInput, \"workspaceId\"> & {\n force?: boolean;\n }\n ): Promise<AgentActivityComposerOptions>;\n listSessionMessages(input: {\n agentSessionId: string;\n afterVersion?: number;\n beforeVersion?: number;\n limit?: number;\n order?: AgentActivityMessageOrder;\n signal?: AbortSignal;\n }): Promise<AgentActivityMessagePage>;\n retainSessionEvents(input: {\n agentSessionId: string;\n afterVersion?: number;\n onError?: (error: unknown) => void;\n }): () => void;\n removeSession(agentSessionId: string): void;\n upsertSession(session: AgentActivitySession): void;\n applyActivityUpdatedEvent(\n event: AgentActivityUpdatedEvent\n ): AgentActivityUpdatedApplyResult;\n applySessionEvent(event: AgentActivitySessionEventEnvelope): void;\n}\n\nexport type AgentActivitySnapshotListener = (\n snapshot: AgentActivitySnapshot\n) => void;\n\ninterface RetainedSessionStream {\n abortController: AbortController;\n refCount: number;\n unsubscribe: (() => void) | null;\n}\n\nexport function createAgentActivityController({\n adapter,\n autoRetainSessionEvents = true,\n workspaceId\n}: CreateAgentActivityControllerInput): AgentActivityController {\n const listeners = new Set<AgentActivitySnapshotListener>();\n const activeMessageSyncs = new Map<string, Promise<void>>();\n const activeComposerOptionsLoads = new Map<\n string,\n Promise<AgentActivityComposerOptions>\n >();\n const composerOptionsLoadVersions = new Map<string, number>();\n const autoRetainedStreamReleases = new Map<string, () => void>();\n const retainedStreams = new Map<string, RetainedSessionStream>();\n let snapshot: AgentActivitySnapshot =\n createEmptyAgentActivitySnapshot(workspaceId);\n\n const emit = (): void => {\n for (const listener of listeners) {\n listener(snapshot);\n }\n };\n\n const updateSnapshot = (\n updater: (current: AgentActivitySnapshot) => AgentActivitySnapshot\n ): AgentActivitySnapshot => {\n const nextSnapshot = updater(snapshot);\n if (nextSnapshot === snapshot) {\n return snapshot;\n }\n snapshot = cloneAgentActivitySnapshot(nextSnapshot);\n emit();\n return snapshot;\n };\n\n return {\n getSnapshot: () => snapshot,\n subscribe(listener) {\n listeners.add(listener);\n listener(snapshot);\n return () => {\n listeners.delete(listener);\n };\n },\n async load(signal) {\n const response = await adapter.listSessions({ workspaceId, signal });\n const nextSessions = response.sessions;\n const nextPresences = response.presences ?? [];\n const nextSnapshot = updateSnapshot((current) => {\n if (\n areShallowObjectArraysEqual(current.sessions, nextSessions) &&\n areShallowObjectArraysEqual(current.presences, nextPresences)\n ) {\n return current;\n }\n return {\n ...current,\n presences: nextPresences,\n sessions: nextSessions\n };\n });\n if (autoRetainSessionEvents) {\n reconcileAutoRetainedSessionStreams(nextSnapshot.sessions, signal);\n }\n return nextSnapshot;\n },\n async loadComposerOptions(input) {\n const provider = input.provider.trim();\n if (!provider) {\n throw new Error(\"Agent composer options provider is required.\");\n }\n if (!input.force) {\n const cached = snapshot.composerOptionsByProvider?.[provider];\n if (cached) {\n return cloneAgentActivityComposerOptions(cached);\n }\n }\n const existingLoad = activeComposerOptionsLoads.get(provider);\n if (existingLoad && !input.force) {\n return existingLoad.then(cloneAgentActivityComposerOptions);\n }\n const loadVersion = (composerOptionsLoadVersions.get(provider) ?? 0) + 1;\n composerOptionsLoadVersions.set(provider, loadVersion);\n const load = adapter\n .loadComposerOptions({\n workspaceId,\n provider,\n cwd: input.cwd,\n settings: input.settings,\n signal: input.signal\n })\n .then((options) => {\n const normalizedOptions = cloneAgentActivityComposerOptions({\n ...options,\n provider,\n loadedAtUnixMs: options.loadedAtUnixMs || Date.now()\n });\n if (composerOptionsLoadVersions.get(provider) !== loadVersion) {\n return cloneAgentActivityComposerOptions(normalizedOptions);\n }\n updateSnapshot((current) => {\n const currentOptions =\n current.composerOptionsByProvider?.[provider];\n if (\n currentOptions &&\n areComposerOptionsEqual(currentOptions, normalizedOptions)\n ) {\n return current;\n }\n return {\n ...current,\n composerOptionsByProvider: {\n ...current.composerOptionsByProvider,\n [provider]: normalizedOptions\n }\n };\n });\n return cloneAgentActivityComposerOptions(normalizedOptions);\n })\n .finally(() => {\n if (activeComposerOptionsLoads.get(provider) === load) {\n activeComposerOptionsLoads.delete(provider);\n }\n });\n activeComposerOptionsLoads.set(provider, load);\n return load.then(cloneAgentActivityComposerOptions);\n },\n async listSessionMessages({\n agentSessionId,\n afterVersion,\n beforeVersion,\n limit,\n order,\n signal\n }) {\n const response = await adapter.listSessionMessages({\n workspaceId,\n agentSessionId,\n afterVersion,\n beforeVersion,\n limit,\n order,\n signal\n });\n updateSnapshot((current) =>\n mergeSnapshotMessages(current, agentSessionId, response.messages)\n );\n return {\n ...response,\n messages: response.messages.map((message) => ({\n ...message,\n payload: { ...message.payload }\n }))\n };\n },\n retainSessionEvents: retainSessionEventsImpl,\n removeSession(agentSessionId) {\n updateSnapshot((current) =>\n removeSnapshotSession(current, agentSessionId)\n );\n },\n upsertSession(session) {\n if (session.workspaceId && session.workspaceId !== snapshot.workspaceId) {\n return;\n }\n updateSnapshot((current) => upsertSnapshotSession(current, session));\n },\n applyActivityUpdatedEvent(event) {\n const result = applyActivityUpdatedEvent(snapshot, event);\n if (result.snapshot !== snapshot) {\n snapshot = result.snapshot;\n emit();\n }\n return {\n applied: result.applied,\n messages: result.messages.map(cloneAgentActivityMessage),\n session: result.session ? { ...result.session } : null,\n statePatch: result.statePatch\n ? cloneAgentActivityStatePatch(result.statePatch)\n : null\n };\n },\n applySessionEvent(event) {\n updateSnapshot((current) => applySessionEvent(current, event));\n }\n };\n\n function retainSessionEventsImpl({\n agentSessionId,\n afterVersion,\n onRetainFailed,\n onError\n }: {\n agentSessionId: string;\n afterVersion?: number;\n onRetainFailed?: () => void;\n onError?: (error: unknown) => void;\n }): () => void {\n const normalizedAgentSessionId = agentSessionId.trim();\n if (!normalizedAgentSessionId) {\n return () => {};\n }\n\n const existing = retainedStreams.get(normalizedAgentSessionId);\n if (existing) {\n existing.refCount += 1;\n return createRetainedStreamRelease(normalizedAgentSessionId);\n }\n\n const abortController = new AbortController();\n const stream: RetainedSessionStream = {\n abortController,\n refCount: 1,\n unsubscribe: null\n };\n retainedStreams.set(normalizedAgentSessionId, stream);\n\n const cachedMessages =\n snapshot.sessionMessagesById[normalizedAgentSessionId] ?? [];\n const streamAfterVersion =\n afterVersion ?? latestAgentActivityMessageVersion(cachedMessages);\n\n void adapter\n .subscribeSessionEvents({\n workspaceId,\n agentSessionId: normalizedAgentSessionId,\n afterVersion: streamAfterVersion,\n signal: abortController.signal,\n onEvent(event) {\n if (!abortController.signal.aborted) {\n updateSnapshot((current) => applySessionEvent(current, event));\n }\n },\n onError\n })\n .then((unsubscribe) => {\n const retained = retainedStreams.get(normalizedAgentSessionId);\n if (!retained || retained.abortController.signal.aborted) {\n unsubscribe();\n return;\n }\n retained.unsubscribe = unsubscribe;\n })\n .catch((error: unknown) => {\n if (!abortController.signal.aborted) {\n onError?.(error);\n }\n if (retainedStreams.get(normalizedAgentSessionId) === stream) {\n retainedStreams.delete(normalizedAgentSessionId);\n }\n onRetainFailed?.();\n abortController.abort();\n stream.unsubscribe?.();\n });\n\n return createRetainedStreamRelease(normalizedAgentSessionId);\n }\n\n function reconcileAutoRetainedSessionStreams(\n sessions: readonly AgentActivitySession[],\n signal: AbortSignal | undefined\n ): void {\n const activeSessionIds = new Set(\n sessions\n .filter(shouldAutoRetainSessionEvents)\n .map((session) => session.agentSessionId.trim())\n .filter(Boolean)\n );\n\n for (const [agentSessionId, release] of autoRetainedStreamReleases) {\n if (!activeSessionIds.has(agentSessionId)) {\n release();\n autoRetainedStreamReleases.delete(agentSessionId);\n }\n }\n\n for (const agentSessionId of activeSessionIds) {\n if (!autoRetainedStreamReleases.has(agentSessionId)) {\n autoRetainedStreamReleases.set(\n agentSessionId,\n retainSessionEventsImpl({\n agentSessionId,\n onRetainFailed() {\n autoRetainedStreamReleases.delete(agentSessionId);\n }\n })\n );\n }\n syncSessionMessages(agentSessionId, signal);\n }\n }\n\n function syncSessionMessages(\n agentSessionId: string,\n signal: AbortSignal | undefined\n ): void {\n if (activeMessageSyncs.has(agentSessionId)) {\n return;\n }\n const cachedMessages = snapshot.sessionMessagesById[agentSessionId] ?? [];\n const afterVersion = latestAgentActivityMessageVersion(cachedMessages);\n const sync = adapter\n .listSessionMessages({\n workspaceId,\n agentSessionId,\n afterVersion,\n signal\n })\n .then((response) => {\n if (signal?.aborted) {\n return;\n }\n updateSnapshot((current) =>\n mergeSnapshotMessages(current, agentSessionId, response.messages)\n );\n })\n .catch(() => {})\n .finally(() => {\n if (activeMessageSyncs.get(agentSessionId) === sync) {\n activeMessageSyncs.delete(agentSessionId);\n }\n });\n activeMessageSyncs.set(agentSessionId, sync);\n }\n\n function createRetainedStreamRelease(agentSessionId: string): () => void {\n let released = false;\n return () => {\n if (released) {\n return;\n }\n released = true;\n releaseRetainedStream(agentSessionId);\n };\n }\n\n function releaseRetainedStream(agentSessionId: string): void {\n const stream = retainedStreams.get(agentSessionId);\n if (!stream) {\n return;\n }\n stream.refCount -= 1;\n if (stream.refCount > 0) {\n return;\n }\n retainedStreams.delete(agentSessionId);\n stream.abortController.abort();\n stream.unsubscribe?.();\n }\n}\n\nexport function createEmptyAgentActivitySnapshot(\n workspaceId: string\n): AgentActivitySnapshot {\n return {\n workspaceId,\n sessions: [],\n presences: [],\n sessionMessagesById: {},\n composerOptionsByProvider: {}\n };\n}\n\nexport function cloneAgentActivitySnapshot(\n snapshot: AgentActivitySnapshot\n): AgentActivitySnapshot {\n return {\n workspaceId: snapshot.workspaceId,\n sessions: snapshot.sessions.map((session) => ({ ...session })),\n presences: snapshot.presences.map((presence) => ({ ...presence })),\n composerOptionsByProvider: Object.fromEntries(\n Object.entries(snapshot.composerOptionsByProvider ?? {}).map(\n ([provider, options]) => [\n provider,\n cloneAgentActivityComposerOptions(options)\n ]\n )\n ),\n sessionMessagesById: Object.fromEntries(\n Object.entries(snapshot.sessionMessagesById).map(\n ([agentSessionId, messages]) => [\n agentSessionId,\n messages.map((message) => ({\n ...message,\n payload: { ...message.payload }\n }))\n ]\n )\n )\n };\n}\n\nfunction cloneAgentActivityComposerOptions(\n options: AgentActivityComposerOptions\n): AgentActivityComposerOptions {\n return {\n provider: options.provider,\n models: options.models.map((option) => ({ ...option })),\n reasoningEfforts: options.reasoningEfforts.map((option) => ({\n ...option\n })),\n permissionConfig: options.permissionConfig\n ? {\n configurable: options.permissionConfig.configurable,\n defaultValue: options.permissionConfig.defaultValue ?? null,\n modes: options.permissionConfig.modes.map((mode) => ({ ...mode }))\n }\n : (options.permissionConfig ?? null),\n runtimeContext: cloneJSONRecord(options.runtimeContext),\n skills: options.skills.map((skill) => ({ ...skill })),\n loadedAtUnixMs: options.loadedAtUnixMs\n };\n}\n\nfunction areComposerOptionsEqual(\n left: AgentActivityComposerOptions,\n right: AgentActivityComposerOptions\n): boolean {\n const { loadedAtUnixMs: _leftLoadedAtUnixMs, ...leftComparable } = left;\n const { loadedAtUnixMs: _rightLoadedAtUnixMs, ...rightComparable } = right;\n return JSON.stringify(leftComparable) === JSON.stringify(rightComparable);\n}\n\nfunction cloneJSONRecord<T extends Record<string, unknown> | undefined>(\n value: T\n): T {\n if (value === undefined) {\n return value;\n }\n return cloneJSONValue(value) as T;\n}\n\nfunction cloneJSONValue(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map(cloneJSONValue);\n }\n if (value !== null && typeof value === \"object\") {\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>).map(([key, entry]) => [\n key,\n cloneJSONValue(entry)\n ])\n );\n }\n return value;\n}\n\nfunction areShallowObjectArraysEqual<T extends object>(\n left: readonly T[],\n right: readonly T[]\n): boolean {\n if (left.length !== right.length) {\n return false;\n }\n for (let index = 0; index < left.length; index += 1) {\n if (!areShallowObjectsEqual(left[index]!, right[index]!)) {\n return false;\n }\n }\n return true;\n}\n\nfunction areShallowObjectsEqual(left: object, right: object): boolean {\n const leftRecord = left as Record<string, unknown>;\n const rightRecord = right as Record<string, unknown>;\n const keys = new Set([\n ...Object.keys(leftRecord),\n ...Object.keys(rightRecord)\n ]);\n for (const key of keys) {\n if (!Object.is(leftRecord[key], rightRecord[key])) {\n return false;\n }\n }\n return true;\n}\n\nfunction applyActivityUpdatedEvent(\n snapshot: AgentActivitySnapshot,\n event: AgentActivityUpdatedEvent\n): AgentActivityUpdatedApplyResult & { snapshot: AgentActivitySnapshot } {\n if (event.workspaceId && event.workspaceId !== snapshot.workspaceId) {\n return emptyActivityUpdatedApplyResult(snapshot);\n }\n\n const workspaceId = event.workspaceId || snapshot.workspaceId;\n const agentSessionId = event.agentSessionId.trim();\n if (!agentSessionId) {\n return emptyActivityUpdatedApplyResult(snapshot);\n }\n\n if (event.eventType === \"message_update\") {\n return applyActivityUpdatedMessages(snapshot, {\n agentSessionId,\n data: event.data,\n workspaceId\n });\n }\n\n if (event.eventType === \"state_patch\") {\n return applyActivityUpdatedStatePatch(snapshot, {\n agentSessionId,\n data: event.data,\n workspaceId\n });\n }\n\n return emptyActivityUpdatedApplyResult(snapshot);\n}\n\nfunction applyActivityUpdatedMessages(\n snapshot: AgentActivitySnapshot,\n input: {\n agentSessionId: string;\n data: unknown;\n workspaceId: string;\n }\n): AgentActivityUpdatedApplyResult & { snapshot: AgentActivitySnapshot } {\n const inlineMessages = inlineMessagesFromActivityUpdateData(input.data);\n if (inlineMessages.length === 0) {\n return emptyActivityUpdatedApplyResult(snapshot);\n }\n const sessionMessages = inlineMessages.filter((message) =>\n inlineMessageBelongsToSession(message, input.agentSessionId)\n );\n if (sessionMessages.length === 0) {\n return emptyActivityUpdatedApplyResult(snapshot);\n }\n const messages = sessionMessages.map((message) =>\n agentActivityMessageFromInlineMessage({\n agentSessionId: input.agentSessionId,\n message,\n workspaceId: input.workspaceId\n })\n );\n const nextSnapshot = mergeSnapshotMessages(\n snapshot,\n input.agentSessionId,\n messages\n );\n if (nextSnapshot === snapshot) {\n return {\n applied: true,\n messages: [],\n session: null,\n snapshot,\n statePatch: null\n };\n }\n return {\n applied: true,\n messages,\n session: null,\n snapshot: nextSnapshot,\n statePatch: null\n };\n}\n\nfunction applyActivityUpdatedStatePatch(\n snapshot: AgentActivitySnapshot,\n input: {\n agentSessionId: string;\n data: unknown;\n workspaceId: string;\n }\n): AgentActivityUpdatedApplyResult & { snapshot: AgentActivitySnapshot } {\n const statePatch = inlineStatePatchFromActivityUpdateData(input.data);\n if (!statePatch || statePatch.agentSessionId !== input.agentSessionId) {\n return emptyActivityUpdatedApplyResult(snapshot);\n }\n const existingSession =\n snapshot.sessions.find(\n (session) => session.agentSessionId === input.agentSessionId\n ) ?? null;\n if (!existingSession || isStaleStatePatch(existingSession, statePatch)) {\n return emptyActivityUpdatedApplyResult(snapshot);\n }\n const session = agentActivitySessionFromInlineStatePatch({\n existingSession,\n patch: statePatch,\n workspaceId: input.workspaceId\n });\n return {\n applied: true,\n messages: [],\n session,\n snapshot: upsertSnapshotSession(snapshot, session),\n statePatch\n };\n}\n\nfunction emptyActivityUpdatedApplyResult(\n snapshot: AgentActivitySnapshot\n): AgentActivityUpdatedApplyResult & { snapshot: AgentActivitySnapshot } {\n return {\n applied: false,\n messages: [],\n session: null,\n snapshot,\n statePatch: null\n };\n}\n\nfunction applySessionEvent(\n snapshot: AgentActivitySnapshot,\n event: AgentActivitySessionEventEnvelope\n): AgentActivitySnapshot {\n if (event.workspaceId && event.workspaceId !== snapshot.workspaceId) {\n return snapshot;\n }\n\n const data = recordValue(event.data) ?? {};\n if (event.eventType === \"message_update\") {\n const message = messageFromEvent(event, data);\n return message\n ? mergeSnapshotMessages(snapshot, message.agentSessionId, [message])\n : snapshot;\n }\n\n if (event.eventType === \"session_update\") {\n const session = sessionFromEvent(snapshot.workspaceId, event, data);\n return session ? upsertSnapshotSession(snapshot, session) : snapshot;\n }\n\n return snapshot;\n}\n\nfunction mergeSnapshotMessages(\n snapshot: AgentActivitySnapshot,\n agentSessionId: string,\n messages: readonly AgentActivityMessage[]\n): AgentActivitySnapshot {\n const normalizedAgentSessionId = agentSessionId.trim();\n if (!normalizedAgentSessionId || messages.length === 0) {\n return snapshot;\n }\n const currentMessages =\n snapshot.sessionMessagesById[normalizedAgentSessionId] ?? [];\n const mergedMessages = mergeAgentActivityMessages(currentMessages, messages);\n if (areAgentActivityMessageArraysEqual(currentMessages, mergedMessages)) {\n return snapshot;\n }\n return {\n ...snapshot,\n sessionMessagesById: {\n ...snapshot.sessionMessagesById,\n [normalizedAgentSessionId]: mergedMessages\n }\n };\n}\n\nfunction upsertSnapshotSession(\n snapshot: AgentActivitySnapshot,\n session: AgentActivitySession\n): AgentActivitySnapshot {\n const index = snapshot.sessions.findIndex(\n (item) => item.agentSessionId === session.agentSessionId\n );\n if (index < 0) {\n return {\n ...snapshot,\n sessions: [...snapshot.sessions, session]\n };\n }\n const sessions = [...snapshot.sessions];\n sessions[index] = session;\n return {\n ...snapshot,\n sessions\n };\n}\n\nfunction removeSnapshotSession(\n snapshot: AgentActivitySnapshot,\n agentSessionId: string\n): AgentActivitySnapshot {\n const normalizedAgentSessionId = agentSessionId.trim();\n if (!normalizedAgentSessionId) {\n return snapshot;\n }\n const sessions = snapshot.sessions.filter(\n (session) => session.agentSessionId !== normalizedAgentSessionId\n );\n if (\n sessions.length === snapshot.sessions.length &&\n !snapshot.sessionMessagesById[normalizedAgentSessionId]\n ) {\n return snapshot;\n }\n const sessionMessagesById = { ...snapshot.sessionMessagesById };\n delete sessionMessagesById[normalizedAgentSessionId];\n return {\n ...snapshot,\n sessions,\n sessionMessagesById\n };\n}\n\nfunction shouldAutoRetainSessionEvents(session: AgentActivitySession): boolean {\n if (!session.agentSessionId.trim()) {\n return false;\n }\n switch (session.status.trim()) {\n case \"canceled\":\n case \"completed\":\n case \"failed\":\n return false;\n default:\n return true;\n }\n}\n\nfunction messageFromEvent(\n event: AgentActivitySessionEventEnvelope,\n data: Record<string, unknown>\n): AgentActivityMessage | null {\n const source = recordValue(data.message) ?? data;\n const agentSessionId =\n stringValue(source.agentSessionId) || event.agentSessionId;\n const messageId = stringValue(source.messageId);\n const role = stringValue(source.role);\n const kind = stringValue(source.kind);\n if (!agentSessionId || !messageId || !role || !kind) {\n return null;\n }\n return {\n workspaceId: stringValue(source.workspaceId) || event.workspaceId,\n agentSessionId,\n messageId,\n id: numberValue(source.id),\n version: numberValue(source.version) ?? 0,\n turnId: nullableStringValue(source.turnId),\n role,\n kind,\n status: nullableStringValue(source.status),\n payload: recordValue(source.payload) ?? {},\n occurredAtUnixMs: numberValue(source.occurredAtUnixMs),\n startedAtUnixMs: numberValue(source.startedAtUnixMs),\n completedAtUnixMs: numberValue(source.completedAtUnixMs)\n };\n}\n\nfunction sessionFromEvent(\n workspaceId: string,\n event: AgentActivitySessionEventEnvelope,\n data: Record<string, unknown>\n): AgentActivitySession | null {\n const source = recordValue(data.session) ?? data;\n const agentSessionId =\n stringValue(source.agentSessionId) || event.agentSessionId;\n if (!agentSessionId) {\n return null;\n }\n return {\n workspaceId: stringValue(source.workspaceId) || workspaceId,\n agentSessionId,\n provider: stringValue(source.provider),\n providerSessionId: nullableStringValue(source.providerSessionId),\n model: nullableStringValue(source.model),\n cwd: stringValue(source.cwd),\n title: stringValue(source.title),\n status: stringValue(source.status) || \"unknown\",\n resumable: booleanValue(source.resumable),\n currentPhase: nullableStringValue(source.currentPhase),\n lastError: nullableStringValue(source.lastError),\n messageVersion: numberValue(source.messageVersion),\n lastEventUnixMs: numberValue(source.lastEventUnixMs),\n startedAtUnixMs: numberValue(source.startedAtUnixMs),\n endedAtUnixMs: numberValue(source.endedAtUnixMs),\n createdAtUnixMs: numberValue(source.createdAtUnixMs),\n updatedAtUnixMs: numberValue(source.updatedAtUnixMs)\n };\n}\n\nfunction inlineMessagesFromActivityUpdateData(\n data: unknown\n): Record<string, unknown>[] {\n const source = recordValue(data);\n const messages = Array.isArray(source?.messages) ? source.messages : [];\n return messages.flatMap((message) => {\n const record = recordValue(message);\n return record ? [record] : [];\n });\n}\n\nfunction inlineMessageBelongsToSession(\n message: Record<string, unknown>,\n agentSessionId: string\n): boolean {\n const messageAgentSessionId = stringValue(message.agentSessionId);\n return !messageAgentSessionId || messageAgentSessionId === agentSessionId;\n}\n\nfunction agentActivityMessageFromInlineMessage(input: {\n agentSessionId: string;\n message: Record<string, unknown>;\n workspaceId: string;\n}): AgentActivityMessage {\n return {\n workspaceId: stringValue(input.message.workspaceId) || input.workspaceId,\n agentSessionId:\n stringValue(input.message.agentSessionId) || input.agentSessionId,\n messageId: stringValue(input.message.messageId),\n id: numberValue(input.message.id),\n version: numberValue(input.message.version) ?? 0,\n turnId: nullableStringValue(input.message.turnId),\n role: stringValue(input.message.role),\n kind: stringValue(input.message.kind),\n status: nullableStringValue(input.message.status),\n payload: recordValue(input.message.payload) ?? {},\n occurredAtUnixMs: numberValue(input.message.occurredAtUnixMs),\n startedAtUnixMs: numberValue(input.message.startedAtUnixMs),\n completedAtUnixMs: numberValue(input.message.completedAtUnixMs)\n };\n}\n\nfunction inlineStatePatchFromActivityUpdateData(\n data: unknown\n): AgentActivityStatePatch | null {\n const source = recordValue(data);\n const agentSessionId = stringValue(source?.agentSessionId);\n if (!source || !agentSessionId) {\n return null;\n }\n const turn = recordValue(source.turn);\n return {\n agentSessionId,\n currentPhase: stringValue(source.currentPhase) || undefined,\n cwd: stringValue(source.cwd) || undefined,\n lastError: stringValue(source.lastError) || undefined,\n lastEventUnixMs: numberValue(source.lastEventUnixMs),\n lifecycleStatus: stringValue(source.lifecycleStatus) || undefined,\n model: stringValue(source.model) || undefined,\n occurredAtUnixMs: numberValue(source.occurredAtUnixMs),\n provider: stringValue(source.provider) || undefined,\n providerSessionId: stringValue(source.providerSessionId) || undefined,\n startedAtUnixMs: numberValue(source.startedAtUnixMs),\n endedAtUnixMs: numberValue(source.endedAtUnixMs),\n title: stringValue(source.title) || undefined,\n turn: turn\n ? {\n completedAtUnixMs: numberValue(turn.completedAtUnixMs),\n fileChanges: turn.fileChanges,\n outcome: stringValue(turn.outcome) || undefined,\n phase: stringValue(turn.phase) || undefined,\n startedAtUnixMs: numberValue(turn.startedAtUnixMs),\n turnId: stringValue(turn.turnId)\n }\n : undefined,\n workspaceId: stringValue(source.workspaceId) || undefined\n };\n}\n\nfunction isStaleStatePatch(\n session: AgentActivitySession,\n patch: AgentActivityStatePatch\n): boolean {\n const nextTime = patch.lastEventUnixMs ?? patch.occurredAtUnixMs;\n const currentTime = session.lastEventUnixMs ?? session.updatedAtUnixMs;\n return (\n typeof nextTime === \"number\" &&\n typeof currentTime === \"number\" &&\n nextTime < currentTime\n );\n}\n\nfunction agentActivitySessionFromInlineStatePatch(input: {\n existingSession: AgentActivitySession;\n patch: AgentActivityStatePatch;\n workspaceId: string;\n}): AgentActivitySession {\n return {\n ...input.existingSession,\n workspaceId: input.patch.workspaceId ?? input.workspaceId,\n agentSessionId: input.patch.agentSessionId,\n provider: input.patch.provider ?? input.existingSession.provider,\n providerSessionId:\n input.patch.providerSessionId ?? input.existingSession.providerSessionId,\n model: input.patch.model ?? input.existingSession.model,\n cwd: input.patch.cwd ?? input.existingSession.cwd,\n title: input.patch.title ?? input.existingSession.title,\n status: input.patch.lifecycleStatus ?? input.existingSession.status,\n currentPhase:\n input.patch.currentPhase ??\n input.patch.turn?.phase ??\n input.existingSession.currentPhase,\n lastError: input.patch.lastError ?? input.existingSession.lastError,\n lastEventUnixMs:\n input.patch.lastEventUnixMs ??\n input.patch.occurredAtUnixMs ??\n input.existingSession.lastEventUnixMs,\n startedAtUnixMs:\n input.patch.startedAtUnixMs ?? input.existingSession.startedAtUnixMs,\n endedAtUnixMs:\n input.patch.endedAtUnixMs ?? input.existingSession.endedAtUnixMs,\n updatedAtUnixMs:\n input.patch.occurredAtUnixMs ??\n input.patch.lastEventUnixMs ??\n input.existingSession.updatedAtUnixMs\n };\n}\n\nfunction cloneAgentActivityStatePatch(\n statePatch: AgentActivityStatePatch\n): AgentActivityStatePatch {\n return {\n ...statePatch,\n turn: statePatch.turn ? { ...statePatch.turn } : undefined\n };\n}\n\nfunction recordValue(value: unknown): Record<string, unknown> | null {\n return typeof value === \"object\" && value !== null\n ? (value as Record<string, unknown>)\n : null;\n}\n\nfunction stringValue(value: unknown): string {\n return typeof value === \"string\" ? value.trim() : \"\";\n}\n\nfunction nullableStringValue(value: unknown): string | null | undefined {\n return typeof value === \"string\" ? value : value === null ? null : undefined;\n}\n\nfunction numberValue(value: unknown): number | undefined {\n return typeof value === \"number\" && Number.isFinite(value)\n ? value\n : undefined;\n}\n\nfunction booleanValue(value: unknown): boolean | undefined {\n return typeof value === \"boolean\" ? value : undefined;\n}\n","import type {\n AgentActivityDisplayStatus,\n AgentActivityComposerOptions,\n AgentActivityMessage,\n AgentActivityNeedsAttentionItem,\n AgentActivityNeedsAttentionKind,\n AgentActivitySession,\n AgentActivitySnapshot\n} from \"./types.ts\";\n\nconst terminalMessageStatuses = new Set([\n \"completed\",\n \"canceled\",\n \"failed\",\n \"rejected\",\n \"answered\",\n \"resolved\"\n]);\n\nexport interface AgentActivityPromptImagesSupportInput {\n composerOptions?: AgentActivityComposerOptions | null;\n sessionRuntimeContext?: Record<string, unknown> | null;\n}\n\nexport function resolveAgentActivityPromptImagesSupported(\n input: AgentActivityPromptImagesSupportInput\n): boolean | null {\n return (\n promptImagesSupportedFromRuntimeContext(input.sessionRuntimeContext) ??\n promptImagesSupportedFromRuntimeContext(\n input.composerOptions?.runtimeContext\n )\n );\n}\n\nexport function selectNeedsAttentionCount(\n snapshot: AgentActivitySnapshot\n): number {\n return selectNeedsAttentionItems(snapshot).length;\n}\n\nexport function selectSessionDisplayStatuses(\n snapshot: AgentActivitySnapshot\n): Map<string, AgentActivityDisplayStatus> {\n const needsAttentionSessionIds = new Set(\n selectNeedsAttentionItems(snapshot).map((item) => item.agentSessionId)\n );\n return new Map(\n snapshot.sessions.map((session) => [\n session.agentSessionId,\n normalizeAgentActivityDisplayStatus(session.status, {\n currentPhase: session.currentPhase,\n needsAttention: needsAttentionSessionIds.has(session.agentSessionId)\n })\n ])\n );\n}\n\nexport function normalizeAgentActivityDisplayStatus(\n status: string | null | undefined,\n options: {\n currentPhase?: string | null;\n needsAttention?: boolean;\n } = {}\n): AgentActivityDisplayStatus {\n if (options.needsAttention) {\n return \"waiting\";\n }\n const normalizedStatus = normalizeStatus(status);\n const normalizedCurrentPhase = normalizeStatus(options.currentPhase);\n switch (normalizedStatus) {\n case \"completed\":\n case \"done\":\n case \"success\":\n case \"succeeded\":\n return \"completed\";\n case \"canceled\":\n case \"cancelled\":\n return \"canceled\";\n case \"error\":\n case \"failed\":\n return \"failed\";\n default:\n break;\n }\n switch (normalizedCurrentPhase) {\n case \"completed\":\n case \"done\":\n case \"success\":\n case \"succeeded\":\n return \"completed\";\n case \"canceled\":\n case \"cancelled\":\n return \"canceled\";\n case \"error\":\n case \"failed\":\n return \"failed\";\n case \"awaiting_approval\":\n case \"waiting\":\n case \"waiting_approval\":\n case \"waiting_input\":\n return \"waiting\";\n case \"running\":\n case \"streaming\":\n case \"working\":\n return \"working\";\n default:\n break;\n }\n switch (normalizedStatus) {\n case \"running\":\n case \"streaming\":\n case \"working\":\n return \"working\";\n case \"awaiting_approval\":\n case \"waiting\":\n case \"waiting_approval\":\n case \"waiting_input\":\n return \"waiting\";\n case \"idle\":\n case \"ready\":\n default:\n return \"idle\";\n }\n}\n\nexport function selectNeedsAttentionItems(\n snapshot: AgentActivitySnapshot\n): AgentActivityNeedsAttentionItem[] {\n const sessionsById = new Map(\n snapshot.sessions.map((session) => [session.agentSessionId, session])\n );\n const items: AgentActivityNeedsAttentionItem[] = [];\n\n for (const [agentSessionId, messages] of Object.entries(\n snapshot.sessionMessagesById\n )) {\n const session = sessionsById.get(agentSessionId);\n for (const message of messages) {\n const kind = needsAttentionKindForMessage(message);\n if (!kind) {\n continue;\n }\n items.push(\n needsAttentionItemFromMessage(snapshot, message, kind, session)\n );\n }\n }\n\n return items.sort(\n (left, right) =>\n right.occurredAtUnixMs - left.occurredAtUnixMs ||\n left.id.localeCompare(right.id)\n );\n}\n\nfunction needsAttentionKindForMessage(\n message: AgentActivityMessage\n): AgentActivityNeedsAttentionKind | null {\n if (isTerminalMessageStatus(message.status)) {\n return null;\n }\n\n const kind = normalizeKind(message.kind);\n const payloadType = normalizeMetadataValue(message.payload.type);\n const action = normalizeMetadataValue(message.payload.action);\n const requestType = normalizeMetadataValue(message.payload.requestType);\n const callType = normalizeMetadataValue(message.payload.callType);\n const toolName = normalizeMetadataValue(message.payload.toolName);\n const name = normalizeMetadataValue(message.payload.name);\n const status = normalizeStatus(message.status);\n const payloadStatus = normalizeMetadataValue(message.payload.status);\n\n if (\n includesAny(\n [\n kind,\n payloadType,\n requestType,\n callType,\n toolName,\n name,\n status,\n payloadStatus\n ].join(\" \"),\n [\"permission\", \"approval\"]\n )\n ) {\n return \"permission\";\n }\n\n if (\n includesAny(\n [\n kind,\n payloadType,\n action,\n callType,\n toolName,\n name,\n status,\n payloadStatus\n ].join(\" \"),\n [\"ask_user\", \"ask-user\", \"askuserquestion\", \"question\"]\n )\n ) {\n return \"question\";\n }\n\n if (\n includesAny([kind, payloadType, action, toolName, name].join(\" \"), [\n \"constraint\"\n ])\n ) {\n return \"constraint\";\n }\n\n if (\n isWaitingStatus(status, payloadStatus) &&\n (message.role === \"assistant\" || message.role === \"system\")\n ) {\n return \"other\";\n }\n\n return null;\n}\n\nfunction needsAttentionItemFromMessage(\n snapshot: AgentActivitySnapshot,\n message: AgentActivityMessage,\n kind: AgentActivityNeedsAttentionKind,\n session: AgentActivitySession | undefined\n): AgentActivityNeedsAttentionItem {\n return {\n id: `${message.agentSessionId}:${message.messageId}`,\n workspaceId: message.workspaceId || snapshot.workspaceId,\n agentSessionId: message.agentSessionId,\n provider: session?.provider ?? \"\",\n title: session?.title ?? \"\",\n cwd: session?.cwd ?? \"\",\n kind,\n summary: messageSummary(message),\n occurredAtUnixMs:\n message.occurredAtUnixMs ??\n message.startedAtUnixMs ??\n message.completedAtUnixMs ??\n session?.updatedAtUnixMs ??\n session?.lastEventUnixMs ??\n 0\n };\n}\n\nfunction messageSummary(message: AgentActivityMessage): string {\n return (\n stringValue(message.payload.summary) ||\n stringValue(message.payload.title) ||\n stringValue(message.payload.content) ||\n stringValue(message.payload.text) ||\n message.kind\n );\n}\n\nfunction isTerminalMessageStatus(status: string | null | undefined): boolean {\n return terminalMessageStatuses.has(normalizeStatus(status));\n}\n\nfunction normalizeStatus(status: string | null | undefined): string {\n return status?.trim().toLowerCase() ?? \"\";\n}\n\nfunction isWaitingStatus(...values: readonly string[]): boolean {\n return values.some((value) => {\n const normalized = value.trim().toLowerCase();\n return normalized === \"waiting\" || normalized.startsWith(\"waiting_\");\n });\n}\n\nfunction normalizeKind(kind: string): string {\n return kind.trim().toLowerCase();\n}\n\nfunction normalizeMetadataValue(value: unknown): string {\n return stringValue(value).toLowerCase();\n}\n\nfunction includesAny(value: string, needles: readonly string[]): boolean {\n return needles.some((needle) => value.includes(needle));\n}\n\nfunction stringValue(value: unknown): string {\n return typeof value === \"string\" ? value.trim() : \"\";\n}\n\nfunction promptImagesSupportedFromRuntimeContext(\n runtimeContext: Record<string, unknown> | null | undefined\n): boolean | null {\n const promptCapabilities = recordValue(runtimeContext?.promptCapabilities);\n const value = promptCapabilities?.image;\n if (typeof value === \"boolean\") {\n return value;\n }\n if (typeof value === \"string\") {\n const normalized = value.trim().toLowerCase();\n if (normalized === \"true\") {\n return true;\n }\n if (normalized === \"false\") {\n return false;\n }\n }\n return null;\n}\n\nfunction recordValue(value: unknown): Record<string, unknown> | null {\n return value !== null && typeof value === \"object\" && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : null;\n}\n"],"mappings":"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","names":["session","recordValue","stringValue","recordValue"]}
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "@tutti-os/agent-activity-core",
3
+ "version": "0.0.3",
4
+ "private": false,
5
+ "type": "module",
6
+ "types": "./dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.js"
11
+ }
12
+ },
13
+ "files": [
14
+ "dist",
15
+ "README.md"
16
+ ],
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "git+https://github.com/tutti-os/tutti.git",
20
+ "directory": "packages/agent/activity-core"
21
+ },
22
+ "devDependencies": {
23
+ "@types/node": "^24.0.1",
24
+ "tsup": "8.5.1",
25
+ "typescript": "^5.8.3",
26
+ "@tutti-os/config-tsconfig": "0.0.0"
27
+ },
28
+ "publishConfig": {
29
+ "access": "public"
30
+ },
31
+ "scripts": {
32
+ "build": "tsup --config tsup.config.ts",
33
+ "test": "node --test --experimental-strip-types ./src/**/*.test.ts",
34
+ "typecheck": "tsc --noEmit -p tsconfig.json"
35
+ }
36
+ }