@juspay/neurolink
Version:
Universal AI Development Platform with working MCP integration, multi-provider support, and professional CLI. Built-in tools operational, 58+ external MCP servers discoverable. Connect to filesystem, GitHub, database operations, and more. Build, test, and
137 lines (136 loc) • 4.72 kB
TypeScript
/**
* SageMaker Streaming Response Parsers
*
* This module provides protocol-specific parsers for different streaming
* formats used by SageMaker endpoints (HuggingFace, LLaMA, custom models).
*/
import type { SageMakerStreamChunk, SageMakerUsage, SageMakerStructuredOutput } from "./types.js";
import { type StructuredOutputParser } from "./structured-parser.js";
/**
* Shared bracket counting state and utilities
* Used by both validateJSONCompleteness and StructuredOutputParser
*/
export interface BracketCountingState {
braceCount: number;
bracketCount: number;
inString: boolean;
escapeNext: boolean;
}
/**
* Process a single character for bracket counting logic
* Shared utility to avoid code duplication between parsers
*/
export declare function processBracketCharacter(char: string, state: BracketCountingState): {
isValid: boolean;
reason?: string;
};
/**
* Utility function to validate JSON completeness using efficient bracket counting
* Extracted from parseArgumentsForToolCall for reusability
*/
export declare function validateJSONCompleteness(jsonString: string): {
isComplete: boolean;
reason?: string;
};
/**
* Utility function to parse tool call arguments with robust validation
* Extracted from parseArgumentsForToolCall for reusability
*/
export declare function parseToolCallArguments(args: string): {
arguments?: string;
complete?: boolean;
argumentsDelta?: string;
};
/**
* Base interface for streaming response parsers
*/
export interface StreamingParser {
/** Parse a chunk of streaming data */
parse(chunk: Uint8Array): SageMakerStreamChunk[];
/** Check if a chunk indicates completion */
isComplete(chunk: SageMakerStreamChunk): boolean;
/** Extract final usage information */
extractUsage(finalChunk: SageMakerStreamChunk): SageMakerUsage | undefined;
/** Get parser name for debugging */
getName(): string;
/** Reset parser state for new stream */
reset(): void;
}
/**
* Abstract base parser with common functionality
*/
declare abstract class BaseStreamingParser implements StreamingParser {
protected buffer: string;
protected isCompleted: boolean;
protected totalUsage?: SageMakerUsage;
protected structuredParser?: StructuredOutputParser;
protected responseSchema?: Record<string, unknown>;
abstract parse(chunk: Uint8Array): SageMakerStreamChunk[];
abstract getName(): string;
isComplete(chunk: SageMakerStreamChunk): boolean;
extractUsage(finalChunk: SageMakerStreamChunk): SageMakerUsage | undefined;
reset(): void;
/**
* Enable structured output parsing with optional schema
*/
enableStructuredOutput(schema?: Record<string, unknown>): void;
/**
* Parse structured content if enabled
*/
protected parseStructuredContent(content: string): SageMakerStructuredOutput | undefined;
protected decodeChunk(chunk: Uint8Array): string;
protected parseJSON(text: string): unknown;
}
/**
* HuggingFace Transformers streaming parser (Server-Sent Events)
*/
export declare class HuggingFaceStreamParser extends BaseStreamingParser {
getName(): string;
parse(chunk: Uint8Array): SageMakerStreamChunk[];
private parseHuggingFaceChunk;
private parseHuggingFaceUsage;
private mapFinishReason;
}
/**
* LLaMA/OpenAI-compatible streaming parser (JSON Lines)
*/
export declare class LlamaStreamParser extends BaseStreamingParser {
getName(): string;
parse(chunk: Uint8Array): SageMakerStreamChunk[];
private parseLlamaChunk;
/**
* Parse tool call arguments with robust validation and error handling
*/
private parseToolCallArguments;
/**
* Parse streaming tool call from OpenAI-compatible format (Phase 2.3)
*/
private parseStreamingToolCall;
private parseLlamaUsage;
private mapFinishReason;
}
/**
* Custom/Generic streaming parser (Chunked Transfer)
*/
export declare class CustomStreamParser extends BaseStreamingParser {
private expectedFormat;
constructor(format?: "json" | "text");
getName(): string;
parse(chunk: Uint8Array): SageMakerStreamChunk[];
private parseJSONFormat;
private parseTextFormat;
private parseCustomChunk;
private parseCustomUsage;
}
/**
* Parser factory to create appropriate parser for detected protocol
*/
export declare class StreamingParserFactory {
static createParser(protocol: string, options?: Record<string, unknown>): StreamingParser;
static getSupportedProtocols(): string[];
}
/**
* Utility function to estimate token usage when not provided
*/
export declare function estimateTokenUsage(prompt: string, completion: string): SageMakerUsage;
export {};