(
args: CompressRangeToolArgs,
searchContext: SearchContext,
state: SessionState,
)
| 39 | } |
| 40 | |
| 41 | export function resolveRanges( |
| 42 | args: CompressRangeToolArgs, |
| 43 | searchContext: SearchContext, |
| 44 | state: SessionState, |
| 45 | ): ResolvedRangeCompression[] { |
| 46 | return args.content.map((entry, index) => { |
| 47 | const normalizedEntry = { |
| 48 | startId: entry.startId.trim(), |
| 49 | endId: entry.endId.trim(), |
| 50 | summary: entry.summary, |
| 51 | } |
| 52 | |
| 53 | const { startReference, endReference } = resolveBoundaryIds( |
| 54 | searchContext, |
| 55 | state, |
| 56 | normalizedEntry.startId, |
| 57 | normalizedEntry.endId, |
| 58 | ) |
| 59 | const selection = resolveSelection(searchContext, startReference, endReference) |
| 60 | |
| 61 | return { |
| 62 | index, |
| 63 | entry: normalizedEntry, |
| 64 | selection, |
| 65 | anchorMessageId: resolveAnchorMessageId(startReference), |
| 66 | } |
| 67 | }) |
| 68 | } |
| 69 | |
| 70 | export function validateNonOverlapping(plans: ResolvedRangeCompression[]): void { |
| 71 | const sortedPlans = [...plans].sort( |
no test coverage detected