Files
klz-cables.com/.pnpm-store/v10/files/81/9a6b4c8e50109e3be5ce187088622c07776e0145577e94c38a7b1ede9f84367e756b7b6e449cb00739c40582e93b46867c473c021ad49c124ae8df20de87de
Marc Mintel 5397309103
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
fix(products): fix breadcrumbs and product filtering (backport from main)
2026-02-24 16:04:21 +01:00

74 lines
2.4 KiB
Plaintext

import { captureException } from '../../exports.js';
import { SPAN_STATUS_ERROR } from '../spanstatus.js';
import { GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ATTRIBUTE } from '../ai/gen-ai-attributes.js';
import { extractSystemInstructions, getTruncatedJsonString } from '../ai/utils.js';
import { ANTHROPIC_AI_INSTRUMENTED_METHODS } from './constants.js';
/**
* Check if a method path should be instrumented
*/
function shouldInstrument(methodPath) {
return ANTHROPIC_AI_INSTRUMENTED_METHODS.includes(methodPath );
}
/**
* Set the messages and messages original length attributes.
* Extracts system instructions before truncation.
*/
function setMessagesAttribute(span, messages) {
if (Array.isArray(messages) && messages.length === 0) {
return;
}
const { systemInstructions, filteredMessages } = extractSystemInstructions(messages);
if (systemInstructions) {
span.setAttributes({
[GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE]: systemInstructions,
});
}
const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 1;
span.setAttributes({
[GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: getTruncatedJsonString(filteredMessages),
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength,
});
}
/**
* Capture error information from the response
* @see https://docs.anthropic.com/en/api/errors#error-shapes
*/
function handleResponseError(span, response) {
if (response.error) {
span.setStatus({ code: SPAN_STATUS_ERROR, message: response.error.type || 'internal_error' });
captureException(response.error, {
mechanism: {
handled: false,
type: 'auto.ai.anthropic.anthropic_error',
},
});
}
}
/**
* Include the system prompt in the messages list, if available
*/
function messagesFromParams(params) {
const { system, messages, input } = params;
const systemMessages = typeof system === 'string' ? [{ role: 'system', content: params.system }] : [];
const inputParamMessages = Array.isArray(input) ? input : input != null ? [input] : undefined;
const messagesParamMessages = Array.isArray(messages) ? messages : messages != null ? [messages] : [];
const userMessages = inputParamMessages ?? messagesParamMessages;
return [...systemMessages, ...userMessages];
}
export { handleResponseError, messagesFromParams, setMessagesAttribute, shouldInstrument };
//# sourceMappingURL=utils.js.map