{"version":3,"sources":["../../../../src/agents/requirement/requirements/utils.ts"],"names":["extractTargetName","target","name","extractTargets","targets","Set","targetArray","Array","isArray","targetSeenIn","haystack","needle","values","isString","Tool","isConstructor","assertAllRulesFound","tools","found","tool","ValueError"],"mappings":";;;;;;;;;AAgBO,SAASA,kBAAkBC,MAAAA,EAAkB;AAClD,EAAA,IAAI,OAAOA,WAAW,QAAA,EAAU;AAC9B,IAAA,OAAOA,MAAAA;AACT,EAAA;AACA,EAAA,IAAI,OAAOA,WAAW,UAAA,EAAY;AAChC,IAAA,OAAOA,MAAAA,CAAOC,IAAAA;AAChB,EAAA;AACA,EAAA,OAAOD,MAAAA,CAAOC,IAAAA;AAChB;AARgBF,MAAAA,CAAAA,iBAAAA,EAAAA,mBAAAA,CAAAA;AAaT,SAASG,eAAeC,OAAAA,EAAyB;AACtD,EAAA,IAAI,CAACA,OAAAA,EAAS;AACZ,IAAA,2BAAWC,GAAAA,EAAAA;AACb,EAAA;AAEA,EAAA,MAAMC,WAAAA,GAAcC,KAAAA,CAAMC,OAAAA,CAAQJ,OAAAA,IAAWA,OAAAA,GAAU;AAACA,IAAAA;;AACxD,EAAA,OAAO,IAAIC,IAAIC,WAAAA,CAAAA;AACjB;AAPgBH,MAAAA,CAAAA,cAAAA,EAAAA,gBAAAA,CAAAA;AAYT,SAASM,YAAAA,CACdR,QACAS,QAAAA,EAAsC;AAEtC,EAAA,IAAI,CAACT,MAAAA,EAAQ;AACX,IAAA,OAAO,IAAA;AACT,EAAA;AAEA,EAAA,IAAI,EAAES,oBAAoBL,GAAAA,CAAAA,EAAM;AAC9BK,IAAAA,QAAAA,uBAAeL,GAAAA,CAAI;AAACK,MAAAA;AAAS,KAAA,CAAA;AAC/B,EAAA;AAEA,EAAA,KAAA,MAAWC,MAAAA,IAAUD,QAAAA,CAASE,MAAAA,EAAM,EAAI;AACtC,IAAA,IAAIC,eAAAA,CAASF,MAAAA,CAAAA,IAAWA,MAAAA,KAAWV,OAAOC,IAAAA,EAAM;AAC9C,MAAA,OAAOS,MAAAA;AACT,IAAA;AACA,IAAA,IAAIA,MAAAA,YAAkBG,aAAAA,IAAQH,MAAAA,KAAWV,MAAAA,EAAQ;AAC/C,MAAA,OAAOU,MAAAA;AACT,IAAA;AACA,IAAA,IAAII,2BAAAA,CAAcJ,MAAAA,CAAAA,IAAWV,MAAAA,YAAkBU,MAAAA,EAAQ;AACrD,MAAA,OAAOA,MAAAA;AACT,IAAA;AACF,EAAA;AAEA,EAAA,OAAO,IAAA;AACT;AAzBgBF,MAAAA,CAAAA,YAAAA,EAAAA,cAAAA,CAAAA;AA8BT,SAASO,mBAAAA,CAAoBZ,SAA0Ba,KAAAA,EAAgB;AAC5E,EAAA,KAAA,MAAWhB,UAAUG,OAAAA,EAAS;AAC5B,IAAA,IAAIc,KAAAA,GAAQ,KAAA;AACZ,IAAA,KAAA,MAAWC,QAAQF,KAAAA,EAAO;AACxB,MAAA,IAAIR,YAAAA,CAAaU,IAAAA,EAAMlB,MAAAA,CAAAA,EAAS;AAC9BiB,QAAAA,KAAAA,GAAQ,IAAA;AACR,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA,IAAI,CAACA,KAAAA,EAAO;AACV,MAAA,MAAM,IAAIE,qBAAAA,CACR,CAAA,MAAA,EAASnB,MAAAA,CAAAA,6EAAAA,CAAqF,CAAA;AAElG,IAAA;AACF,EAAA;AACF;AAfgBe,MAAAA,CAAAA,mBAAAA,EAAAA,qBAAAA,CAAAA","file":"utils.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AnyTool, AnyToolClass, Tool } from \"@/tools/base.js\";\nimport { ValueError } from \"@/errors.js\";\nimport { isString } from \"remeda\";\nimport { isConstructor } from \"@/internals/helpers/prototype.js\";\n\nexport type TargetType = string | AnyTool | AnyToolClass;\nexport type MultiTargetType = TargetType | TargetType[];\n\n/**\n * Extract target name from various input types\n */\nexport function extractTargetName(target: TargetType): string {\n  if (typeof target === \"string\") {\n    return target;\n  }\n  if (typeof target === \"function\") {\n    return target.name;\n  }\n  return target.name;\n}\n\n/**\n * Extract set of target names from various input types\n */\nexport function extractTargets(targets?: MultiTargetType): Set<TargetType> {\n  if (!targets) {\n    return new Set();\n  }\n\n  const targetArray = Array.isArray(targets) ? targets : [targets];\n  return new Set(targetArray);\n}\n\n/**\n * Check if a tool matches any target in the set\n */\nexport function targetSeenIn(\n  target: AnyTool | null | undefined,\n  haystack: Set<TargetType> | TargetType,\n): TargetType | null {\n  if (!target) {\n    return null;\n  }\n\n  if (!(haystack instanceof Set)) {\n    haystack = new Set([haystack]);\n  }\n\n  for (const needle of haystack.values()) {\n    if (isString(needle) && needle === target.name) {\n      return needle;\n    }\n    if (needle instanceof Tool && needle === target) {\n      return needle;\n    }\n    if (isConstructor(needle) && target instanceof needle) {\n      return needle;\n    }\n  }\n\n  return null;\n}\n\n/**\n * Assert that all targets exist in the tools list\n */\nexport function assertAllRulesFound(targets: Set<TargetType>, tools: AnyTool[]): void {\n  for (const target of targets) {\n    let found = false;\n    for (const tool of tools) {\n      if (targetSeenIn(tool, target)) {\n        found = true;\n        break;\n      }\n    }\n    if (!found) {\n      throw new ValueError(\n        `Tool '${target}' is specified as 'source', 'before', 'after' or 'force_after' but not found.`,\n      );\n    }\n  }\n}\n"]}