MCPcopy Create free account
hub / github.com/UsefulSoftwareCo/executor / toolSchema

Function toolSchema

packages/core/sdk/src/executor.ts:5732–5878  ·  view source on GitHub ↗
(
      address: ToolAddress,
    )

Source from the content-addressed store, hash-verified

5730 });
5731
5732 const toolSchema = (
5733 address: ToolAddress,
5734 ): Effect.Effect<ToolSchemaView | null, StorageFailure> =>
5735 Effect.gen(function* () {
5736 const policyRules = yield* listActivePolicyRuleSet();
5737 const staticEntry = staticTools.get(String(address));
5738 if (staticEntry) {
5739 const tool = staticToolToTool(staticEntry);
5740 const effective = yield* resolvePolicyFromRuleSet(
5741 normalizedPolicyId(tool),
5742 policyRules,
5743 tool.annotations?.requiresApproval,
5744 );
5745 if (effective.action === "block") return null;
5746 const preview = yield* Effect.tryPromise({
5747 try: () =>
5748 buildToolTypeScriptPreview({
5749 inputSchema: tool.inputSchema,
5750 outputSchema: tool.outputSchema,
5751 defs: new Map(),
5752 }),
5753 catch: (cause) =>
5754 storageFailureFromUnknown("Failed to build static tool TypeScript preview", cause),
5755 }).pipe(Effect.option);
5756 return ToolSchemaView.make({
5757 address,
5758 name: tool.name,
5759 description: tool.description,
5760 inputSchema: tool.inputSchema,
5761 outputSchema: tool.outputSchema,
5762 inputTypeScript: Option.getOrUndefined(preview)?.inputTypeScript,
5763 outputTypeScript: Option.getOrUndefined(preview)?.outputTypeScript,
5764 typeScriptDefinitions: Option.getOrUndefined(preview)?.typeScriptDefinitions,
5765 annotations: toolAnnotationsView(tool.annotations),
5766 });
5767 }
5768
5769 const parsed = parseToolAddress(String(address));
5770 if (!parsed) return null;
5771 const row = yield* core.findFirst("tool", {
5772 where: (b: AnyCb) =>
5773 b.and(
5774 byOwner(parsed.owner)(b),
5775 b("integration", "=", String(parsed.integration)),
5776 b("connection", "=", String(parsed.connection)),
5777 b("name", "=", String(parsed.tool)),
5778 ),
5779 });
5780 if (!row) return null;
5781 const tool = rowToTool(row);
5782 const effective = yield* resolvePolicyFromRuleSet(
5783 normalizedPolicyId(tool),
5784 policyRules,
5785 tool.annotations?.requiresApproval,
5786 );
5787 if (effective.action === "block") return null;
5788
5789 const runtime = runtimes.get(row.plugin_id);

Callers

nothing calls this directly

Calls 15

listActivePolicyRuleSetFunction · 0.85
staticToolToToolFunction · 0.85
resolvePolicyFromRuleSetFunction · 0.85
normalizedPolicyIdFunction · 0.85
toolAnnotationsViewFunction · 0.85
parseToolAddressFunction · 0.85
byOwnerFunction · 0.85
rowToToolFunction · 0.85

Tested by

no test coverage detected