{"version":3,"sources":["../interpreter/streaming/jsonpath.ts","../interpreter/streaming/adapters/base.ts","../interpreter/streaming/adapters/ndjson.ts"],"names":["extractPath","obj","path","options","undefined","returnUndefined","parts","parsePath","current","i","length","part","type","Array","isArray","remainingParts","slice","remainingPath","partsToPath","map","item","key","arr","index","extractWithFallback","pathOrPaths","paths","value","segments","split","segment","endsWith","push","arrayMatch","match","indexStr","parseInt","join","BaseStreamAdapter","config","buffer","flush","trim","remaining","processRemainingBuffer","reset","matchSchema","defaultSchema","schema","schemas","schemaMatches","expectedValue","Object","entries","actualValue","getNestedValue","matchPath","matchValue","extractData","result","field","NDJSONAdapter","name","format","processChunk","chunk","events","lines","pop","line","trimmed","event","parseLine","parsed","JSON","parse","kind","data","raw","timestamp","Date","now","extract","templates","createNDJSONAdapter","COMMON_SCHEMAS","claudeCodeThinking","text","depth","visibility","claudeCodeMessage","role","claudeCodeToolUse","input","id","claudeCodeToolResult","toolUseId","success","isError","claudeCodeError","message","code","claudeCodeUsage","inputTokens","outputTokens","model","contentBlockDelta","messageDelta","stopReason","streamEventTextDelta","streamEventMessageDelta"],"mappings":"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","file":"chunk-YRFPMAAJ.mjs","sourcesContent":["/**\n * JSONPath Extraction Utilities\n *\n * Simple JSONPath-like extraction for streaming adapter data.\n *\n * Supported syntax:\n * - Dot notation: `a.b.c`\n * - Array indexing: `items[0]`, `items[1].name`\n * - Array iteration: `items[].name` (collects from all items)\n * - Fallback paths: `[\"primary\", \"fallback\"]` (tries each in order)\n */\n\nexport type JSONPathExpression = string | string[];\n\nexport interface JSONPathOptions {\n  returnUndefined?: boolean;\n  collectArrays?: boolean;\n}\n\n/**\n * Extract a value from an object using a JSONPath-like expression.\n */\nexport function extractPath(\n  obj: unknown,\n  path: string,\n  options?: JSONPathOptions\n): unknown {\n  if (obj === null || obj === undefined) {\n    return options?.returnUndefined ? undefined : null;\n  }\n\n  const parts = parsePath(path);\n  let current: unknown = obj;\n\n  for (let i = 0; i < parts.length; i++) {\n    const part = parts[i];\n\n    if (current === null || current === undefined) {\n      return options?.returnUndefined ? undefined : null;\n    }\n\n    // Array iteration: content[] means iterate and collect\n    if (part.type === 'array-iterate') {\n      if (!Array.isArray(current)) {\n        return options?.returnUndefined ? undefined : null;\n      }\n\n      // If there are remaining path parts, collect from each item\n      const remainingParts = parts.slice(i + 1);\n      if (remainingParts.length > 0) {\n        const remainingPath = partsToPath(remainingParts);\n        return current.map(item => extractPath(item, remainingPath, options));\n      }\n\n      return current;\n    }\n\n    // Array index: content[0]\n    if (part.type === 'array-index') {\n      if (!Array.isArray((current as Record<string, unknown>)[part.key])) {\n        return options?.returnUndefined ? undefined : null;\n      }\n      const arr = (current as Record<string, unknown>)[part.key] as unknown[];\n      current = arr[part.index!];\n      continue;\n    }\n\n    // Object key: content.text\n    if (part.type === 'key') {\n      if (typeof current !== 'object') {\n        return options?.returnUndefined ? undefined : null;\n      }\n      current = (current as Record<string, unknown>)[part.key];\n      continue;\n    }\n  }\n\n  // Return null for undefined values unless returnUndefined is set\n  if (current === undefined) {\n    return options?.returnUndefined ? undefined : null;\n  }\n\n  return current;\n}\n\n/**\n * Extract a value using fallback paths.\n * Tries each path in order, returning the first non-undefined value.\n */\nexport function extractWithFallback(\n  obj: unknown,\n  pathOrPaths: JSONPathExpression,\n  options?: JSONPathOptions\n): unknown {\n  const paths = Array.isArray(pathOrPaths) ? pathOrPaths : [pathOrPaths];\n\n  for (const path of paths) {\n    const value = extractPath(obj, path, { returnUndefined: true });\n    if (value !== undefined) {\n      return value;\n    }\n  }\n\n  return options?.returnUndefined ? undefined : null;\n}\n\n/**\n * Extract multiple fields from an object.\n */\nexport function extractFields(\n  obj: unknown,\n  fields: Record<string, JSONPathExpression>,\n  options?: JSONPathOptions\n): Record<string, unknown> {\n  const result: Record<string, unknown> = {};\n\n  for (const [name, pathOrPaths] of Object.entries(fields)) {\n    const value = extractWithFallback(obj, pathOrPaths, { returnUndefined: true });\n    if (value !== undefined) {\n      result[name] = value;\n    } else if (!options?.returnUndefined) {\n      result[name] = null;\n    }\n  }\n\n  return result;\n}\n\n/**\n * Check if a path exists in an object.\n * Note: Returns true if the path exists, even if the value is null or undefined.\n */\nexport function hasPath(obj: unknown, path: string): boolean {\n  if (obj === null || obj === undefined) {\n    return false;\n  }\n\n  const parts = parsePath(path);\n  let current: unknown = obj;\n\n  for (let i = 0; i < parts.length; i++) {\n    const part = parts[i];\n\n    if (typeof current !== 'object' || current === null) {\n      return false;\n    }\n\n    const record = current as Record<string, unknown>;\n\n    if (part.type === 'key') {\n      if (!(part.key in record)) {\n        return false;\n      }\n      current = record[part.key];\n      continue;\n    }\n\n    if (part.type === 'array-index') {\n      if (!(part.key in record)) {\n        return false;\n      }\n      const arr = record[part.key];\n      if (!Array.isArray(arr) || part.index! >= arr.length) {\n        return false;\n      }\n      current = arr[part.index!];\n      continue;\n    }\n\n    // For array-iterate, just check the key exists and is an array\n    if (part.type === 'array-iterate') {\n      return true;\n    }\n  }\n\n  return true;\n}\n\n/**\n * Get the value at a path, or a default value if not found.\n */\nexport function getPathOr<T>(\n  obj: unknown,\n  path: string,\n  defaultValue: T\n): T {\n  const value = extractPath(obj, path, { returnUndefined: true });\n  return value !== undefined ? (value as T) : defaultValue;\n}\n\n// Path parsing internals\n\ninterface PathPart {\n  type: 'key' | 'array-index' | 'array-iterate';\n  key: string;\n  index?: number;\n}\n\nfunction parsePath(path: string): PathPart[] {\n  const parts: PathPart[] = [];\n  const segments = path.split('.');\n\n  for (const segment of segments) {\n    // Array iterate: items[]\n    if (segment.endsWith('[]')) {\n      const key = segment.slice(0, -2);\n      if (key) {\n        parts.push({ type: 'key', key });\n      }\n      parts.push({ type: 'array-iterate', key: '' });\n      continue;\n    }\n\n    // Array index: items[0]\n    const arrayMatch = segment.match(/^(.+)\\[(\\d+)\\]$/);\n    if (arrayMatch) {\n      const [, key, indexStr] = arrayMatch;\n      parts.push({\n        type: 'array-index',\n        key,\n        index: parseInt(indexStr, 10)\n      });\n      continue;\n    }\n\n    // Regular key\n    parts.push({ type: 'key', key: segment });\n  }\n\n  return parts;\n}\n\nfunction partsToPath(parts: PathPart[]): string {\n  return parts.map(part => {\n    if (part.type === 'array-iterate') {\n      return '[]';\n    }\n    if (part.type === 'array-index') {\n      return `${part.key}[${part.index}]`;\n    }\n    return part.key;\n  }).join('.');\n}\n","/**\n * Base types for streaming format adapters.\n *\n * Adapters parse streaming output from executors (NDJSON, SSE, etc.)\n * and extract structured events that can be displayed or accumulated.\n */\n\nimport { extractWithFallback } from '../jsonpath';\n\nexport type ParsedEventKind =\n  | 'thinking'\n  | 'message'\n  | 'tool-use'\n  | 'tool-result'\n  | 'error'\n  | 'metadata'\n  | 'unknown';\n\nexport interface ParsedEvent {\n  kind: ParsedEventKind;\n  data: Record<string, unknown>;\n  raw?: unknown;\n  timestamp?: number;\n  templates?: EventTemplate;\n}\n\nexport interface ExtractionConfig {\n  [field: string]: string | string[];\n}\n\nexport interface EventTemplate {\n  text?: string;\n  ansi?: string;\n  json?: string;\n}\n\nexport interface EventSchema {\n  kind: ParsedEventKind;\n  match?: Record<string, unknown>;\n  matchPath?: string;\n  matchValue?: unknown;\n  extract: ExtractionConfig;\n  templates?: EventTemplate;\n  visibility?: 'always' | 'hidden' | 'optional';\n}\n\nexport interface AdapterConfig {\n  name: string;\n  format: 'ndjson' | 'sse' | 'text';\n  schemas: EventSchema[];\n  defaultSchema?: EventSchema;\n}\n\nexport interface StreamAdapter {\n  readonly name: string;\n  readonly format: 'ndjson' | 'sse' | 'text';\n\n  processChunk(chunk: string): ParsedEvent[];\n  flush(): ParsedEvent[];\n  reset(): void;\n}\n\nexport abstract class BaseStreamAdapter implements StreamAdapter {\n  abstract readonly name: string;\n  abstract readonly format: 'ndjson' | 'sse' | 'text';\n\n  protected buffer: string = '';\n  protected config: AdapterConfig;\n\n  constructor(config: AdapterConfig) {\n    this.config = config;\n  }\n\n  abstract processChunk(chunk: string): ParsedEvent[];\n\n  flush(): ParsedEvent[] {\n    if (!this.buffer.trim()) {\n      return [];\n    }\n    const remaining = this.processRemainingBuffer();\n    this.buffer = '';\n    return remaining;\n  }\n\n  reset(): void {\n    this.buffer = '';\n  }\n\n  protected processRemainingBuffer(): ParsedEvent[] {\n    return [];\n  }\n\n  protected matchSchema(obj: unknown): EventSchema | undefined {\n    if (!obj || typeof obj !== 'object') {\n      return this.config.defaultSchema;\n    }\n\n    for (const schema of this.config.schemas) {\n      if (this.schemaMatches(obj, schema)) {\n        return schema;\n      }\n    }\n\n    return this.config.defaultSchema;\n  }\n\n  protected schemaMatches(obj: unknown, schema: EventSchema): boolean {\n    if (!obj || typeof obj !== 'object') return false;\n\n    if (schema.match) {\n      for (const [key, expectedValue] of Object.entries(schema.match)) {\n        const actualValue = this.getNestedValue(obj as Record<string, unknown>, key);\n        if (actualValue !== expectedValue) {\n          return false;\n        }\n      }\n      return true;\n    }\n\n    if (schema.matchPath && schema.matchValue !== undefined) {\n      const actualValue = this.getNestedValue(obj as Record<string, unknown>, schema.matchPath);\n      return actualValue === schema.matchValue;\n    }\n\n    return false;\n  }\n\n  protected extractData(obj: unknown, config: ExtractionConfig): Record<string, unknown> {\n    if (!obj || typeof obj !== 'object') {\n      return {};\n    }\n\n    const result: Record<string, unknown> = {};\n\n    for (const [field, pathOrPaths] of Object.entries(config)) {\n      const value = extractWithFallback(obj, pathOrPaths, { returnUndefined: true });\n      if (value !== undefined) {\n        result[field] = value;\n      }\n    }\n\n    return result;\n  }\n\n  protected getNestedValue(obj: Record<string, unknown>, path: string): unknown {\n    return extractWithFallback(obj, path, { returnUndefined: true });\n  }\n}\n","/**\n * NDJSON (Newline-Delimited JSON) Stream Adapter\n *\n * Parses NDJSON streams into structured events.\n * Each line is a complete JSON object.\n */\n\nimport {\n  BaseStreamAdapter,\n  type AdapterConfig,\n  type ParsedEvent,\n  type EventSchema\n} from './base';\n\nexport class NDJSONAdapter extends BaseStreamAdapter {\n  readonly name: string;\n  readonly format = 'ndjson' as const;\n\n  constructor(config: AdapterConfig) {\n    super(config);\n    this.name = config.name;\n  }\n\n  processChunk(chunk: string): ParsedEvent[] {\n    this.buffer += chunk;\n    const events: ParsedEvent[] = [];\n\n    // Process complete lines\n    const lines = this.buffer.split('\\n');\n\n    // Keep incomplete last line in buffer\n    this.buffer = lines.pop() || '';\n\n    for (const line of lines) {\n      const trimmed = line.trim();\n      if (!trimmed) continue;\n\n      const event = this.parseLine(trimmed);\n      if (event) {\n        events.push(event);\n      }\n    }\n\n    return events;\n  }\n\n  protected override processRemainingBuffer(): ParsedEvent[] {\n    const trimmed = this.buffer.trim();\n    if (!trimmed) {\n      return [];\n    }\n\n    const event = this.parseLine(trimmed);\n    return event ? [event] : [];\n  }\n\n  private parseLine(line: string): ParsedEvent | null {\n    let parsed: unknown;\n\n    try {\n      parsed = JSON.parse(line);\n    } catch {\n      // Not valid JSON, emit as unknown\n      return {\n        kind: 'unknown',\n        data: { raw: line },\n        raw: line,\n        timestamp: Date.now()\n      };\n    }\n\n    // Match against schemas\n    const schema = this.matchSchema(parsed);\n\n    if (!schema) {\n      return {\n        kind: 'unknown',\n        data: parsed as Record<string, unknown>,\n        raw: parsed,\n        timestamp: Date.now()\n      };\n    }\n\n    // Extract data according to schema\n    const data = this.extractData(parsed, schema.extract);\n\n    return {\n      kind: schema.kind,\n      data,\n      raw: parsed,\n      timestamp: Date.now(),\n      templates: schema.templates\n    };\n  }\n}\n\nexport function createNDJSONAdapter(config: Omit<AdapterConfig, 'format'>): NDJSONAdapter {\n  return new NDJSONAdapter({ ...config, format: 'ndjson' });\n}\n\n// Pre-built schema patterns for common NDJSON formats\nexport const COMMON_SCHEMAS = {\n  // Claude Code SDK format\n  claudeCodeThinking: {\n    kind: 'thinking' as const,\n    matchPath: 'type',\n    matchValue: 'thinking',\n    extract: {\n      text: ['thinking', 'content', 'message'],\n      depth: 'depth'\n    },\n    visibility: 'optional' as const\n  },\n\n  claudeCodeMessage: {\n    kind: 'message' as const,\n    matchPath: 'type',\n    matchValue: 'text',\n    extract: {\n      chunk: ['text', 'content', 'delta.text'],\n      role: 'role'\n    },\n    visibility: 'always' as const\n  },\n\n  claudeCodeToolUse: {\n    kind: 'tool-use' as const,\n    matchPath: 'type',\n    matchValue: 'tool_use',\n    extract: {\n      name: ['name', 'tool_name'],\n      input: ['input', 'parameters'],\n      id: ['id', 'tool_use_id']\n    },\n    visibility: 'optional' as const\n  },\n\n  claudeCodeToolResult: {\n    kind: 'tool-result' as const,\n    matchPath: 'type',\n    matchValue: 'tool_result',\n    extract: {\n      result: ['content', 'result', 'output'],\n      toolUseId: ['tool_use_id', 'id'],\n      success: 'success',\n      isError: 'is_error'  // Claude Code uses is_error (inverted)\n    },\n    visibility: 'optional' as const\n  },\n\n  claudeCodeError: {\n    kind: 'error' as const,\n    matchPath: 'type',\n    matchValue: 'error',\n    extract: {\n      message: ['message', 'error.message', 'error'],\n      code: ['code', 'error.code']\n    },\n    visibility: 'always' as const\n  },\n\n  claudeCodeUsage: {\n    kind: 'metadata' as const,\n    matchPath: 'type',\n    matchValue: 'result',\n    extract: {\n      inputTokens: ['usage.input_tokens', 'input_tokens'],\n      outputTokens: ['usage.output_tokens', 'output_tokens'],\n      model: 'model'\n    },\n    visibility: 'optional' as const\n  },\n\n  // Generic content_block_delta (Anthropic API format)\n  contentBlockDelta: {\n    kind: 'message' as const,\n    matchPath: 'type',\n    matchValue: 'content_block_delta',\n    extract: {\n      chunk: ['delta.text', 'delta.partial_json'],\n      index: 'index'\n    },\n    visibility: 'always' as const\n  },\n\n  // Generic message_delta (Anthropic API format)\n  messageDelta: {\n    kind: 'metadata' as const,\n    matchPath: 'type',\n    matchValue: 'message_delta',\n    extract: {\n      stopReason: 'delta.stop_reason',\n      inputTokens: 'usage.input_tokens',\n      outputTokens: 'usage.output_tokens'\n    },\n    visibility: 'optional' as const\n  },\n\n  // Claude CLI with --include-partial-messages wraps Anthropic API events\n  streamEventTextDelta: {\n    kind: 'message' as const,\n    matchPath: 'event.type',\n    matchValue: 'content_block_delta',\n    extract: {\n      chunk: ['event.delta.text', 'event.delta.partial_json']\n    },\n    visibility: 'always' as const\n  },\n\n  streamEventMessageDelta: {\n    kind: 'metadata' as const,\n    matchPath: 'event.type',\n    matchValue: 'message_delta',\n    extract: {\n      inputTokens: 'event.usage.input_tokens',\n      outputTokens: 'event.usage.output_tokens'\n    },\n    visibility: 'optional' as const\n  }\n} satisfies Record<string, EventSchema>;\n"]}