{"version":3,"file":"plane-audit.cjs","names":["auditReleasePlane","collectSlotPinRefs","authoredSlotPaths","readInstalledFrameworkVersion","findWorkspaceRoot"],"sources":["../../../src/services/resolution/plane-audit.ts"],"sourcesContent":["import type { BosConfigInput } from \"../../types\";\nimport { walkConfigSlots } from \"../config-slots\";\nimport { collectSlotPinRefs } from \"../deploy/rollback\";\nimport { readInstalledFrameworkVersion } from \"../framework-version\";\nimport { findWorkspaceRoot } from \"../workspace/workspace\";\nimport { auditReleasePlane, authoredSlotPaths, type PlaneAuditLine } from \"./release-plane\";\nimport type { ResolutionSession } from \"./session\";\n\n/**\n * The one dev-boot chain-audit adapter: every consumer that audits a\n * resolution session's release plane (`bos dev`'s post-boot report, the\n * upgrade's owned-slot realignment) derives its inputs from here, so the\n * audit cannot fork into silently divergent copies.\n */\nexport {\n  auditReleasePlane,\n  authoredSlotPaths,\n  type PlaneAuditLine,\n} from \"./release-plane\";\n\nexport const auditSessionPlane = (\n  session: NonNullable<ResolutionSession>,\n  options?: { fetchImpl?: typeof fetch },\n): Promise<PlaneAuditLine[]> =>\n  auditReleasePlane({\n    slots: collectSlotPinRefs((session.config ?? {}) as BosConfigInput),\n    authoredPaths: authoredSlotPaths((session.rawConfig ?? {}) as Record<string, unknown>),\n    localVersionOf: (name) =>\n      readInstalledFrameworkVersion(findWorkspaceRoot(session.root)?.dir ?? session.root, name),\n    provisionedSlots: session.releasePlane?.omitted,\n    configSlotPaths: configSlotPathsOf(session.config),\n    manifestSlotPaths: Object.keys(session.releaseManifest?.slots ?? {}),\n    pinnedReleaseVersion: session.releaseManifest?.frameworkVersion,\n    ...(options?.fetchImpl ? { fetchImpl: options.fetchImpl } : {}),\n  });\n\nconst configSlotPathsOf = (config: unknown): string[] => {\n  if (!config || typeof config !== \"object\") return [];\n  const paths: string[] = [];\n  walkConfigSlots(config as Record<string, unknown>, ({ slot }) => paths.push(slot));\n  return paths;\n};\n"],"mappings":";;;;;;;AAoBA,MAAa,qBACX,SACA,YAEAA,wCAAkB;CAChB,OAAOC,oCAAoB,QAAQ,UAAU,CAAC,CAAoB;CAClE,eAAeC,wCAAmB,QAAQ,aAAa,CAAC,CAA6B;CACrF,iBAAiB,SACfC,wDAA8BC,oCAAkB,QAAQ,IAAI,CAAC,EAAE,OAAO,QAAQ,MAAM,IAAI;CAC1F,kBAAkB,QAAQ,cAAc;CACxC,iBAAiB,kBAAkB,QAAQ,MAAM;CACjD,mBAAmB,OAAO,KAAK,QAAQ,iBAAiB,SAAS,CAAC,CAAC;CACnE,sBAAsB,QAAQ,iBAAiB;CAC/C,GAAI,SAAS,YAAY,EAAE,WAAW,QAAQ,UAAU,IAAI,CAAC;AAC/D,CAAC;AAEH,MAAM,qBAAqB,WAA8B;CACvD,IAAI,CAAC,UAAU,OAAO,WAAW,UAAU,OAAO,CAAC;CACnD,MAAM,QAAkB,CAAC;CACzB,qCAAgB,SAAoC,EAAE,WAAW,MAAM,KAAK,IAAI,CAAC;CACjF,OAAO;AACT"}