MCPcopy Create free account
hub / github.com/Noumena-Network/code / sortToolsByPolicy

Function sortToolsByPolicy

src/tools/toolPolicy.ts:285–314  ·  view source on GitHub ↗
(tools: readonly T[])

Source from the content-addressed store, hash-verified

283)
284
285export function sortToolsByPolicy<T extends { name: string }>(tools: readonly T[]): T[] {
286 return [...tools]
287 .map((tool, index) => ({ tool, index }))
288 .sort((left, right) => {
289 const leftTier = getToolTier(left.tool.name)
290 const rightTier = getToolTier(right.tool.name)
291 const leftTierRank = leftTier ? TOOL_TIER_ORDER[leftTier] : Number.MAX_SAFE_INTEGER
292 const rightTierRank = rightTier ? TOOL_TIER_ORDER[rightTier] : Number.MAX_SAFE_INTEGER
293 if (leftTierRank !== rightTierRank) {
294 return leftTierRank - rightTierRank
295 }
296
297 const leftPrimaryIndex = PRIMARY_TOOL_ORDER_INDEX.get(left.tool.name)
298 const rightPrimaryIndex = PRIMARY_TOOL_ORDER_INDEX.get(right.tool.name)
299 if (leftPrimaryIndex !== undefined || rightPrimaryIndex !== undefined) {
300 if (leftPrimaryIndex === undefined) return 1
301 if (rightPrimaryIndex === undefined) return -1
302 if (leftPrimaryIndex !== rightPrimaryIndex) {
303 return leftPrimaryIndex - rightPrimaryIndex
304 }
305 }
306
307 const byName = left.tool.name.localeCompare(right.tool.name)
308 if (byName !== 0) {
309 return byName
310 }
311 return left.index - right.index
312 })
313 .map(entry => entry.tool)
314}

Callers 6

getToolsForDefaultPresetFunction · 0.85
getToolsFunction · 0.85
assembleToolPoolFunction · 0.85
sortToolNamesFunction · 0.85
sortToolNamesFunction · 0.85
toolPolicy.test.tsFile · 0.85

Calls 2

getToolTierFunction · 0.85
getMethod · 0.45

Tested by

no test coverage detected