{"version":3,"sources":["../src/errors.ts"],"names":[],"mappings":";AA4BO,IAAM,SAAA,GAAN,cAAwB,KAAA,CAAM;AAAA,EAC1B,IAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA;AAAA,EACS,KAAA;AAAA,EAElB,YAAY,IAAA,EAMT;AACD,IAAA,KAAA,CAAM,CAAA,WAAA,EAAc,KAAK,IAAI,CAAA,YAAA,EAAe,KAAK,QAAQ,CAAA,QAAA,EAAW,IAAA,CAAK,IAAI,CAAA,CAAE,CAAA;AAC/E,IAAA,IAAA,CAAK,IAAA,GAAO,WAAA;AACZ,IAAA,IAAA,CAAK,OAAO,IAAA,CAAK,IAAA;AACjB,IAAA,IAAA,CAAK,WAAW,IAAA,CAAK,QAAA;AACrB,IAAA,IAAA,CAAK,OAAO,IAAA,CAAK,IAAA;AACjB,IAAA,IAAA,CAAK,SAAS,IAAA,CAAK,MAAA;AACnB,IAAA,IAAI,IAAA,CAAK,KAAA,KAAU,MAAA,EAAW,IAAA,CAAK,QAAQ,IAAA,CAAK,KAAA;AAAA,EAClD;AACF","file":"errors.mjs","sourcesContent":["// errors.ts — PackError class (feat-20260513-guid-asset-package-system w15)\n//\n// Structured surface: .code / .expected / .hint / .detail, plus optional typed .cause\n// Structurally parallel to AssetError / RhiError / RemoteError\n// (charter proposition 5 consistent abstraction).\n//\n// .detail is narrowed per .code via PackErrorDetail discriminated union\n// (requirements §6.2 AC-07; plan-strategy §D-5).\n\nimport type { PackErrorCode, PackErrorDetail } from '@forgeax/engine-types';\nimport type { PackAuthoringError } from './pack-authoring.js';\n\n/**\n * Structured error for the engine-pack disk scanner fail-fast chain.\n *\n * AI users consume via exhaustive switch on .code — no default case needed:\n * ```ts\n * switch (err.code) {\n *   case 'pack-guid-collision':\n *     console.error(err.detail.paths);\n *     break;\n *   case 'pack-cyclic-reference':\n *     console.error(err.detail.cycle);\n *     break;\n *   // ...all 8 cases\n * }\n * ```\n */\nexport class PackError extends Error {\n  readonly code: PackErrorCode;\n  readonly expected: string;\n  readonly hint: string;\n  readonly detail: PackErrorDetail;\n  override readonly cause?: PackAuthoringError;\n\n  constructor(args: {\n    code: PackErrorCode;\n    expected: string;\n    hint: string;\n    detail: PackErrorDetail;\n    cause?: PackAuthoringError;\n  }) {\n    super(`[PackError ${args.code}] expected: ${args.expected}; hint: ${args.hint}`);\n    this.name = 'PackError';\n    this.code = args.code;\n    this.expected = args.expected;\n    this.hint = args.hint;\n    this.detail = args.detail;\n    if (args.cause !== undefined) this.cause = args.cause;\n  }\n}\n"]}