@remnic/core 1.1.10 → 1.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/explicit-cue-recall.ts"],"sourcesContent":["import { buildEvidencePack } from \"./evidence-pack.js\";\n\nexport interface ExplicitCueRecallEngine {\n expandContext(\n sessionId: string,\n fromTurn: number,\n toTurn: number,\n maxTokens: number,\n ): Promise<Array<{ turn_index: number; role: string; content: string }>>;\n getStats?(sessionId?: string): Promise<{\n totalMessages: number;\n maxTurnIndex?: number;\n }>;\n searchContextFull(\n query: string,\n limit: number,\n sessionId?: string,\n ): Promise<\n Array<{\n turn_index: number;\n role: string;\n content: string;\n session_id: string;\n score?: number;\n }>\n >;\n}\n\nexport interface ExplicitCueRecallOptions {\n engine: ExplicitCueRecallEngine | null | undefined;\n sessionId?: string;\n query: string;\n maxChars: number;\n maxItemChars?: number;\n maxReferences?: number;\n includeBenchmarkAnchorCues?: boolean;\n includeStructuredPlanCues?: boolean;\n}\n\nexport interface TrajectoryAnalysisRecallOptions {\n engine: ExplicitCueRecallEngine | null | undefined;\n sessionId?: string;\n query: string;\n maxChars: number;\n}\n\nexport type ExplicitTurnReference = {\n number: number;\n includeDirectTurn: boolean;\n};\n\nconst DEFAULT_MAX_CHARS = 2_400;\nconst DEFAULT_MAX_ITEM_CHARS = 1_200;\nconst DEFAULT_MAX_REFERENCES = 24;\nconst REFERENCE_SCAN_TOKEN_FACTOR = 3;\nconst TURN_REFERENCE_WINDOW_RADIUS = 0;\nconst LEXICAL_CUE_WINDOW_RADIUS = 1;\nconst LEXICAL_CUE_SEARCH_LIMIT = 3;\nconst LEXICAL_CUE_MAX_TOKENS = 400;\nconst CONTENT_LABEL_SEARCH_LIMIT = 64;\nconst CONTENT_LABEL_MAX_TOKENS = 2_000;\nconst CONTENT_LABEL_MAX_PAIRED_WINDOWS_PER_REFERENCE = 1;\nconst TRAJECTORY_ANALYSIS_MAX_TOKENS = 250_000;\nconst TRAJECTORY_ANALYSIS_MAX_RANGE_STEPS = 80;\nconst TRAJECTORY_ANALYSIS_MAX_LINES = 160;\nconst LATEST_STATE_CUES = new Set([\n \"as of\",\n \"currently\",\n \"latest\",\n \"most recent\",\n \"newest\",\n \"now\",\n \"updated\",\n \"changed\",\n \"change\",\n]);\nconst STRUCTURED_PLAN_FIELD_CUES = new Set([\n \"accommodation\",\n \"attraction\",\n \"breakfast\",\n \"current city\",\n \"dinner\",\n \"flight\",\n \"flights\",\n \"hotel\",\n \"lunch\",\n \"restaurant\",\n \"restaurants\",\n \"transportation\",\n \"traveler\",\n \"travelers\",\n]);\nconst STRUCTURED_PLAN_DEPENDENCY_CUES = new Set([\n \"comparison\",\n \"constraint\",\n \"constraints\",\n \"dependency\",\n \"dependencies\",\n \"join\",\n \"same\",\n \"shared\",\n]);\nconst BENCHMARK_ABILITY_CUES = new Map([\n [\"information extraction\", \"ability=information_extraction\"],\n [\"knowledge update\", \"ability=knowledge_update\"],\n [\"multi session reasoning\", \"ability=multi_session_reasoning\"],\n [\"multi-session reasoning\", \"ability=multi_session_reasoning\"],\n [\"instruction following\", \"ability=instruction_following\"],\n]);\nconst BENCHMARK_ANCHOR_VALUE_STOPWORDS = new Set([\n \"a\",\n \"about\",\n \"an\",\n \"for\",\n \"from\",\n \"in\",\n \"on\",\n \"the\",\n \"to\",\n \"use\",\n \"using\",\n \"with\",\n]);\nconst RELATIVE_TEMPORAL_CUES = [\n \"as of\",\n \"most recent\",\n \"last time\",\n \"last week\",\n \"last month\",\n \"last year\",\n \"last session\",\n \"last conversation\",\n \"next time\",\n \"next week\",\n \"next month\",\n \"next year\",\n \"next session\",\n \"next conversation\",\n \"previous time\",\n \"previous week\",\n \"previous month\",\n \"previous year\",\n \"previous session\",\n \"previous conversation\",\n \"prior time\",\n \"prior week\",\n \"prior month\",\n \"prior year\",\n \"prior session\",\n \"prior conversation\",\n \"today\",\n \"yesterday\",\n \"tomorrow\",\n \"tonight\",\n \"earlier\",\n \"later\",\n \"recently\",\n \"previously\",\n \"currently\",\n \"now\",\n \"latest\",\n \"newest\",\n \"oldest\",\n \"earliest\",\n \"before\",\n \"after\",\n \"since\",\n \"updated\",\n \"changed\",\n \"change\",\n];\nconst SPEAKER_NAME_STOPWORDS = new Set([\n \"A\",\n \"According\",\n \"An\",\n \"And\",\n \"Are\",\n \"As\",\n \"At\",\n \"Before\",\n \"Can\",\n \"Compare\",\n \"Could\",\n \"Did\",\n \"Do\",\n \"Does\",\n \"For\",\n \"From\",\n \"Had\",\n \"Has\",\n \"Have\",\n \"How\",\n \"In\",\n \"Is\",\n \"It\",\n \"Join\",\n \"Of\",\n \"On\",\n \"Or\",\n \"Please\",\n \"Review\",\n \"Step\",\n \"Tell\",\n \"The\",\n \"To\",\n \"Turn\",\n \"Use\",\n \"Was\",\n \"Were\",\n \"What\",\n \"When\",\n \"Where\",\n \"Which\",\n \"Who\",\n \"Why\",\n \"Will\",\n \"Would\",\n]);\nconst QUESTION_SLOT_STOPWORDS = new Set([\n \"answer\",\n \"choice\",\n \"did\",\n \"does\",\n \"do\",\n \"is\",\n \"should\",\n \"single\",\n \"the\",\n \"user\",\n \"was\",\n \"were\",\n]);\n\nexport async function buildExplicitCueRecallSection(\n options: ExplicitCueRecallOptions,\n): Promise<string> {\n const engine = options.engine;\n const query = options.query.trim();\n const maxChars = normalizePositiveInteger(options.maxChars, DEFAULT_MAX_CHARS);\n if (!engine || query.length === 0 || maxChars <= 0) {\n return \"\";\n }\n\n const maxReferences = normalizePositiveInteger(\n options.maxReferences,\n DEFAULT_MAX_REFERENCES,\n );\n if (maxReferences <= 0) {\n return \"\";\n }\n\n const evidenceItems: Array<{\n id: string;\n sessionId: string;\n turnIndex: number;\n role: string;\n content: string;\n score?: number;\n }> = [];\n const seenTurns = new Set<string>();\n\n await collectTurnReferenceEvidence({\n engine,\n sessionId: options.sessionId,\n query,\n maxReferences,\n evidenceItems,\n seenTurns,\n });\n\n await collectLexicalCueEvidence({\n engine,\n sessionId: options.sessionId,\n query,\n maxReferences,\n includeBenchmarkAnchorCues: options.includeBenchmarkAnchorCues,\n includeStructuredPlanCues: options.includeStructuredPlanCues,\n evidenceItems,\n seenTurns,\n });\n\n return buildEvidencePack(evidenceItems, {\n title: \"Explicit Cue Evidence\",\n maxChars,\n maxItemChars: normalizePositiveInteger(\n options.maxItemChars,\n DEFAULT_MAX_ITEM_CHARS,\n ),\n });\n}\n\nexport async function buildTrajectoryAnalysisRecallSection(\n options: TrajectoryAnalysisRecallOptions,\n): Promise<string> {\n const engine = options.engine;\n const sessionId = options.sessionId;\n const query = options.query.trim();\n const maxChars = normalizePositiveInteger(options.maxChars, DEFAULT_MAX_CHARS);\n if (!engine || !sessionId || !engine.getStats || query.length === 0 || maxChars <= 0) {\n return \"\";\n }\n\n if (!hasTrajectoryAnalysisIntent(query)) {\n return \"\";\n }\n\n const stats = await engine.getStats(sessionId);\n const totalMessages = Math.max(0, Math.floor(stats.totalMessages));\n if (totalMessages <= 0) {\n return \"\";\n }\n const expansionEnd = normalizeTurnExpansionEnd(stats);\n\n const messages = await engine.expandContext(\n sessionId,\n 0,\n expansionEnd,\n TRAJECTORY_ANALYSIS_MAX_TOKENS,\n );\n const trajectory = parseLabeledTrajectory(messages);\n if (trajectory.length === 0) {\n return \"\";\n }\n\n const bounds = inferTrajectoryBounds(query, trajectory);\n const lines = buildTrajectoryAnalysisLines(query, trajectory, bounds);\n if (lines.length === 0) {\n return \"\";\n }\n\n const header = \"## Trajectory analysis\";\n const bodyBudget = maxChars - header.length - 1;\n if (bodyBudget <= 0) {\n return \"\";\n }\n\n const clipped = truncateTrajectoryAnalysisLines(lines, bodyBudget);\n return clipped.length === 0 ? \"\" : `${header}\\n${clipped.join(\"\\n\")}`;\n}\n\nasync function collectTurnReferenceEvidence(options: {\n engine: ExplicitCueRecallEngine;\n sessionId?: string;\n query: string;\n maxReferences: number;\n evidenceItems: Array<{\n id: string;\n sessionId: string;\n turnIndex: number;\n role: string;\n content: string;\n }>;\n seenTurns: Set<string>;\n}): Promise<void> {\n if (!options.sessionId) {\n return;\n }\n\n const references = collectExplicitTurnReferences(options.query).slice(\n 0,\n options.maxReferences,\n );\n if (references.length === 0) {\n return;\n }\n\n await collectContentLabelReferenceEvidence({\n engine: options.engine,\n sessionId: options.sessionId,\n query: options.query,\n references,\n evidenceItems: options.evidenceItems,\n seenTurns: options.seenTurns,\n });\n\n const windows = new Map<string, { fromTurn: number; toTurn: number }>();\n for (const reference of references) {\n for (const center of candidateTurnIndexesForReference(reference)) {\n if (center < 0) {\n continue;\n }\n\n const fromTurn = Math.max(0, center - TURN_REFERENCE_WINDOW_RADIUS);\n const toTurn = center + TURN_REFERENCE_WINDOW_RADIUS;\n windows.set(`${fromTurn}:${toTurn}`, { fromTurn, toTurn });\n }\n }\n\n for (const window of [...windows.values()].sort(\n (left, right) => left.fromTurn - right.fromTurn || left.toTurn - right.toTurn,\n )) {\n const expanded = await options.engine.expandContext(\n options.sessionId,\n window.fromTurn,\n window.toTurn,\n 2_000,\n );\n appendExpandedEvidence(\n options.evidenceItems,\n options.seenTurns,\n options.sessionId,\n expanded,\n );\n }\n}\n\nasync function collectContentLabelReferenceEvidence(options: {\n engine: ExplicitCueRecallEngine;\n sessionId?: string;\n query: string;\n references: ExplicitTurnReference[];\n evidenceItems: Array<{\n id: string;\n sessionId: string;\n turnIndex: number;\n role: string;\n content: string;\n }>;\n seenTurns: Set<string>;\n}): Promise<Set<number>> {\n const resolved = new Set<number>();\n\n for (const reference of options.references) {\n if (reference.includeDirectTurn) {\n continue;\n }\n\n const hits = await searchReferenceContentLabels(\n options.engine,\n reference.number,\n options.sessionId,\n );\n if (hits.length === 0) {\n continue;\n }\n\n resolved.add(reference.number);\n let appendedWindows = 0;\n for (const hit of hits) {\n if (appendedWindows >= CONTENT_LABEL_MAX_PAIRED_WINDOWS_PER_REFERENCE) {\n break;\n }\n\n const { fromTurn, toTurn } = contentLabelEvidenceWindow(hit, {\n includeSuccessor: hasSuccessorTrajectoryIntent(options.query),\n });\n const expanded = await options.engine.expandContext(\n hit.session_id,\n fromTurn,\n toTurn,\n CONTENT_LABEL_MAX_TOKENS,\n );\n if (!expandedHasPairedTrajectoryLabels(expanded, reference.number)) {\n continue;\n }\n if (expanded.length === 0) {\n appendEvidenceItem(options.evidenceItems, options.seenTurns, {\n id: `${hit.session_id}:${hit.turn_index}`,\n sessionId: hit.session_id,\n turnIndex: hit.turn_index,\n role: hit.role,\n content: hit.content,\n });\n continue;\n }\n appendExpandedEvidence(\n options.evidenceItems,\n options.seenTurns,\n hit.session_id,\n expanded,\n );\n appendedWindows += 1;\n }\n }\n\n return resolved;\n}\n\nasync function searchReferenceContentLabels(\n engine: ExplicitCueRecallEngine,\n referenceNumber: number,\n sessionId?: string,\n): Promise<\n Array<{\n turn_index: number;\n role: string;\n content: string;\n session_id: string;\n labelKind: \"action\" | \"observation\";\n }>\n> {\n const hits = new Map<\n string,\n {\n turn_index: number;\n role: string;\n content: string;\n session_id: string;\n labelKind: \"action\" | \"observation\";\n }\n >();\n\n for (const labelKind of [\"action\", \"observation\"] as const) {\n const label = labelKind === \"action\" ? \"Action\" : \"Observation\";\n for (const query of [`[${label} ${referenceNumber}]`, `${label} ${referenceNumber}`]) {\n const results = await engine.searchContextFull(\n query,\n CONTENT_LABEL_SEARCH_LIMIT,\n sessionId,\n );\n for (const result of results) {\n if (\n !isReferenceLabelRole(result.role, labelKind) ||\n !contentHasReferenceLabel(result.content, labelKind, referenceNumber)\n ) {\n continue;\n }\n hits.set(`${result.session_id}:${result.turn_index}:${labelKind}`, {\n turn_index: result.turn_index,\n role: result.role,\n content: result.content,\n session_id: result.session_id,\n labelKind,\n });\n }\n }\n }\n\n const numericCandidates = candidateTurnIndexesForReference({\n number: referenceNumber,\n includeDirectTurn: false,\n });\n return [...hits.values()].sort((left, right) => {\n const sessionOrder = left.session_id.localeCompare(right.session_id);\n if (sessionOrder !== 0) {\n return sessionOrder;\n }\n const leftDistance = nearestTurnDistance(left.turn_index, numericCandidates);\n const rightDistance = nearestTurnDistance(right.turn_index, numericCandidates);\n if (leftDistance !== rightDistance) {\n return leftDistance - rightDistance;\n }\n return left.turn_index - right.turn_index || left.labelKind.localeCompare(right.labelKind);\n });\n}\n\nfunction nearestTurnDistance(turnIndex: number, candidates: readonly number[]): number {\n let nearest = Number.POSITIVE_INFINITY;\n for (const candidate of candidates) {\n nearest = Math.min(nearest, Math.abs(turnIndex - candidate));\n }\n return nearest;\n}\n\nfunction contentLabelEvidenceWindow(hit: {\n turn_index: number;\n labelKind: \"action\" | \"observation\";\n}, options: { includeSuccessor?: boolean } = {}): { fromTurn: number; toTurn: number } {\n const successorTurns = options.includeSuccessor === true ? 2 : 0;\n if (hit.labelKind === \"action\") {\n return {\n fromTurn: Math.max(0, hit.turn_index - 1),\n toTurn: hit.turn_index + 1 + successorTurns,\n };\n }\n\n return {\n fromTurn: Math.max(0, hit.turn_index - 1),\n toTurn: hit.turn_index + successorTurns,\n };\n}\n\nfunction hasSuccessorTrajectoryIntent(query: string): boolean {\n const raw = query.toLowerCase();\n const normalized = raw.replace(/[^a-z0-9]+/g, \" \").trim();\n if ([\n /\\bafter\\s+(?:step|action|observation|turn)\\s+\\d+\\b/,\n /\\b(?:next|following|subsequent|successor)\\s+(?:step|action|observation|turn)\\b/,\n /\\b(?:step|action|observation|turn)\\s+\\d+\\s+(?:then|and then)\\b/,\n /\\bwhat\\s+(?:happened|came|occurred)\\s+next\\b/,\n ].some((pattern) => pattern.test(normalized))) {\n return true;\n }\n\n if (!hasLoopExitIntent(normalized)) {\n return false;\n }\n\n if (!hasBoundedTrajectoryReference(raw)) {\n return true;\n }\n\n return !asksForActionInsideBoundedRange(normalized) &&\n hasNamedTrajectoryActionCue(normalized);\n}\n\nfunction hasBoundedTrajectoryReference(query: string): boolean {\n return hasBoundedTrajectoryRange(query) || hasSingleTrajectoryReference(query);\n}\n\nfunction hasLoopExitIntent(normalizedQuery: string): boolean {\n const exitVerbs = \"(?:breaks?|breaking|broke|ends?|ending|ended|stops?|stopping|stopped)\";\n const loopNouns = \"(?:loop|cycle|pattern|sequence)\";\n return [\n new RegExp(\n `\\\\b${exitVerbs}\\\\s+(?:out\\\\s+of\\\\s+)?(?:this|that|the|a|an)?\\\\s*${loopNouns}\\\\b`,\n ),\n new RegExp(\n `\\\\b${loopNouns}\\\\s+(?:${exitVerbs}|is\\\\s+${exitVerbs}|was\\\\s+${exitVerbs})\\\\b`,\n ),\n ].some((pattern) => pattern.test(normalizedQuery));\n}\n\nfunction hasBoundedTrajectoryRange(query: string): boolean {\n return [\n /\\b(?:between|from|in|during|within)\\s+(?:steps?|actions?|observations?|turns?)\\s+#?\\d+\\s*(?:-|\\u2013|\\u2014|\\bto\\b|\\bthrough\\b|\\bthru\\b|\\band\\b)\\s*(?:(?:steps?|actions?|observations?|turns?)\\s+)?#?\\d+\\b/,\n /\\b(?:steps?|actions?|observations?|turns?)\\s+#?\\d+\\s*(?:-|\\u2013|\\u2014|\\bto\\b|\\bthrough\\b|\\bthru\\b)\\s*(?:(?:steps?|actions?|observations?|turns?)\\s+)?#?\\d+\\b/,\n ].some((pattern) => pattern.test(query));\n}\n\nfunction hasSingleTrajectoryReference(query: string): boolean {\n return /\\b(?:in|during|within|at|on)?\\s*(?:steps?|actions?|observations?|turns?)\\s+#?\\d+\\b/.test(\n query,\n );\n}\n\nfunction asksForActionInsideBoundedRange(normalizedQuery: string): boolean {\n return /\\b(?:which|what)\\s+(?:single\\s+)?(?:action|move|step|maneuver)\\s+(?:broke|breaks|breaking|ended|ends|stopped|stops|mattered|accomplished|advanced)\\b/.test(\n normalizedQuery,\n );\n}\n\nfunction hasNamedTrajectoryActionCue(normalizedQuery: string): boolean {\n const actions = \"(?:up|down|left|right|wait|stay|push|pull|open|close|use|enter|exit)\";\n return new RegExp(\n `\\\\b(?:${actions}\\\\s+(?:action|move|step|maneuver)|(?:action|move|step|maneuver)\\\\s+${actions})\\\\b`,\n ).test(normalizedQuery);\n}\n\nfunction contentHasReferenceLabel(\n content: string,\n labelKind: \"action\" | \"observation\",\n referenceNumber: number,\n): boolean {\n const label = labelKind === \"action\" ? \"Action\" : \"Observation\";\n const escapedNumber = String(referenceNumber).replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n return new RegExp(\n `^\\\\s*\\\\[\\\\s*${label}\\\\s+${escapedNumber}\\\\s*\\\\]\\\\s*(?::\\\\s*)?`,\n \"i\",\n ).test(content);\n}\n\nfunction isReferenceLabelRole(\n role: string,\n labelKind: \"action\" | \"observation\",\n): boolean {\n if (labelKind === \"action\") {\n return role === \"user\";\n }\n return role === \"assistant\";\n}\n\nfunction expandedHasPairedTrajectoryLabels(\n expanded: Array<{ role: string; content: string }>,\n referenceNumber: number,\n): boolean {\n let hasAction = false;\n let hasObservation = false;\n for (const message of expanded) {\n if (\n isReferenceLabelRole(message.role, \"action\") &&\n contentHasReferenceLabel(message.content, \"action\", referenceNumber)\n ) {\n hasAction = true;\n }\n if (\n isReferenceLabelRole(message.role, \"observation\") &&\n contentHasReferenceLabel(message.content, \"observation\", referenceNumber)\n ) {\n hasObservation = true;\n }\n }\n return hasAction && hasObservation;\n}\n\nasync function collectLexicalCueEvidence(options: {\n engine: ExplicitCueRecallEngine;\n sessionId?: string;\n query: string;\n maxReferences: number;\n includeBenchmarkAnchorCues?: boolean;\n includeStructuredPlanCues?: boolean;\n evidenceItems: Array<{\n id: string;\n sessionId: string;\n turnIndex: number;\n role: string;\n content: string;\n score?: number;\n }>;\n seenTurns: Set<string>;\n}): Promise<void> {\n const cues = collectLexicalCues(options.query, {\n includeBenchmarkAnchorCues: options.includeBenchmarkAnchorCues,\n includeStructuredPlanCues: options.includeStructuredPlanCues,\n }).slice(0, options.maxReferences);\n const preferLatest = hasLatestStateIntent(options.query);\n for (const cue of cues) {\n const results = sortLexicalCueResults(\n await options.engine.searchContextFull(\n cue,\n LEXICAL_CUE_SEARCH_LIMIT,\n options.sessionId,\n ),\n preferLatest,\n );\n for (const result of results) {\n const windowRadius = preferLatest ? 0 : LEXICAL_CUE_WINDOW_RADIUS;\n const fromTurn = Math.max(0, result.turn_index - windowRadius);\n const toTurn = result.turn_index + windowRadius;\n const expanded = await options.engine.expandContext(\n result.session_id,\n fromTurn,\n toTurn,\n LEXICAL_CUE_MAX_TOKENS,\n );\n if (expanded.length === 0) {\n appendEvidenceItem(options.evidenceItems, options.seenTurns, {\n id: `${result.session_id}:${result.turn_index}`,\n sessionId: result.session_id,\n turnIndex: result.turn_index,\n role: result.role,\n content: result.content,\n ...(typeof result.score === \"number\" ? { score: result.score } : {}),\n });\n continue;\n }\n appendExpandedEvidence(\n options.evidenceItems,\n options.seenTurns,\n result.session_id,\n expanded,\n );\n }\n }\n}\n\ninterface LabeledTrajectoryStep {\n step: number;\n action?: string;\n observation?: string;\n actionTurnIndex?: number;\n observationTurnIndex?: number;\n}\n\ninterface TrajectoryBounds {\n start: number;\n end: number;\n reason: string;\n}\n\ninterface ObservationTransition {\n fromStep: number;\n toStep: number;\n}\n\ninterface RelativePosition {\n entity: string;\n x: number;\n y: number;\n raw: string;\n}\n\ninterface AgentMoveDelta {\n direction: \"up\" | \"down\" | \"left\" | \"right\";\n dx: number;\n dy: number;\n}\n\nfunction hasTrajectoryAnalysisIntent(query: string): boolean {\n const normalized = normalizeTrajectoryQuery(query);\n if (collectExplicitTurnReferences(query).length > 0) {\n return true;\n }\n return [\n /\\bbefore\\s+(?:step|action|observation)\\s+\\d+\\b/,\n /\\b(?:until|through|thru)\\s+(?:step|action|observation)\\s+\\d+\\b/,\n /\\bup\\s+to\\s+(?:and\\s+including\\s+)?(?:step|action|observation)\\s+\\d+\\b/,\n /\\bwhat\\s+sequence\\s+of\\s+actions\\s+would\\s+transform\\b/,\n /\\bactions?\\s+were\\s+performed\\b/,\n /\\bstate\\s+of\\s+[a-z0-9 _-]+\\s+\\d+\\s+at\\s+step\\s+\\d+\\b/,\n /\\bwhole\\s+changes?\\s+history\\b/,\n /\\bthroughout\\s+the\\s+trajectory\\b/,\n /\\binventory\\b/,\n /\\bcontainers?\\b.*\\binteracted\\b/,\n /\\btypes?\\s+of\\s+actions?\\b.*\\bfrequen/,\n /\\bhow\\s+frequently\\b/,\n ].some((pattern) => pattern.test(normalized));\n}\n\nfunction parseLabeledTrajectory(\n messages: Array<{ turn_index: number; role: string; content: string }>,\n): LabeledTrajectoryStep[] {\n const byStep = new Map<number, LabeledTrajectoryStep>();\n\n for (const message of messages) {\n const action = parseTrajectoryLabel(message.content, \"Action\");\n if (action && isReferenceLabelRole(message.role, \"action\")) {\n const step = getOrCreateTrajectoryStep(byStep, action.step);\n step.action = action.value;\n step.actionTurnIndex = message.turn_index;\n continue;\n }\n\n const observation = parseTrajectoryLabel(message.content, \"Observation\");\n if (observation && isReferenceLabelRole(message.role, \"observation\")) {\n const step = getOrCreateTrajectoryStep(byStep, observation.step);\n step.observation = observation.value;\n step.observationTurnIndex = message.turn_index;\n }\n }\n\n return [...byStep.values()].sort((left, right) => left.step - right.step);\n}\n\nfunction parseTrajectoryLabel(\n content: string,\n label: \"Action\" | \"Observation\",\n): { step: number; value: string } | undefined {\n const match = new RegExp(\n `^\\\\s*\\\\[\\\\s*${label}\\\\s+(\\\\d+)\\\\s*\\\\]\\\\s*(?::\\\\s*)?([\\\\s\\\\S]*)$`,\n \"i\",\n ).exec(content);\n if (!match) {\n return undefined;\n }\n const step = parseNonNegativeIntegerToken(match[1] ?? \"\");\n if (step === undefined) {\n return undefined;\n }\n const value = (match[2] ?? \"\").trim();\n return { step, value };\n}\n\nfunction getOrCreateTrajectoryStep(\n byStep: Map<number, LabeledTrajectoryStep>,\n stepNumber: number,\n): LabeledTrajectoryStep {\n const existing = byStep.get(stepNumber);\n if (existing) {\n return existing;\n }\n const created: LabeledTrajectoryStep = { step: stepNumber };\n byStep.set(stepNumber, created);\n return created;\n}\n\nfunction inferTrajectoryBounds(\n query: string,\n trajectory: readonly LabeledTrajectoryStep[],\n): TrajectoryBounds {\n const minStep = trajectory[0]?.step ?? 0;\n const maxStep = trajectory[trajectory.length - 1]?.step ?? minStep;\n const normalized = normalizeTrajectoryQuery(query);\n\n const before = firstMatchInteger(\n normalized,\n /\\bbefore\\s+(?:step|action|observation)\\s+(\\d+)\\b/,\n );\n if (before !== undefined) {\n return clampTrajectoryBounds(minStep, before - 1, minStep, maxStep, \"before\");\n }\n\n const until = firstMatchInteger(\n normalized,\n /\\b(?:until|through|thru)\\s+(?:step|action|observation)\\s+(\\d+)\\b/,\n ) ?? firstMatchInteger(\n normalized,\n /\\bup\\s+to\\s+(?:and\\s+including\\s+)?(?:step|action|observation)\\s+(\\d+)\\b/,\n );\n if (until !== undefined) {\n return clampTrajectoryBounds(minStep, until, minStep, maxStep, \"through\");\n }\n\n const explicitRange = extractExplicitTrajectoryRange(normalized);\n if (explicitRange) {\n return clampTrajectoryBounds(\n explicitRange.start,\n explicitRange.end,\n minStep,\n maxStep,\n \"range\",\n );\n }\n\n const references = collectExplicitTurnReferences(query).map((reference) => reference.number);\n if (references.length > 1) {\n return clampTrajectoryBounds(\n Math.min(...references),\n Math.max(...references),\n minStep,\n maxStep,\n \"references\",\n );\n }\n\n const atStep = firstMatchInteger(\n normalized,\n /\\b(?:at|in|on)\\s+(?:step|action|observation)\\s+(\\d+)\\b/,\n );\n if (atStep !== undefined) {\n return clampTrajectoryBounds(minStep, atStep, minStep, maxStep, \"at\");\n }\n\n return { start: minStep, end: maxStep, reason: \"full\" };\n}\n\nfunction buildTrajectoryAnalysisLines(\n query: string,\n trajectory: readonly LabeledTrajectoryStep[],\n bounds: TrajectoryBounds,\n): string[] {\n const normalized = normalizeTrajectoryQuery(query);\n const explicitReferences = collectExplicitTurnReferences(query);\n const lines: string[] = [\n `Analyzed labeled action/observation transcript window: steps ${bounds.start}-${bounds.end} (${bounds.reason}).`,\n ];\n const hasQuotedObservationPair = extractQuotedObservations(query).length >= 2;\n const transition = findObservationTransition(query, trajectory);\n const entities = extractNumberedEntities(query);\n const asksActionRange = asksForTrajectoryActionRange(normalized) || transition !== undefined;\n const asksFrequency = asksForActionFrequency(normalized);\n const asksInventory = /\\binventory\\b/.test(normalized);\n const asksLocation = /\\blocations?\\b/.test(normalized) || /\\bwhere\\b/.test(normalized);\n const asksContainerHistory = /\\bcontainers?\\b/.test(normalized) ||\n /\\binteracted\\b/.test(normalized);\n const asksEntityState = /\\bstate\\b/.test(normalized) ||\n /\\bchanges?\\s+history\\b/.test(normalized) ||\n /\\bwhole\\s+changes?\\s+history\\b/.test(normalized);\n\n if (transition) {\n lines.push(\n `Matched quoted observations: Observation ${transition.fromStep} -> Observation ${transition.toStep}.`,\n );\n appendActionRangeLines(lines, trajectory, transition.fromStep + 1, transition.toStep, {\n includeObservations: true,\n heading: \"Actions that transform the quoted observations:\",\n });\n }\n\n if (\n asksActionRange &&\n !transition &&\n entities.length === 0 &&\n !hasQuotedObservationPair\n ) {\n if (bounds.reason === \"references\") {\n appendReferencedTrajectoryLines(lines, trajectory, explicitReferences, {\n includeObservations: false,\n heading: \"Actions at referenced steps:\",\n });\n } else {\n appendActionRangeLines(lines, trajectory, bounds.start, bounds.end, {\n includeObservations: false,\n heading: \"Actions in requested step window:\",\n });\n }\n }\n\n if (asksFrequency) {\n appendActionFrequencyLines(lines, trajectory, bounds);\n }\n\n appendSpatialTrajectoryInferenceLines(lines, query, trajectory, bounds);\n\n if (asksInventory) {\n appendInventoryChangeLines(lines, trajectory, bounds);\n }\n\n if (asksContainerHistory) {\n appendContainerStateChangeLines(lines, trajectory, bounds);\n }\n\n if (\n entities.length > 0 &&\n (asksEntityState ||\n asksLocation ||\n /actions?\\s+were\\s+performed/.test(normalized))\n ) {\n appendEntityTimelineLines(lines, trajectory, bounds, entities, {\n includeIndirectMentions: asksLocation,\n });\n }\n\n if (lines.length === 1 && explicitReferences.length > 0) {\n if (bounds.reason === \"references\") {\n appendReferencedTrajectoryLines(lines, trajectory, explicitReferences, {\n includeObservations: true,\n heading: \"Referenced trajectory evidence:\",\n });\n } else {\n appendActionRangeLines(lines, trajectory, bounds.start, bounds.end, {\n includeObservations: true,\n heading: \"Referenced trajectory evidence:\",\n });\n }\n }\n\n return lines.length === 1 ? [] : lines;\n}\n\nfunction appendReferencedTrajectoryLines(\n lines: string[],\n trajectory: readonly LabeledTrajectoryStep[],\n references: readonly ExplicitTurnReference[],\n options: { includeObservations: boolean; heading: string },\n): void {\n const byStep = new Map(trajectory.map((step) => [step.step, step]));\n const window = [...new Set(references.map((reference) => reference.number))]\n .sort((left, right) => left - right)\n .map((step) => byStep.get(step))\n .filter((step): step is LabeledTrajectoryStep => step !== undefined);\n if (window.length === 0) {\n return;\n }\n\n lines.push(options.heading);\n for (const step of window) {\n if (step.action) {\n lines.push(`[Action ${step.step}]: ${step.action}`);\n }\n if (options.includeObservations && step.observation) {\n lines.push(`[Observation ${step.step}]: ${oneLine(step.observation)}`);\n }\n }\n}\n\nfunction appendActionRangeLines(\n lines: string[],\n trajectory: readonly LabeledTrajectoryStep[],\n start: number,\n end: number,\n options: { includeObservations: boolean; heading: string },\n): void {\n const low = Math.min(start, end);\n const high = Math.max(start, end);\n if (high - low + 1 > TRAJECTORY_ANALYSIS_MAX_RANGE_STEPS) {\n lines.push(`${options.heading} requested range ${low}-${high} is too large for inline expansion.`);\n return;\n }\n const window = trajectory.filter((step) => step.step >= low && step.step <= high);\n if (window.length === 0) {\n return;\n }\n lines.push(options.heading);\n for (const step of window) {\n if (step.action) {\n lines.push(`[Action ${step.step}]: ${step.action}`);\n }\n if (options.includeObservations && step.observation) {\n lines.push(`[Observation ${step.step}]: ${oneLine(step.observation)}`);\n }\n }\n}\n\nfunction appendSpatialTrajectoryInferenceLines(\n lines: string[],\n query: string,\n trajectory: readonly LabeledTrajectoryStep[],\n bounds: TrajectoryBounds,\n): void {\n const normalized = normalizeTrajectoryQuery(query);\n const wantsRelativePosition = /\\brelative\\s+position\\b/.test(normalized) ||\n /\\bsteps?\\s+(?:to\\s+the\\s+)?(?:left|right|up|down)\\b/.test(normalized);\n const wantsRules = /\\brules?\\b/.test(normalized) ||\n /\\bwin\\s+condition\\b/.test(normalized) ||\n /\\bpush(?:able)?\\s+word\\b/.test(normalized);\n const wantsStrategicOrCounterfactual = /\\b(?:counterproductive|strategic|objective|instead|alternative|progress|goal|necessary|critical)\\b/.test(\n normalized,\n );\n if (!wantsRelativePosition && !wantsRules && !wantsStrategicOrCounterfactual) {\n return;\n }\n\n const window = boundedTrajectory(trajectory, bounds);\n const movementLines = collectMovementDeltaLines(query, window);\n if (movementLines.length > 0) {\n lines.push(\"Relative-position movement cues:\");\n lines.push(...movementLines);\n }\n\n const objectAlignmentWindow = objectAlignmentWindowForQuery(query, trajectory, bounds);\n const objectAlignmentLines = collectObjectAlignmentLines(\n query,\n objectAlignmentWindow,\n normalized,\n );\n if (objectAlignmentLines.length > 0) {\n lines.push(\"Object alignment cues:\");\n lines.push(...objectAlignmentLines);\n }\n\n const alternativeActionLines = collectAlternativeActionLines(query, trajectory);\n if (alternativeActionLines.length > 0) {\n lines.push(\"Counterfactual action cues:\");\n lines.push(...alternativeActionLines);\n }\n\n const ruleTextPositionLines = collectRuleTextPositionLines(window, normalized);\n if (ruleTextPositionLines.length > 0) {\n lines.push(\"Rule-text positioning cues:\");\n lines.push(...ruleTextPositionLines);\n }\n\n const ruleLines = collectRuleStateLines(window, normalized);\n if (ruleLines.length > 0) {\n lines.push(\"Rule-state cues:\");\n lines.push(...ruleLines);\n }\n}\n\nfunction collectMovementDeltaLines(\n query: string,\n window: readonly LabeledTrajectoryStep[],\n): string[] {\n const entities = extractRelativePositionEntities(query);\n const lines: string[] = [];\n const focusSteps = new Set(collectExplicitTurnReferences(query).map((reference) => reference.number));\n for (let index = 1; index < window.length; index += 1) {\n const previous = window[index - 1]!;\n const current = window[index]!;\n if (!previous.observation || !current.observation) {\n continue;\n }\n if (\n focusSteps.size > 0 &&\n !focusSteps.has(previous.step) &&\n !focusSteps.has(current.step)\n ) {\n continue;\n }\n const previousPositions = parseRelativePositions(previous.observation);\n const currentPositions = parseRelativePositions(current.observation);\n for (const [entity, previousPosition] of previousPositions.entries()) {\n if (\n entities.size > 0 &&\n ![...entities].some((candidate) => entity.includes(candidate))\n ) {\n continue;\n }\n const currentPosition = currentPositions.get(entity);\n if (!currentPosition) {\n continue;\n }\n const dx = currentPosition.x - previousPosition.x;\n const dy = currentPosition.y - previousPosition.y;\n if (dx === 0 && dy === 0) {\n continue;\n }\n const inferredAgentMove = inferAgentMoveFromRelativeDelta(dx, dy);\n if (!inferredAgentMove) {\n continue;\n }\n lines.push(\n `Observation ${previous.step}->${current.step}: ${entity} changed from ${previousPosition.raw} to ${currentPosition.raw}; this implies the agent moved ${inferredAgentMove} relative to a static object.`,\n );\n }\n }\n return lines.slice(0, 8);\n}\n\nfunction collectObjectAlignmentLines(\n query: string,\n window: readonly LabeledTrajectoryStep[],\n normalizedQuery: string,\n): string[] {\n const entities = extractRelativePositionEntities(query);\n const focusSteps = new Set(collectExplicitTurnReferences(query).map((reference) => reference.number));\n const lines: string[] = [];\n const strategicCueEntities = new Set<string>();\n\n for (let index = 1; index < window.length; index += 1) {\n const previous = window[index - 1]!;\n const current = window[index]!;\n const next = window[index + 1];\n if (!previous.observation || !current.observation || !current.action) {\n continue;\n }\n if (\n focusSteps.size > 0 &&\n !focusSteps.has(previous.step) &&\n !focusSteps.has(current.step) &&\n (!next || !focusSteps.has(next.step))\n ) {\n continue;\n }\n\n const move = agentMoveDeltaFromAction(current.action);\n if (!move) {\n continue;\n }\n\n const previousPositions = parseRelativePositions(previous.observation);\n const currentPositions = parseRelativePositions(current.observation);\n for (const [entity, previousPosition] of previousPositions.entries()) {\n if (entity.startsWith(\"rule \")) {\n continue;\n }\n if (\n entities.size > 0 &&\n ![...entities].some((candidate) => entity.includes(candidate))\n ) {\n continue;\n }\n if (currentPositions.has(entity)) {\n continue;\n }\n if (!relativePositionMatchesMove(previousPosition, move)) {\n continue;\n }\n\n lines.push(\n `Observation ${previous.step}->${current.step}: ${entity} was ${previousPosition.raw}, Action ${current.step} was ${move.direction}, and ${entity} is absent from Observation ${current.step}; infer a zero-offset same-tile alignment at the end of step ${current.step}, not that ${entity} was removed.`,\n );\n\n if (next?.observation && next.action) {\n const nextPositions = parseRelativePositions(next.observation);\n const nextPosition = nextPositions.get(entity);\n const nextMove = agentMoveDeltaFromAction(next.action);\n if (nextPosition && nextMove) {\n lines.push(\n `Observation ${current.step}->${next.step}: after Action ${next.step} ${nextMove.direction}, ${entity} reappears ${nextPosition.raw}; this confirms the step-${current.step} same-tile alignment and leaves the agent on the opposite side of ${entity} for a future ${oppositeDirection(nextMove.direction)} interaction or alignment.`,\n );\n if (\n normalizedQuery.includes(\"win\") ||\n (hasManeuverInterpretationCue(normalizedQuery) &&\n hasRelativeEntityInObservations(\"rule win\", [\n previous.observation,\n current.observation,\n next.observation,\n ]))\n ) {\n lines.push(\n `Because the question asks about a win-condition objective, treat that future ${oppositeDirection(nextMove.direction)} setup as supporting possible ${entity} manipulation or rule alignment toward a new win condition.`,\n );\n }\n }\n }\n\n if (\n hasManeuverInterpretationCue(normalizedQuery) &&\n !hasExactRelativeStateIntent(normalizedQuery) &&\n !strategicCueEntities.has(entity)\n ) {\n lines.push(\n `For ${entity} strategic maneuver questions, treat same-tile or vanishing-object cues as path-positioning evidence; the strategic goal should be framed as repositioning around a blocking object for later rule/object manipulation, not as pushing, collecting, or removing ${entity}.`,\n );\n strategicCueEntities.add(entity);\n }\n }\n }\n\n return lines.slice(0, 8);\n}\n\nfunction objectAlignmentWindowForQuery(\n query: string,\n trajectory: readonly LabeledTrajectoryStep[],\n bounds: TrajectoryBounds,\n): LabeledTrajectoryStep[] {\n const normalized = normalizeTrajectoryQuery(query);\n let end = bounds.end;\n if (/(?:after|vanish|vanished|disappear|disappeared|reappear|reappeared)/.test(normalized)) {\n for (const reference of collectExplicitTurnReferences(query)) {\n if (reference.number > end) {\n end = reference.number;\n }\n }\n }\n const maxStep = trajectory[trajectory.length - 1]?.step ?? bounds.end;\n return boundedTrajectory(trajectory, {\n start: bounds.start,\n end: Math.min(end, maxStep),\n reason: bounds.reason,\n });\n}\n\nfunction collectAlternativeActionLines(\n query: string,\n trajectory: readonly LabeledTrajectoryStep[],\n): string[] {\n const normalized = normalizeTrajectoryQuery(query);\n if (\n !/\\b(?:alternative|instead|would\\s+have|should\\s+have)\\b/.test(normalized) ||\n !/\\b(?:loop|zero\\s+progress|reversing|reverse|win\\s+condition|objective)\\b/.test(normalized)\n ) {\n return [];\n }\n\n const targetStep = firstMatchInteger(normalized, /\\bstart\\s+of\\s+step\\s+(\\d+)\\b/) ??\n firstMatchInteger(normalized, /\\binstead\\s+of\\s+(?:moving|going)\\s+[a-z]+\\s+(?:in|at|on)\\s+step\\s+(\\d+)\\b/);\n if (targetStep === undefined) {\n return [];\n }\n\n const byStep = new Map(trajectory.map((step) => [step.step, step]));\n const priorStep = byStep.get(targetStep - 1);\n const target = byStep.get(targetStep);\n if (!priorStep?.observation) {\n return [];\n }\n\n const unavailableMove = extractDisallowedMove(normalized) ??\n (target?.action ? agentMoveDeltaFromAction(target.action)?.direction : undefined);\n const positions = parseRelativePositions(priorStep.observation);\n const focus = selectAlternativeActionTargets(positions, normalized);\n if (focus.length === 0) {\n return [];\n }\n\n const scored = [\"left\", \"right\", \"up\", \"down\"]\n .map((direction) => agentMoveDeltaFromAction(direction)!)\n .filter((move) => move.direction !== unavailableMove)\n .map((move) => ({\n move,\n score: scoreMoveTowardTargets(move, focus),\n }))\n .sort((left, right) => {\n if (right.score !== left.score) {\n return right.score - left.score;\n }\n return left.move.direction.localeCompare(right.move.direction);\n });\n const best = scored[0];\n if (!best || best.score <= 0) {\n return [];\n }\n\n const targetDescriptions = focus.map(\n ({ entity, position }) => `${entity} at ${position.raw}`,\n );\n const lines = [\n `At the start of step ${targetStep}, use Observation ${priorStep.step} as the decision state: ${targetDescriptions.join(\"; \")}.`,\n `Excluding the actual/reversing move${unavailableMove ? ` ${unavailableMove}` : \"\"}, ${best.move.direction} is the alternative that most directly reduces distance to the win-condition rule text target(s).`,\n ];\n if (normalized.includes(\"win condition\")) {\n lines.push(\n `${best.move.direction} advances the objective of getting beside or behind IS/WIN rule text for later rule construction; moves toward unrelated object words should not be preferred when the question asks about creating a win condition.`,\n );\n }\n return lines;\n}\n\nfunction collectRuleTextPositionLines(\n window: readonly LabeledTrajectoryStep[],\n normalizedQuery: string,\n): string[] {\n if (!hasManeuverInterpretationCue(normalizedQuery)) {\n return [];\n }\n\n const firstByEntity = new Map<string, RelativePosition>();\n const lastByEntity = new Map<string, RelativePosition>();\n for (const step of window) {\n if (!step.observation) {\n continue;\n }\n for (const [entity, position] of parseRelativePositions(step.observation).entries()) {\n if (!entity.startsWith(\"rule \")) {\n continue;\n }\n if (!firstByEntity.has(entity)) {\n firstByEntity.set(entity, position);\n }\n lastByEntity.set(entity, position);\n }\n }\n\n const movedLeft = [...firstByEntity.entries()]\n .map(([entity, first]) => ({\n entity,\n first,\n last: lastByEntity.get(entity),\n }))\n .filter((item): item is {\n entity: string;\n first: RelativePosition;\n last: RelativePosition;\n } => item.last !== undefined && item.last.x < item.first.x)\n .sort((left, right) => left.entity.localeCompare(right.entity))\n .slice(0, 4);\n if (movedLeft.length === 0) {\n return [];\n }\n\n const descriptions = movedLeft.map(\n ({ entity, first, last }) =>\n `${entity} moved from ${first.raw} to ${last.raw}`,\n );\n return [\n `${descriptions.join(\"; \")}; this supports describing the maneuver as repositioning the agent to the right of those rule text blocks for later rule manipulation.`,\n ];\n}\n\nfunction collectRuleStateLines(\n window: readonly LabeledTrajectoryStep[],\n normalizedQuery: string,\n): string[] {\n const lines: string[] = [];\n const seenRules = new Set<string>();\n const seenObjects = new Set<string>();\n for (const step of window) {\n if (!step.observation) {\n continue;\n }\n for (const rule of parseActiveRules(step.observation)) {\n seenRules.add(rule);\n }\n for (const position of parseRelativePositions(step.observation).values()) {\n const normalizedEntity = normalizeEntity(position.entity);\n if (!normalizedEntity.startsWith(\"rule \")) {\n seenObjects.add(normalizedEntity);\n }\n }\n }\n\n const activeRules = [...seenRules].sort((left, right) => left.localeCompare(right));\n const asksExactRelativeState = hasExactRelativeStateIntent(normalizedQuery);\n if (activeRules.length > 0) {\n lines.push(`Active rules in this window: ${activeRules.join(\"; \")}.`);\n }\n for (const object of [...seenObjects].sort((left, right) => left.localeCompare(right))) {\n if (!activeRules.some((rule) => rule.startsWith(`${object} is `))) {\n lines.push(\n `No active rule for ${object} appears in this window; specifically, no \"${object} is push\" rule is active, so treat ${object} as not currently pushable and do not claim that a current move pushed ${object} unless the observations state that rule.`,\n );\n if (\n normalizedQuery.includes(object) &&\n hasManeuverInterpretationCue(normalizedQuery) &&\n !asksExactRelativeState\n ) {\n lines.push(\n `For ${object} maneuver questions, make bypassing or repositioning around a not-pushable obstacle the strategic goal unless an active rule says \"${object} is push\"; do not make overlap, collection, removal, or pushing the goal unless the question asks that exact relative state.`,\n );\n }\n }\n }\n return lines.slice(0, 8);\n}\n\nfunction appendActionFrequencyLines(\n lines: string[],\n trajectory: readonly LabeledTrajectoryStep[],\n bounds: TrajectoryBounds,\n): void {\n const counts = new Map<string, number>();\n for (const step of boundedTrajectory(trajectory, bounds)) {\n if (!step.action) continue;\n const verb = normalizeActionVerb(step.action);\n if (!verb) continue;\n counts.set(verb, (counts.get(verb) ?? 0) + 1);\n }\n if (counts.size === 0) {\n return;\n }\n const frequencies = [...counts.entries()].sort((left, right) =>\n right[1] - left[1] || left[0].localeCompare(right[0]),\n );\n lines.push(\n `Action frequency through requested window: ${frequencies\n .map(([verb, count]) => `${verb}=${count}`)\n .join(\", \")}.`,\n );\n}\n\nfunction appendInventoryChangeLines(\n lines: string[],\n trajectory: readonly LabeledTrajectoryStep[],\n bounds: TrajectoryBounds,\n): void {\n const held = new Set<string>();\n const changes: string[] = [];\n for (const step of boundedTrajectory(trajectory, bounds)) {\n if (!step.action) continue;\n const change = parseInventoryChange(step.action, held);\n if (change) {\n changes.push(`[Action ${step.step}]: ${step.action} => ${change}`);\n }\n }\n if (changes.length === 0) {\n return;\n }\n lines.push(\"Inventory changes from action transcript:\");\n lines.push(...changes);\n}\n\nfunction appendContainerStateChangeLines(\n lines: string[],\n trajectory: readonly LabeledTrajectoryStep[],\n bounds: TrajectoryBounds,\n): void {\n const changes = collectContainerStateChanges(trajectory, bounds);\n if (changes.length === 0) {\n return;\n }\n lines.push(\"Container open/close state changes:\");\n for (const change of changes) {\n lines.push(`[Action ${change.step}]: ${change.action} => ${change.entity} ${change.state}`);\n }\n}\n\nfunction appendEntityTimelineLines(\n lines: string[],\n trajectory: readonly LabeledTrajectoryStep[],\n bounds: TrajectoryBounds,\n entities: readonly string[],\n options: { includeIndirectMentions: boolean },\n): void {\n for (const entity of entities) {\n const directActions = boundedTrajectory(trajectory, bounds).filter(\n (step) =>\n step.action &&\n (isDirectEntityAction(step.action, entity) ||\n (options.includeIndirectMentions &&\n actionMentionsEntity(step.action, entity))),\n );\n const stateChanges = collectContainerStateChanges(trajectory, bounds).filter(\n (change) => normalizeEntity(change.entity) === normalizeEntity(entity),\n );\n if (directActions.length === 0 && stateChanges.length === 0) {\n continue;\n }\n\n lines.push(`Timeline for ${entity}:`);\n for (const step of directActions) {\n lines.push(`[Action ${step.step}]: ${step.action}`);\n }\n const inferredLocation = inferEntityLocation(trajectory, bounds, entity);\n if (inferredLocation) {\n lines.push(\n `Inferred ${entity} location at step ${bounds.end}: ${inferredLocation}.`,\n );\n }\n if (stateChanges.length > 0) {\n const latest = stateChanges[stateChanges.length - 1]!;\n lines.push(\n `Latest ${entity} state at step ${bounds.end}: ${latest.state}; state changes: ${stateChanges\n .map((change) => `${change.step}:${change.state}`)\n .join(\", \")}.`,\n );\n }\n }\n}\n\nfunction boundedTrajectory(\n trajectory: readonly LabeledTrajectoryStep[],\n bounds: TrajectoryBounds,\n): LabeledTrajectoryStep[] {\n return trajectory.filter((step) => step.step >= bounds.start && step.step <= bounds.end);\n}\n\nfunction collectContainerStateChanges(\n trajectory: readonly LabeledTrajectoryStep[],\n bounds: TrajectoryBounds,\n): Array<{ step: number; action: string; entity: string; state: \"open\" | \"closed\" }> {\n const changes: Array<{\n step: number;\n action: string;\n entity: string;\n state: \"open\" | \"closed\";\n }> = [];\n for (const step of boundedTrajectory(trajectory, bounds)) {\n if (!step.action) continue;\n const match = /^(open|close)\\s+(.+)$/i.exec(step.action.trim());\n if (!match) continue;\n const verb = match[1]!.toLowerCase();\n changes.push({\n step: step.step,\n action: step.action,\n entity: match[2]!.trim(),\n state: verb === \"open\" ? \"open\" : \"closed\",\n });\n }\n return changes;\n}\n\nfunction parseInventoryChange(action: string, held: Set<string>): string | undefined {\n const normalized = action.trim();\n const take = /^take\\s+(.+?)\\s+from\\s+(.+)$/i.exec(normalized);\n if (take) {\n const object = take[1]!.trim();\n const source = take[2]!.trim();\n held.add(normalizeEntity(object));\n return `inventory added ${object}; ${object} removed from ${source}`;\n }\n\n const place = /^(?:move|put|place|insert)\\s+(.+?)\\s+(?:to|in|into|on)\\s+(.+)$/i.exec(\n normalized,\n );\n if (place) {\n const object = place[1]!.trim();\n const destination = place[2]!.trim();\n const key = normalizeEntity(object);\n const wasHeld = held.delete(key);\n return wasHeld\n ? `inventory removed ${object}; ${object} moved to ${destination}`\n : `${object} moved to ${destination}`;\n }\n\n const drop = /^drop\\s+(.+)$/i.exec(normalized);\n if (drop) {\n const object = drop[1]!.trim();\n held.delete(normalizeEntity(object));\n return `inventory removed ${object}`;\n }\n\n return undefined;\n}\n\nfunction asksForTrajectoryActionRange(normalizedQuery: string): boolean {\n return [\n /\\bwhat\\s+actions?\\s+were\\s+performed\\b/,\n /\\bwhich\\s+actions?\\s+were\\s+performed\\b/,\n /\\bsequence\\s+of\\s+actions?\\b/,\n /\\bactions?\\s+(?:between|from|during|within)\\b/,\n ].some((pattern) => pattern.test(normalizedQuery));\n}\n\nfunction asksForActionFrequency(normalizedQuery: string): boolean {\n return /\\btypes?\\s+of\\s+actions?\\b/.test(normalizedQuery) ||\n /\\bfrequen/.test(normalizedQuery) ||\n /\\bhow\\s+often\\b/.test(normalizedQuery);\n}\n\nfunction extractExplicitTrajectoryRange(\n normalizedQuery: string,\n): { start: number; end: number } | undefined {\n const patterns = [\n /\\b(?:between|from|during|within)\\s+(?:steps?|actions?|observations?)\\s+(\\d+)\\s*(?:-|to|through|thru|and)\\s*(?:(?:steps?|actions?|observations?)\\s+)?(\\d+)\\b/,\n /\\b(?:steps?|actions?|observations?)\\s+(\\d+)\\s*(?:-|to|through|thru)\\s*(?:(?:steps?|actions?|observations?)\\s+)?(\\d+)\\b/,\n ];\n for (const pattern of patterns) {\n const match = pattern.exec(normalizedQuery);\n if (!match) continue;\n const start = parseNonNegativeIntegerToken(match[1] ?? \"\");\n const end = parseNonNegativeIntegerToken(match[2] ?? \"\");\n if (start !== undefined && end !== undefined) {\n return { start, end };\n }\n }\n return undefined;\n}\n\nfunction findObservationTransition(\n query: string,\n trajectory: readonly LabeledTrajectoryStep[],\n): ObservationTransition | undefined {\n const quoted = extractQuotedObservations(query);\n if (quoted.length < 2) {\n return undefined;\n }\n const fromCandidates = findObservationStepCandidates(trajectory, quoted[0]!);\n const toCandidates = findObservationStepCandidates(trajectory, quoted[1]!);\n if (fromCandidates.length === 0 || toCandidates.length === 0) {\n return undefined;\n }\n\n let best: ObservationTransition | undefined;\n for (const fromStep of fromCandidates) {\n for (const toStep of toCandidates) {\n if (toStep <= fromStep) {\n continue;\n }\n if (\n !best ||\n toStep - fromStep < best.toStep - best.fromStep ||\n (toStep - fromStep === best.toStep - best.fromStep &&\n fromStep < best.fromStep)\n ) {\n best = { fromStep, toStep };\n }\n }\n }\n if (best) {\n return best;\n }\n\n return undefined;\n}\n\nfunction extractQuotedObservations(query: string): string[] {\n const observations: string[] = [];\n for (const match of query.matchAll(/\\bobservation:\\s*\"([\\s\\S]*?)\"/gi)) {\n const value = match[1]?.trim();\n if (value) {\n observations.push(value);\n }\n }\n return observations;\n}\n\nfunction findObservationStepCandidates(\n trajectory: readonly LabeledTrajectoryStep[],\n quotedObservation: string,\n): number[] {\n const normalizedQuoted = normalizeObservationText(quotedObservation);\n const normalizedQuotedCore = normalizeObservationCore(quotedObservation);\n const candidates = new Set<number>();\n\n for (const step of trajectory) {\n if (!step.observation) continue;\n const normalizedObservation = normalizeObservationText(step.observation);\n if (\n normalizedObservation === normalizedQuoted ||\n normalizedObservation.includes(normalizedQuoted) ||\n normalizedQuoted.includes(normalizedObservation)\n ) {\n candidates.add(step.step);\n continue;\n }\n\n const normalizedObservationCore = normalizeObservationCore(step.observation);\n if (\n normalizedObservationCore.length > 0 &&\n normalizedQuotedCore.length > 0 &&\n (normalizedObservationCore === normalizedQuotedCore ||\n normalizedObservationCore.includes(normalizedQuotedCore) ||\n normalizedQuotedCore.includes(normalizedObservationCore))\n ) {\n candidates.add(step.step);\n }\n }\n\n return [...candidates].sort((left, right) => left - right);\n}\n\nfunction extractNumberedEntities(query: string): string[] {\n const entities = new Set<string>();\n for (const match of query.matchAll(/\\b([a-z][a-z0-9_-]*(?:\\s+[a-z][a-z0-9_-]*)?)\\s+(\\d+)\\b/gi)) {\n const rawPrefix = match[1]?.trim().toLowerCase();\n const number = match[2]?.trim();\n if (!rawPrefix || !number || isTrajectoryReferenceEntity(rawPrefix)) {\n continue;\n }\n const words = rawPrefix.split(/\\s+/);\n const entityHead = words[words.length - 1]!;\n if (isTrajectoryReferenceEntity(entityHead)) {\n continue;\n }\n entities.add(`${entityHead} ${number}`);\n }\n return [...entities].sort((left, right) => left.localeCompare(right));\n}\n\nfunction isTrajectoryReferenceEntity(value: string): boolean {\n return [\n \"action\",\n \"actions\",\n \"observation\",\n \"observations\",\n \"step\",\n \"steps\",\n \"turn\",\n \"turns\",\n ].includes(value);\n}\n\nfunction actionMentionsEntity(action: string, entity: string): boolean {\n const normalizedAction = normalizeTrajectoryQuery(action);\n const normalizedEntity = normalizeEntity(entity);\n return normalizedAction === normalizedEntity ||\n normalizedAction.startsWith(`${normalizedEntity} `) ||\n normalizedAction.endsWith(` ${normalizedEntity}`) ||\n normalizedAction.includes(` ${normalizedEntity} `);\n}\n\nfunction isDirectEntityAction(action: string, entity: string): boolean {\n const normalizedAction = normalizeTrajectoryQuery(action);\n const normalizedEntity = normalizeEntity(entity);\n return [\n `open ${normalizedEntity}`,\n `close ${normalizedEntity}`,\n `examine ${normalizedEntity}`,\n ].includes(normalizedAction);\n}\n\nfunction inferEntityLocation(\n trajectory: readonly LabeledTrajectoryStep[],\n bounds: TrajectoryBounds,\n entity: string,\n): string | undefined {\n const normalizedEntity = normalizeEntity(entity);\n let location: string | undefined;\n for (const step of boundedTrajectory(trajectory, bounds)) {\n if (!step.action) continue;\n const action = step.action.trim();\n const take = /^take\\s+(.+?)\\s+from\\s+(.+)$/i.exec(action);\n if (take && normalizeEntity(take[1]!) === normalizedEntity) {\n location = \"inventory\";\n continue;\n }\n const move = /^(?:move|put|place|insert)\\s+(.+?)\\s+(?:to|in|into|on)\\s+(.+)$/i.exec(\n action,\n );\n if (move && normalizeEntity(move[1]!) === normalizedEntity) {\n location = move[2]!.trim();\n }\n }\n return location;\n}\n\nfunction normalizeActionVerb(action: string): string | undefined {\n const match = /^([a-z][a-z0-9_-]*)\\b/i.exec(action.trim());\n return match?.[1]?.toLowerCase();\n}\n\nfunction clampTrajectoryBounds(\n start: number,\n end: number,\n minStep: number,\n maxStep: number,\n reason: string,\n): TrajectoryBounds {\n const low = Math.max(minStep, Math.min(start, end));\n const high = Math.min(maxStep, Math.max(start, end));\n return {\n start: Math.min(low, high),\n end: Math.max(low, high),\n reason,\n };\n}\n\nfunction firstMatchInteger(query: string, pattern: RegExp): number | undefined {\n const match = pattern.exec(query);\n return match ? parseNonNegativeIntegerToken(match[1] ?? \"\") : undefined;\n}\n\nexport function normalizeTurnExpansionEnd(stats: {\n totalMessages: number;\n maxTurnIndex?: number;\n}): number {\n const messageCountEnd = Math.max(0, Math.floor(stats.totalMessages) - 1);\n if (\n typeof stats.maxTurnIndex !== \"number\" ||\n !Number.isFinite(stats.maxTurnIndex)\n ) {\n return messageCountEnd;\n }\n\n return Math.max(messageCountEnd, Math.floor(stats.maxTurnIndex));\n}\n\nfunction truncateTrajectoryAnalysisLines(lines: string[], maxChars: number): string[] {\n const result: string[] = [];\n let used = 0;\n for (const line of lines.slice(0, TRAJECTORY_ANALYSIS_MAX_LINES)) {\n const separator = result.length === 0 ? 0 : 1;\n const remaining = maxChars - used - separator;\n if (remaining <= 0) {\n break;\n }\n const clipped = line.length > remaining\n ? remaining <= 3\n ? line.slice(0, remaining)\n : `${line.slice(0, remaining - 3).trimEnd()}...`\n : line;\n if (clipped.length === 0) {\n break;\n }\n result.push(clipped);\n used += separator + clipped.length;\n }\n return result;\n}\n\nfunction oneLine(value: string): string {\n return value.replace(/\\s+/g, \" \").trim();\n}\n\nfunction normalizeEntity(value: string): string {\n return normalizeTrajectoryQuery(value);\n}\n\nfunction normalizeObservationText(value: string): string {\n return value.toLowerCase().replace(/\\s+/g, \" \").trim();\n}\n\nfunction normalizeObservationCore(value: string): string {\n return normalizeObservationText(\n value.split(/\\bthe current available actions are:/i)[0] ?? value,\n );\n}\n\nfunction parseActiveRules(observation: string): string[] {\n const rulesBlock = /active rules:\\s*([\\s\\S]*?)(?:\\n\\s*\\n|objects on the map:|$)/i.exec(\n observation,\n )?.[1];\n if (!rulesBlock) {\n return [];\n }\n return rulesBlock\n .split(/\\n+/)\n .map((line) => normalizeTrajectoryQuery(line))\n .filter((line) => line.length > 0);\n}\n\nfunction parseRelativePositions(observation: string): Map<string, RelativePosition> {\n const positions = new Map<string, RelativePosition>();\n const objectsBlock = /objects on the map:\\s*([\\s\\S]*)$/i.exec(observation)?.[1];\n if (!objectsBlock) {\n return positions;\n }\n for (const rawLine of objectsBlock.split(/\\n+/)) {\n const line = rawLine.trim();\n if (!line) {\n continue;\n }\n const parsed = parseRelativePositionLine(line);\n if (parsed) {\n positions.set(normalizeEntity(parsed.entity), parsed);\n }\n }\n return positions;\n}\n\nfunction parseRelativePositionLine(line: string): RelativePosition | undefined {\n const normalizedLine = line.replace(/`/g, \"\").trim();\n const positionStart = findRelativePositionStart(normalizedLine);\n if (positionStart <= 0) {\n return undefined;\n }\n const entity = normalizedLine.slice(0, positionStart).trim();\n const rawPosition = normalizedLine.slice(positionStart).trim();\n if (!entity || !rawPosition) {\n return undefined;\n }\n let x = 0;\n let y = 0;\n let found = false;\n for (const phrase of rawPosition.split(/\\s+and\\s+/i)) {\n const parsed = parseRelativePositionPhrase(phrase);\n if (!parsed) {\n return undefined;\n }\n found = true;\n if (parsed.direction === \"left\") x -= parsed.amount;\n if (parsed.direction === \"right\") x += parsed.amount;\n if (parsed.direction === \"up\") y -= parsed.amount;\n if (parsed.direction === \"down\") y += parsed.amount;\n }\n return found ? { entity, x, y, raw: rawPosition } : undefined;\n}\n\nfunction findRelativePositionStart(value: string): number {\n let best = -1;\n for (const direction of [\"left\", \"right\", \"up\", \"down\"]) {\n for (const prefix of [\n ` step to the ${direction}`,\n ` steps to the ${direction}`,\n ` step ${direction}`,\n ` steps ${direction}`,\n ]) {\n const index = value.toLowerCase().indexOf(prefix);\n if (index < 0) {\n continue;\n }\n let cursor = index - 1;\n while (cursor >= 0 && /\\d/.test(value[cursor]!)) {\n cursor -= 1;\n }\n if (cursor === index - 1) {\n continue;\n }\n const start = cursor + 1;\n best = best < 0 ? start : Math.min(best, start);\n }\n }\n return best;\n}\n\nfunction parseRelativePositionPhrase(\n phrase: string,\n): { amount: number; direction: \"left\" | \"right\" | \"up\" | \"down\" } | undefined {\n const tokens = phrase.trim().toLowerCase().split(/\\s+/);\n if (tokens.length < 3) {\n return undefined;\n }\n const amount = parseNonNegativeIntegerToken(tokens[0] ?? \"\");\n if (amount === undefined) {\n return undefined;\n }\n const direction = tokens[tokens.length - 1];\n if (\n direction !== \"left\" &&\n direction !== \"right\" &&\n direction !== \"up\" &&\n direction !== \"down\"\n ) {\n return undefined;\n }\n if (tokens[1] !== \"step\" && tokens[1] !== \"steps\") {\n return undefined;\n }\n return { amount, direction };\n}\n\nfunction extractRelativePositionEntities(query: string): Set<string> {\n const entities = new Set<string>();\n\n for (const value of extractBacktickValues(query)) {\n addRelativePositionEntity(entities, value);\n }\n\n const tokens = normalizeTrajectoryQuery(query).split(\" \").filter(Boolean);\n for (let index = 0; index < tokens.length; index += 1) {\n const token = tokens[index];\n if (token === \"relative\" && tokens[index + 1] === \"position\") {\n const candidate = nearestEntityTokenBefore(tokens, index);\n if (candidate) {\n addRelativePositionEntity(entities, candidate);\n }\n }\n if (token === \"rule\" || token === \"text\" || token === \"object\") {\n const candidate = tokens[index + 1];\n if (candidate && isRelativeEntityToken(candidate)) {\n addRelativePositionEntity(entities, candidate);\n }\n }\n }\n return entities;\n}\n\nfunction extractBacktickValues(value: string): string[] {\n const results: string[] = [];\n let start = value.indexOf(\"`\");\n while (start >= 0) {\n const end = value.indexOf(\"`\", start + 1);\n if (end < 0) {\n break;\n }\n const inner = value.slice(start + 1, end).trim();\n if (inner) {\n results.push(inner);\n }\n start = value.indexOf(\"`\", end + 1);\n }\n return results;\n}\n\nfunction nearestEntityTokenBefore(\n tokens: readonly string[],\n beforeIndex: number,\n): string | undefined {\n for (let index = beforeIndex - 1; index >= Math.max(0, beforeIndex - 6); index -= 1) {\n const token = tokens[index];\n if (token && isRelativeEntityToken(token)) {\n return token;\n }\n }\n return undefined;\n}\n\nfunction isRelativeEntityToken(token: string): boolean {\n return token.length > 1 &&\n ![\n \"block\",\n \"object\",\n \"position\",\n \"relative\",\n \"rule\",\n \"step\",\n \"steps\",\n \"text\",\n \"the\",\n ].includes(token) &&\n !isAllDigits(token);\n}\n\nfunction addRelativePositionEntity(entities: Set<string>, value: string): void {\n const normalized = normalizeEntity(value);\n if (!normalized || !isRelativeEntityToken(normalized)) {\n return;\n }\n entities.add(normalized);\n entities.add(normalizeEntity(`rule ${normalized}`));\n}\n\nfunction hasManeuverInterpretationCue(normalizedQuery: string): boolean {\n return [\n \"strategic\",\n \"goal\",\n \"necessary\",\n \"critical\",\n \"maneuver\",\n \"path\",\n \"blocking\",\n \"bypass\",\n \"reposition\",\n ].some((cue) => normalizedQuery.includes(cue));\n}\n\nfunction hasExactRelativeStateIntent(normalizedQuery: string): boolean {\n return /(?:exact\\s+position|relative\\s+to|same\\s+tile|zero[- ]offset|vanished|reappeared)/.test(\n normalizedQuery,\n );\n}\n\nfunction isAllDigits(value: string): boolean {\n if (value.length === 0) {\n return false;\n }\n for (const char of value) {\n if (char < \"0\" || char > \"9\") {\n return false;\n }\n }\n return true;\n}\n\nfunction inferAgentMoveFromRelativeDelta(dx: number, dy: number): string | undefined {\n if (dx === 1 && dy === 0) return \"left\";\n if (dx === -1 && dy === 0) return \"right\";\n if (dx === 0 && dy === 1) return \"up\";\n if (dx === 0 && dy === -1) return \"down\";\n return undefined;\n}\n\nfunction agentMoveDeltaFromAction(action: string): AgentMoveDelta | undefined {\n const verb = normalizeActionVerb(action);\n if (verb === \"up\") return { direction: \"up\", dx: 0, dy: -1 };\n if (verb === \"down\") return { direction: \"down\", dx: 0, dy: 1 };\n if (verb === \"left\") return { direction: \"left\", dx: -1, dy: 0 };\n if (verb === \"right\") return { direction: \"right\", dx: 1, dy: 0 };\n return undefined;\n}\n\nfunction extractDisallowedMove(normalizedQuery: string): AgentMoveDelta[\"direction\"] | undefined {\n for (const direction of [\"up\", \"down\", \"left\", \"right\"] as const) {\n if (\n normalizedQuery.includes(`instead of moving ${direction}`) ||\n normalizedQuery.includes(`instead of going ${direction}`)\n ) {\n return direction;\n }\n }\n return undefined;\n}\n\nfunction selectAlternativeActionTargets(\n positions: ReadonlyMap<string, RelativePosition>,\n normalizedQuery: string,\n): Array<{ entity: string; position: RelativePosition }> {\n const targets: Array<{ entity: string; position: RelativePosition }> = [];\n if (normalizedQuery.includes(\"win condition\") || normalizedQuery.includes(\"win\")) {\n for (const entity of [\"rule win\", \"rule is\"]) {\n const position = positions.get(entity);\n if (position) {\n targets.push({ entity, position });\n }\n }\n return targets;\n }\n\n for (const [entity, position] of positions.entries()) {\n if (entity.startsWith(\"rule \")) {\n targets.push({ entity, position });\n }\n }\n return targets;\n}\n\nfunction scoreMoveTowardTargets(\n move: AgentMoveDelta,\n targets: readonly { entity: string; position: RelativePosition }[],\n): number {\n let score = 0;\n for (const { position } of targets) {\n const before = Math.abs(position.x) + Math.abs(position.y);\n const after = Math.abs(position.x - move.dx) + Math.abs(position.y - move.dy);\n score += before - after;\n }\n return score;\n}\n\nfunction hasRelativeEntityInObservations(\n entity: string,\n observations: readonly (string | undefined)[],\n): boolean {\n const normalizedEntity = normalizeEntity(entity);\n for (const observation of observations) {\n if (!observation) {\n continue;\n }\n if (parseRelativePositions(observation).has(normalizedEntity)) {\n return true;\n }\n }\n return false;\n}\n\nfunction relativePositionMatchesMove(\n position: RelativePosition,\n move: AgentMoveDelta,\n): boolean {\n return position.x === move.dx && position.y === move.dy;\n}\n\nfunction oppositeDirection(direction: AgentMoveDelta[\"direction\"]): string {\n if (direction === \"up\") return \"downward\";\n if (direction === \"down\") return \"upward\";\n if (direction === \"left\") return \"rightward\";\n return \"leftward\";\n}\n\nfunction normalizeTrajectoryQuery(value: string): string {\n return value.toLowerCase().replace(/[^a-z0-9_-]+/g, \" \").trim();\n}\n\nfunction appendExpandedEvidence(\n evidenceItems: Array<{\n id: string;\n sessionId: string;\n turnIndex: number;\n role: string;\n content: string;\n }>,\n seenTurns: Set<string>,\n sessionId: string,\n expanded: Array<{ turn_index: number; role: string; content: string }>,\n): void {\n for (const message of expanded) {\n appendEvidenceItem(evidenceItems, seenTurns, {\n id: `${sessionId}:${message.turn_index}`,\n sessionId,\n turnIndex: message.turn_index,\n role: message.role,\n content: message.content,\n });\n }\n}\n\nfunction appendEvidenceItem<T extends { id: string }>(\n evidenceItems: T[],\n seenTurns: Set<string>,\n item: T,\n): void {\n if (seenTurns.has(item.id)) {\n return;\n }\n seenTurns.add(item.id);\n evidenceItems.push(item);\n}\n\nexport function collectExplicitTurnReferences(\n query: string,\n): ExplicitTurnReference[] {\n const references = new Map<string, ExplicitTurnReference>();\n const addReference = (value: number, label: string) => {\n const existing = references.get(String(value));\n references.set(String(value), {\n number: value,\n includeDirectTurn:\n (existing?.includeDirectTurn ?? false) || label === \"turn\",\n });\n };\n\n const tokens = tokenizeReferenceQuery(query);\n for (let index = 0; index < tokens.length; index += 1) {\n const label = normalizeReferenceLabel(tokens[index]);\n if (!label) {\n continue;\n }\n\n const parsed = parseReferenceNumbers(tokens, index + 1);\n for (const number of parsed.numbers) {\n addReference(number, label);\n }\n index = Math.max(index, parsed.nextIndex - 1);\n }\n\n return [...references.values()].sort((left, right) => left.number - right.number);\n}\n\nexport function collectLexicalCues(\n query: string,\n options: {\n includeBenchmarkAnchorCues?: boolean;\n includeStructuredPlanCues?: boolean;\n } = {},\n): string[] {\n const cues = new Set<string>();\n\n for (const match of query.matchAll(/\\b[A-Za-z][A-Za-z0-9]{0,12}\\d+:\\d+\\b/g)) {\n cues.add(match[0]);\n }\n for (const match of query.matchAll(/\\b\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}(?::\\d{2})?Z?)?\\b/g)) {\n cues.add(match[0]);\n }\n for (const cue of collectTemporalLexicalCues(query)) {\n cues.add(cue);\n }\n for (const cue of collectQuestionSlotCues(query)) {\n cues.add(cue);\n }\n if (options.includeBenchmarkAnchorCues) {\n for (const cue of collectBenchmarkAnchorCues(query)) {\n cues.add(cue);\n }\n }\n if (options.includeStructuredPlanCues) {\n for (const cue of collectStructuredPlanCues(query)) {\n cues.add(cue);\n }\n }\n for (const match of query.matchAll(/\\b(?:session|source|chat|plan|task|event|file|tool)[_-][A-Za-z0-9][A-Za-z0-9_.:-]{0,80}\\b/gi)) {\n cues.add(match[0]);\n }\n for (const match of query.matchAll(/\\b[A-Z][a-z]{1,30}(?:\\s+[A-Z][a-z]{1,30}){0,2}\\b/g)) {\n const value = normalizeSpeakerNameCue(match[0]);\n if (value) {\n cues.add(value);\n }\n }\n for (const match of query.matchAll(/\\[([A-Za-z0-9][A-Za-z0-9_.:/ -]{1,80})\\]/g)) {\n const value = match[1]?.trim();\n if (value) {\n cues.add(value);\n }\n }\n\n return [...cues].sort((left, right) => left.localeCompare(right));\n}\n\nexport function collectQuestionSlotCues(query: string): string[] {\n const cues = new Set<string>();\n for (const match of query.matchAll(\n /\\b(?:what|which)\\s+([a-z][a-z0-9_-]{2,30})\\s+(?:does|do|did|is|are|was|were|should|would|could|can|will)\\b/gi,\n )) {\n const value = match[1]?.toLowerCase();\n if (value && !QUESTION_SLOT_STOPWORDS.has(value)) {\n cues.add(value);\n }\n }\n return [...cues].sort((left, right) => left.localeCompare(right));\n}\n\nexport function collectBenchmarkAnchorCues(query: string): string[] {\n const cues = new Set<string>();\n const normalizedQuery = query.toLowerCase().replace(/\\s+/g, \" \");\n for (const [phrase, cue] of BENCHMARK_ABILITY_CUES) {\n if (containsBoundedPhrase(normalizedQuery, phrase)) {\n cues.add(cue);\n }\n }\n\n const tokens = tokenizeAnchorQuery(query);\n for (let index = 0; index < tokens.length; index += 1) {\n let prefix = normalizeBenchmarkAnchorPrefix(tokens[index]);\n if (!prefix) {\n continue;\n }\n\n let valueIndex = index + 1;\n if (\n prefix === \"source\" &&\n tokens[valueIndex]?.toLowerCase() === \"chat\"\n ) {\n prefix = \"source_chat\";\n valueIndex += 1;\n }\n const maybeIdLabel = tokens[valueIndex]?.toLowerCase();\n if (maybeIdLabel === \"id\" || maybeIdLabel === \"ids\") {\n valueIndex += 1;\n }\n\n let consumedValue = false;\n for (\n let currentValueIndex = valueIndex;\n currentValueIndex < tokens.length;\n currentValueIndex += 1\n ) {\n const rawValue = tokens[currentValueIndex];\n const normalizedValue = rawValue?.toLowerCase();\n if (!rawValue || normalizeBenchmarkAnchorPrefix(rawValue)) {\n break;\n }\n if (normalizedValue === \"and\" || normalizedValue === \"or\") {\n continue;\n }\n if (BENCHMARK_ANCHOR_VALUE_STOPWORDS.has(normalizedValue)) {\n break;\n }\n if (!isBenchmarkAnchorValue(rawValue)) {\n break;\n }\n addBenchmarkAnchorCues(cues, prefix, rawValue);\n consumedValue = true;\n index = currentValueIndex;\n }\n if (!consumedValue) {\n continue;\n }\n }\n\n return [...cues].sort((left, right) => left.localeCompare(right));\n}\n\nfunction addBenchmarkAnchorCues(\n cues: Set<string>,\n prefix: string,\n rawValue: string,\n): void {\n cues.add(`${prefix}_id=${rawValue}`);\n cues.add(`${prefix}-${rawValue}`);\n if (prefix === \"source_chat\") {\n cues.add(`chat_id=${rawValue}`);\n }\n}\n\nfunction isBenchmarkAnchorValue(token: string): boolean {\n for (const char of token) {\n if (isAsciiDigitChar(char)) {\n return true;\n }\n }\n return false;\n}\n\nfunction isAsciiDigitChar(char: string): boolean {\n const code = char.charCodeAt(0);\n return code >= 48 && code <= 57;\n}\n\nfunction normalizeBenchmarkAnchorPrefix(token: string | undefined): string | undefined {\n switch (token?.toLowerCase()) {\n case \"ability\":\n case \"chat\":\n case \"plan\":\n case \"rubric\":\n case \"source\":\n return token.toLowerCase();\n default:\n return undefined;\n }\n}\n\nfunction tokenizeAnchorQuery(query: string): string[] {\n const tokens: string[] = [];\n let current = \"\";\n const push = () => {\n const token = trimTrailingAnchorTokenPunctuation(current);\n if (token.length > 0) {\n tokens.push(token);\n }\n current = \"\";\n };\n\n for (const char of query) {\n if (\n isAsciiLetterOrDigit(char) ||\n char === \"_\" ||\n char === \"-\" ||\n char === \".\" ||\n char === \":\"\n ) {\n current += char;\n continue;\n }\n push();\n }\n push();\n return tokens;\n}\n\nfunction trimTrailingAnchorTokenPunctuation(token: string): string {\n let end = token.length;\n while (end > 0) {\n const char = token[end - 1];\n if (\n char !== \".\" &&\n char !== \":\" &&\n char !== \";\" &&\n char !== \"!\" &&\n char !== \"?\"\n ) {\n break;\n }\n end -= 1;\n }\n return token.slice(0, end);\n}\n\nexport function collectStructuredPlanCues(query: string): string[] {\n const cues = new Set<string>();\n const normalizedQuery = query.toLowerCase().replace(/\\s+/g, \" \");\n for (const cue of STRUCTURED_PLAN_FIELD_CUES) {\n if (containsBoundedPhrase(normalizedQuery, cue)) {\n cues.add(cue);\n }\n }\n if (cues.size === 0) {\n return [];\n }\n for (const cue of STRUCTURED_PLAN_DEPENDENCY_CUES) {\n if (containsBoundedPhrase(normalizedQuery, cue)) {\n cues.add(cue);\n }\n }\n return [...cues].sort((left, right) => left.localeCompare(right));\n}\n\nfunction containsBoundedPhrase(normalizedHaystack: string, phrase: string): boolean {\n let searchFrom = 0;\n while (searchFrom < normalizedHaystack.length) {\n const index = normalizedHaystack.indexOf(phrase, searchFrom);\n if (index < 0) {\n return false;\n }\n const afterIndex = index + phrase.length;\n if (\n isTemporalCueBoundary(normalizedHaystack[index - 1]) &&\n isTemporalCueBoundary(normalizedHaystack[afterIndex])\n ) {\n return true;\n }\n searchFrom = afterIndex;\n }\n return false;\n}\n\nexport function collectTemporalLexicalCues(query: string): string[] {\n const cues = new Set<string>();\n const normalizedQuery = query.toLowerCase().replace(/\\s+/g, \" \");\n for (const cue of RELATIVE_TEMPORAL_CUES) {\n if (containsBoundedPhrase(normalizedQuery, cue)) {\n cues.add(cue);\n }\n }\n return [...cues].sort((left, right) => left.localeCompare(right));\n}\n\nfunction hasLatestStateIntent(query: string): boolean {\n return collectTemporalLexicalCues(query).some((cue) =>\n LATEST_STATE_CUES.has(cue),\n );\n}\n\nfunction sortLexicalCueResults<\n T extends { session_id: string; turn_index: number; score?: number },\n>(results: T[], preferLatest: boolean): T[] {\n return [...results].sort((left, right) => {\n if (preferLatest) {\n const sessionOrder = left.session_id.localeCompare(right.session_id);\n if (sessionOrder !== 0) {\n return sessionOrder;\n }\n const turnOrder = right.turn_index - left.turn_index;\n if (turnOrder !== 0) {\n return turnOrder;\n }\n return (right.score ?? 0) - (left.score ?? 0);\n }\n const scoreDelta = (right.score ?? 0) - (left.score ?? 0);\n if (scoreDelta !== 0) {\n return scoreDelta;\n }\n const sessionOrder = left.session_id.localeCompare(right.session_id);\n if (sessionOrder !== 0) {\n return sessionOrder;\n }\n return left.turn_index - right.turn_index;\n });\n}\n\nfunction normalizeSpeakerNameCue(value: string): string | undefined {\n const words = value.trim().split(/\\s+/).filter(Boolean);\n while (words.length > 0 && SPEAKER_NAME_STOPWORDS.has(words[0]!)) {\n words.shift();\n }\n while (words.length > 0 && SPEAKER_NAME_STOPWORDS.has(words[words.length - 1]!)) {\n words.pop();\n }\n return words.length > 0 ? words.join(\" \") : undefined;\n}\n\nfunction isTemporalCueBoundary(char: string | undefined): boolean {\n if (!char) {\n return true;\n }\n return !isAsciiLetterOrDigit(char);\n}\n\nfunction tokenizeReferenceQuery(query: string): string[] {\n const tokens: string[] = [];\n let current = \"\";\n\n const flushCurrent = () => {\n if (current) {\n tokens.push(current);\n current = \"\";\n }\n };\n\n for (const char of query) {\n if (isAsciiLetterOrDigit(char)) {\n current += char;\n continue;\n }\n\n flushCurrent();\n if (char === \"#\" || char === \",\") {\n tokens.push(char);\n } else if (isReferenceDash(char)) {\n tokens.push(\"-\");\n }\n }\n flushCurrent();\n\n return tokens;\n}\n\nfunction parseReferenceNumbers(\n tokens: readonly string[],\n startIndex: number,\n): { numbers: number[]; nextIndex: number } {\n const numbers: number[] = [];\n let lastNumber: number | undefined;\n let pendingRangeStart: number | undefined;\n let index = startIndex;\n const scanEnd = Math.min(\n tokens.length,\n startIndex + DEFAULT_MAX_REFERENCES * REFERENCE_SCAN_TOKEN_FACTOR,\n );\n\n for (; index < scanEnd; index += 1) {\n const token = tokens[index]!;\n const normalized = token.toLowerCase();\n const value = parseNonNegativeIntegerToken(token);\n if (value !== undefined) {\n if (pendingRangeStart !== undefined) {\n numbers.push(...expandReferenceRange(pendingRangeStart, value));\n pendingRangeStart = undefined;\n } else {\n numbers.push(value);\n }\n lastNumber = value;\n continue;\n }\n\n if (normalized === \"#\" || normalized === \"number\" || normalized === \",\") {\n continue;\n }\n\n if (\n normalized === \"-\" ||\n normalized === \"to\" ||\n normalized === \"through\" ||\n normalized === \"thru\"\n ) {\n if (lastNumber !== undefined) {\n if (numbers[numbers.length - 1] === lastNumber) {\n numbers.pop();\n }\n pendingRangeStart = lastNumber;\n }\n continue;\n }\n\n if (normalized === \"and\" && numbers.length > 0) {\n continue;\n }\n\n if (normalizeReferenceLabel(token)) {\n break;\n }\n\n break;\n }\n\n if (pendingRangeStart !== undefined) {\n numbers.push(pendingRangeStart);\n }\n\n return {\n numbers: [...new Set(numbers)],\n nextIndex: index,\n };\n}\n\nfunction expandReferenceRange(start: number, end: number): number[] {\n const low = Math.min(start, end);\n const high = Math.max(start, end);\n if (high - low + 1 > DEFAULT_MAX_REFERENCES) {\n return [start, end];\n }\n\n const values: number[] = [];\n for (let value = low; value <= high; value += 1) {\n values.push(value);\n }\n return values;\n}\n\nfunction normalizeReferenceLabel(token: string | undefined): string | undefined {\n const normalized = token?.toLowerCase();\n switch (normalized) {\n case \"step\":\n case \"steps\":\n return \"step\";\n case \"turn\":\n case \"turns\":\n return \"turn\";\n case \"action\":\n case \"actions\":\n return \"action\";\n case \"observation\":\n case \"observations\":\n return \"observation\";\n default:\n return undefined;\n }\n}\n\nfunction candidateTurnIndexesForReference(\n reference: ExplicitTurnReference,\n): number[] {\n const candidates = new Set<number>();\n if (reference.includeDirectTurn) {\n for (let offset = -1; offset <= 1; offset += 1) {\n candidates.add(reference.number + offset);\n }\n }\n\n const pairedBase = reference.number * 2;\n // Action/observation traces are stored as paired turns:\n // turn 2N => [Action N]\n // turn 2N + 1 => [Observation N]\n // Include the preceding observation so transition questions can compare the\n // state before and after the action, but avoid pulling in Action N+1. Future\n // actions caused explicit step questions to drift to the next step.\n for (let offset = -1; offset <= 1; offset += 1) {\n candidates.add(pairedBase + offset);\n }\n\n return [...candidates].sort((left, right) => left - right);\n}\n\nfunction parseNonNegativeIntegerToken(token: string): number | undefined {\n if (token.length === 0) {\n return undefined;\n }\n\n let value = 0;\n for (const char of token) {\n const code = char.charCodeAt(0);\n if (code < 48 || code > 57) {\n return undefined;\n }\n value = value * 10 + (code - 48);\n }\n return value;\n}\n\nfunction normalizePositiveInteger(value: number | undefined, fallback: number): number {\n if (typeof value !== \"number\" || !Number.isFinite(value)) {\n return fallback;\n }\n return Math.max(0, Math.floor(value));\n}\n\nfunction isAsciiLetterOrDigit(char: string): boolean {\n const code = char.charCodeAt(0);\n return (code >= 48 && code <= 57)\n || (code >= 65 && code <= 90)\n || (code >= 97 && code <= 122);\n}\n\nfunction isReferenceDash(char: string): boolean {\n return char === \"-\"\n || char === \"\\u2010\"\n || char === \"\\u2011\"\n || char === \"\\u2012\"\n || char === \"\\u2013\"\n || char === \"\\u2014\"\n || char === \"\\u2015\";\n}\n"],"mappings":";;;;;AAmDA,IAAM,oBAAoB;AAC1B,IAAM,yBAAyB;AAC/B,IAAM,yBAAyB;AAC/B,IAAM,8BAA8B;AACpC,IAAM,+BAA+B;AACrC,IAAM,4BAA4B;AAClC,IAAM,2BAA2B;AACjC,IAAM,yBAAyB;AAC/B,IAAM,6BAA6B;AACnC,IAAM,2BAA2B;AACjC,IAAM,iDAAiD;AACvD,IAAM,iCAAiC;AACvC,IAAM,sCAAsC;AAC5C,IAAM,gCAAgC;AACtC,IAAM,oBAAoB,oBAAI,IAAI;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACD,IAAM,6BAA6B,oBAAI,IAAI;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACD,IAAM,kCAAkC,oBAAI,IAAI;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACD,IAAM,yBAAyB,oBAAI,IAAI;AAAA,EACrC,CAAC,0BAA0B,gCAAgC;AAAA,EAC3D,CAAC,oBAAoB,0BAA0B;AAAA,EAC/C,CAAC,2BAA2B,iCAAiC;AAAA,EAC7D,CAAC,2BAA2B,iCAAiC;AAAA,EAC7D,CAAC,yBAAyB,+BAA+B;AAC3D,CAAC;AACD,IAAM,mCAAmC,oBAAI,IAAI;AAAA,EAC/C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACD,IAAM,yBAAyB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACA,IAAM,yBAAyB,oBAAI,IAAI;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACD,IAAM,0BAA0B,oBAAI,IAAI;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,eAAsB,8BACpB,SACiB;AACjB,QAAM,SAAS,QAAQ;AACvB,QAAM,QAAQ,QAAQ,MAAM,KAAK;AACjC,QAAM,WAAW,yBAAyB,QAAQ,UAAU,iBAAiB;AAC7E,MAAI,CAAC,UAAU,MAAM,WAAW,KAAK,YAAY,GAAG;AAClD,WAAO;AAAA,EACT;AAEA,QAAM,gBAAgB;AAAA,IACpB,QAAQ;AAAA,IACR;AAAA,EACF;AACA,MAAI,iBAAiB,GAAG;AACtB,WAAO;AAAA,EACT;AAEA,QAAM,gBAOD,CAAC;AACN,QAAM,YAAY,oBAAI,IAAY;AAElC,QAAM,6BAA6B;AAAA,IACjC;AAAA,IACA,WAAW,QAAQ;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,0BAA0B;AAAA,IAC9B;AAAA,IACA,WAAW,QAAQ;AAAA,IACnB;AAAA,IACA;AAAA,IACA,4BAA4B,QAAQ;AAAA,IACpC,2BAA2B,QAAQ;AAAA,IACnC;AAAA,IACA;AAAA,EACF,CAAC;AAED,SAAO,kBAAkB,eAAe;AAAA,IACtC,OAAO;AAAA,IACP;AAAA,IACA,cAAc;AAAA,MACZ,QAAQ;AAAA,MACR;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEA,eAAsB,qCACpB,SACiB;AACjB,QAAM,SAAS,QAAQ;AACvB,QAAM,YAAY,QAAQ;AAC1B,QAAM,QAAQ,QAAQ,MAAM,KAAK;AACjC,QAAM,WAAW,yBAAyB,QAAQ,UAAU,iBAAiB;AAC7E,MAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,YAAY,MAAM,WAAW,KAAK,YAAY,GAAG;AACpF,WAAO;AAAA,EACT;AAEA,MAAI,CAAC,4BAA4B,KAAK,GAAG;AACvC,WAAO;AAAA,EACT;AAEA,QAAM,QAAQ,MAAM,OAAO,SAAS,SAAS;AAC7C,QAAM,gBAAgB,KAAK,IAAI,GAAG,KAAK,MAAM,MAAM,aAAa,CAAC;AACjE,MAAI,iBAAiB,GAAG;AACtB,WAAO;AAAA,EACT;AACA,QAAM,eAAe,0BAA0B,KAAK;AAEpD,QAAM,WAAW,MAAM,OAAO;AAAA,IAC5B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,QAAM,aAAa,uBAAuB,QAAQ;AAClD,MAAI,WAAW,WAAW,GAAG;AAC3B,WAAO;AAAA,EACT;AAEA,QAAM,SAAS,sBAAsB,OAAO,UAAU;AACtD,QAAM,QAAQ,6BAA6B,OAAO,YAAY,MAAM;AACpE,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO;AAAA,EACT;AAEA,QAAM,SAAS;AACf,QAAM,aAAa,WAAW,OAAO,SAAS;AAC9C,MAAI,cAAc,GAAG;AACnB,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,gCAAgC,OAAO,UAAU;AACjE,SAAO,QAAQ,WAAW,IAAI,KAAK,GAAG,MAAM;AAAA,EAAK,QAAQ,KAAK,IAAI,CAAC;AACrE;AAEA,eAAe,6BAA6B,SAa1B;AAChB,MAAI,CAAC,QAAQ,WAAW;AACtB;AAAA,EACF;AAEA,QAAM,aAAa,8BAA8B,QAAQ,KAAK,EAAE;AAAA,IAC9D;AAAA,IACA,QAAQ;AAAA,EACV;AACA,MAAI,WAAW,WAAW,GAAG;AAC3B;AAAA,EACF;AAEA,QAAM,qCAAqC;AAAA,IACzC,QAAQ,QAAQ;AAAA,IAChB,WAAW,QAAQ;AAAA,IACnB,OAAO,QAAQ;AAAA,IACf;AAAA,IACA,eAAe,QAAQ;AAAA,IACvB,WAAW,QAAQ;AAAA,EACrB,CAAC;AAED,QAAM,UAAU,oBAAI,IAAkD;AACtE,aAAW,aAAa,YAAY;AAClC,eAAW,UAAU,iCAAiC,SAAS,GAAG;AAChE,UAAI,SAAS,GAAG;AACd;AAAA,MACF;AAEA,YAAM,WAAW,KAAK,IAAI,GAAG,SAAS,4BAA4B;AAClE,YAAM,SAAS,SAAS;AACxB,cAAQ,IAAI,GAAG,QAAQ,IAAI,MAAM,IAAI,EAAE,UAAU,OAAO,CAAC;AAAA,IAC3D;AAAA,EACF;AAEA,aAAW,UAAU,CAAC,GAAG,QAAQ,OAAO,CAAC,EAAE;AAAA,IACzC,CAAC,MAAM,UAAU,KAAK,WAAW,MAAM,YAAY,KAAK,SAAS,MAAM;AAAA,EACzE,GAAG;AACD,UAAM,WAAW,MAAM,QAAQ,OAAO;AAAA,MACpC,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,OAAO;AAAA,MACP;AAAA,IACF;AACA;AAAA,MACE,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;AAEA,eAAe,qCAAqC,SAa3B;AACvB,QAAM,WAAW,oBAAI,IAAY;AAEjC,aAAW,aAAa,QAAQ,YAAY;AAC1C,QAAI,UAAU,mBAAmB;AAC/B;AAAA,IACF;AAEA,UAAM,OAAO,MAAM;AAAA,MACjB,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,QAAQ;AAAA,IACV;AACA,QAAI,KAAK,WAAW,GAAG;AACrB;AAAA,IACF;AAEA,aAAS,IAAI,UAAU,MAAM;AAC7B,QAAI,kBAAkB;AACtB,eAAW,OAAO,MAAM;AACtB,UAAI,mBAAmB,gDAAgD;AACrE;AAAA,MACF;AAEA,YAAM,EAAE,UAAU,OAAO,IAAI,2BAA2B,KAAK;AAAA,QAC3D,kBAAkB,6BAA6B,QAAQ,KAAK;AAAA,MAC9D,CAAC;AACD,YAAM,WAAW,MAAM,QAAQ,OAAO;AAAA,QACpC,IAAI;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,UAAI,CAAC,kCAAkC,UAAU,UAAU,MAAM,GAAG;AAClE;AAAA,MACF;AACA,UAAI,SAAS,WAAW,GAAG;AACzB,2BAAmB,QAAQ,eAAe,QAAQ,WAAW;AAAA,UAC3D,IAAI,GAAG,IAAI,UAAU,IAAI,IAAI,UAAU;AAAA,UACvC,WAAW,IAAI;AAAA,UACf,WAAW,IAAI;AAAA,UACf,MAAM,IAAI;AAAA,UACV,SAAS,IAAI;AAAA,QACf,CAAC;AACD;AAAA,MACF;AACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,IAAI;AAAA,QACJ;AAAA,MACF;AACA,yBAAmB;AAAA,IACrB;AAAA,EACF;AAEA,SAAO;AACT;AAEA,eAAe,6BACb,QACA,iBACA,WASA;AACA,QAAM,OAAO,oBAAI,IASf;AAEF,aAAW,aAAa,CAAC,UAAU,aAAa,GAAY;AAC1D,UAAM,QAAQ,cAAc,WAAW,WAAW;AAClD,eAAW,SAAS,CAAC,IAAI,KAAK,IAAI,eAAe,KAAK,GAAG,KAAK,IAAI,eAAe,EAAE,GAAG;AACpF,YAAM,UAAU,MAAM,OAAO;AAAA,QAC3B;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,iBAAW,UAAU,SAAS;AAC5B,YACE,CAAC,qBAAqB,OAAO,MAAM,SAAS,KAC5C,CAAC,yBAAyB,OAAO,SAAS,WAAW,eAAe,GACpE;AACA;AAAA,QACF;AACA,aAAK,IAAI,GAAG,OAAO,UAAU,IAAI,OAAO,UAAU,IAAI,SAAS,IAAI;AAAA,UACjE,YAAY,OAAO;AAAA,UACnB,MAAM,OAAO;AAAA,UACb,SAAS,OAAO;AAAA,UAChB,YAAY,OAAO;AAAA,UACnB;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAEA,QAAM,oBAAoB,iCAAiC;AAAA,IACzD,QAAQ;AAAA,IACR,mBAAmB;AAAA,EACrB,CAAC;AACD,SAAO,CAAC,GAAG,KAAK,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,UAAU;AAC9C,UAAM,eAAe,KAAK,WAAW,cAAc,MAAM,UAAU;AACnE,QAAI,iBAAiB,GAAG;AACtB,aAAO;AAAA,IACT;AACA,UAAM,eAAe,oBAAoB,KAAK,YAAY,iBAAiB;AAC3E,UAAM,gBAAgB,oBAAoB,MAAM,YAAY,iBAAiB;AAC7E,QAAI,iBAAiB,eAAe;AAClC,aAAO,eAAe;AAAA,IACxB;AACA,WAAO,KAAK,aAAa,MAAM,cAAc,KAAK,UAAU,cAAc,MAAM,SAAS;AAAA,EAC3F,CAAC;AACH;AAEA,SAAS,oBAAoB,WAAmB,YAAuC;AACrF,MAAI,UAAU,OAAO;AACrB,aAAW,aAAa,YAAY;AAClC,cAAU,KAAK,IAAI,SAAS,KAAK,IAAI,YAAY,SAAS,CAAC;AAAA,EAC7D;AACA,SAAO;AACT;AAEA,SAAS,2BAA2B,KAGjC,UAA0C,CAAC,GAAyC;AACrF,QAAM,iBAAiB,QAAQ,qBAAqB,OAAO,IAAI;AAC/D,MAAI,IAAI,cAAc,UAAU;AAC9B,WAAO;AAAA,MACL,UAAU,KAAK,IAAI,GAAG,IAAI,aAAa,CAAC;AAAA,MACxC,QAAQ,IAAI,aAAa,IAAI;AAAA,IAC/B;AAAA,EACF;AAEA,SAAO;AAAA,IACL,UAAU,KAAK,IAAI,GAAG,IAAI,aAAa,CAAC;AAAA,IACxC,QAAQ,IAAI,aAAa;AAAA,EAC3B;AACF;AAEA,SAAS,6BAA6B,OAAwB;AAC5D,QAAM,MAAM,MAAM,YAAY;AAC9B,QAAM,aAAa,IAAI,QAAQ,eAAe,GAAG,EAAE,KAAK;AACxD,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,KAAK,CAAC,YAAY,QAAQ,KAAK,UAAU,CAAC,GAAG;AAC7C,WAAO;AAAA,EACT;AAEA,MAAI,CAAC,kBAAkB,UAAU,GAAG;AAClC,WAAO;AAAA,EACT;AAEA,MAAI,CAAC,8BAA8B,GAAG,GAAG;AACvC,WAAO;AAAA,EACT;AAEA,SAAO,CAAC,gCAAgC,UAAU,KAChD,4BAA4B,UAAU;AAC1C;AAEA,SAAS,8BAA8B,OAAwB;AAC7D,SAAO,0BAA0B,KAAK,KAAK,6BAA6B,KAAK;AAC/E;AAEA,SAAS,kBAAkB,iBAAkC;AAC3D,QAAM,YAAY;AAClB,QAAM,YAAY;AAClB,SAAO;AAAA,IACL,IAAI;AAAA,MACF,MAAM,SAAS,oDAAoD,SAAS;AAAA,IAC9E;AAAA,IACA,IAAI;AAAA,MACF,MAAM,SAAS,UAAU,SAAS,UAAU,SAAS,WAAW,SAAS;AAAA,IAC3E;AAAA,EACF,EAAE,KAAK,CAAC,YAAY,QAAQ,KAAK,eAAe,CAAC;AACnD;AAEA,SAAS,0BAA0B,OAAwB;AACzD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF,EAAE,KAAK,CAAC,YAAY,QAAQ,KAAK,KAAK,CAAC;AACzC;AAEA,SAAS,6BAA6B,OAAwB;AAC5D,SAAO,qFAAqF;AAAA,IAC1F;AAAA,EACF;AACF;AAEA,SAAS,gCAAgC,iBAAkC;AACzE,SAAO,uJAAuJ;AAAA,IAC5J;AAAA,EACF;AACF;AAEA,SAAS,4BAA4B,iBAAkC;AACrE,QAAM,UAAU;AAChB,SAAO,IAAI;AAAA,IACT,SAAS,OAAO,sEAAsE,OAAO;AAAA,EAC/F,EAAE,KAAK,eAAe;AACxB;AAEA,SAAS,yBACP,SACA,WACA,iBACS;AACT,QAAM,QAAQ,cAAc,WAAW,WAAW;AAClD,QAAM,gBAAgB,OAAO,eAAe,EAAE,QAAQ,uBAAuB,MAAM;AACnF,SAAO,IAAI;AAAA,IACT,eAAe,KAAK,OAAO,aAAa;AAAA,IACxC;AAAA,EACF,EAAE,KAAK,OAAO;AAChB;AAEA,SAAS,qBACP,MACA,WACS;AACT,MAAI,cAAc,UAAU;AAC1B,WAAO,SAAS;AAAA,EAClB;AACA,SAAO,SAAS;AAClB;AAEA,SAAS,kCACP,UACA,iBACS;AACT,MAAI,YAAY;AAChB,MAAI,iBAAiB;AACrB,aAAW,WAAW,UAAU;AAC9B,QACE,qBAAqB,QAAQ,MAAM,QAAQ,KAC3C,yBAAyB,QAAQ,SAAS,UAAU,eAAe,GACnE;AACA,kBAAY;AAAA,IACd;AACA,QACE,qBAAqB,QAAQ,MAAM,aAAa,KAChD,yBAAyB,QAAQ,SAAS,eAAe,eAAe,GACxE;AACA,uBAAiB;AAAA,IACnB;AAAA,EACF;AACA,SAAO,aAAa;AACtB;AAEA,eAAe,0BAA0B,SAgBvB;AAChB,QAAM,OAAO,mBAAmB,QAAQ,OAAO;AAAA,IAC7C,4BAA4B,QAAQ;AAAA,IACpC,2BAA2B,QAAQ;AAAA,EACrC,CAAC,EAAE,MAAM,GAAG,QAAQ,aAAa;AACjC,QAAM,eAAe,qBAAqB,QAAQ,KAAK;AACvD,aAAW,OAAO,MAAM;AACtB,UAAM,UAAU;AAAA,MACd,MAAM,QAAQ,OAAO;AAAA,QACnB;AAAA,QACA;AAAA,QACA,QAAQ;AAAA,MACV;AAAA,MACA;AAAA,IACF;AACA,eAAW,UAAU,SAAS;AAC5B,YAAM,eAAe,eAAe,IAAI;AACxC,YAAM,WAAW,KAAK,IAAI,GAAG,OAAO,aAAa,YAAY;AAC7D,YAAM,SAAS,OAAO,aAAa;AACnC,YAAM,WAAW,MAAM,QAAQ,OAAO;AAAA,QACpC,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,UAAI,SAAS,WAAW,GAAG;AACzB,2BAAmB,QAAQ,eAAe,QAAQ,WAAW;AAAA,UAC3D,IAAI,GAAG,OAAO,UAAU,IAAI,OAAO,UAAU;AAAA,UAC7C,WAAW,OAAO;AAAA,UAClB,WAAW,OAAO;AAAA,UAClB,MAAM,OAAO;AAAA,UACb,SAAS,OAAO;AAAA,UAChB,GAAI,OAAO,OAAO,UAAU,WAAW,EAAE,OAAO,OAAO,MAAM,IAAI,CAAC;AAAA,QACpE,CAAC;AACD;AAAA,MACF;AACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAkCA,SAAS,4BAA4B,OAAwB;AAC3D,QAAM,aAAa,yBAAyB,KAAK;AACjD,MAAI,8BAA8B,KAAK,EAAE,SAAS,GAAG;AACnD,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,KAAK,CAAC,YAAY,QAAQ,KAAK,UAAU,CAAC;AAC9C;AAEA,SAAS,uBACP,UACyB;AACzB,QAAM,SAAS,oBAAI,IAAmC;AAEtD,aAAW,WAAW,UAAU;AAC9B,UAAM,SAAS,qBAAqB,QAAQ,SAAS,QAAQ;AAC7D,QAAI,UAAU,qBAAqB,QAAQ,MAAM,QAAQ,GAAG;AAC1D,YAAM,OAAO,0BAA0B,QAAQ,OAAO,IAAI;AAC1D,WAAK,SAAS,OAAO;AACrB,WAAK,kBAAkB,QAAQ;AAC/B;AAAA,IACF;AAEA,UAAM,cAAc,qBAAqB,QAAQ,SAAS,aAAa;AACvE,QAAI,eAAe,qBAAqB,QAAQ,MAAM,aAAa,GAAG;AACpE,YAAM,OAAO,0BAA0B,QAAQ,YAAY,IAAI;AAC/D,WAAK,cAAc,YAAY;AAC/B,WAAK,uBAAuB,QAAQ;AAAA,IACtC;AAAA,EACF;AAEA,SAAO,CAAC,GAAG,OAAO,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,UAAU,KAAK,OAAO,MAAM,IAAI;AAC1E;AAEA,SAAS,qBACP,SACA,OAC6C;AAC7C,QAAM,QAAQ,IAAI;AAAA,IAChB,eAAe,KAAK;AAAA,IACpB;AAAA,EACF,EAAE,KAAK,OAAO;AACd,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,EACT;AACA,QAAM,OAAO,6BAA6B,MAAM,CAAC,KAAK,EAAE;AACxD,MAAI,SAAS,QAAW;AACtB,WAAO;AAAA,EACT;AACA,QAAM,SAAS,MAAM,CAAC,KAAK,IAAI,KAAK;AACpC,SAAO,EAAE,MAAM,MAAM;AACvB;AAEA,SAAS,0BACP,QACA,YACuB;AACvB,QAAM,WAAW,OAAO,IAAI,UAAU;AACtC,MAAI,UAAU;AACZ,WAAO;AAAA,EACT;AACA,QAAM,UAAiC,EAAE,MAAM,WAAW;AAC1D,SAAO,IAAI,YAAY,OAAO;AAC9B,SAAO;AACT;AAEA,SAAS,sBACP,OACA,YACkB;AAClB,QAAM,UAAU,WAAW,CAAC,GAAG,QAAQ;AACvC,QAAM,UAAU,WAAW,WAAW,SAAS,CAAC,GAAG,QAAQ;AAC3D,QAAM,aAAa,yBAAyB,KAAK;AAEjD,QAAM,SAAS;AAAA,IACb;AAAA,IACA;AAAA,EACF;AACA,MAAI,WAAW,QAAW;AACxB,WAAO,sBAAsB,SAAS,SAAS,GAAG,SAAS,SAAS,QAAQ;AAAA,EAC9E;AAEA,QAAM,QAAQ;AAAA,IACZ;AAAA,IACA;AAAA,EACF,KAAK;AAAA,IACH;AAAA,IACA;AAAA,EACF;AACA,MAAI,UAAU,QAAW;AACvB,WAAO,sBAAsB,SAAS,OAAO,SAAS,SAAS,SAAS;AAAA,EAC1E;AAEA,QAAM,gBAAgB,+BAA+B,UAAU;AAC/D,MAAI,eAAe;AACjB,WAAO;AAAA,MACL,cAAc;AAAA,MACd,cAAc;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,aAAa,8BAA8B,KAAK,EAAE,IAAI,CAAC,cAAc,UAAU,MAAM;AAC3F,MAAI,WAAW,SAAS,GAAG;AACzB,WAAO;AAAA,MACL,KAAK,IAAI,GAAG,UAAU;AAAA,MACtB,KAAK,IAAI,GAAG,UAAU;AAAA,MACtB;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,SAAS;AAAA,IACb;AAAA,IACA;AAAA,EACF;AACA,MAAI,WAAW,QAAW;AACxB,WAAO,sBAAsB,SAAS,QAAQ,SAAS,SAAS,IAAI;AAAA,EACtE;AAEA,SAAO,EAAE,OAAO,SAAS,KAAK,SAAS,QAAQ,OAAO;AACxD;AAEA,SAAS,6BACP,OACA,YACA,QACU;AACV,QAAM,aAAa,yBAAyB,KAAK;AACjD,QAAM,qBAAqB,8BAA8B,KAAK;AAC9D,QAAM,QAAkB;AAAA,IACtB,gEAAgE,OAAO,KAAK,IAAI,OAAO,GAAG,KAAK,OAAO,MAAM;AAAA,EAC9G;AACA,QAAM,2BAA2B,0BAA0B,KAAK,EAAE,UAAU;AAC5E,QAAM,aAAa,0BAA0B,OAAO,UAAU;AAC9D,QAAM,WAAW,wBAAwB,KAAK;AAC9C,QAAM,kBAAkB,6BAA6B,UAAU,KAAK,eAAe;AACnF,QAAM,gBAAgB,uBAAuB,UAAU;AACvD,QAAM,gBAAgB,gBAAgB,KAAK,UAAU;AACrD,QAAM,eAAe,iBAAiB,KAAK,UAAU,KAAK,YAAY,KAAK,UAAU;AACrF,QAAM,uBAAuB,kBAAkB,KAAK,UAAU,KAC5D,iBAAiB,KAAK,UAAU;AAClC,QAAM,kBAAkB,YAAY,KAAK,UAAU,KACjD,yBAAyB,KAAK,UAAU,KACxC,iCAAiC,KAAK,UAAU;AAElD,MAAI,YAAY;AACd,UAAM;AAAA,MACJ,4CAA4C,WAAW,QAAQ,mBAAmB,WAAW,MAAM;AAAA,IACrG;AACA,2BAAuB,OAAO,YAAY,WAAW,WAAW,GAAG,WAAW,QAAQ;AAAA,MACpF,qBAAqB;AAAA,MACrB,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAEA,MACE,mBACA,CAAC,cACD,SAAS,WAAW,KACpB,CAAC,0BACD;AACA,QAAI,OAAO,WAAW,cAAc;AAClC,sCAAgC,OAAO,YAAY,oBAAoB;AAAA,QACrE,qBAAqB;AAAA,QACrB,SAAS;AAAA,MACX,CAAC;AAAA,IACH,OAAO;AACL,6BAAuB,OAAO,YAAY,OAAO,OAAO,OAAO,KAAK;AAAA,QAClE,qBAAqB;AAAA,QACrB,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,EACF;AAEA,MAAI,eAAe;AACjB,+BAA2B,OAAO,YAAY,MAAM;AAAA,EACtD;AAEA,wCAAsC,OAAO,OAAO,YAAY,MAAM;AAEtE,MAAI,eAAe;AACjB,+BAA2B,OAAO,YAAY,MAAM;AAAA,EACtD;AAEA,MAAI,sBAAsB;AACxB,oCAAgC,OAAO,YAAY,MAAM;AAAA,EAC3D;AAEA,MACE,SAAS,SAAS,MACjB,mBACC,gBACA,8BAA8B,KAAK,UAAU,IAC/C;AACA,8BAA0B,OAAO,YAAY,QAAQ,UAAU;AAAA,MAC7D,yBAAyB;AAAA,IAC3B,CAAC;AAAA,EACH;AAEA,MAAI,MAAM,WAAW,KAAK,mBAAmB,SAAS,GAAG;AACvD,QAAI,OAAO,WAAW,cAAc;AAClC,sCAAgC,OAAO,YAAY,oBAAoB;AAAA,QACrE,qBAAqB;AAAA,QACrB,SAAS;AAAA,MACX,CAAC;AAAA,IACH,OAAO;AACL,6BAAuB,OAAO,YAAY,OAAO,OAAO,OAAO,KAAK;AAAA,QAClE,qBAAqB;AAAA,QACrB,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SAAO,MAAM,WAAW,IAAI,CAAC,IAAI;AACnC;AAEA,SAAS,gCACP,OACA,YACA,YACA,SACM;AACN,QAAM,SAAS,IAAI,IAAI,WAAW,IAAI,CAAC,SAAS,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC;AAClE,QAAM,SAAS,CAAC,GAAG,IAAI,IAAI,WAAW,IAAI,CAAC,cAAc,UAAU,MAAM,CAAC,CAAC,EACxE,KAAK,CAAC,MAAM,UAAU,OAAO,KAAK,EAClC,IAAI,CAAC,SAAS,OAAO,IAAI,IAAI,CAAC,EAC9B,OAAO,CAAC,SAAwC,SAAS,MAAS;AACrE,MAAI,OAAO,WAAW,GAAG;AACvB;AAAA,EACF;AAEA,QAAM,KAAK,QAAQ,OAAO;AAC1B,aAAW,QAAQ,QAAQ;AACzB,QAAI,KAAK,QAAQ;AACf,YAAM,KAAK,WAAW,KAAK,IAAI,MAAM,KAAK,MAAM,EAAE;AAAA,IACpD;AACA,QAAI,QAAQ,uBAAuB,KAAK,aAAa;AACnD,YAAM,KAAK,gBAAgB,KAAK,IAAI,MAAM,QAAQ,KAAK,WAAW,CAAC,EAAE;AAAA,IACvE;AAAA,EACF;AACF;AAEA,SAAS,uBACP,OACA,YACA,OACA,KACA,SACM;AACN,QAAM,MAAM,KAAK,IAAI,OAAO,GAAG;AAC/B,QAAM,OAAO,KAAK,IAAI,OAAO,GAAG;AAChC,MAAI,OAAO,MAAM,IAAI,qCAAqC;AACxD,UAAM,KAAK,GAAG,QAAQ,OAAO,oBAAoB,GAAG,IAAI,IAAI,qCAAqC;AACjG;AAAA,EACF;AACA,QAAM,SAAS,WAAW,OAAO,CAAC,SAAS,KAAK,QAAQ,OAAO,KAAK,QAAQ,IAAI;AAChF,MAAI,OAAO,WAAW,GAAG;AACvB;AAAA,EACF;AACA,QAAM,KAAK,QAAQ,OAAO;AAC1B,aAAW,QAAQ,QAAQ;AACzB,QAAI,KAAK,QAAQ;AACf,YAAM,KAAK,WAAW,KAAK,IAAI,MAAM,KAAK,MAAM,EAAE;AAAA,IACpD;AACA,QAAI,QAAQ,uBAAuB,KAAK,aAAa;AACnD,YAAM,KAAK,gBAAgB,KAAK,IAAI,MAAM,QAAQ,KAAK,WAAW,CAAC,EAAE;AAAA,IACvE;AAAA,EACF;AACF;AAEA,SAAS,sCACP,OACA,OACA,YACA,QACM;AACN,QAAM,aAAa,yBAAyB,KAAK;AACjD,QAAM,wBAAwB,0BAA0B,KAAK,UAAU,KACrE,sDAAsD,KAAK,UAAU;AACvE,QAAM,aAAa,aAAa,KAAK,UAAU,KAC7C,sBAAsB,KAAK,UAAU,KACrC,2BAA2B,KAAK,UAAU;AAC5C,QAAM,iCAAiC,qGAAqG;AAAA,IAC1I;AAAA,EACF;AACA,MAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,gCAAgC;AAC5E;AAAA,EACF;AAEA,QAAM,SAAS,kBAAkB,YAAY,MAAM;AACnD,QAAM,gBAAgB,0BAA0B,OAAO,MAAM;AAC7D,MAAI,cAAc,SAAS,GAAG;AAC5B,UAAM,KAAK,kCAAkC;AAC7C,UAAM,KAAK,GAAG,aAAa;AAAA,EAC7B;AAEA,QAAM,wBAAwB,8BAA8B,OAAO,YAAY,MAAM;AACrF,QAAM,uBAAuB;AAAA,IAC3B;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,MAAI,qBAAqB,SAAS,GAAG;AACnC,UAAM,KAAK,wBAAwB;AACnC,UAAM,KAAK,GAAG,oBAAoB;AAAA,EACpC;AAEA,QAAM,yBAAyB,8BAA8B,OAAO,UAAU;AAC9E,MAAI,uBAAuB,SAAS,GAAG;AACrC,UAAM,KAAK,6BAA6B;AACxC,UAAM,KAAK,GAAG,sBAAsB;AAAA,EACtC;AAEA,QAAM,wBAAwB,6BAA6B,QAAQ,UAAU;AAC7E,MAAI,sBAAsB,SAAS,GAAG;AACpC,UAAM,KAAK,6BAA6B;AACxC,UAAM,KAAK,GAAG,qBAAqB;AAAA,EACrC;AAEA,QAAM,YAAY,sBAAsB,QAAQ,UAAU;AAC1D,MAAI,UAAU,SAAS,GAAG;AACxB,UAAM,KAAK,kBAAkB;AAC7B,UAAM,KAAK,GAAG,SAAS;AAAA,EACzB;AACF;AAEA,SAAS,0BACP,OACA,QACU;AACV,QAAM,WAAW,gCAAgC,KAAK;AACtD,QAAM,QAAkB,CAAC;AACzB,QAAM,aAAa,IAAI,IAAI,8BAA8B,KAAK,EAAE,IAAI,CAAC,cAAc,UAAU,MAAM,CAAC;AACpG,WAAS,QAAQ,GAAG,QAAQ,OAAO,QAAQ,SAAS,GAAG;AACrD,UAAM,WAAW,OAAO,QAAQ,CAAC;AACjC,UAAM,UAAU,OAAO,KAAK;AAC5B,QAAI,CAAC,SAAS,eAAe,CAAC,QAAQ,aAAa;AACjD;AAAA,IACF;AACA,QACE,WAAW,OAAO,KAClB,CAAC,WAAW,IAAI,SAAS,IAAI,KAC7B,CAAC,WAAW,IAAI,QAAQ,IAAI,GAC5B;AACA;AAAA,IACF;AACA,UAAM,oBAAoB,uBAAuB,SAAS,WAAW;AACrE,UAAM,mBAAmB,uBAAuB,QAAQ,WAAW;AACnE,eAAW,CAAC,QAAQ,gBAAgB,KAAK,kBAAkB,QAAQ,GAAG;AACpE,UACE,SAAS,OAAO,KAChB,CAAC,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,cAAc,OAAO,SAAS,SAAS,CAAC,GAC7D;AACA;AAAA,MACF;AACA,YAAM,kBAAkB,iBAAiB,IAAI,MAAM;AACnD,UAAI,CAAC,iBAAiB;AACpB;AAAA,MACF;AACA,YAAM,KAAK,gBAAgB,IAAI,iBAAiB;AAChD,YAAM,KAAK,gBAAgB,IAAI,iBAAiB;AAChD,UAAI,OAAO,KAAK,OAAO,GAAG;AACxB;AAAA,MACF;AACA,YAAM,oBAAoB,gCAAgC,IAAI,EAAE;AAChE,UAAI,CAAC,mBAAmB;AACtB;AAAA,MACF;AACA,YAAM;AAAA,QACJ,eAAe,SAAS,IAAI,KAAK,QAAQ,IAAI,KAAK,MAAM,iBAAiB,iBAAiB,GAAG,OAAO,gBAAgB,GAAG,kCAAkC,iBAAiB;AAAA,MAC5K;AAAA,IACF;AAAA,EACF;AACA,SAAO,MAAM,MAAM,GAAG,CAAC;AACzB;AAEA,SAAS,4BACP,OACA,QACA,iBACU;AACV,QAAM,WAAW,gCAAgC,KAAK;AACtD,QAAM,aAAa,IAAI,IAAI,8BAA8B,KAAK,EAAE,IAAI,CAAC,cAAc,UAAU,MAAM,CAAC;AACpG,QAAM,QAAkB,CAAC;AACzB,QAAM,uBAAuB,oBAAI,IAAY;AAE7C,WAAS,QAAQ,GAAG,QAAQ,OAAO,QAAQ,SAAS,GAAG;AACrD,UAAM,WAAW,OAAO,QAAQ,CAAC;AACjC,UAAM,UAAU,OAAO,KAAK;AAC5B,UAAM,OAAO,OAAO,QAAQ,CAAC;AAC7B,QAAI,CAAC,SAAS,eAAe,CAAC,QAAQ,eAAe,CAAC,QAAQ,QAAQ;AACpE;AAAA,IACF;AACA,QACE,WAAW,OAAO,KAClB,CAAC,WAAW,IAAI,SAAS,IAAI,KAC7B,CAAC,WAAW,IAAI,QAAQ,IAAI,MAC3B,CAAC,QAAQ,CAAC,WAAW,IAAI,KAAK,IAAI,IACnC;AACA;AAAA,IACF;AAEA,UAAM,OAAO,yBAAyB,QAAQ,MAAM;AACpD,QAAI,CAAC,MAAM;AACT;AAAA,IACF;AAEA,UAAM,oBAAoB,uBAAuB,SAAS,WAAW;AACrE,UAAM,mBAAmB,uBAAuB,QAAQ,WAAW;AACnE,eAAW,CAAC,QAAQ,gBAAgB,KAAK,kBAAkB,QAAQ,GAAG;AACpE,UAAI,OAAO,WAAW,OAAO,GAAG;AAC9B;AAAA,MACF;AACA,UACE,SAAS,OAAO,KAChB,CAAC,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,cAAc,OAAO,SAAS,SAAS,CAAC,GAC7D;AACA;AAAA,MACF;AACA,UAAI,iBAAiB,IAAI,MAAM,GAAG;AAChC;AAAA,MACF;AACA,UAAI,CAAC,4BAA4B,kBAAkB,IAAI,GAAG;AACxD;AAAA,MACF;AAEA,YAAM;AAAA,QACJ,eAAe,SAAS,IAAI,KAAK,QAAQ,IAAI,KAAK,MAAM,QAAQ,iBAAiB,GAAG,YAAY,QAAQ,IAAI,QAAQ,KAAK,SAAS,SAAS,MAAM,+BAA+B,QAAQ,IAAI,gEAAgE,QAAQ,IAAI,cAAc,MAAM;AAAA,MAC9R;AAEA,UAAI,MAAM,eAAe,KAAK,QAAQ;AACpC,cAAM,gBAAgB,uBAAuB,KAAK,WAAW;AAC7D,cAAM,eAAe,cAAc,IAAI,MAAM;AAC7C,cAAM,WAAW,yBAAyB,KAAK,MAAM;AACrD,YAAI,gBAAgB,UAAU;AAC5B,gBAAM;AAAA,YACJ,eAAe,QAAQ,IAAI,KAAK,KAAK,IAAI,kBAAkB,KAAK,IAAI,IAAI,SAAS,SAAS,KAAK,MAAM,cAAc,aAAa,GAAG,4BAA4B,QAAQ,IAAI,qEAAqE,MAAM,iBAAiB,kBAAkB,SAAS,SAAS,CAAC;AAAA,UAC9S;AACA,cACE,gBAAgB,SAAS,KAAK,KAC7B,6BAA6B,eAAe,KAC3C,gCAAgC,YAAY;AAAA,YAC1C,SAAS;AAAA,YACT,QAAQ;AAAA,YACR,KAAK;AAAA,UACP,CAAC,GACH;AACA,kBAAM;AAAA,cACJ,gFAAgF,kBAAkB,SAAS,SAAS,CAAC,iCAAiC,MAAM;AAAA,YAC9J;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,UACE,6BAA6B,eAAe,KAC5C,CAAC,4BAA4B,eAAe,KAC5C,CAAC,qBAAqB,IAAI,MAAM,GAChC;AACA,cAAM;AAAA,UACJ,OAAO,MAAM,mQAAmQ,MAAM;AAAA,QACxR;AACA,6BAAqB,IAAI,MAAM;AAAA,MACjC;AAAA,IACF;AAAA,EACF;AAEA,SAAO,MAAM,MAAM,GAAG,CAAC;AACzB;AAEA,SAAS,8BACP,OACA,YACA,QACyB;AACzB,QAAM,aAAa,yBAAyB,KAAK;AACjD,MAAI,MAAM,OAAO;AACjB,MAAI,sEAAsE,KAAK,UAAU,GAAG;AAC1F,eAAW,aAAa,8BAA8B,KAAK,GAAG;AAC5D,UAAI,UAAU,SAAS,KAAK;AAC1B,cAAM,UAAU;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AACA,QAAM,UAAU,WAAW,WAAW,SAAS,CAAC,GAAG,QAAQ,OAAO;AAClE,SAAO,kBAAkB,YAAY;AAAA,IACnC,OAAO,OAAO;AAAA,IACd,KAAK,KAAK,IAAI,KAAK,OAAO;AAAA,IAC1B,QAAQ,OAAO;AAAA,EACjB,CAAC;AACH;AAEA,SAAS,8BACP,OACA,YACU;AACV,QAAM,aAAa,yBAAyB,KAAK;AACjD,MACE,CAAC,yDAAyD,KAAK,UAAU,KACzE,CAAC,2EAA2E,KAAK,UAAU,GAC3F;AACA,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,aAAa,kBAAkB,YAAY,+BAA+B,KAC9E,kBAAkB,YAAY,4EAA4E;AAC5G,MAAI,eAAe,QAAW;AAC5B,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,SAAS,IAAI,IAAI,WAAW,IAAI,CAAC,SAAS,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC;AAClE,QAAM,YAAY,OAAO,IAAI,aAAa,CAAC;AAC3C,QAAM,SAAS,OAAO,IAAI,UAAU;AACpC,MAAI,CAAC,WAAW,aAAa;AAC3B,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,kBAAkB,sBAAsB,UAAU,MACrD,QAAQ,SAAS,yBAAyB,OAAO,MAAM,GAAG,YAAY;AACzE,QAAM,YAAY,uBAAuB,UAAU,WAAW;AAC9D,QAAM,QAAQ,+BAA+B,WAAW,UAAU;AAClE,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,SAAS,CAAC,QAAQ,SAAS,MAAM,MAAM,EAC1C,IAAI,CAAC,cAAc,yBAAyB,SAAS,CAAE,EACvD,OAAO,CAAC,SAAS,KAAK,cAAc,eAAe,EACnD,IAAI,CAAC,UAAU;AAAA,IACd;AAAA,IACA,OAAO,uBAAuB,MAAM,KAAK;AAAA,EAC3C,EAAE,EACD,KAAK,CAAC,MAAM,UAAU;AACrB,QAAI,MAAM,UAAU,KAAK,OAAO;AAC9B,aAAO,MAAM,QAAQ,KAAK;AAAA,IAC5B;AACA,WAAO,KAAK,KAAK,UAAU,cAAc,MAAM,KAAK,SAAS;AAAA,EAC/D,CAAC;AACH,QAAM,OAAO,OAAO,CAAC;AACrB,MAAI,CAAC,QAAQ,KAAK,SAAS,GAAG;AAC5B,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,qBAAqB,MAAM;AAAA,IAC/B,CAAC,EAAE,QAAQ,SAAS,MAAM,GAAG,MAAM,OAAO,SAAS,GAAG;AAAA,EACxD;AACA,QAAM,QAAQ;AAAA,IACZ,wBAAwB,UAAU,qBAAqB,UAAU,IAAI,2BAA2B,mBAAmB,KAAK,IAAI,CAAC;AAAA,IAC7H,sCAAsC,kBAAkB,IAAI,eAAe,KAAK,EAAE,KAAK,KAAK,KAAK,SAAS;AAAA,EAC5G;AACA,MAAI,WAAW,SAAS,eAAe,GAAG;AACxC,UAAM;AAAA,MACJ,GAAG,KAAK,KAAK,SAAS;AAAA,IACxB;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,6BACP,QACA,iBACU;AACV,MAAI,CAAC,6BAA6B,eAAe,GAAG;AAClD,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,gBAAgB,oBAAI,IAA8B;AACxD,QAAM,eAAe,oBAAI,IAA8B;AACvD,aAAW,QAAQ,QAAQ;AACzB,QAAI,CAAC,KAAK,aAAa;AACrB;AAAA,IACF;AACA,eAAW,CAAC,QAAQ,QAAQ,KAAK,uBAAuB,KAAK,WAAW,EAAE,QAAQ,GAAG;AACnF,UAAI,CAAC,OAAO,WAAW,OAAO,GAAG;AAC/B;AAAA,MACF;AACA,UAAI,CAAC,cAAc,IAAI,MAAM,GAAG;AAC9B,sBAAc,IAAI,QAAQ,QAAQ;AAAA,MACpC;AACA,mBAAa,IAAI,QAAQ,QAAQ;AAAA,IACnC;AAAA,EACF;AAEA,QAAM,YAAY,CAAC,GAAG,cAAc,QAAQ,CAAC,EAC1C,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO;AAAA,IACzB;AAAA,IACA;AAAA,IACA,MAAM,aAAa,IAAI,MAAM;AAAA,EAC/B,EAAE,EACD,OAAO,CAAC,SAIJ,KAAK,SAAS,UAAa,KAAK,KAAK,IAAI,KAAK,MAAM,CAAC,EACzD,KAAK,CAAC,MAAM,UAAU,KAAK,OAAO,cAAc,MAAM,MAAM,CAAC,EAC7D,MAAM,GAAG,CAAC;AACb,MAAI,UAAU,WAAW,GAAG;AAC1B,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,eAAe,UAAU;AAAA,IAC7B,CAAC,EAAE,QAAQ,OAAO,KAAK,MACrB,GAAG,MAAM,eAAe,MAAM,GAAG,OAAO,KAAK,GAAG;AAAA,EACpD;AACA,SAAO;AAAA,IACL,GAAG,aAAa,KAAK,IAAI,CAAC;AAAA,EAC5B;AACF;AAEA,SAAS,sBACP,QACA,iBACU;AACV,QAAM,QAAkB,CAAC;AACzB,QAAM,YAAY,oBAAI,IAAY;AAClC,QAAM,cAAc,oBAAI,IAAY;AACpC,aAAW,QAAQ,QAAQ;AACzB,QAAI,CAAC,KAAK,aAAa;AACrB;AAAA,IACF;AACA,eAAW,QAAQ,iBAAiB,KAAK,WAAW,GAAG;AACrD,gBAAU,IAAI,IAAI;AAAA,IACpB;AACA,eAAW,YAAY,uBAAuB,KAAK,WAAW,EAAE,OAAO,GAAG;AACxE,YAAM,mBAAmB,gBAAgB,SAAS,MAAM;AACxD,UAAI,CAAC,iBAAiB,WAAW,OAAO,GAAG;AACzC,oBAAY,IAAI,gBAAgB;AAAA,MAClC;AAAA,IACF;AAAA,EACF;AAEA,QAAM,cAAc,CAAC,GAAG,SAAS,EAAE,KAAK,CAAC,MAAM,UAAU,KAAK,cAAc,KAAK,CAAC;AAClF,QAAM,yBAAyB,4BAA4B,eAAe;AAC1E,MAAI,YAAY,SAAS,GAAG;AAC1B,UAAM,KAAK,gCAAgC,YAAY,KAAK,IAAI,CAAC,GAAG;AAAA,EACtE;AACA,aAAW,UAAU,CAAC,GAAG,WAAW,EAAE,KAAK,CAAC,MAAM,UAAU,KAAK,cAAc,KAAK,CAAC,GAAG;AACtF,QAAI,CAAC,YAAY,KAAK,CAAC,SAAS,KAAK,WAAW,GAAG,MAAM,MAAM,CAAC,GAAG;AACjE,YAAM;AAAA,QACJ,sBAAsB,MAAM,8CAA8C,MAAM,sCAAsC,MAAM,0EAA0E,MAAM;AAAA,MAC9M;AACA,UACE,gBAAgB,SAAS,MAAM,KAC/B,6BAA6B,eAAe,KAC5C,CAAC,wBACD;AACA,cAAM;AAAA,UACJ,OAAO,MAAM,sIAAsI,MAAM;AAAA,QAC3J;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,SAAO,MAAM,MAAM,GAAG,CAAC;AACzB;AAEA,SAAS,2BACP,OACA,YACA,QACM;AACN,QAAM,SAAS,oBAAI,IAAoB;AACvC,aAAW,QAAQ,kBAAkB,YAAY,MAAM,GAAG;AACxD,QAAI,CAAC,KAAK,OAAQ;AAClB,UAAM,OAAO,oBAAoB,KAAK,MAAM;AAC5C,QAAI,CAAC,KAAM;AACX,WAAO,IAAI,OAAO,OAAO,IAAI,IAAI,KAAK,KAAK,CAAC;AAAA,EAC9C;AACA,MAAI,OAAO,SAAS,GAAG;AACrB;AAAA,EACF;AACA,QAAM,cAAc,CAAC,GAAG,OAAO,QAAQ,CAAC,EAAE;AAAA,IAAK,CAAC,MAAM,UACpD,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE,cAAc,MAAM,CAAC,CAAC;AAAA,EACtD;AACA,QAAM;AAAA,IACJ,8CAA8C,YAC3C,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,GAAG,IAAI,IAAI,KAAK,EAAE,EACzC,KAAK,IAAI,CAAC;AAAA,EACf;AACF;AAEA,SAAS,2BACP,OACA,YACA,QACM;AACN,QAAM,OAAO,oBAAI,IAAY;AAC7B,QAAM,UAAoB,CAAC;AAC3B,aAAW,QAAQ,kBAAkB,YAAY,MAAM,GAAG;AACxD,QAAI,CAAC,KAAK,OAAQ;AAClB,UAAM,SAAS,qBAAqB,KAAK,QAAQ,IAAI;AACrD,QAAI,QAAQ;AACV,cAAQ,KAAK,WAAW,KAAK,IAAI,MAAM,KAAK,MAAM,OAAO,MAAM,EAAE;AAAA,IACnE;AAAA,EACF;AACA,MAAI,QAAQ,WAAW,GAAG;AACxB;AAAA,EACF;AACA,QAAM,KAAK,2CAA2C;AACtD,QAAM,KAAK,GAAG,OAAO;AACvB;AAEA,SAAS,gCACP,OACA,YACA,QACM;AACN,QAAM,UAAU,6BAA6B,YAAY,MAAM;AAC/D,MAAI,QAAQ,WAAW,GAAG;AACxB;AAAA,EACF;AACA,QAAM,KAAK,qCAAqC;AAChD,aAAW,UAAU,SAAS;AAC5B,UAAM,KAAK,WAAW,OAAO,IAAI,MAAM,OAAO,MAAM,OAAO,OAAO,MAAM,IAAI,OAAO,KAAK,EAAE;AAAA,EAC5F;AACF;AAEA,SAAS,0BACP,OACA,YACA,QACA,UACA,SACM;AACN,aAAW,UAAU,UAAU;AAC7B,UAAM,gBAAgB,kBAAkB,YAAY,MAAM,EAAE;AAAA,MAC1D,CAAC,SACC,KAAK,WACJ,qBAAqB,KAAK,QAAQ,MAAM,KACtC,QAAQ,2BACP,qBAAqB,KAAK,QAAQ,MAAM;AAAA,IAChD;AACA,UAAM,eAAe,6BAA6B,YAAY,MAAM,EAAE;AAAA,MACpE,CAAC,WAAW,gBAAgB,OAAO,MAAM,MAAM,gBAAgB,MAAM;AAAA,IACvE;AACA,QAAI,cAAc,WAAW,KAAK,aAAa,WAAW,GAAG;AAC3D;AAAA,IACF;AAEA,UAAM,KAAK,gBAAgB,MAAM,GAAG;AACpC,eAAW,QAAQ,eAAe;AAChC,YAAM,KAAK,WAAW,KAAK,IAAI,MAAM,KAAK,MAAM,EAAE;AAAA,IACpD;AACA,UAAM,mBAAmB,oBAAoB,YAAY,QAAQ,MAAM;AACvE,QAAI,kBAAkB;AACpB,YAAM;AAAA,QACJ,YAAY,MAAM,qBAAqB,OAAO,GAAG,KAAK,gBAAgB;AAAA,MACxE;AAAA,IACF;AACA,QAAI,aAAa,SAAS,GAAG;AAC3B,YAAM,SAAS,aAAa,aAAa,SAAS,CAAC;AACnD,YAAM;AAAA,QACJ,UAAU,MAAM,kBAAkB,OAAO,GAAG,KAAK,OAAO,KAAK,oBAAoB,aAC9E,IAAI,CAAC,WAAW,GAAG,OAAO,IAAI,IAAI,OAAO,KAAK,EAAE,EAChD,KAAK,IAAI,CAAC;AAAA,MACf;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,kBACP,YACA,QACyB;AACzB,SAAO,WAAW,OAAO,CAAC,SAAS,KAAK,QAAQ,OAAO,SAAS,KAAK,QAAQ,OAAO,GAAG;AACzF;AAEA,SAAS,6BACP,YACA,QACmF;AACnF,QAAM,UAKD,CAAC;AACN,aAAW,QAAQ,kBAAkB,YAAY,MAAM,GAAG;AACxD,QAAI,CAAC,KAAK,OAAQ;AAClB,UAAM,QAAQ,yBAAyB,KAAK,KAAK,OAAO,KAAK,CAAC;AAC9D,QAAI,CAAC,MAAO;AACZ,UAAM,OAAO,MAAM,CAAC,EAAG,YAAY;AACnC,YAAQ,KAAK;AAAA,MACX,MAAM,KAAK;AAAA,MACX,QAAQ,KAAK;AAAA,MACb,QAAQ,MAAM,CAAC,EAAG,KAAK;AAAA,MACvB,OAAO,SAAS,SAAS,SAAS;AAAA,IACpC,CAAC;AAAA,EACH;AACA,SAAO;AACT;AAEA,SAAS,qBAAqB,QAAgB,MAAuC;AACnF,QAAM,aAAa,OAAO,KAAK;AAC/B,QAAM,OAAO,gCAAgC,KAAK,UAAU;AAC5D,MAAI,MAAM;AACR,UAAM,SAAS,KAAK,CAAC,EAAG,KAAK;AAC7B,UAAM,SAAS,KAAK,CAAC,EAAG,KAAK;AAC7B,SAAK,IAAI,gBAAgB,MAAM,CAAC;AAChC,WAAO,mBAAmB,MAAM,KAAK,MAAM,iBAAiB,MAAM;AAAA,EACpE;AAEA,QAAM,QAAQ,kEAAkE;AAAA,IAC9E;AAAA,EACF;AACA,MAAI,OAAO;AACT,UAAM,SAAS,MAAM,CAAC,EAAG,KAAK;AAC9B,UAAM,cAAc,MAAM,CAAC,EAAG,KAAK;AACnC,UAAM,MAAM,gBAAgB,MAAM;AAClC,UAAM,UAAU,KAAK,OAAO,GAAG;AAC/B,WAAO,UACH,qBAAqB,MAAM,KAAK,MAAM,aAAa,WAAW,KAC9D,GAAG,MAAM,aAAa,WAAW;AAAA,EACvC;AAEA,QAAM,OAAO,iBAAiB,KAAK,UAAU;AAC7C,MAAI,MAAM;AACR,UAAM,SAAS,KAAK,CAAC,EAAG,KAAK;AAC7B,SAAK,OAAO,gBAAgB,MAAM,CAAC;AACnC,WAAO,qBAAqB,MAAM;AAAA,EACpC;AAEA,SAAO;AACT;AAEA,SAAS,6BAA6B,iBAAkC;AACtE,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,KAAK,CAAC,YAAY,QAAQ,KAAK,eAAe,CAAC;AACnD;AAEA,SAAS,uBAAuB,iBAAkC;AAChE,SAAO,6BAA6B,KAAK,eAAe,KACtD,YAAY,KAAK,eAAe,KAChC,kBAAkB,KAAK,eAAe;AAC1C;AAEA,SAAS,+BACP,iBAC4C;AAC5C,QAAM,WAAW;AAAA,IACf;AAAA,IACA;AAAA,EACF;AACA,aAAW,WAAW,UAAU;AAC9B,UAAM,QAAQ,QAAQ,KAAK,eAAe;AAC1C,QAAI,CAAC,MAAO;AACZ,UAAM,QAAQ,6BAA6B,MAAM,CAAC,KAAK,EAAE;AACzD,UAAM,MAAM,6BAA6B,MAAM,CAAC,KAAK,EAAE;AACvD,QAAI,UAAU,UAAa,QAAQ,QAAW;AAC5C,aAAO,EAAE,OAAO,IAAI;AAAA,IACtB;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,0BACP,OACA,YACmC;AACnC,QAAM,SAAS,0BAA0B,KAAK;AAC9C,MAAI,OAAO,SAAS,GAAG;AACrB,WAAO;AAAA,EACT;AACA,QAAM,iBAAiB,8BAA8B,YAAY,OAAO,CAAC,CAAE;AAC3E,QAAM,eAAe,8BAA8B,YAAY,OAAO,CAAC,CAAE;AACzE,MAAI,eAAe,WAAW,KAAK,aAAa,WAAW,GAAG;AAC5D,WAAO;AAAA,EACT;AAEA,MAAI;AACJ,aAAW,YAAY,gBAAgB;AACrC,eAAW,UAAU,cAAc;AACjC,UAAI,UAAU,UAAU;AACtB;AAAA,MACF;AACA,UACE,CAAC,QACD,SAAS,WAAW,KAAK,SAAS,KAAK,YACtC,SAAS,aAAa,KAAK,SAAS,KAAK,YACxC,WAAW,KAAK,UAClB;AACA,eAAO,EAAE,UAAU,OAAO;AAAA,MAC5B;AAAA,IACF;AAAA,EACF;AACA,MAAI,MAAM;AACR,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEA,SAAS,0BAA0B,OAAyB;AAC1D,QAAM,eAAyB,CAAC;AAChC,aAAW,SAAS,MAAM,SAAS,iCAAiC,GAAG;AACrE,UAAM,QAAQ,MAAM,CAAC,GAAG,KAAK;AAC7B,QAAI,OAAO;AACT,mBAAa,KAAK,KAAK;AAAA,IACzB;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,8BACP,YACA,mBACU;AACV,QAAM,mBAAmB,yBAAyB,iBAAiB;AACnE,QAAM,uBAAuB,yBAAyB,iBAAiB;AACvE,QAAM,aAAa,oBAAI,IAAY;AAEnC,aAAW,QAAQ,YAAY;AAC7B,QAAI,CAAC,KAAK,YAAa;AACvB,UAAM,wBAAwB,yBAAyB,KAAK,WAAW;AACvE,QACE,0BAA0B,oBAC1B,sBAAsB,SAAS,gBAAgB,KAC/C,iBAAiB,SAAS,qBAAqB,GAC/C;AACA,iBAAW,IAAI,KAAK,IAAI;AACxB;AAAA,IACF;AAEA,UAAM,4BAA4B,yBAAyB,KAAK,WAAW;AAC3E,QACE,0BAA0B,SAAS,KACnC,qBAAqB,SAAS,MAC7B,8BAA8B,wBAC7B,0BAA0B,SAAS,oBAAoB,KACvD,qBAAqB,SAAS,yBAAyB,IACzD;AACA,iBAAW,IAAI,KAAK,IAAI;AAAA,IAC1B;AAAA,EACF;AAEA,SAAO,CAAC,GAAG,UAAU,EAAE,KAAK,CAAC,MAAM,UAAU,OAAO,KAAK;AAC3D;AAEA,SAAS,wBAAwB,OAAyB;AACxD,QAAM,WAAW,oBAAI,IAAY;AACjC,aAAW,SAAS,MAAM,SAAS,0DAA0D,GAAG;AAC9F,UAAM,YAAY,MAAM,CAAC,GAAG,KAAK,EAAE,YAAY;AAC/C,UAAM,SAAS,MAAM,CAAC,GAAG,KAAK;AAC9B,QAAI,CAAC,aAAa,CAAC,UAAU,4BAA4B,SAAS,GAAG;AACnE;AAAA,IACF;AACA,UAAM,QAAQ,UAAU,MAAM,KAAK;AACnC,UAAM,aAAa,MAAM,MAAM,SAAS,CAAC;AACzC,QAAI,4BAA4B,UAAU,GAAG;AAC3C;AAAA,IACF;AACA,aAAS,IAAI,GAAG,UAAU,IAAI,MAAM,EAAE;AAAA,EACxC;AACA,SAAO,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,MAAM,UAAU,KAAK,cAAc,KAAK,CAAC;AACtE;AAEA,SAAS,4BAA4B,OAAwB;AAC3D,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,SAAS,KAAK;AAClB;AAEA,SAAS,qBAAqB,QAAgB,QAAyB;AACrE,QAAM,mBAAmB,yBAAyB,MAAM;AACxD,QAAM,mBAAmB,gBAAgB,MAAM;AAC/C,SAAO,qBAAqB,oBAC1B,iBAAiB,WAAW,GAAG,gBAAgB,GAAG,KAClD,iBAAiB,SAAS,IAAI,gBAAgB,EAAE,KAChD,iBAAiB,SAAS,IAAI,gBAAgB,GAAG;AACrD;AAEA,SAAS,qBAAqB,QAAgB,QAAyB;AACrE,QAAM,mBAAmB,yBAAyB,MAAM;AACxD,QAAM,mBAAmB,gBAAgB,MAAM;AAC/C,SAAO;AAAA,IACL,QAAQ,gBAAgB;AAAA,IACxB,SAAS,gBAAgB;AAAA,IACzB,WAAW,gBAAgB;AAAA,EAC7B,EAAE,SAAS,gBAAgB;AAC7B;AAEA,SAAS,oBACP,YACA,QACA,QACoB;AACpB,QAAM,mBAAmB,gBAAgB,MAAM;AAC/C,MAAI;AACJ,aAAW,QAAQ,kBAAkB,YAAY,MAAM,GAAG;AACxD,QAAI,CAAC,KAAK,OAAQ;AAClB,UAAM,SAAS,KAAK,OAAO,KAAK;AAChC,UAAM,OAAO,gCAAgC,KAAK,MAAM;AACxD,QAAI,QAAQ,gBAAgB,KAAK,CAAC,CAAE,MAAM,kBAAkB;AAC1D,iBAAW;AACX;AAAA,IACF;AACA,UAAM,OAAO,kEAAkE;AAAA,MAC7E;AAAA,IACF;AACA,QAAI,QAAQ,gBAAgB,KAAK,CAAC,CAAE,MAAM,kBAAkB;AAC1D,iBAAW,KAAK,CAAC,EAAG,KAAK;AAAA,IAC3B;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,oBAAoB,QAAoC;AAC/D,QAAM,QAAQ,yBAAyB,KAAK,OAAO,KAAK,CAAC;AACzD,SAAO,QAAQ,CAAC,GAAG,YAAY;AACjC;AAEA,SAAS,sBACP,OACA,KACA,SACA,SACA,QACkB;AAClB,QAAM,MAAM,KAAK,IAAI,SAAS,KAAK,IAAI,OAAO,GAAG,CAAC;AAClD,QAAM,OAAO,KAAK,IAAI,SAAS,KAAK,IAAI,OAAO,GAAG,CAAC;AACnD,SAAO;AAAA,IACL,OAAO,KAAK,IAAI,KAAK,IAAI;AAAA,IACzB,KAAK,KAAK,IAAI,KAAK,IAAI;AAAA,IACvB;AAAA,EACF;AACF;AAEA,SAAS,kBAAkB,OAAe,SAAqC;AAC7E,QAAM,QAAQ,QAAQ,KAAK,KAAK;AAChC,SAAO,QAAQ,6BAA6B,MAAM,CAAC,KAAK,EAAE,IAAI;AAChE;AAEO,SAAS,0BAA0B,OAG/B;AACT,QAAM,kBAAkB,KAAK,IAAI,GAAG,KAAK,MAAM,MAAM,aAAa,IAAI,CAAC;AACvE,MACE,OAAO,MAAM,iBAAiB,YAC9B,CAAC,OAAO,SAAS,MAAM,YAAY,GACnC;AACA,WAAO;AAAA,EACT;AAEA,SAAO,KAAK,IAAI,iBAAiB,KAAK,MAAM,MAAM,YAAY,CAAC;AACjE;AAEA,SAAS,gCAAgC,OAAiB,UAA4B;AACpF,QAAM,SAAmB,CAAC;AAC1B,MAAI,OAAO;AACX,aAAW,QAAQ,MAAM,MAAM,GAAG,6BAA6B,GAAG;AAChE,UAAM,YAAY,OAAO,WAAW,IAAI,IAAI;AAC5C,UAAM,YAAY,WAAW,OAAO;AACpC,QAAI,aAAa,GAAG;AAClB;AAAA,IACF;AACA,UAAM,UAAU,KAAK,SAAS,YAC1B,aAAa,IACX,KAAK,MAAM,GAAG,SAAS,IACvB,GAAG,KAAK,MAAM,GAAG,YAAY,CAAC,EAAE,QAAQ,CAAC,QAC3C;AACJ,QAAI,QAAQ,WAAW,GAAG;AACxB;AAAA,IACF;AACA,WAAO,KAAK,OAAO;AACnB,YAAQ,YAAY,QAAQ;AAAA,EAC9B;AACA,SAAO;AACT;AAEA,SAAS,QAAQ,OAAuB;AACtC,SAAO,MAAM,QAAQ,QAAQ,GAAG,EAAE,KAAK;AACzC;AAEA,SAAS,gBAAgB,OAAuB;AAC9C,SAAO,yBAAyB,KAAK;AACvC;AAEA,SAAS,yBAAyB,OAAuB;AACvD,SAAO,MAAM,YAAY,EAAE,QAAQ,QAAQ,GAAG,EAAE,KAAK;AACvD;AAEA,SAAS,yBAAyB,OAAuB;AACvD,SAAO;AAAA,IACL,MAAM,MAAM,uCAAuC,EAAE,CAAC,KAAK;AAAA,EAC7D;AACF;AAEA,SAAS,iBAAiB,aAA+B;AACvD,QAAM,aAAa,+DAA+D;AAAA,IAChF;AAAA,EACF,IAAI,CAAC;AACL,MAAI,CAAC,YAAY;AACf,WAAO,CAAC;AAAA,EACV;AACA,SAAO,WACJ,MAAM,KAAK,EACX,IAAI,CAAC,SAAS,yBAAyB,IAAI,CAAC,EAC5C,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC;AACrC;AAEA,SAAS,uBAAuB,aAAoD;AAClF,QAAM,YAAY,oBAAI,IAA8B;AACpD,QAAM,eAAe,oCAAoC,KAAK,WAAW,IAAI,CAAC;AAC9E,MAAI,CAAC,cAAc;AACjB,WAAO;AAAA,EACT;AACA,aAAW,WAAW,aAAa,MAAM,KAAK,GAAG;AAC/C,UAAM,OAAO,QAAQ,KAAK;AAC1B,QAAI,CAAC,MAAM;AACT;AAAA,IACF;AACA,UAAM,SAAS,0BAA0B,IAAI;AAC7C,QAAI,QAAQ;AACV,gBAAU,IAAI,gBAAgB,OAAO,MAAM,GAAG,MAAM;AAAA,IACtD;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,0BAA0B,MAA4C;AAC7E,QAAM,iBAAiB,KAAK,QAAQ,MAAM,EAAE,EAAE,KAAK;AACnD,QAAM,gBAAgB,0BAA0B,cAAc;AAC9D,MAAI,iBAAiB,GAAG;AACtB,WAAO;AAAA,EACT;AACA,QAAM,SAAS,eAAe,MAAM,GAAG,aAAa,EAAE,KAAK;AAC3D,QAAM,cAAc,eAAe,MAAM,aAAa,EAAE,KAAK;AAC7D,MAAI,CAAC,UAAU,CAAC,aAAa;AAC3B,WAAO;AAAA,EACT;AACA,MAAI,IAAI;AACR,MAAI,IAAI;AACR,MAAI,QAAQ;AACZ,aAAW,UAAU,YAAY,MAAM,YAAY,GAAG;AACpD,UAAM,SAAS,4BAA4B,MAAM;AACjD,QAAI,CAAC,QAAQ;AACX,aAAO;AAAA,IACT;AACA,YAAQ;AACR,QAAI,OAAO,cAAc,OAAQ,MAAK,OAAO;AAC7C,QAAI,OAAO,cAAc,QAAS,MAAK,OAAO;AAC9C,QAAI,OAAO,cAAc,KAAM,MAAK,OAAO;AAC3C,QAAI,OAAO,cAAc,OAAQ,MAAK,OAAO;AAAA,EAC/C;AACA,SAAO,QAAQ,EAAE,QAAQ,GAAG,GAAG,KAAK,YAAY,IAAI;AACtD;AAEA,SAAS,0BAA0B,OAAuB;AACxD,MAAI,OAAO;AACX,aAAW,aAAa,CAAC,QAAQ,SAAS,MAAM,MAAM,GAAG;AACvD,eAAW,UAAU;AAAA,MACnB,gBAAgB,SAAS;AAAA,MACzB,iBAAiB,SAAS;AAAA,MAC1B,SAAS,SAAS;AAAA,MAClB,UAAU,SAAS;AAAA,IACrB,GAAG;AACD,YAAM,QAAQ,MAAM,YAAY,EAAE,QAAQ,MAAM;AAChD,UAAI,QAAQ,GAAG;AACb;AAAA,MACF;AACA,UAAI,SAAS,QAAQ;AACrB,aAAO,UAAU,KAAK,KAAK,KAAK,MAAM,MAAM,CAAE,GAAG;AAC/C,kBAAU;AAAA,MACZ;AACA,UAAI,WAAW,QAAQ,GAAG;AACxB;AAAA,MACF;AACA,YAAM,QAAQ,SAAS;AACvB,aAAO,OAAO,IAAI,QAAQ,KAAK,IAAI,MAAM,KAAK;AAAA,IAChD;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,4BACP,QAC6E;AAC7E,QAAM,SAAS,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,KAAK;AACtD,MAAI,OAAO,SAAS,GAAG;AACrB,WAAO;AAAA,EACT;AACA,QAAM,SAAS,6BAA6B,OAAO,CAAC,KAAK,EAAE;AAC3D,MAAI,WAAW,QAAW;AACxB,WAAO;AAAA,EACT;AACA,QAAM,YAAY,OAAO,OAAO,SAAS,CAAC;AAC1C,MACE,cAAc,UACd,cAAc,WACd,cAAc,QACd,cAAc,QACd;AACA,WAAO;AAAA,EACT;AACA,MAAI,OAAO,CAAC,MAAM,UAAU,OAAO,CAAC,MAAM,SAAS;AACjD,WAAO;AAAA,EACT;AACA,SAAO,EAAE,QAAQ,UAAU;AAC7B;AAEA,SAAS,gCAAgC,OAA4B;AACnE,QAAM,WAAW,oBAAI,IAAY;AAEjC,aAAW,SAAS,sBAAsB,KAAK,GAAG;AAChD,8BAA0B,UAAU,KAAK;AAAA,EAC3C;AAEA,QAAM,SAAS,yBAAyB,KAAK,EAAE,MAAM,GAAG,EAAE,OAAO,OAAO;AACxE,WAAS,QAAQ,GAAG,QAAQ,OAAO,QAAQ,SAAS,GAAG;AACrD,UAAM,QAAQ,OAAO,KAAK;AAC1B,QAAI,UAAU,cAAc,OAAO,QAAQ,CAAC,MAAM,YAAY;AAC5D,YAAM,YAAY,yBAAyB,QAAQ,KAAK;AACxD,UAAI,WAAW;AACb,kCAA0B,UAAU,SAAS;AAAA,MAC/C;AAAA,IACF;AACA,QAAI,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU;AAC9D,YAAM,YAAY,OAAO,QAAQ,CAAC;AAClC,UAAI,aAAa,sBAAsB,SAAS,GAAG;AACjD,kCAA0B,UAAU,SAAS;AAAA,MAC/C;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,sBAAsB,OAAyB;AACtD,QAAM,UAAoB,CAAC;AAC3B,MAAI,QAAQ,MAAM,QAAQ,GAAG;AAC7B,SAAO,SAAS,GAAG;AACjB,UAAM,MAAM,MAAM,QAAQ,KAAK,QAAQ,CAAC;AACxC,QAAI,MAAM,GAAG;AACX;AAAA,IACF;AACA,UAAM,QAAQ,MAAM,MAAM,QAAQ,GAAG,GAAG,EAAE,KAAK;AAC/C,QAAI,OAAO;AACT,cAAQ,KAAK,KAAK;AAAA,IACpB;AACA,YAAQ,MAAM,QAAQ,KAAK,MAAM,CAAC;AAAA,EACpC;AACA,SAAO;AACT;AAEA,SAAS,yBACP,QACA,aACoB;AACpB,WAAS,QAAQ,cAAc,GAAG,SAAS,KAAK,IAAI,GAAG,cAAc,CAAC,GAAG,SAAS,GAAG;AACnF,UAAM,QAAQ,OAAO,KAAK;AAC1B,QAAI,SAAS,sBAAsB,KAAK,GAAG;AACzC,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,sBAAsB,OAAwB;AACrD,SAAO,MAAM,SAAS,KACpB,CAAC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,SAAS,KAAK,KAChB,CAAC,YAAY,KAAK;AACtB;AAEA,SAAS,0BAA0B,UAAuB,OAAqB;AAC7E,QAAM,aAAa,gBAAgB,KAAK;AACxC,MAAI,CAAC,cAAc,CAAC,sBAAsB,UAAU,GAAG;AACrD;AAAA,EACF;AACA,WAAS,IAAI,UAAU;AACvB,WAAS,IAAI,gBAAgB,QAAQ,UAAU,EAAE,CAAC;AACpD;AAEA,SAAS,6BAA6B,iBAAkC;AACtE,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,KAAK,CAAC,QAAQ,gBAAgB,SAAS,GAAG,CAAC;AAC/C;AAEA,SAAS,4BAA4B,iBAAkC;AACrE,SAAO,oFAAoF;AAAA,IACzF;AAAA,EACF;AACF;AAEA,SAAS,YAAY,OAAwB;AAC3C,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO;AAAA,EACT;AACA,aAAW,QAAQ,OAAO;AACxB,QAAI,OAAO,OAAO,OAAO,KAAK;AAC5B,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,gCAAgC,IAAY,IAAgC;AACnF,MAAI,OAAO,KAAK,OAAO,EAAG,QAAO;AACjC,MAAI,OAAO,MAAM,OAAO,EAAG,QAAO;AAClC,MAAI,OAAO,KAAK,OAAO,EAAG,QAAO;AACjC,MAAI,OAAO,KAAK,OAAO,GAAI,QAAO;AAClC,SAAO;AACT;AAEA,SAAS,yBAAyB,QAA4C;AAC5E,QAAM,OAAO,oBAAoB,MAAM;AACvC,MAAI,SAAS,KAAM,QAAO,EAAE,WAAW,MAAM,IAAI,GAAG,IAAI,GAAG;AAC3D,MAAI,SAAS,OAAQ,QAAO,EAAE,WAAW,QAAQ,IAAI,GAAG,IAAI,EAAE;AAC9D,MAAI,SAAS,OAAQ,QAAO,EAAE,WAAW,QAAQ,IAAI,IAAI,IAAI,EAAE;AAC/D,MAAI,SAAS,QAAS,QAAO,EAAE,WAAW,SAAS,IAAI,GAAG,IAAI,EAAE;AAChE,SAAO;AACT;AAEA,SAAS,sBAAsB,iBAAkE;AAC/F,aAAW,aAAa,CAAC,MAAM,QAAQ,QAAQ,OAAO,GAAY;AAChE,QACE,gBAAgB,SAAS,qBAAqB,SAAS,EAAE,KACzD,gBAAgB,SAAS,oBAAoB,SAAS,EAAE,GACxD;AACA,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,+BACP,WACA,iBACuD;AACvD,QAAM,UAAiE,CAAC;AACxE,MAAI,gBAAgB,SAAS,eAAe,KAAK,gBAAgB,SAAS,KAAK,GAAG;AAChF,eAAW,UAAU,CAAC,YAAY,SAAS,GAAG;AAC5C,YAAM,WAAW,UAAU,IAAI,MAAM;AACrC,UAAI,UAAU;AACZ,gBAAQ,KAAK,EAAE,QAAQ,SAAS,CAAC;AAAA,MACnC;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,aAAW,CAAC,QAAQ,QAAQ,KAAK,UAAU,QAAQ,GAAG;AACpD,QAAI,OAAO,WAAW,OAAO,GAAG;AAC9B,cAAQ,KAAK,EAAE,QAAQ,SAAS,CAAC;AAAA,IACnC;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,uBACP,MACA,SACQ;AACR,MAAI,QAAQ;AACZ,aAAW,EAAE,SAAS,KAAK,SAAS;AAClC,UAAM,SAAS,KAAK,IAAI,SAAS,CAAC,IAAI,KAAK,IAAI,SAAS,CAAC;AACzD,UAAM,QAAQ,KAAK,IAAI,SAAS,IAAI,KAAK,EAAE,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,EAAE;AAC5E,aAAS,SAAS;AAAA,EACpB;AACA,SAAO;AACT;AAEA,SAAS,gCACP,QACA,cACS;AACT,QAAM,mBAAmB,gBAAgB,MAAM;AAC/C,aAAW,eAAe,cAAc;AACtC,QAAI,CAAC,aAAa;AAChB;AAAA,IACF;AACA,QAAI,uBAAuB,WAAW,EAAE,IAAI,gBAAgB,GAAG;AAC7D,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,4BACP,UACA,MACS;AACT,SAAO,SAAS,MAAM,KAAK,MAAM,SAAS,MAAM,KAAK;AACvD;AAEA,SAAS,kBAAkB,WAAgD;AACzE,MAAI,cAAc,KAAM,QAAO;AAC/B,MAAI,cAAc,OAAQ,QAAO;AACjC,MAAI,cAAc,OAAQ,QAAO;AACjC,SAAO;AACT;AAEA,SAAS,yBAAyB,OAAuB;AACvD,SAAO,MAAM,YAAY,EAAE,QAAQ,iBAAiB,GAAG,EAAE,KAAK;AAChE;AAEA,SAAS,uBACP,eAOA,WACA,WACA,UACM;AACN,aAAW,WAAW,UAAU;AAC9B,uBAAmB,eAAe,WAAW;AAAA,MAC3C,IAAI,GAAG,SAAS,IAAI,QAAQ,UAAU;AAAA,MACtC;AAAA,MACA,WAAW,QAAQ;AAAA,MACnB,MAAM,QAAQ;AAAA,MACd,SAAS,QAAQ;AAAA,IACnB,CAAC;AAAA,EACH;AACF;AAEA,SAAS,mBACP,eACA,WACA,MACM;AACN,MAAI,UAAU,IAAI,KAAK,EAAE,GAAG;AAC1B;AAAA,EACF;AACA,YAAU,IAAI,KAAK,EAAE;AACrB,gBAAc,KAAK,IAAI;AACzB;AAEO,SAAS,8BACd,OACyB;AACzB,QAAM,aAAa,oBAAI,IAAmC;AAC1D,QAAM,eAAe,CAAC,OAAe,UAAkB;AACrD,UAAM,WAAW,WAAW,IAAI,OAAO,KAAK,CAAC;AAC7C,eAAW,IAAI,OAAO,KAAK,GAAG;AAAA,MAC5B,QAAQ;AAAA,MACR,oBACG,UAAU,qBAAqB,UAAU,UAAU;AAAA,IACxD,CAAC;AAAA,EACH;AAEA,QAAM,SAAS,uBAAuB,KAAK;AAC3C,WAAS,QAAQ,GAAG,QAAQ,OAAO,QAAQ,SAAS,GAAG;AACrD,UAAM,QAAQ,wBAAwB,OAAO,KAAK,CAAC;AACnD,QAAI,CAAC,OAAO;AACV;AAAA,IACF;AAEA,UAAM,SAAS,sBAAsB,QAAQ,QAAQ,CAAC;AACtD,eAAW,UAAU,OAAO,SAAS;AACnC,mBAAa,QAAQ,KAAK;AAAA,IAC5B;AACA,YAAQ,KAAK,IAAI,OAAO,OAAO,YAAY,CAAC;AAAA,EAC9C;AAEA,SAAO,CAAC,GAAG,WAAW,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,UAAU,KAAK,SAAS,MAAM,MAAM;AAClF;AAEO,SAAS,mBACd,OACA,UAGI,CAAC,GACK;AACV,QAAM,OAAO,oBAAI,IAAY;AAE7B,aAAW,SAAS,MAAM,SAAS,uCAAuC,GAAG;AAC3E,SAAK,IAAI,MAAM,CAAC,CAAC;AAAA,EACnB;AACA,aAAW,SAAS,MAAM,SAAS,sDAAsD,GAAG;AAC1F,SAAK,IAAI,MAAM,CAAC,CAAC;AAAA,EACnB;AACA,aAAW,OAAO,2BAA2B,KAAK,GAAG;AACnD,SAAK,IAAI,GAAG;AAAA,EACd;AACA,aAAW,OAAO,wBAAwB,KAAK,GAAG;AAChD,SAAK,IAAI,GAAG;AAAA,EACd;AACA,MAAI,QAAQ,4BAA4B;AACtC,eAAW,OAAO,2BAA2B,KAAK,GAAG;AACnD,WAAK,IAAI,GAAG;AAAA,IACd;AAAA,EACF;AACA,MAAI,QAAQ,2BAA2B;AACrC,eAAW,OAAO,0BAA0B,KAAK,GAAG;AAClD,WAAK,IAAI,GAAG;AAAA,IACd;AAAA,EACF;AACA,aAAW,SAAS,MAAM,SAAS,6FAA6F,GAAG;AACjI,SAAK,IAAI,MAAM,CAAC,CAAC;AAAA,EACnB;AACA,aAAW,SAAS,MAAM,SAAS,mDAAmD,GAAG;AACvF,UAAM,QAAQ,wBAAwB,MAAM,CAAC,CAAC;AAC9C,QAAI,OAAO;AACT,WAAK,IAAI,KAAK;AAAA,IAChB;AAAA,EACF;AACA,aAAW,SAAS,MAAM,SAAS,2CAA2C,GAAG;AAC/E,UAAM,QAAQ,MAAM,CAAC,GAAG,KAAK;AAC7B,QAAI,OAAO;AACT,WAAK,IAAI,KAAK;AAAA,IAChB;AAAA,EACF;AAEA,SAAO,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,MAAM,UAAU,KAAK,cAAc,KAAK,CAAC;AAClE;AAEO,SAAS,wBAAwB,OAAyB;AAC/D,QAAM,OAAO,oBAAI,IAAY;AAC7B,aAAW,SAAS,MAAM;AAAA,IACxB;AAAA,EACF,GAAG;AACD,UAAM,QAAQ,MAAM,CAAC,GAAG,YAAY;AACpC,QAAI,SAAS,CAAC,wBAAwB,IAAI,KAAK,GAAG;AAChD,WAAK,IAAI,KAAK;AAAA,IAChB;AAAA,EACF;AACA,SAAO,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,MAAM,UAAU,KAAK,cAAc,KAAK,CAAC;AAClE;AAEO,SAAS,2BAA2B,OAAyB;AAClE,QAAM,OAAO,oBAAI,IAAY;AAC7B,QAAM,kBAAkB,MAAM,YAAY,EAAE,QAAQ,QAAQ,GAAG;AAC/D,aAAW,CAAC,QAAQ,GAAG,KAAK,wBAAwB;AAClD,QAAI,sBAAsB,iBAAiB,MAAM,GAAG;AAClD,WAAK,IAAI,GAAG;AAAA,IACd;AAAA,EACF;AAEA,QAAM,SAAS,oBAAoB,KAAK;AACxC,WAAS,QAAQ,GAAG,QAAQ,OAAO,QAAQ,SAAS,GAAG;AACrD,QAAI,SAAS,+BAA+B,OAAO,KAAK,CAAC;AACzD,QAAI,CAAC,QAAQ;AACX;AAAA,IACF;AAEA,QAAI,aAAa,QAAQ;AACzB,QACE,WAAW,YACX,OAAO,UAAU,GAAG,YAAY,MAAM,QACtC;AACA,eAAS;AACT,oBAAc;AAAA,IAChB;AACA,UAAM,eAAe,OAAO,UAAU,GAAG,YAAY;AACrD,QAAI,iBAAiB,QAAQ,iBAAiB,OAAO;AACnD,oBAAc;AAAA,IAChB;AAEA,QAAI,gBAAgB;AACpB,aACM,oBAAoB,YACxB,oBAAoB,OAAO,QAC3B,qBAAqB,GACrB;AACA,YAAM,WAAW,OAAO,iBAAiB;AACzC,YAAM,kBAAkB,UAAU,YAAY;AAC9C,UAAI,CAAC,YAAY,+BAA+B,QAAQ,GAAG;AACzD;AAAA,MACF;AACA,UAAI,oBAAoB,SAAS,oBAAoB,MAAM;AACzD;AAAA,MACF;AACA,UAAI,iCAAiC,IAAI,eAAe,GAAG;AACzD;AAAA,MACF;AACA,UAAI,CAAC,uBAAuB,QAAQ,GAAG;AACrC;AAAA,MACF;AACA,6BAAuB,MAAM,QAAQ,QAAQ;AAC7C,sBAAgB;AAChB,cAAQ;AAAA,IACV;AACA,QAAI,CAAC,eAAe;AAClB;AAAA,IACF;AAAA,EACF;AAEA,SAAO,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,MAAM,UAAU,KAAK,cAAc,KAAK,CAAC;AAClE;AAEA,SAAS,uBACP,MACA,QACA,UACM;AACN,OAAK,IAAI,GAAG,MAAM,OAAO,QAAQ,EAAE;AACnC,OAAK,IAAI,GAAG,MAAM,IAAI,QAAQ,EAAE;AAChC,MAAI,WAAW,eAAe;AAC5B,SAAK,IAAI,WAAW,QAAQ,EAAE;AAAA,EAChC;AACF;AAEA,SAAS,uBAAuB,OAAwB;AACtD,aAAW,QAAQ,OAAO;AACxB,QAAI,iBAAiB,IAAI,GAAG;AAC1B,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,iBAAiB,MAAuB;AAC/C,QAAM,OAAO,KAAK,WAAW,CAAC;AAC9B,SAAO,QAAQ,MAAM,QAAQ;AAC/B;AAEA,SAAS,+BAA+B,OAA+C;AACrF,UAAQ,OAAO,YAAY,GAAG;AAAA,IAC5B,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO,MAAM,YAAY;AAAA,IAC3B;AACE,aAAO;AAAA,EACX;AACF;AAEA,SAAS,oBAAoB,OAAyB;AACpD,QAAM,SAAmB,CAAC;AAC1B,MAAI,UAAU;AACd,QAAM,OAAO,MAAM;AACjB,UAAM,QAAQ,mCAAmC,OAAO;AACxD,QAAI,MAAM,SAAS,GAAG;AACpB,aAAO,KAAK,KAAK;AAAA,IACnB;AACA,cAAU;AAAA,EACZ;AAEA,aAAW,QAAQ,OAAO;AACxB,QACE,qBAAqB,IAAI,KACzB,SAAS,OACT,SAAS,OACT,SAAS,OACT,SAAS,KACT;AACA,iBAAW;AACX;AAAA,IACF;AACA,SAAK;AAAA,EACP;AACA,OAAK;AACL,SAAO;AACT;AAEA,SAAS,mCAAmC,OAAuB;AACjE,MAAI,MAAM,MAAM;AAChB,SAAO,MAAM,GAAG;AACd,UAAM,OAAO,MAAM,MAAM,CAAC;AAC1B,QACE,SAAS,OACT,SAAS,OACT,SAAS,OACT,SAAS,OACT,SAAS,KACT;AACA;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,SAAO,MAAM,MAAM,GAAG,GAAG;AAC3B;AAEO,SAAS,0BAA0B,OAAyB;AACjE,QAAM,OAAO,oBAAI,IAAY;AAC7B,QAAM,kBAAkB,MAAM,YAAY,EAAE,QAAQ,QAAQ,GAAG;AAC/D,aAAW,OAAO,4BAA4B;AAC5C,QAAI,sBAAsB,iBAAiB,GAAG,GAAG;AAC/C,WAAK,IAAI,GAAG;AAAA,IACd;AAAA,EACF;AACA,MAAI,KAAK,SAAS,GAAG;AACnB,WAAO,CAAC;AAAA,EACV;AACA,aAAW,OAAO,iCAAiC;AACjD,QAAI,sBAAsB,iBAAiB,GAAG,GAAG;AAC/C,WAAK,IAAI,GAAG;AAAA,IACd;AAAA,EACF;AACA,SAAO,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,MAAM,UAAU,KAAK,cAAc,KAAK,CAAC;AAClE;AAEA,SAAS,sBAAsB,oBAA4B,QAAyB;AAClF,MAAI,aAAa;AACjB,SAAO,aAAa,mBAAmB,QAAQ;AAC7C,UAAM,QAAQ,mBAAmB,QAAQ,QAAQ,UAAU;AAC3D,QAAI,QAAQ,GAAG;AACb,aAAO;AAAA,IACT;AACA,UAAM,aAAa,QAAQ,OAAO;AAClC,QACE,sBAAsB,mBAAmB,QAAQ,CAAC,CAAC,KACnD,sBAAsB,mBAAmB,UAAU,CAAC,GACpD;AACA,aAAO;AAAA,IACT;AACA,iBAAa;AAAA,EACf;AACA,SAAO;AACT;AAEO,SAAS,2BAA2B,OAAyB;AAClE,QAAM,OAAO,oBAAI,IAAY;AAC7B,QAAM,kBAAkB,MAAM,YAAY,EAAE,QAAQ,QAAQ,GAAG;AAC/D,aAAW,OAAO,wBAAwB;AACxC,QAAI,sBAAsB,iBAAiB,GAAG,GAAG;AAC/C,WAAK,IAAI,GAAG;AAAA,IACd;AAAA,EACF;AACA,SAAO,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,MAAM,UAAU,KAAK,cAAc,KAAK,CAAC;AAClE;AAEA,SAAS,qBAAqB,OAAwB;AACpD,SAAO,2BAA2B,KAAK,EAAE;AAAA,IAAK,CAAC,QAC7C,kBAAkB,IAAI,GAAG;AAAA,EAC3B;AACF;AAEA,SAAS,sBAEP,SAAc,cAA4B;AAC1C,SAAO,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,MAAM,UAAU;AACxC,QAAI,cAAc;AAChB,YAAMA,gBAAe,KAAK,WAAW,cAAc,MAAM,UAAU;AACnE,UAAIA,kBAAiB,GAAG;AACtB,eAAOA;AAAA,MACT;AACA,YAAM,YAAY,MAAM,aAAa,KAAK;AAC1C,UAAI,cAAc,GAAG;AACnB,eAAO;AAAA,MACT;AACA,cAAQ,MAAM,SAAS,MAAM,KAAK,SAAS;AAAA,IAC7C;AACA,UAAM,cAAc,MAAM,SAAS,MAAM,KAAK,SAAS;AACvD,QAAI,eAAe,GAAG;AACpB,aAAO;AAAA,IACT;AACA,UAAM,eAAe,KAAK,WAAW,cAAc,MAAM,UAAU;AACnE,QAAI,iBAAiB,GAAG;AACtB,aAAO;AAAA,IACT;AACA,WAAO,KAAK,aAAa,MAAM;AAAA,EACjC,CAAC;AACH;AAEA,SAAS,wBAAwB,OAAmC;AAClE,QAAM,QAAQ,MAAM,KAAK,EAAE,MAAM,KAAK,EAAE,OAAO,OAAO;AACtD,SAAO,MAAM,SAAS,KAAK,uBAAuB,IAAI,MAAM,CAAC,CAAE,GAAG;AAChE,UAAM,MAAM;AAAA,EACd;AACA,SAAO,MAAM,SAAS,KAAK,uBAAuB,IAAI,MAAM,MAAM,SAAS,CAAC,CAAE,GAAG;AAC/E,UAAM,IAAI;AAAA,EACZ;AACA,SAAO,MAAM,SAAS,IAAI,MAAM,KAAK,GAAG,IAAI;AAC9C;AAEA,SAAS,sBAAsB,MAAmC;AAChE,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AACA,SAAO,CAAC,qBAAqB,IAAI;AACnC;AAEA,SAAS,uBAAuB,OAAyB;AACvD,QAAM,SAAmB,CAAC;AAC1B,MAAI,UAAU;AAEd,QAAM,eAAe,MAAM;AACzB,QAAI,SAAS;AACX,aAAO,KAAK,OAAO;AACnB,gBAAU;AAAA,IACZ;AAAA,EACF;AAEA,aAAW,QAAQ,OAAO;AACxB,QAAI,qBAAqB,IAAI,GAAG;AAC9B,iBAAW;AACX;AAAA,IACF;AAEA,iBAAa;AACb,QAAI,SAAS,OAAO,SAAS,KAAK;AAChC,aAAO,KAAK,IAAI;AAAA,IAClB,WAAW,gBAAgB,IAAI,GAAG;AAChC,aAAO,KAAK,GAAG;AAAA,IACjB;AAAA,EACF;AACA,eAAa;AAEb,SAAO;AACT;AAEA,SAAS,sBACP,QACA,YAC0C;AAC1C,QAAM,UAAoB,CAAC;AAC3B,MAAI;AACJ,MAAI;AACJ,MAAI,QAAQ;AACZ,QAAM,UAAU,KAAK;AAAA,IACnB,OAAO;AAAA,IACP,aAAa,yBAAyB;AAAA,EACxC;AAEA,SAAO,QAAQ,SAAS,SAAS,GAAG;AAClC,UAAM,QAAQ,OAAO,KAAK;AAC1B,UAAM,aAAa,MAAM,YAAY;AACrC,UAAM,QAAQ,6BAA6B,KAAK;AAChD,QAAI,UAAU,QAAW;AACvB,UAAI,sBAAsB,QAAW;AACnC,gBAAQ,KAAK,GAAG,qBAAqB,mBAAmB,KAAK,CAAC;AAC9D,4BAAoB;AAAA,MACtB,OAAO;AACL,gBAAQ,KAAK,KAAK;AAAA,MACpB;AACA,mBAAa;AACb;AAAA,IACF;AAEA,QAAI,eAAe,OAAO,eAAe,YAAY,eAAe,KAAK;AACvE;AAAA,IACF;AAEA,QACE,eAAe,OACf,eAAe,QACf,eAAe,aACf,eAAe,QACf;AACA,UAAI,eAAe,QAAW;AAC5B,YAAI,QAAQ,QAAQ,SAAS,CAAC,MAAM,YAAY;AAC9C,kBAAQ,IAAI;AAAA,QACd;AACA,4BAAoB;AAAA,MACtB;AACA;AAAA,IACF;AAEA,QAAI,eAAe,SAAS,QAAQ,SAAS,GAAG;AAC9C;AAAA,IACF;AAEA,QAAI,wBAAwB,KAAK,GAAG;AAClC;AAAA,IACF;AAEA;AAAA,EACF;AAEA,MAAI,sBAAsB,QAAW;AACnC,YAAQ,KAAK,iBAAiB;AAAA,EAChC;AAEA,SAAO;AAAA,IACL,SAAS,CAAC,GAAG,IAAI,IAAI,OAAO,CAAC;AAAA,IAC7B,WAAW;AAAA,EACb;AACF;AAEA,SAAS,qBAAqB,OAAe,KAAuB;AAClE,QAAM,MAAM,KAAK,IAAI,OAAO,GAAG;AAC/B,QAAM,OAAO,KAAK,IAAI,OAAO,GAAG;AAChC,MAAI,OAAO,MAAM,IAAI,wBAAwB;AAC3C,WAAO,CAAC,OAAO,GAAG;AAAA,EACpB;AAEA,QAAM,SAAmB,CAAC;AAC1B,WAAS,QAAQ,KAAK,SAAS,MAAM,SAAS,GAAG;AAC/C,WAAO,KAAK,KAAK;AAAA,EACnB;AACA,SAAO;AACT;AAEA,SAAS,wBAAwB,OAA+C;AAC9E,QAAM,aAAa,OAAO,YAAY;AACtC,UAAQ,YAAY;AAAA,IAClB,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAEA,SAAS,iCACP,WACU;AACV,QAAM,aAAa,oBAAI,IAAY;AACnC,MAAI,UAAU,mBAAmB;AAC/B,aAAS,SAAS,IAAI,UAAU,GAAG,UAAU,GAAG;AAC9C,iBAAW,IAAI,UAAU,SAAS,MAAM;AAAA,IAC1C;AAAA,EACF;AAEA,QAAM,aAAa,UAAU,SAAS;AAOtC,WAAS,SAAS,IAAI,UAAU,GAAG,UAAU,GAAG;AAC9C,eAAW,IAAI,aAAa,MAAM;AAAA,EACpC;AAEA,SAAO,CAAC,GAAG,UAAU,EAAE,KAAK,CAAC,MAAM,UAAU,OAAO,KAAK;AAC3D;AAEA,SAAS,6BAA6B,OAAmC;AACvE,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO;AAAA,EACT;AAEA,MAAI,QAAQ;AACZ,aAAW,QAAQ,OAAO;AACxB,UAAM,OAAO,KAAK,WAAW,CAAC;AAC9B,QAAI,OAAO,MAAM,OAAO,IAAI;AAC1B,aAAO;AAAA,IACT;AACA,YAAQ,QAAQ,MAAM,OAAO;AAAA,EAC/B;AACA,SAAO;AACT;AAEA,SAAS,yBAAyB,OAA2B,UAA0B;AACrF,MAAI,OAAO,UAAU,YAAY,CAAC,OAAO,SAAS,KAAK,GAAG;AACxD,WAAO;AAAA,EACT;AACA,SAAO,KAAK,IAAI,GAAG,KAAK,MAAM,KAAK,CAAC;AACtC;AAEA,SAAS,qBAAqB,MAAuB;AACnD,QAAM,OAAO,KAAK,WAAW,CAAC;AAC9B,SAAQ,QAAQ,MAAM,QAAQ,MACxB,QAAQ,MAAM,QAAQ,MACtB,QAAQ,MAAM,QAAQ;AAC9B;AAEA,SAAS,gBAAgB,MAAuB;AAC9C,SAAO,SAAS,OACX,SAAS,YACT,SAAS,YACT,SAAS,YACT,SAAS,YACT,SAAS,YACT,SAAS;AAChB;","names":["sessionOrder"]}
@@ -1,9 +1,9 @@
1
- import { R as ReplaySource, a as ReplayWarning, b as ImportTurn, B as BulkImportSource, c as BulkImportOptions, d as BulkImportResult, e as ReplayTurn, O as Orchestrator, C as CompoundingPromotionReport } from './orchestrator-6IvQ-Phj.js';
1
+ import { R as ReplaySource, a as ReplayWarning, b as ImportTurn, B as BulkImportSource, c as BulkImportOptions, d as BulkImportResult, e as ReplayTurn, O as Orchestrator, C as CompoundingPromotionReport } from './orchestrator-AOQMo7QI.js';
2
2
  import { M as MemoryGovernanceRunResult, c as MemoryGovernanceSummary, d as MemoryGovernanceMetrics, e as MemoryGovernanceQualityScore, f as MemoryGovernanceReviewQueueEntry, g as MemoryGovernanceAppliedAction, h as MemoryGovernanceTransitionReport, i as MemoryGovernanceManifest, j as MemoryGovernanceRestoreManifest, R as RestoreMemoryGovernanceRunResult } from './memory-projection-store-CY8TU40w.js';
