| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- /**
- * Shared utilities for tracking SDK helper usage.
- */
- /**
- * Symbol used to mark objects created by SDK helpers for tracking.
- * The value is the helper name (e.g., 'mcpTool', 'betaZodTool').
- */
- export const SDK_HELPER_SYMBOL = Symbol('anthropic.sdk.stainlessHelper');
- export function wasCreatedByStainlessHelper(value) {
- return typeof value === 'object' && value !== null && SDK_HELPER_SYMBOL in value;
- }
- /**
- * Collects helper names from tools and messages arrays.
- * Returns a deduplicated array of helper names found.
- */
- export function collectStainlessHelpers(tools, messages) {
- const helpers = new Set();
- // Collect from tools
- if (tools) {
- for (const tool of tools) {
- if (wasCreatedByStainlessHelper(tool)) {
- helpers.add(tool[SDK_HELPER_SYMBOL]);
- }
- }
- }
- // Collect from messages and their content blocks
- if (messages) {
- for (const message of messages) {
- if (wasCreatedByStainlessHelper(message)) {
- helpers.add(message[SDK_HELPER_SYMBOL]);
- }
- if (Array.isArray(message.content)) {
- for (const block of message.content) {
- if (wasCreatedByStainlessHelper(block)) {
- helpers.add(block[SDK_HELPER_SYMBOL]);
- }
- }
- }
- }
- }
- return Array.from(helpers);
- }
- /**
- * Builds x-stainless-helper header value from tools and messages.
- * Returns an empty object if no helpers are found.
- */
- export function stainlessHelperHeader(tools, messages) {
- const helpers = collectStainlessHelpers(tools, messages);
- if (helpers.length === 0)
- return {};
- return { 'x-stainless-helper': helpers.join(', ') };
- }
- /**
- * Builds x-stainless-helper header value from a file object.
- * Returns an empty object if the file is not marked with a helper.
- */
- export function stainlessHelperHeaderFromFile(file) {
- if (wasCreatedByStainlessHelper(file)) {
- return { 'x-stainless-helper': file[SDK_HELPER_SYMBOL] };
- }
- return {};
- }
- //# sourceMappingURL=stainless-helper-header.mjs.map
|