MCPcopy Create free account
hub / github.com/apache/maka / decodeStoredMessage

Function decodeStoredMessage

packages/core/src/session.ts:961–1082  ·  view source on GitHub ↗
(value: unknown)

Source from the content-addressed store, hash-verified

959]);
960
961export function decodeStoredMessage(value: unknown): StoredMessage {
962 const message = decodeStoredMessageContent(value, decodeCanonicalToolResultContent);
963 if (!isRecord(message)) throw new Error('Invalid stored message schema');
964 switch (message.type) {
965 case 'user':
966 if (
967 hasExactShape(message, USER_MESSAGE_SHAPE) &&
968 hasMessageEnvelope(message, true) &&
969 (message.origin === undefined || decodeTurnOrigin(message.origin) !== undefined)
970 ) {
971 const { displayText, attachments, quotes, inlineReferences, origin, ...envelope } = message;
972 const decodedOrigin = origin === undefined ? undefined : decodeTurnOrigin(origin);
973 try {
974 return {
975 ...envelope,
976 ...decodeMessageContent({
977 text: message.text,
978 displayText,
979 attachments,
980 quotes,
981 inlineReferences,
982 }),
983 ...(decodedOrigin !== undefined ? { origin: decodedOrigin } : {}),
984 } as unknown as UserMessage;
985 } catch {
986 break;
987 }
988 }
989 break;
990 case 'assistant':
991 if (
992 hasExactShape(message, ASSISTANT_MESSAGE_SHAPE) &&
993 hasMessageEnvelope(message, true) &&
994 typeof message.text === 'string' &&
995 typeof message.modelId === 'string' &&
996 (message.providerOptions === undefined || isRecord(message.providerOptions)) &&
997 (message.thinking === undefined || isAssistantThinking(message.thinking)) &&
998 (message.contentOrder === undefined ||
999 (Array.isArray(message.contentOrder) &&
1000 message.contentOrder.every(
1001 (item) => item === 'thinking' || item === 'text' || item === 'tools',
1002 )))
1003 )
1004 return message as unknown as AssistantMessage;
1005 break;
1006 case 'tool_call':
1007 if (
1008 hasExactShape(message, TOOL_CALL_MESSAGE_SHAPE) &&
1009 hasMessageEnvelope(message, true) &&
1010 typeof message.toolName === 'string' &&
1011 Object.hasOwn(message, 'args') &&
1012 (message.activityKind === undefined ||
1013 (TOOL_ACTIVITY_KINDS as readonly unknown[]).includes(message.activityKind)) &&
1014 isOptionalString(message.displayName) &&
1015 isOptionalString(message.intent) &&
1016 (message.providerOptions === undefined || isRecord(message.providerOptions)) &&
1017 (message.providerExecuted === undefined || typeof message.providerExecuted === 'boolean') &&
1018 isOptionalString(message.stepId) &&

Callers 13

createImportedSessionMethod · 0.90
importSessionMethod · 0.90
appendMessagesMethod · 0.90
readTurnLandmarksMethod · 0.90
decodeStoredMessageRowFunction · 0.90
validateTranscriptRecordFunction · 0.90
#acceptFragmentMethod · 0.90

Calls 15

isRecordFunction · 0.90
hasExactShapeFunction · 0.85
hasMessageEnvelopeFunction · 0.85
decodeTurnOriginFunction · 0.85
isAssistantThinkingFunction · 0.85
isToolActivityIdentityFunction · 0.85
isOptionalFiniteDurationFunction · 0.85
isTokenUsageFieldsFunction · 0.85
isTurnStatusFunction · 0.85
decodeMessageContentFunction · 0.70

Tested by

no test coverage detected