{"version":3,"file":"index.cjs","names":["DOOM_BACKGROUND_WORK_SERVICE","readDoomBackgroundWorkService"],"sources":["../../../../src/services/backgroundWork/index.ts"],"sourcesContent":["/**\n * Background-work registration for workflow runs.\n *\n * DESIGN PATTERNS:\n * - Hard dependency binding through Cordis injection\n * - Snapshot pattern: the extension pushes the current run set, the provider\n *   only reads it\n *\n * CODING STANDARDS:\n * - Named exports only\n * - Explicit return types on exported functions\n *\n * AVOID:\n * - Process-global symbols or dynamic imports for extension communication\n * - Reporting runs owned by another Pi session\n */\n\nimport {\n  DOOM_BACKGROUND_WORK_SERVICE,\n  type BackgroundWorkProviderHandle,\n  readDoomBackgroundWorkService,\n} from '@agimon-ai/doompi-core/background-work';\nimport type { Context } from '@deepseek-ai/cordis';\n\nexport interface RunProviderItem {\n  id: string;\n  sessionId: string;\n}\n\nexport interface RunProviderHandle {\n  /** Replace the reported run set. */\n  update(items: RunProviderItem[]): void;\n  /** Remove the registration. Safe to call when registration never happened. */\n  dispose(): void;\n}\n\nconst PROVIDER_NAME = 'workflow-mcp';\n\n/**\n * Register a background-work provider for this session's workflow runs.\n *\n * The runtime pins all announcements to the active Pi session and validates\n * each snapshot before it reaches another extension.\n */\nexport function registerRunProvider(ctx: Context): RunProviderHandle {\n  let items: RunProviderItem[] = [];\n  let provider: BackgroundWorkProviderHandle | undefined;\n  let disposed = false;\n  ctx.inject([DOOM_BACKGROUND_WORK_SERVICE], (serviceContext) => {\n    if (disposed) return undefined;\n    const service = readDoomBackgroundWorkService(serviceContext);\n    if (!service) return undefined;\n    const registration = service.register({ provider: PROVIDER_NAME, listActiveWork: () => items });\n    provider = registration;\n    return () => {\n      registration.dispose();\n      if (provider === registration) provider = undefined;\n    };\n  });\n  const handle: RunProviderHandle = {\n    update(next) {\n      items = next;\n      provider?.update();\n    },\n    dispose() {\n      if (disposed) return;\n      disposed = true;\n      items = [];\n      provider?.dispose();\n      provider = undefined;\n    },\n  };\n  return handle;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAoCA,MAAM,gBAAgB;;;;;;;AAQtB,SAAgB,oBAAoB,KAAiC;CACnE,IAAI,QAA2B,CAAC;CAChC,IAAI;CACJ,IAAI,WAAW;CACf,IAAI,OAAO,CAACA,uCAAAA,4BAA4B,IAAI,mBAAmB;EAC7D,IAAI,UAAU,OAAO,KAAA;EACrB,MAAM,WAAA,GAAUC,uCAAAA,8BAAAA,CAA8B,cAAc;EAC5D,IAAI,CAAC,SAAS,OAAO,KAAA;EACrB,MAAM,eAAe,QAAQ,SAAS;GAAE,UAAU;GAAe,sBAAsB;EAAM,CAAC;EAC9F,WAAW;EACX,aAAa;GACX,aAAa,QAAQ;GACrB,IAAI,aAAa,cAAc,WAAW,KAAA;EAC5C;CACF,CAAC;CAcD,OAAO;EAZL,OAAO,MAAM;GACX,QAAQ;GACR,UAAU,OAAO;EACnB;EACA,UAAU;GACR,IAAI,UAAU;GACd,WAAW;GACX,QAAQ,CAAC;GACT,UAAU,QAAQ;GAClB,WAAW,KAAA;EACb;CAEU;AACd"}