{"version":3,"file":"ai-model/prompt/planning/action-space-description.mjs","sources":["../../../../../src/ai-model/prompt/planning/action-space-description.ts"],"sourcesContent":["import type { DeviceAction } from '@/types';\nimport yaml from 'js-yaml';\nimport type {\n  PlanningActionSpaceFormat,\n  StandardPlanningProtocol,\n} from '../../model-adapter/planning-protocol';\nimport type { LocateResultPromptSpec } from '../../shared/model-locate-result';\nimport { buildActionOutputExample } from './action-output-example';\n\ntype BuildPlanningActionSpaceDescriptionInput = {\n  actionSpace: DeviceAction<any>[];\n  locatePromptSpec?: LocateResultPromptSpec;\n  planningProtocol: StandardPlanningProtocol;\n};\n\nexport const serializeActionDescriptions = (\n  actionDescriptions: unknown[],\n  format: PlanningActionSpaceFormat,\n) => {\n  if (format === 'jsonl') {\n    return actionDescriptions\n      .map((description) => JSON.stringify(description))\n      .join('\\n');\n  }\n\n  return yaml\n    .dump(actionDescriptions, {\n      indent: 2,\n      lineWidth: -1,\n      noRefs: true,\n    })\n    .trim();\n};\n\nexport const buildPlanningActionSpaceDescription = ({\n  actionSpace,\n  locatePromptSpec,\n  planningProtocol,\n}: BuildPlanningActionSpaceDescriptionInput) => {\n  const locateFieldDescription =\n    planningProtocol.actionSpaceProtocol.buildLocateFieldDescription(\n      locatePromptSpec,\n    );\n  const actionDescriptions = actionSpace.map((action) => {\n    const actionOutputExample = planningProtocol.actionSpaceProtocol\n      .includeActionOutputExample\n      ? buildActionOutputExample(action, {\n          locatePromptSpec,\n          buildActionOutput:\n            planningProtocol.actionOutputProtocol.buildActionOutput,\n        })\n      : undefined;\n    return planningProtocol.actionSpaceProtocol.buildActionDescription({\n      action,\n      locateFieldDescription,\n      actionOutputExample,\n    });\n  });\n\n  return serializeActionDescriptions(\n    actionDescriptions,\n    planningProtocol.actionSpaceProtocol.format,\n  );\n};\n"],"names":["serializeActionDescriptions","actionDescriptions","format","description","JSON","yaml","buildPlanningActionSpaceDescription","actionSpace","locatePromptSpec","planningProtocol","locateFieldDescription","action","actionOutputExample","buildActionOutputExample","undefined"],"mappings":";;AAeO,MAAMA,8BAA8B,CACzCC,oBACAC;IAEA,IAAIA,AAAW,YAAXA,QACF,OAAOD,mBACJ,GAAG,CAAC,CAACE,cAAgBC,KAAK,SAAS,CAACD,cACpC,IAAI,CAAC;IAGV,OAAOE,QAAAA,IACA,CAACJ,oBAAoB;QACxB,QAAQ;QACR,WAAW;QACX,QAAQ;IACV,GACC,IAAI;AACT;AAEO,MAAMK,sCAAsC,CAAC,EAClDC,WAAW,EACXC,gBAAgB,EAChBC,gBAAgB,EACyB;IACzC,MAAMC,yBACJD,iBAAiB,mBAAmB,CAAC,2BAA2B,CAC9DD;IAEJ,MAAMP,qBAAqBM,YAAY,GAAG,CAAC,CAACI;QAC1C,MAAMC,sBAAsBH,iBAAiB,mBAAmB,CAC7D,0BAA0B,GACzBI,yBAAyBF,QAAQ;YAC/BH;YACA,mBACEC,iBAAiB,oBAAoB,CAAC,iBAAiB;QAC3D,KACAK;QACJ,OAAOL,iBAAiB,mBAAmB,CAAC,sBAAsB,CAAC;YACjEE;YACAD;YACAE;QACF;IACF;IAEA,OAAOZ,4BACLC,oBACAQ,iBAAiB,mBAAmB,CAAC,MAAM;AAE/C"}