{"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/contextContribution/index.ts"],"sourcesContent":["import type { DoomContextContribution } from '@agimon-ai/doompi-core/context-contributions';\n\nimport type { Task } from '../../models/task';\n\nexport const TASK_CONTEXT_CONTRIBUTION_SOURCE = '@agimon-ai/doompi-task';\nexport const TASK_CONTEXT_CONTRIBUTION_ID = 'active-tasks';\nexport const TASK_CONTEXT_CONTRIBUTION_LABEL = 'Active tasks';\nexport const TASK_CONTEXT_CONTRIBUTION_ORDER = 100;\n\ninterface TaskContextSnapshot {\n  readonly id: number;\n  readonly status: Task['status'];\n  readonly subject: string;\n  readonly activeForm?: string;\n  readonly owner?: string;\n  readonly blockedBy?: readonly number[];\n  readonly delegation?: {\n    readonly agent: string;\n    readonly state: NonNullable<Task['delegation']>['state'];\n    readonly error?: string;\n  };\n}\n\nexport function activeTaskSnapshots(tasks: readonly Task[]): TaskContextSnapshot[] {\n  return tasks\n    .filter((task) => task.status === 'pending' || task.status === 'in_progress' || task.status === 'failed')\n    .map((task) => ({\n      id: task.id,\n      status: task.status,\n      subject: task.subject,\n      ...(task.activeForm ? { activeForm: task.activeForm } : {}),\n      ...(task.owner ? { owner: task.owner } : {}),\n      ...(task.blockedBy?.length ? { blockedBy: task.blockedBy } : {}),\n      ...(task.delegation\n        ? {\n            delegation: {\n              agent: task.delegation.agent,\n              state: task.delegation.state,\n              ...(task.delegation.result?.error ? { error: task.delegation.result.error } : {}),\n            },\n          }\n        : {}),\n    }));\n}\n\nexport function formatTaskSnapshots(tasks: readonly TaskContextSnapshot[]): string {\n  if (tasks.length === 0) return '(no active tasks)';\n  return tasks\n    .map((task) => {\n      const details = [\n        task.activeForm ? `active: ${task.activeForm}` : undefined,\n        task.owner ? `owner: ${task.owner}` : undefined,\n        task.blockedBy?.length ? `blocked by: ${task.blockedBy.join(', ')}` : undefined,\n        task.delegation ? `delegation: ${task.delegation.agent} (${task.delegation.state})` : undefined,\n        task.delegation?.error ? `error: ${task.delegation.error}` : undefined,\n      ].filter((value): value is string => Boolean(value));\n      return `- #${task.id} [${task.status}] ${task.subject}${details.length > 0 ? ` | ${details.join(' | ')}` : ''}`;\n    })\n    .join('\\n');\n}\n\n/** Builds Task's bounded, synchronous contribution from its in-memory store snapshot. */\nexport function createTaskContextContribution(readTasks: () => readonly Task[]): DoomContextContribution {\n  return Object.freeze({\n    source: TASK_CONTEXT_CONTRIBUTION_SOURCE,\n    id: TASK_CONTEXT_CONTRIBUTION_ID,\n    label: TASK_CONTEXT_CONTRIBUTION_LABEL,\n    order: TASK_CONTEXT_CONTRIBUTION_ORDER,\n    snapshot: () => formatTaskSnapshots(activeTaskSnapshots(readTasks())),\n  });\n}\n"],"mappings":";AAIA,MAAa,mCAAmC;AAChD,MAAa,+BAA+B;AAC5C,MAAa,kCAAkC;AAiB/C,SAAgB,oBAAoB,OAA+C;CACjF,OAAO,MACJ,QAAQ,SAAS,KAAK,WAAW,aAAa,KAAK,WAAW,iBAAiB,KAAK,WAAW,QAAQ,CAAC,CACxG,KAAK,UAAU;EACd,IAAI,KAAK;EACT,QAAQ,KAAK;EACb,SAAS,KAAK;EACd,GAAI,KAAK,aAAa,EAAE,YAAY,KAAK,WAAW,IAAI,CAAC;EACzD,GAAI,KAAK,QAAQ,EAAE,OAAO,KAAK,MAAM,IAAI,CAAC;EAC1C,GAAI,KAAK,WAAW,SAAS,EAAE,WAAW,KAAK,UAAU,IAAI,CAAC;EAC9D,GAAI,KAAK,aACL,EACE,YAAY;GACV,OAAO,KAAK,WAAW;GACvB,OAAO,KAAK,WAAW;GACvB,GAAI,KAAK,WAAW,QAAQ,QAAQ,EAAE,OAAO,KAAK,WAAW,OAAO,MAAM,IAAI,CAAC;EACjF,EACF,IACA,CAAC;CACP,EAAE;AACN;AAEA,SAAgB,oBAAoB,OAA+C;CACjF,IAAI,MAAM,WAAW,GAAG,OAAO;CAC/B,OAAO,MACJ,KAAK,SAAS;EACb,MAAM,UAAU;GACd,KAAK,aAAa,WAAW,KAAK,eAAe,KAAA;GACjD,KAAK,QAAQ,UAAU,KAAK,UAAU,KAAA;GACtC,KAAK,WAAW,SAAS,eAAe,KAAK,UAAU,KAAK,IAAI,MAAM,KAAA;GACtE,KAAK,aAAa,eAAe,KAAK,WAAW,MAAM,IAAI,KAAK,WAAW,MAAM,KAAK,KAAA;GACtF,KAAK,YAAY,QAAQ,UAAU,KAAK,WAAW,UAAU,KAAA;EAC/D,CAAC,CAAC,QAAQ,UAA2B,QAAQ,KAAK,CAAC;EACnD,OAAO,MAAM,KAAK,GAAG,IAAI,KAAK,OAAO,IAAI,KAAK,UAAU,QAAQ,SAAS,IAAI,MAAM,QAAQ,KAAK,KAAK,MAAM;CAC7G,CAAC,CAAC,CACD,KAAK,IAAI;AACd;;AAGA,SAAgB,8BAA8B,WAA2D;CACvG,OAAO,OAAO,OAAO;EACnB,QAAQ;EACR,IAAI;EACJ,OAAO;EACP,OAAA;EACA,gBAAgB,oBAAoB,oBAAoB,UAAU,CAAC,CAAC;CACtE,CAAC;AACH"}