3
3
  import { MemoryStatus, MemoryFile, BehaviorSignalEvent, QmdSearchResult, MemoryActionEvent, MemoryLifecycleEvent } from './types.js';
4
4
  import { Writable, Readable } from 'node:stream';
5
5
  import { DashboardStatus } from './dashboard-runtime.js';
6
- import { E as EngramAccessService } from './access-service-BTTNyo1i.js';
6
+ import { E as EngramAccessService } from './access-service-BkXt3di1.js';
7
7
  import { ResolveSecretRefFn } from './resolve-auth-token.js';
8
8
  import { EvalBaselineDeltaReport, EvalBaselineSnapshot, EvalCiGateReport, EvalBenchmarkPackSummary, EvalHarnessStatus, EvalStoredBaselineCiGateReport } from './evals.js';
9
9
  import { GraphHealthReport } from './graph.js';
package/dist/cli.d.ts CHANGED
@@ -1,10 +1,10 @@
1
- import './orchestrator-6IvQ-Phj.js';
2
- export { A as AccessHttpServeCliCommandOptions, c as ArchiveObservationsCliCommandOptions, B as BulkImportCliCommandOptions, C as CompatCliCommandOptions, d as ConversationIndexHealthCliOrchestrator, D as DashboardStartCliCommandOptions, e as DedupeCandidate, E as ExactDedupePlan, G as GraphHealthCliCommandOptions, M as MemoryActionAuditCliCommandOptions, g as MemoryActionAuditCliNamespaceSummary, h as MemoryActionAuditCliReport, i as MemoryGovernanceCliCommandOptions, j as MemoryGovernanceReportCliCommandOptions, k as MemoryGovernanceRestoreCliCommandOptions, l as MemoryReviewDispositionCliCommandOptions, m as MemoryTimelineCliCommandOptions, n as MigrateCliOrchestrator, o as MigrateCliReport, q as MigrateObservationsCliCommandOptions, s as PolicyDiffCliReport, t as PolicyDiffEntry, u as PolicyRollbackCliReport, v as PolicyStatusCliReport, w as PolicyTuningCliOrchestrator, R as RebuildMemoryLifecycleLedgerCliCommandOptions, x as RebuildMemoryProjectionCliCommandOptions, y as RebuildObservationsCliCommandOptions, z as RepairMemoryProjectionCliCommandOptions, F as ReplayCliCommandOptions, H as ReplayCliOrchestrator, I as RouteCliCommandOptions, S as SessionIntegrityCliCommandOptions, J as SessionRepairCliCommandOptions, T as TailscaleStatusCliCommandOptions, K as TailscaleSyncCliCommandOptions, L as TierMigrationCliOrchestrator, N as TrainingExportCliCommandOptions, V as VerifyMemoryProjectionCliCommandOptions, W as WebDavServeCliCommandOptions, O as WorkProjectCliCommandOptions, Q as WorkTaskCliCommandOptions, U as filterNormalMemorySearchResults, X as hasDestructivePurgeFailures, Y as isNormalRetrievalVisibleMemory, Z as parseDurationToMs, _ as parseStrictCliDate, $ as planAggressiveDuplicateDeletions, a0 as planExactDuplicateDeletions, a1 as registerCli, a2 as resolveAccessPrincipalOverride, a3 as resolveMemoryDirForNamespace, a4 as runAbstractionNodeStatusCliCommand, a5 as runAccessHttpServeCliCommand, a6 as runAccessHttpStatusCliCommand, a7 as runAccessHttpStopCliCommand, a8 as runAccessMcpServeCliCommand, a9 as runArchiveObservationsCliCommand, aa as runBenchmarkBaselineReportCliCommand, ab as runBenchmarkBaselineSnapshotCliCommand, ac as runBenchmarkCiGateCliCommand, ad as runBenchmarkImportCliCommand, ae as runBenchmarkStatusCliCommand, af as runBenchmarkStoredBaselineCiGateCliCommand, ag as runBenchmarkValidateCliCommand, r as runBulkImportCliCommand, ah as runCausalTrajectoryStatusCliCommand, ai as runCommitmentLifecycleCliCommand, aj as runCommitmentRecordCliCommand, ak as runCommitmentSetStateCliCommand, al as runCommitmentStatusCliCommand, am as runCompatCliCommand, an as runCompoundingPromoteCliCommand, ao as runConversationIndexHealthCliCommand, ap as runConversationIndexInspectCliCommand, aq as runConversationIndexRebuildCliCommand, ar as runCueAnchorStatusCliCommand, as as runDashboardStartCliCommand, at as runDashboardStatusCliCommand, au as runDashboardStopCliCommand, av as runGraphHealthCliCommand, aw as runHarmonicSearchCliCommand, ax as runMemoryActionAuditCliCommand, ay as runMemoryGovernanceCliCommand, az as runMemoryGovernanceReportCliCommand, aA as runMemoryGovernanceRestoreCliCommand, aB as runMemoryReviewDispositionCliCommand, aC as runMemoryTimelineCliCommand, aD as runMigrateNormalizeFrontmatterCliCommand, aE as runMigrateObservationsCliCommand, aF as runMigrateRechunkCliCommand, aG as runMigrateReextractCliCommand, aH as runMigrateRescoreImportanceCliCommand, aI as runObjectiveStateStatusCliCommand, aJ as runPolicyDiffCliCommand, aK as runPolicyRollbackCliCommand, aL as runPolicyStatusCliCommand, aM as runRebuildMemoryLifecycleLedgerCliCommand, aN as runRebuildMemoryProjectionCliCommand, aO as runRebuildObservationsCliCommand, aP as runRepairMemoryProjectionCliCommand, aQ as runReplayCliCommand, aR as runResumeBundleBuildCliCommand, aS as runResumeBundleRecordCliCommand, aT as runResumeBundleStatusCliCommand, aU as runRouteCliCommand, aV as runSemanticRulePromoteCliCommand, aW as runSemanticRuleVerifyCliCommand, aX as runSessionCheckCliCommand, aY as runSessionRepairCliCommand, aZ as runTailscaleStatusCliCommand, a_ as runTailscaleSyncCliCommand, a$ as runTierMigrateCliCommand, b0 as runTierStatusCliCommand, b1 as runTrainingExportCliCommand, b2 as runTrustZoneDemoSeedCliCommand, b3 as runTrustZonePromoteCliCommand, b4 as runTrustZoneStatusCliCommand, b5 as runUtilityLearningCliCommand, b6 as runUtilityLearningStatusCliCommand, b7 as runUtilityTelemetryRecordCliCommand, b8 as runUtilityTelemetryStatusCliCommand, b9 as runVerifiedRecallSearchCliCommand, ba as runVerifyMemoryProjectionCliCommand, bb as runWebDavServeCliCommand, bc as runWebDavStopCliCommand, bd as runWorkProductRecallSearchCliCommand, be as runWorkProductRecordCliCommand, bf as runWorkProductStatusCliCommand, bg as runWorkProjectCliCommand, bh as runWorkTaskCliCommand } from './cli-BrEwQTnW.js';
1
+ import './orchestrator-AOQMo7QI.js';
2
+ export { A as AccessHttpServeCliCommandOptions, c as ArchiveObservationsCliCommandOptions, B as BulkImportCliCommandOptions, C as CompatCliCommandOptions, d as ConversationIndexHealthCliOrchestrator, D as DashboardStartCliCommandOptions, e as DedupeCandidate, E as ExactDedupePlan, G as GraphHealthCliCommandOptions, M as MemoryActionAuditCliCommandOptions, g as MemoryActionAuditCliNamespaceSummary, h as MemoryActionAuditCliReport, i as MemoryGovernanceCliCommandOptions, j as MemoryGovernanceReportCliCommandOptions, k as MemoryGovernanceRestoreCliCommandOptions, l as MemoryReviewDispositionCliCommandOptions, m as MemoryTimelineCliCommandOptions, n as MigrateCliOrchestrator, o as MigrateCliReport, q as MigrateObservationsCliCommandOptions, s as PolicyDiffCliReport, t as PolicyDiffEntry, u as PolicyRollbackCliReport, v as PolicyStatusCliReport, w as PolicyTuningCliOrchestrator, R as RebuildMemoryLifecycleLedgerCliCommandOptions, x as RebuildMemoryProjectionCliCommandOptions, y as RebuildObservationsCliCommandOptions, z as RepairMemoryProjectionCliCommandOptions, F as ReplayCliCommandOptions, H as ReplayCliOrchestrator, I as RouteCliCommandOptions, S as SessionIntegrityCliCommandOptions, J as SessionRepairCliCommandOptions, T as TailscaleStatusCliCommandOptions, K as TailscaleSyncCliCommandOptions, L as TierMigrationCliOrchestrator, N as TrainingExportCliCommandOptions, V as VerifyMemoryProjectionCliCommandOptions, W as WebDavServeCliCommandOptions, O as WorkProjectCliCommandOptions, Q as WorkTaskCliCommandOptions, U as filterNormalMemorySearchResults, X as hasDestructivePurgeFailures, Y as isNormalRetrievalVisibleMemory, Z as parseDurationToMs, _ as parseStrictCliDate, $ as planAggressiveDuplicateDeletions, a0 as planExactDuplicateDeletions, a1 as registerCli, a2 as resolveAccessPrincipalOverride, a3 as resolveMemoryDirForNamespace, a4 as runAbstractionNodeStatusCliCommand, a5 as runAccessHttpServeCliCommand, a6 as runAccessHttpStatusCliCommand, a7 as runAccessHttpStopCliCommand, a8 as runAccessMcpServeCliCommand, a9 as runArchiveObservationsCliCommand, aa as runBenchmarkBaselineReportCliCommand, ab as runBenchmarkBaselineSnapshotCliCommand, ac as runBenchmarkCiGateCliCommand, ad as runBenchmarkImportCliCommand, ae as runBenchmarkStatusCliCommand, af as runBenchmarkStoredBaselineCiGateCliCommand, ag as runBenchmarkValidateCliCommand, r as runBulkImportCliCommand, ah as runCausalTrajectoryStatusCliCommand, ai as runCommitmentLifecycleCliCommand, aj as runCommitmentRecordCliCommand, ak as runCommitmentSetStateCliCommand, al as runCommitmentStatusCliCommand, am as runCompatCliCommand, an as runCompoundingPromoteCliCommand, ao as runConversationIndexHealthCliCommand, ap as runConversationIndexInspectCliCommand, aq as runConversationIndexRebuildCliCommand, ar as runCueAnchorStatusCliCommand, as as runDashboardStartCliCommand, at as runDashboardStatusCliCommand, au as runDashboardStopCliCommand, av as runGraphHealthCliCommand, aw as runHarmonicSearchCliCommand, ax as runMemoryActionAuditCliCommand, ay as runMemoryGovernanceCliCommand, az as runMemoryGovernanceReportCliCommand, aA as runMemoryGovernanceRestoreCliCommand, aB as runMemoryReviewDispositionCliCommand, aC as runMemoryTimelineCliCommand, aD as runMigrateNormalizeFrontmatterCliCommand, aE as runMigrateObservationsCliCommand, aF as runMigrateRechunkCliCommand, aG as runMigrateReextractCliCommand, aH as runMigrateRescoreImportanceCliCommand, aI as runObjectiveStateStatusCliCommand, aJ as runPolicyDiffCliCommand, aK as runPolicyRollbackCliCommand, aL as runPolicyStatusCliCommand, aM as runRebuildMemoryLifecycleLedgerCliCommand, aN as runRebuildMemoryProjectionCliCommand, aO as runRebuildObservationsCliCommand, aP as runRepairMemoryProjectionCliCommand, aQ as runReplayCliCommand, aR as runResumeBundleBuildCliCommand, aS as runResumeBundleRecordCliCommand, aT as runResumeBundleStatusCliCommand, aU as runRouteCliCommand, aV as runSemanticRulePromoteCliCommand, aW as runSemanticRuleVerifyCliCommand, aX as runSessionCheckCliCommand, aY as runSessionRepairCliCommand, aZ as runTailscaleStatusCliCommand, a_ as runTailscaleSyncCliCommand, a$ as runTierMigrateCliCommand, b0 as runTierStatusCliCommand, b1 as runTrainingExportCliCommand, b2 as runTrustZoneDemoSeedCliCommand, b3 as runTrustZonePromoteCliCommand, b4 as runTrustZoneStatusCliCommand, b5 as runUtilityLearningCliCommand, b6 as runUtilityLearningStatusCliCommand, b7 as runUtilityTelemetryRecordCliCommand, b8 as runUtilityTelemetryStatusCliCommand, b9 as runVerifiedRecallSearchCliCommand, ba as runVerifyMemoryProjectionCliCommand, bb as runWebDavServeCliCommand, bc as runWebDavStopCliCommand, bd as runWorkProductRecallSearchCliCommand, be as runWorkProductRecordCliCommand, bf as runWorkProductStatusCliCommand, bg as runWorkProjectCliCommand, bh as runWorkTaskCliCommand } from './cli-Cvy2SNhF.js';
3
3
  import './memory-projection-store-CY8TU40w.js';
