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

Function buildToolInventory

src/tools/toolInventory.ts:87–134  ·  view source on GitHub ↗
({
  baseTools,
  enabledTools,
  replPrimitiveTools,
}: ToolInventoryInputs)

Source from the content-addressed store, hash-verified

85}
86
87export function buildToolInventory({
88 baseTools,
89 enabledTools,
90 replPrimitiveTools,
91}: ToolInventoryInputs): ToolInventoryEntry[] {
92 const baseByName = new Map(baseTools.map(tool => [tool.name, tool]))
93 const enabledByName = new Map(enabledTools.map(tool => [tool.name, tool]))
94 const replByName = new Map(replPrimitiveTools.map(tool => [tool.name, tool]))
95
96 const toolNames = sortToolNames([
97 ...Object.keys(TOOL_POLICY_BY_NAME),
98 ...baseByName.keys(),
99 ...enabledByName.keys(),
100 ...replByName.keys(),
101 ])
102
103 return toolNames.map(name => {
104 const policy = getToolPolicy(name)
105 const baseTool = baseByName.get(name)
106 const enabledTool = enabledByName.get(name)
107 const replTool = replByName.get(name)
108 const tool = enabledTool ?? baseTool ?? replTool
109 const turnOneOrDeferred: ToolAdvertisedSurface =
110 enabledTool === undefined
111 ? 'not_exposed'
112 : isDeferredTool(enabledTool)
113 ? 'deferred'
114 : 'turn_one'
115
116 return {
117 name,
118 tier: policy?.tier ?? null,
119 rationale: policy?.rationale ?? null,
120 policyDefined: policy !== undefined,
121 compiled: baseTool !== undefined || replTool !== undefined,
122 baseRegistered: baseTool !== undefined,
123 enabled: enabledTool !== undefined,
124 turnOneOrDeferred,
125 replExposed: replTool !== undefined,
126 shouldDefer: tool?.shouldDefer === true,
127 alwaysLoad: tool?.alwaysLoad === true,
128 isMcp: tool?.isMcp === true,
129 aliases: tool?.aliases ?? [],
130 searchHint: tool?.searchHint ?? null,
131 userFacingName: resolveUserFacingName(tool),
132 }
133 })
134}
135
136export function collectToolInventory(
137 permissionContext: ToolPermissionContext = getEmptyToolPermissionContext(),

Callers 1

collectToolInventoryFunction · 0.85

Calls 6

getToolPolicyFunction · 0.85
isDeferredToolFunction · 0.85
resolveUserFacingNameFunction · 0.85
keysMethod · 0.80
sortToolNamesFunction · 0.70
getMethod · 0.45

Tested by

no test coverage detected