{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/agent/tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,sBAAsB;AACtB,MAAM,WAAW,IAAI;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,2BAA2B;AAC3B,qBAAa,kBAAkB;IAC9B,OAAO,CAAC,MAAM,CAAa;IAE3B,YAAY,MAAM,GAAE,UAAe,EAElC;IAED;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAuB7B;IAED;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAEjC;IAED;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAE1C;CACD","sourcesContent":["/**\n * Tool Policy Resolver - Enforces tool allow/deny policies\n */\n\nimport type { ToolPolicy } from \"./types.js\";\n\n/** Tool definition */\nexport interface Tool {\n\tname: string;\n\tgroup?: string;\n\tdescription: string;\n}\n\n/** Tool policy resolver */\nexport class ToolPolicyResolver {\n\tprivate policy: ToolPolicy;\n\n\tconstructor(policy: ToolPolicy = {}) {\n\t\tthis.policy = policy;\n\t}\n\n\t/**\n\t * Check if tool is allowed\n\t */\n\tisAllowed(tool: Tool): boolean {\n\t\t// Check deny list first\n\t\tif (this.policy.deny?.includes(tool.name)) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Check deny groups\n\t\tif (tool.group && this.policy.denyGroups?.includes(tool.group)) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Check allow list\n\t\tif (this.policy.allow) {\n\t\t\treturn this.policy.allow.includes(tool.name);\n\t\t}\n\n\t\t// Check allow groups\n\t\tif (tool.group && this.policy.allowGroups) {\n\t\t\treturn this.policy.allowGroups.includes(tool.group);\n\t\t}\n\n\t\t// Default allow\n\t\treturn true;\n\t}\n\n\t/**\n\t * Filter tools by policy\n\t */\n\tfilterTools(tools: Tool[]): Tool[] {\n\t\treturn tools.filter((tool) => this.isAllowed(tool));\n\t}\n\n\t/**\n\t * Get allowed tool names\n\t */\n\tgetAllowedTools(allTools: Tool[]): string[] {\n\t\treturn this.filterTools(allTools).map((t) => t.name);\n\t}\n}\n"]}