4
4
  import './types.js';
5
5
  import 'node:stream';
6
6
  import './dashboard-runtime.js';
7
- import './access-service-BTTNyo1i.js';
7
+ import './access-service-BkXt3di1.js';
8
8
  import './resolve-auth-token.js';
9
9
  import './evals.js';
10
10
  import './graph.js';
@@ -1,4 +1,4 @@
1
- import { O as Orchestrator } from './orchestrator-6IvQ-Phj.js';
1
+ import { O as Orchestrator } from './orchestrator-AOQMo7QI.js';
2
2
  import { MemoryCategory, PluginConfig } from './types.js';
3
3
  import './buffer.js';
4
4
  import './storage.js';
@@ -4,6 +4,10 @@ interface ExplicitCueRecallEngine {
4
4
  role: string;
5
5
  content: string;
6
6
  }>>;
7
+ getStats?(sessionId?: string): Promise<{
8
+ totalMessages: number;
9
+ maxTurnIndex?: number;
10
+ }>;
7
11
  searchContextFull(query: string, limit: number, sessionId?: string): Promise<Array<{
8
12
  turn_index: number;
9
13
  role: string;
@@ -22,11 +26,22 @@ interface ExplicitCueRecallOptions {
22
26
  includeBenchmarkAnchorCues?: boolean;
23
27
  includeStructuredPlanCues?: boolean;
24
28
  }
29
+ interface TrajectoryAnalysisRecallOptions {
30
+ engine: ExplicitCueRecallEngine | null | undefined;
31
+ sessionId?: string;
32
+ query: string;
33
+ maxChars: number;
34
+ }
25
35
  type ExplicitTurnReference = {
26
36
  number: number;
27
37
  includeDirectTurn: boolean;
28
38
  };
29
39
  declare function buildExplicitCueRecallSection(options: ExplicitCueRecallOptions): Promise<string>;
40
+ declare function buildTrajectoryAnalysisRecallSection(options: TrajectoryAnalysisRecallOptions): Promise<string>;
41
+ declare function normalizeTurnExpansionEnd(stats: {
42
+ totalMessages: number;
43
+ maxTurnIndex?: number;
44
+ }): number;
30
45
  declare function collectExplicitTurnReferences(query: string): ExplicitTurnReference[];
31
46
  declare function collectLexicalCues(query: string, options?: {
32
47
  includeBenchmarkAnchorCues?: boolean;
@@ -37,4 +52,4 @@ declare function collectBenchmarkAnchorCues(query: string): string[];
37
52
  declare function collectStructuredPlanCues(query: string): string[];
38
53
  declare function collectTemporalLexicalCues(query: string): string[];
39
54
 
40
- export { type ExplicitCueRecallEngine, type ExplicitCueRecallOptions, type ExplicitTurnReference, buildExplicitCueRecallSection, collectBenchmarkAnchorCues, collectExplicitTurnReferences, collectLexicalCues, collectQuestionSlotCues, collectStructuredPlanCues, collectTemporalLexicalCues };
55
+ export { type ExplicitCueRecallEngine, type ExplicitCueRecallOptions, type ExplicitTurnReference, type TrajectoryAnalysisRecallOptions, buildExplicitCueRecallSection, buildTrajectoryAnalysisRecallSection, collectBenchmarkAnchorCues, collectExplicitTurnReferences, collectLexicalCues, collectQuestionSlotCues, collectStructuredPlanCues, collectTemporalLexicalCues, normalizeTurnExpansionEnd };
@@ -1,21 +1,25 @@
1
1
  import {
2
2
  buildExplicitCueRecallSection,
3
+ buildTrajectoryAnalysisRecallSection,
3
4
  collectBenchmarkAnchorCues,
4
5
  collectExplicitTurnReferences,
5
6
  collectLexicalCues,
6
7
  collectQuestionSlotCues,
7
8
  collectStructuredPlanCues,
8
- collectTemporalLexicalCues
9
- } from "./chunk-ERUDW6DU.js";
9
+ collectTemporalLexicalCues,
10
+ normalizeTurnExpansionEnd
11
+ } from "./chunk-S2JJBLJG.js";
10
12
  import "./chunk-74WWN7ZW.js";
11
13
  import "./chunk-PZ5AY32C.js";
12
14
  export {
13
15
  buildExplicitCueRecallSection,
16
+ buildTrajectoryAnalysisRecallSection,
14
17
  collectBenchmarkAnchorCues,
15
18
  collectExplicitTurnReferences,
16
19
  collectLexicalCues,
17
20
  collectQuestionSlotCues,
18
21
  collectStructuredPlanCues,
19
- collectTemporalLexicalCues
22
+ collectTemporalLexicalCues,
23
+ normalizeTurnExpansionEnd
20
24
  };
21
25
  //# sourceMappingURL=explicit-cue-recall.js.map
package/dist/index.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  export { LEGACY_PLUGIN_ID, PLUGIN_ID, resolveRemnicPluginEntry } from './plugin-id.js';
2
2
  export { parseConfig } from './config.js';
3
- import { f as BulkImportSourceAdapter, b as ImportTurn } from './orchestrator-6IvQ-Phj.js';
4
- export { g as BulkImportError, c as BulkImportOptions, d as BulkImportResult, B as BulkImportSource, h as ImportSourceRole, i as ImportTurnValidationIssue, O as Orchestrator, j as SemanticDedupDecision, k as SemanticDedupHit, S as SemanticDedupLookup, l as SemanticDedupOptions, m as decideSemanticDedup, n as defaultWorkspaceDir, o as isImportRole, p as parseIsoTimestamp, s as sanitizeSessionKeyForFilename, v as validateImportTurn } from './orchestrator-6IvQ-Phj.js';
3
+ import { f as BulkImportSourceAdapter, b as ImportTurn } from './orchestrator-AOQMo7QI.js';
4
+ export { g as BulkImportError, c as BulkImportOptions, d as BulkImportResult, B as BulkImportSource, h as ImportSourceRole, i as ImportTurnValidationIssue, O as Orchestrator, j as SemanticDedupDecision, k as SemanticDedupHit, S as SemanticDedupLookup, l as SemanticDedupOptions, m as decideSemanticDedup, n as defaultWorkspaceDir, o as isImportRole, p as parseIsoTimestamp, s as sanitizeSessionKeyForFilename, v as validateImportTurn } from './orchestrator-AOQMo7QI.js';
5
5
  export { EvidencePackItem, EvidencePackOptions, buildEvidencePack } from './evidence-pack.js';
6
- export { ExplicitCueRecallEngine, ExplicitCueRecallOptions, ExplicitTurnReference, buildExplicitCueRecallSection, collectBenchmarkAnchorCues, collectExplicitTurnReferences, collectLexicalCues, collectQuestionSlotCues, collectStructuredPlanCues, collectTemporalLexicalCues } from './explicit-cue-recall.js';
6
+ export { ExplicitCueRecallEngine, ExplicitCueRecallOptions, ExplicitTurnReference, TrajectoryAnalysisRecallOptions, buildExplicitCueRecallSection, buildTrajectoryAnalysisRecallSection, collectBenchmarkAnchorCues, collectExplicitTurnReferences, collectLexicalCues, collectQuestionSlotCues, collectStructuredPlanCues, collectTemporalLexicalCues, normalizeTurnExpansionEnd } from './explicit-cue-recall.js';
7
7
  import { StorageManager } from './storage.js';
8
8
  export { ExtractionEngine } from './extraction.js';
9
9
  export { CodexCliFallbackConfig, CodexCliFallbackMessage, CodexCliFallbackOptions, CodexCliFallbackRequest, CodexCliFallbackResult, CodexCliFallbackRunner, setCodexCliFallbackRunnerForProcess } from './codex-cli-fallback.js';
@@ -14,8 +14,8 @@ import { PluginConfig, CodingContext, CodingModeConfig, MemoryFile, MemoryCatego
14
14
  export { AgentAccessAuthToken, BriefingActiveThread, BriefingConfig, BriefingFocus, BriefingFollowup, BriefingOpenCommitment, BriefingRecentEntity, BriefingResult, BriefingSections, BriefingWindow, BufferSurpriseEvent, CalendarEvent, CalendarSource, CodexCompatConfig, ContinuityImprovementLoop, DEFAULT_RECALL_DISCLOSURE, ExtractedFact, GatewayConfig, MemoryActionEligibilityContext, MemoryActionEligibilitySource, MemoryActionType, MemoryObservation, MemoryScope, RECALL_DISCLOSURE_LEVELS, RecallDisclosure, SecretRef, isRecallDisclosure } from './types.js';
15
15
  export { JudgeBatchResult, JudgeCandidate, JudgeVerdict, JudgeVerdictKind, clearVerdictCache, createVerdictCache, getVerdictKind, isDurableVerdict, isValidCachedVerdict, judgeFactDurability, normalizeCachedVerdict, verdictCacheSize } from './extraction-judge.js';
16
16
  export { hasBroadGraphIntent, inferIntentFromText, intentCompatibilityScore, isTaskInitiationIntent, planRecallMode } from './intent.js';
17
- import { P as PeerInteractionLogEntry, a as Peer, b as PeerProfile, c as ExportManifestV2, I as ImportCapsuleResult, C as CapsuleParent } from './access-service-BTTNyo1i.js';
18
- export { d as EngramAccessInputError, E as EngramAccessService, e as PEER_ID_MAX_LENGTH, f as PEER_ID_PATTERN, g as PeerKind, h as PeerProfileFieldProvenance, i as ProcedureStatsConfigSnapshot, j as ProcedureStatsRecent, k as ProcedureStatsReport, l as ProcedureStatusCounts, m as computeProcedureStats, n as formatProcedureStatsText } from './access-service-BTTNyo1i.js';
17
+ import { P as PeerInteractionLogEntry, a as Peer, b as PeerProfile, c as ExportManifestV2, I as ImportCapsuleResult, C as CapsuleParent } from './access-service-BkXt3di1.js';
18
+ export { d as EngramAccessInputError, E as EngramAccessService, e as PEER_ID_MAX_LENGTH, f as PEER_ID_PATTERN, g as PeerKind, h as PeerProfileFieldProvenance, i as ProcedureStatsConfigSnapshot, j as ProcedureStatsRecent, k as ProcedureStatsReport, l as ProcedureStatusCounts, m as computeProcedureStats, n as formatProcedureStatsText } from './access-service-BkXt3di1.js';
19
19
  export { FILTER_LABELS as DIRECT_ANSWER_FILTER_LABELS, DirectAnswerCandidate, DirectAnswerConfig, DirectAnswerInput, DirectAnswerReason, DirectAnswerResult, isDirectAnswerEligible } from './direct-answer.js';
20
20
  export { MemoryTier, TierRoutingPolicy, TierTransitionDecision, computeTierValueScore, decideTierTransition } from './tier-routing.js';
21
21
  export { ApplyReasoningTraceBoostOptions, BoostableResult, DEFAULT_REASONING_TRACE_BOOST, applyReasoningTraceBoost, isReasoningTracePath, looksLikeProblemSolvingQuery } from './reasoning-trace-recall.js';
@@ -53,7 +53,7 @@ import { R as RolloutSummaryInput, M as MaterializeResult } from './codex-materi
53
53
  export { a as MATERIALIZE_VERSION, b as MaterializeOptions, S as SENTINEL_FILE, d as describeMemoriesDir, e as ensureSentinel, m as materializeForNamespace } from './codex-materialize-CQlLTzke.js';
54
54
  import { T as Taxonomy, R as ResolverDecision } from './types-DJhqDJUV.js';
55
55
  export { a as TaxonomyCategory } from './types-DJhqDJUV.js';
56
- export { B as BulkImportCliCommandOptions, P as ProcessBatchFn, a as ProcessBatchResult, f as formatBatchTranscript, p as parseStrictCliDate, r as runBulkImportCliCommand, b as runBulkImportPipeline } from './cli-BrEwQTnW.js';
56
+ export { B as BulkImportCliCommandOptions, P as ProcessBatchFn, a as ProcessBatchResult, f as formatBatchTranscript, p as parseStrictCliDate, r as runBulkImportCliCommand, b as runBulkImportPipeline } from './cli-Cvy2SNhF.js';
57
57
  export { FallbackLlmClient, FallbackLlmOptions, FallbackLlmResponse, FallbackLlmRuntimeContext } from './fallback-llm.js';
58
58
  export { ComputeMemoryWorthInput, MemoryWorthResult, computeMemoryWorth } from './memory-worth.js';
59
59
  export { MemoryOutcomeKind, RecordMemoryOutcomeInput, RecordMemoryOutcomeResult, memoryWorthOutcomeEligibleCategories, recordMemoryOutcome } from './memory-worth-outcomes.js';
package/dist/index.js CHANGED
@@ -110,7 +110,7 @@ import {
110
110
  saveTaxonomy,
111
111
  validateSlug,
112
112
  validateTaxonomy
113
- } from "./chunk-5GCNE7CN.js";
113
+ } from "./chunk-KUHRUM6B.js";
114
114
  import "./chunk-4DXC6HQQ.js";
115
115
  import "./chunk-CK5NTM2S.js";
116
116
  import "./chunk-FSFEQI74.js";
@@ -173,13 +173,15 @@ import "./chunk-QR3C7BKQ.js";
173
173
  import "./chunk-NN3LPQ5D.js";
174
174
  import {
175
175
  buildExplicitCueRecallSection,
176
+ buildTrajectoryAnalysisRecallSection,
176
177
  collectBenchmarkAnchorCues,
177
178
  collectExplicitTurnReferences,
178
179
  collectLexicalCues,
179
180
  collectQuestionSlotCues,
180
181
  collectStructuredPlanCues,
181
- collectTemporalLexicalCues
182
- } from "./chunk-ERUDW6DU.js";
182
+ collectTemporalLexicalCues,
183
+ normalizeTurnExpansionEnd
184
+ } from "./chunk-S2JJBLJG.js";
183
185
  import {
184
186
  buildEvidencePack
185
187
  } from "./chunk-74WWN7ZW.js";
@@ -5838,6 +5840,7 @@ export {
5838
5840
  buildMemoryWorthCounterMap,
5839
5841
  buildProcedureMarkdownBody,
5840
5842
  buildProcedureRecallSection,
5843
+ buildTrajectoryAnalysisRecallSection,
5841
5844
  builtInLiveConnectorDefinitions,
5842
5845
  checkMarketplaceManifest,
5843
5846
  clearAuthTokenSecretCache,
@@ -5962,6 +5965,7 @@ export {
5962
5965
  normalizeExplicitParts,
5963
5966
  normalizeOriginUrl,
5964
5967
  normalizeQueryText,
5968
+ normalizeTurnExpansionEnd,
5965
5969
  observeRequestSchema,
5966
5970
  onboard,
5967
5971
  openLcmDatabase,