{"version":3,"sources":["../../src/parsers/linePrefix.ts"],"names":["NEW_LINE_CHARACTER","trimLeftSpaces","value","replace","linesToString","lines","reduce","acc","newLine","concat","LinePrefixParser","Serializable","emitter","Emitter","creator","namespace","excludedLines","done","lastNodeKey","finalState","partialState","isDone","nodes","options","hasStartNode","hasEndNode","key","next","isStart","isEnd","entries","Boolean","nextKey","ValueError","fork","customizer","add","chunk","split","forEach","line","i","arr","isFirstLine","length","push","at","isLastLine","lastNode","isTerminationNode","parsedLine","extractLine","partial","shift","includes","endOnRepeat","end","throwWithContext","LinePrefixParserError","Reason","InvalidTransition","emitFinalUpdate","field","waitForStartNode","NotStartNode","node","write","emitPartialUpdate","getPartial","delta","raw","message","reason","extra","join","errors","context","fallback","stash","splice","Infinity","map","prefix","NoDataReceived","currentNode","NotEndNode","Promise","allSettled","Object","values","data","AlreadyCompleted","silentNodes","emit","get","e","ZodError","InvalidSchema","normalizedNodes","sort","_","a","__","b","lowerCasePrefix","toLowerCase","ref","trimmedLine","startsWith","substring","createSnapshot","shallowCopy","loadSnapshot","snapshot","assign"],"mappings":"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","file":"linePrefix.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { entries } from \"remeda\";\nimport { ValueError } from \"@/errors.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { ParserField } from \"@/parsers/field.js\";\nimport { Callback, InferCallbackValue } from \"@/emitter/types.js\";\nimport { ZodError } from \"zod\";\nimport { ValueOf } from \"@/internals/types.js\";\nimport { LinePrefixParserError } from \"@/parsers/errors.js\";\nexport * from \"@/parsers/errors.js\";\n\nexport interface ParserNode<T extends string, P extends ParserField<any, any>> {\n  prefix: string;\n  next: readonly T[];\n  isStart?: boolean;\n  isEnd?: boolean;\n  field: P;\n}\n\ntype Customizer<T extends NonNullable<unknown>, T2 extends NonNullable<unknown> = T> = (\n  nodes: T,\n  options: Options<T>,\n) => { nodes: T2; options: Options<T2> };\n\ntype StringKey<T extends NonNullable<unknown>> = Extract<keyof T, string>;\n\ninterface Callbacks<T extends Record<string, ParserNode<StringKey<T>, ParserField<any, any>>>> {\n  update: Callback<\n    {\n      [K in StringKey<T>]: {\n        key: K;\n        value: ParserField.inferValue<T[K][\"field\"]>;\n        field: T[K][\"field\"];\n      };\n    }[StringKey<T>]\n  >;\n  partialUpdate: Callback<\n    {\n      [K in StringKey<T>]: {\n        key: K;\n        delta: string;\n        value: ParserField.inferPartialValue<T[K][\"field\"]>;\n        field: T[K][\"field\"];\n      };\n    }[StringKey<T>]\n  >;\n}\n\ninterface Line {\n  value: string;\n  newLine: boolean;\n}\n\nconst NEW_LINE_CHARACTER = \"\\n\" as const;\n\ninterface ExtractedLine<T extends NonNullable<unknown>> {\n  key: StringKey<T>;\n  value: string;\n  partial: boolean;\n}\n\nconst trimLeftSpaces = (value: string) => value.replace(/^\\s*/g, \"\");\nconst linesToString = (lines: Line[]) =>\n  lines.reduce(\n    (acc, { newLine, value }) => `${acc}${newLine ? NEW_LINE_CHARACTER.concat(value) : value}`,\n    \"\",\n  );\n\ninterface Options<T extends NonNullable<unknown>> {\n  fallback?: (value: string) => readonly { key: StringKey<T>; value: string }[];\n  endOnRepeat?: boolean;\n  waitForStartNode?: boolean;\n  silentNodes?: StringKey<T>[];\n}\n\ntype Input<K extends string = string> = Record<string, ParserNode<K, ParserField<any, any>>>;\n\nexport class LinePrefixParser<T extends Input<StringKey<T>>> extends Serializable {\n  public readonly emitter = new Emitter<Callbacks<T>>({\n    creator: this,\n    namespace: [\"agent\", \"parser\", \"line\"],\n  });\n\n  protected readonly lines: Line[] = [];\n  protected readonly excludedLines: Line[] = [];\n  protected done = false;\n  protected lastNodeKey: StringKey<T> | null = null;\n\n  public readonly finalState = {} as LinePrefixParser.infer<T>;\n  public readonly partialState = {} as Partial<Record<StringKey<T>, string>>;\n\n  get isDone() {\n    return this.done;\n  }\n\n  constructor(\n    protected readonly nodes: T,\n    protected readonly options: Options<T> = {},\n  ) {\n    super();\n\n    let hasStartNode = false;\n    let hasEndNode = false;\n\n    for (const [key, { next, isStart, isEnd }] of entries(nodes ?? {})) {\n      hasStartNode = Boolean(hasStartNode || isStart);\n      hasEndNode = Boolean(hasEndNode || isEnd);\n\n      for (const nextKey of next) {\n        if (key === nextKey) {\n          throw new ValueError(`Node '${key}' cannot point to itself.`);\n        }\n        if (!(nextKey in nodes)) {\n          throw new ValueError(\n            `Node '${key}' contains a transition to non-existing node '${nextKey}'.`,\n          );\n        }\n      }\n    }\n\n    if (!hasStartNode) {\n      throw new ValueError(`At least one start node must be provided!`);\n    }\n    if (!hasEndNode) {\n      throw new ValueError(`At least one end node must be provided!`);\n    }\n  }\n\n  fork<R extends T = T>(customizer: Customizer<T, R>) {\n    const { nodes, options } = customizer(this.nodes, this.options);\n    return new LinePrefixParser(nodes, options);\n  }\n\n  async add(chunk: string) {\n    if (!chunk || this.done) {\n      return;\n    }\n\n    chunk.split(NEW_LINE_CHARACTER).forEach((line, i, arr) => {\n      const isFirstLine = i === 0;\n\n      if (isFirstLine) {\n        if (this.lines.length === 0) {\n          this.lines.push({ newLine: false, value: line });\n        } else {\n          this.lines.at(-1)!.value += line;\n        }\n      } else {\n        this.lines.push({ newLine: arr.length > 1, value: line });\n      }\n    });\n\n    while (this.lines.length > 0) {\n      const line = this.lines[0];\n      const isLastLine = this.lines.length === 1;\n\n      const lastNode = this.lastNodeKey ? this.nodes[this.lastNodeKey] : null;\n      const isTerminationNode = lastNode\n        ? Boolean(lastNode.isEnd && lastNode.next.length === 0)\n        : false;\n\n      const parsedLine =\n        isTerminationNode || (lastNode && !line.newLine) ? null : this.extractLine(line.value);\n\n      if (isLastLine && (parsedLine?.partial || !line.value)) {\n        break;\n      }\n      this.lines.shift();\n\n      if (parsedLine && !parsedLine.partial) {\n        if (lastNode) {\n          if (!lastNode.next.includes(parsedLine.key)) {\n            if (parsedLine.key in this.finalState && this.options.endOnRepeat && lastNode.isEnd) {\n              await this.end();\n              return;\n            }\n\n            this.throwWithContext(\n              `Transition from '${this.lastNodeKey}' to '${parsedLine.key}' does not exist!`,\n              LinePrefixParserError.Reason.InvalidTransition,\n              { line },\n            );\n          }\n\n          await this.emitFinalUpdate(this.lastNodeKey!, lastNode.field);\n        } else if (!this.nodes[parsedLine.key].isStart) {\n          if (!this.options.waitForStartNode) {\n            this.throwWithContext(\n              `Parsed text line corresponds to a node \"${parsedLine.key}\" which is not a start node!`,\n              LinePrefixParserError.Reason.NotStartNode,\n              { line },\n            );\n          }\n          this.excludedLines.push(line);\n          continue;\n        }\n\n        const node = this.nodes[parsedLine.key];\n        node.field.write(parsedLine.value);\n        await this.emitPartialUpdate({\n          key: parsedLine.key,\n          value: node.field.getPartial(),\n          delta: parsedLine.value,\n          field: node.field,\n        });\n        this.lastNodeKey = parsedLine.key;\n      } else if (this.lastNodeKey) {\n        if (!this.nodes[this.lastNodeKey].field.raw) {\n          line.value = trimLeftSpaces(line.value);\n        }\n        if (line.newLine) {\n          line.value = `${NEW_LINE_CHARACTER}${line.value}`;\n        }\n\n        const node = this.nodes[this.lastNodeKey];\n        node.field.write(line.value);\n        await this.emitPartialUpdate({\n          key: this.lastNodeKey,\n          value: node.field.getPartial(),\n          delta: line.value,\n          field: node.field,\n        });\n      } else {\n        this.excludedLines.push(line);\n      }\n    }\n  }\n\n  protected throwWithContext(\n    message: string,\n    reason: ValueOf<typeof LinePrefixParserError.Reason>,\n    extra: { line?: Line; errors?: Error[] } = {},\n  ): never {\n    throw new LinePrefixParserError(\n      [`The generated output does not adhere to the schema.`, message].join(NEW_LINE_CHARACTER),\n      extra.errors ?? [],\n      {\n        reason,\n        context: {\n          lines: linesToString(this.lines.concat(extra.line ? [extra.line] : [])),\n          excludedLines: linesToString(this.excludedLines),\n          finalState: this.finalState,\n          partialState: this.partialState,\n        },\n      },\n    );\n  }\n\n  async end() {\n    if (this.done) {\n      return this.finalState;\n    }\n\n    if (!this.lastNodeKey && this.options.fallback) {\n      const stash = linesToString([\n        ...this.excludedLines.splice(0, Infinity),\n        ...this.lines.splice(0, Infinity),\n      ]);\n\n      const nodes = this.options.fallback(stash);\n      await this.add(\n        nodes.map((node) => `${this.nodes[node.key].prefix}${node.value}`).join(NEW_LINE_CHARACTER),\n      );\n    }\n\n    this.done = true;\n\n    if (!this.lastNodeKey) {\n      this.throwWithContext(\n        \"Nothing valid has been parsed yet!\",\n        LinePrefixParserError.Reason.NoDataReceived,\n      );\n    }\n\n    const stash = linesToString(this.lines);\n    this.lines.length = 0;\n\n    const field = this.nodes[this.lastNodeKey].field!;\n    if (stash) {\n      field.write(stash);\n      await this.emitPartialUpdate({\n        key: this.lastNodeKey,\n        value: field.getPartial(),\n        delta: stash,\n        field,\n      });\n    }\n    await this.emitFinalUpdate(this.lastNodeKey, field);\n\n    const currentNode = this.nodes[this.lastNodeKey];\n    if (!currentNode.isEnd) {\n      this.throwWithContext(\n        `Node '${this.lastNodeKey}' is not an end node.`,\n        LinePrefixParserError.Reason.NotEndNode,\n      );\n    }\n\n    await Promise.allSettled(Object.values(this.nodes).map(({ field }) => field.end()));\n    return this.finalState;\n  }\n\n  protected async emitPartialUpdate(data: InferCallbackValue<Callbacks<T>[\"partialUpdate\"]>) {\n    if (data.key in this.finalState) {\n      this.throwWithContext(\n        `Cannot update partial event for completed key '${data.key}'`,\n        LinePrefixParserError.Reason.AlreadyCompleted,\n      );\n    }\n    if (!(data.key in this.partialState)) {\n      this.partialState[data.key] = \"\";\n    }\n    this.partialState[data.key] += data.delta;\n    if (!this.options.silentNodes?.includes(data.key)) {\n      await this.emitter.emit(\"partialUpdate\", data);\n    }\n  }\n\n  protected async emitFinalUpdate(key: StringKey<T>, field: ParserField<any, any>) {\n    if (key in this.finalState) {\n      this.throwWithContext(\n        `Duplicated key '${key}'`,\n        LinePrefixParserError.Reason.AlreadyCompleted,\n      );\n    }\n\n    try {\n      const value = field.get();\n      this.finalState[key] = value;\n      if (!this.options.silentNodes?.includes(key)) {\n        await this.emitter.emit(\"update\", {\n          key,\n          field,\n          value,\n        });\n      }\n    } catch (e) {\n      if (e instanceof ZodError) {\n        this.throwWithContext(\n          `Value for '${key}' cannot be retrieved because it's value does not adhere to the appropriate schema.`,\n          LinePrefixParserError.Reason.InvalidSchema,\n          { errors: [e] },\n        );\n      }\n      throw e;\n    }\n  }\n\n  @Cache()\n  protected get normalizedNodes() {\n    return entries(this.nodes)\n      .sort(([_, a], [__, b]) => a.prefix.length - b.prefix.length)\n      .map(([key, value]) => {\n        return [key, { lowerCasePrefix: value.prefix.toLowerCase(), ref: value }] as const;\n      });\n  }\n\n  protected extractLine(line: string): ExtractedLine<T> | null {\n    const trimmedLine = trimLeftSpaces(line);\n    if (!trimmedLine) {\n      return null;\n    }\n\n    for (const [key, node] of this.normalizedNodes) {\n      const partial = node.lowerCasePrefix.length > trimmedLine.length;\n      const [a, b] = partial\n        ? [node.lowerCasePrefix, trimmedLine]\n        : [trimmedLine, node.lowerCasePrefix];\n\n      if (a.toLowerCase().startsWith(b.toLowerCase())) {\n        return {\n          key: key as StringKey<T>,\n          value: partial ? trimmedLine : trimLeftSpaces(a.substring(b.length)),\n          partial,\n        };\n      }\n    }\n    return null;\n  }\n\n  createSnapshot() {\n    return {\n      nodes: shallowCopy(this.nodes),\n      lines: shallowCopy(this.lines),\n      emitter: this.emitter,\n      done: this.done,\n      lastNodeKey: this.lastNodeKey,\n      options: this.options,\n    };\n  }\n\n  loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n    Object.assign(this, snapshot);\n  }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace LinePrefixParser {\n  export type infer<T extends Record<string, ParserNode<StringKey<T>, ParserField<any, any>>>> = {\n    [K in keyof T]: ParserField.inferValue<T[K][\"field\"]>;\n  };\n  export type inferPartial<\n    T extends Record<string, ParserNode<StringKey<T>, ParserField<any, any>>>,\n  > = {\n    [K in StringKey<T>]: ParserField.inferPartialValue<T[K][\"field\"]>;\n  };\n\n  export type inferCallback<T> =\n    T extends LinePrefixParser<any> ? (T[\"emitter\"] extends Emitter<infer L> ? L : never) : never;\n\n  export type inferOutput<T> =\n    T extends LinePrefixParser<infer P> ? LinePrefixParser.infer<P> : never;\n\n  export type inferPartialOutput<T> =\n    T extends LinePrefixParser<infer P> ? LinePrefixParser.inferPartial<P> : never;\n\n  export type define<T extends Record<string, ParserField<any, any>>> = {\n    [K in StringKey<T>]: ParserNode<StringKey<T>, T[K]>;\n  };\n}\n"]}