{"version":3,"file":"toolOverrides.cjs","names":[],"sources":["../../src/services/toolOverrides.ts"],"sourcesContent":["import type {\n  DoomToolOverrideClaim,\n  DoomToolOverrideRegistration,\n  DoomToolOverridesService,\n} from '../schemas/toolOverrides.ts';\n\ninterface StoredClaim {\n  readonly source: string;\n  readonly tools: readonly string[];\n}\n\nfunction assertNonEmpty(value: string, field: string): void {\n  if (value.trim().length === 0) throw new Error(`Doom tool override ${field} must not be empty.`);\n}\n\n/** Creates the host-owned tool replacement registry for one Doom runtime. */\nexport function createDoomToolOverridesService(generation: string): DoomToolOverridesService {\n  if (!generation) throw new Error('Doom tool overrides require a runtime generation.');\n\n  const owners = new Map<string, StoredClaim>();\n  return Object.freeze({\n    generation,\n    claim(claim: DoomToolOverrideClaim): DoomToolOverrideRegistration {\n      assertNonEmpty(claim.source, 'source');\n      if (claim.tools.length === 0) throw new Error('Doom tool override tools must not be empty.');\n      for (const tool of claim.tools) assertNonEmpty(tool, 'tool');\n\n      const tools = Object.freeze([...new Set(claim.tools)]);\n      if (tools.some((tool) => owners.has(tool))) {\n        return Object.freeze({ granted: false, tools, dispose: (): void => undefined });\n      }\n\n      const stored: StoredClaim = Object.freeze({ source: claim.source, tools });\n      for (const tool of tools) owners.set(tool, stored);\n\n      let disposed = false;\n      return Object.freeze({\n        granted: true,\n        tools,\n        dispose(): void {\n          if (disposed) return;\n          disposed = true;\n          for (const tool of tools) {\n            if (owners.get(tool) === stored) owners.delete(tool);\n          }\n        },\n      });\n    },\n    owner(tool: string): string | undefined {\n      return owners.get(tool)?.source;\n    },\n  });\n}\n"],"mappings":"AAWA,SAAS,EAAe,EAAe,EAAqB,CAC1D,GAAI,EAAM,KAAK,CAAC,CAAC,SAAW,EAAG,MAAU,MAAM,sBAAsB,EAAM,oBAAoB,CACjG,CAGA,SAAgB,EAA+B,EAA8C,CAC3F,GAAI,CAAC,EAAY,MAAU,MAAM,mDAAmD,EAEpF,IAAM,EAAS,IAAI,IACnB,OAAO,OAAO,OAAO,CACnB,aACA,MAAM,EAA4D,CAEhE,GADA,EAAe,EAAM,OAAQ,QAAQ,EACjC,EAAM,MAAM,SAAW,EAAG,MAAU,MAAM,6CAA6C,EAC3F,IAAK,IAAM,KAAQ,EAAM,MAAO,EAAe,EAAM,MAAM,EAE3D,IAAM,EAAQ,OAAO,OAAO,CAAC,GAAG,IAAI,IAAI,EAAM,KAAK,CAAC,CAAC,EACrD,GAAI,EAAM,KAAM,GAAS,EAAO,IAAI,CAAI,CAAC,EACvC,OAAO,OAAO,OAAO,CAAE,QAAS,GAAO,QAAO,YAAqB,IAAA,EAAU,CAAC,EAGhF,IAAM,EAAsB,OAAO,OAAO,CAAE,OAAQ,EAAM,OAAQ,OAAM,CAAC,EACzE,IAAK,IAAM,KAAQ,EAAO,EAAO,IAAI,EAAM,CAAM,EAEjD,IAAI,EAAW,GACf,OAAO,OAAO,OAAO,CACnB,QAAS,GACT,QACA,SAAgB,CACV,MACJ,GAAW,GACX,IAAK,IAAM,KAAQ,EACb,EAAO,IAAI,CAAI,IAAM,GAAQ,EAAO,OAAO,CAAI,CAF1C,CAIb,CACF,CAAC,CACH,EACA,MAAM,EAAkC,CACtC,OAAO,EAAO,IAAI,CAAI,CAAC,EAAE,MAC3B,CACF,CAAC,CACH"}