{"version":3,"sources":["../src/diagnostics/programmatic.ts"],"names":[],"mappings":";AA4BO,IAAM,6BAAA,GAET,OAAO,MAAA,CAAO;AAAA,EAChB,sBAAA,EAAwB;AAAA,IACtB,IAAA,EAAM,wBAAA;AAAA,IACN,OAAA,EACE,+IAAA;AAAA,IACF,WAAA,EAAa,2CAAA;AAAA,IACb,YAAA,EAAc,CAAC,eAAe;AAAA,GAChC;AAAA,EACA,2BAAA,EAA6B;AAAA,IAC3B,IAAA,EAAM,6BAAA;AAAA,IACN,OAAA,EAAS,gDAAA;AAAA,IACT,WAAA,EACE,kGAAA;AAAA,IACF,YAAA,EAAc,CAAC,oBAAoB;AAAA,GACrC;AAAA,EACA,yBAAA,EAA2B;AAAA,IACzB,IAAA,EAAM,2BAAA;AAAA,IACN,OAAA,EAAS,iEAAA;AAAA,IACT,WAAA,EAAa,2DAAA;AAAA,IACb,YAAA,EAAc,CAAC,kBAAkB;AAAA,GACnC;AAAA,EACA,mCAAA,EAAqC;AAAA,IACnC,IAAA,EAAM,qCAAA;AAAA,IACN,OAAA,EAAS,iEAAA;AAAA,IACT,WAAA,EAAa;AAAA,GACf;AAAA,EACA,wCAAA,EAA0C;AAAA,IACxC,IAAA,EAAM,0CAAA;AAAA,IACN,OAAA,EAAS,oEAAA;AAAA,IACT,WAAA,EAAa,oDAAA;AAAA,IACb,YAAA,EAAc,CAAC,iCAAiC;AAAA,GAClD;AAAA,EACA,iCAAA,EAAmC;AAAA,IACjC,IAAA,EAAM,mCAAA;AAAA,IACN,OAAA,EAAS,0CAAA;AAAA,IACT,WAAA,EACE,0HAAA;AAAA,IACF,YAAA,EAAc;AAAA,MACZ,mCAAA;AAAA,MACA;AAAA;AACF,GACF;AAAA,EACA,2BAAA,EAA6B;AAAA,IAC3B,IAAA,EAAM,6BAAA;AAAA,IACN,OAAA,EAAS,kCAAA;AAAA,IACT,WAAA,EACE,uGAAA;AAAA,IACF,YAAA,EAAc,CAAC,iBAAiB;AAAA;AAEpC,CAAC;AAKM,SAAS,4BAAA,CACd,MACA,MAAA,EACQ;AACR,EAAA,MAAM,IAAA,GAAO,8BAA8B,IAAI,CAAA;AAC/C,EAAA,MAAM,UAAU,MAAA,EAAQ,IAAA,KAAS,MAAA,CAAO,IAAA,KAAS,IAAA,CAAK,OAAA;AACtD,EAAA,OAAO,GAAG,IAAI,CAAA,EAAA,EAAK,OAAO,CAAA,cAAA,EAAiB,KAAK,WAAW,CAAA,CAAA;AAC7D","file":"chunk-FWK3Q3OJ.mjs","sourcesContent":["/**\n * Stable programmatic diagnostic codes for readers / TraceFacts / TraceContract.\n *\n * Lowercase `TraceReadError.code` values remain the published reader error codes.\n * These `AI_*` identifiers appear in messages and catalogs for actionable remediation.\n *\n * @experimental Additive in 6.15.0; do not replace published lowercase reader codes.\n */\n\nexport type ProgrammaticDiagnosticCode =\n  | \"AI_TRACE_INPUT_INVALID\"\n  | \"AI_TRACE_FORMAT_UNSUPPORTED\"\n  | \"AI_TRACE_FORMAT_AMBIGUOUS\"\n  | \"AI_TRACE_FACTS_INPUT_NOT_NORMALIZED\"\n  | \"AI_TRACE_CONTRACT_RUN_SELECTION_REQUIRED\"\n  | \"AI_TRACE_RELATIONSHIP_SELF_PARENT\"\n  | \"AI_TRACE_RELATIONSHIP_CYCLE\";\n\nexport interface ProgrammaticDiagnosticSpec {\n  readonly code: ProgrammaticDiagnosticCode;\n  /** Short problem statement (without the code prefix). */\n  readonly summary: string;\n  /** Actionable remediation hint (always included in formatted messages). */\n  readonly remediation: string;\n  /** Related published / capture codes that must remain valid. */\n  readonly relatedCodes?: readonly string[];\n}\n\nexport const PROGRAMMATIC_DIAGNOSTIC_SPECS: Readonly<\n  Record<ProgrammaticDiagnosticCode, ProgrammaticDiagnosticSpec>\n> = Object.freeze({\n  AI_TRACE_INPUT_INVALID: {\n    code: \"AI_TRACE_INPUT_INVALID\",\n    summary:\n      'Expected { type: \"file\", path }, { type: \"directory\", path }, { type: \"string\", content }, { type: \"buffer\", content }, or { type: \"stdin\" }.',\n    remediation: \"For a file path, use openTraceFile(path).\",\n    relatedCodes: [\"invalid_input\"],\n  },\n  AI_TRACE_FORMAT_UNSUPPORTED: {\n    code: \"AI_TRACE_FORMAT_UNSUPPORTED\",\n    summary: \"No trace reader could detect the input format.\",\n    remediation:\n      \"Pass an AgentInspect JSONL file via openTraceFile, or set options.format to a registered reader.\",\n    relatedCodes: [\"unsupported_format\"],\n  },\n  AI_TRACE_FORMAT_AMBIGUOUS: {\n    code: \"AI_TRACE_FORMAT_AMBIGUOUS\",\n    summary: \"Multiple trace readers matched the input with equal confidence.\",\n    remediation: \"Set options.format explicitly to disambiguate the reader.\",\n    relatedCodes: [\"ambiguous_format\"],\n  },\n  AI_TRACE_FACTS_INPUT_NOT_NORMALIZED: {\n    code: \"AI_TRACE_FACTS_INPUT_NOT_NORMALIZED\",\n    summary: \"TraceFacts requires TraceReadResult or PersistedInspectEvent[].\",\n    remediation: \"Use openTraceFile() to normalize a JSONL trace first.\",\n  },\n  AI_TRACE_CONTRACT_RUN_SELECTION_REQUIRED: {\n    code: \"AI_TRACE_CONTRACT_RUN_SELECTION_REQUIRED\",\n    summary: \"Multiple runs are available; select a run before executing checks.\",\n    remediation: \"Pass options.runId or TraceCheckInput.selectedRun.\",\n    relatedCodes: [\"AI_CHECK_RUN_SELECTION_REQUIRED\"],\n  },\n  AI_TRACE_RELATIONSHIP_SELF_PARENT: {\n    code: \"AI_TRACE_RELATIONSHIP_SELF_PARENT\",\n    summary: \"A parentId equals its own event/step id.\",\n    remediation:\n      \"Reject at capture (AI_LANGGRAPH_SELF_PARENT_REJECTED) or drop via logical projection; do not invent replacement parents.\",\n    relatedCodes: [\n      \"AI_LANGGRAPH_SELF_PARENT_REJECTED\",\n      \"AI_LOGICAL_SELF_PARENT_REMOVED\",\n    ],\n  },\n  AI_TRACE_RELATIONSHIP_CYCLE: {\n    code: \"AI_TRACE_RELATIONSHIP_CYCLE\",\n    summary: \"Trace contains a parentId cycle.\",\n    remediation:\n      \"Use visibility-first tree linking for legacy fixtures; prefer acyclic capture for new adapter output.\",\n    relatedCodes: [\"structure.cycle\"],\n  },\n});\n\n/**\n * Format `CODE: summary Remediation: …` for thrown errors and diagnostics.\n */\nexport function formatProgrammaticDiagnostic(\n  code: ProgrammaticDiagnosticCode,\n  detail?: string,\n): string {\n  const spec = PROGRAMMATIC_DIAGNOSTIC_SPECS[code];\n  const summary = detail?.trim() ? detail.trim() : spec.summary;\n  return `${code}: ${summary} Remediation: ${spec.remediation}`;\n}\n"]}