{"version":3,"file":"index.cli.cjs","names":["isWorkflowDispatcherProcess","createWorkflowFence","createWorkflowPiRuntime","createWorkflowTools","renderWorkflowToolCall","renderWorkflowToolResult","dispatcherTools","resolveDispatcherParentSession","DOOM_SKILL_SOURCES_SERVICE","workflowSkillDirectory","requireDoomSkillSourcesService","PACKAGE_SOURCE","DOOM_UI_HUB_SERVICE","registerLeaderContribution","requireDoomUiHub","definePiTool","dispatcherToolRestriction"],"sources":["../../../../../../../src/extensions/workspaces/sessions/(backend)/_lib/index.cli.ts"],"sourcesContent":["import type { PiPluginContext, PiPluginContributions } from '@agimon-ai/doompi-core/pi-extension';\nimport { definePiTool } from '@agimon-ai/doompi-core/pi-extension';\nimport { DOOM_SKILL_SOURCES_SERVICE, requireDoomSkillSourcesService } from '@agimon-ai/doompi-core/skills';\nimport { DOOM_UI_HUB_SERVICE, requireDoomUiHub } from '@agimon-ai/doompi-core/ui-hub';\nimport type { Context } from '@deepseek-ai/cordis';\n\nimport { PACKAGE_SOURCE } from '../../../../../constants/workflow';\nimport {\n  createWorkflowFence,\n  dispatcherTools,\n  dispatcherToolRestriction,\n  isWorkflowDispatcherProcess,\n  resolveDispatcherParentSession,\n} from '../../../../../services/workflowFence';\nimport { workflowSkillDirectory } from '../../../../../services/workflowResource';\nimport { createWorkflowTools } from '../../../../../services/workflowTools';\nimport { registerLeaderContribution } from '../../../../../tui/leader';\nimport { renderWorkflowToolCall, renderWorkflowToolResult } from '../../../../../tui/workflow/workflowToolRender';\nimport { createWorkflowPiRuntime, type WorkflowPiExtensionOptions } from '../../../../../tui/workflowRuntime';\n\nexport default (({ pi, context, options, signal }) => {\n  const environment = options?.environment ?? Object.freeze({ ...process.env });\n  const dispatcher = isWorkflowDispatcherProcess(environment);\n  const fence = createWorkflowFence(pi, signal);\n  let workflowMode = false;\n  let leader: ReturnType<typeof registerLeaderContribution> | undefined;\n  const runtime = createWorkflowPiRuntime(fence.pi, {\n    ...options,\n    environment,\n    cordis: context,\n    initialMode: dispatcher || options?.initialMode,\n    isActive: fence.isCurrentInvocation,\n    runCleanup: fence.runCleanup,\n    onModeChange(enabled) {\n      workflowMode = enabled;\n      leader?.setMode(enabled);\n      options?.onModeChange?.(enabled);\n    },\n  });\n  const nativeTools = createWorkflowTools(runtime.toolDependencies, (name) => ({\n    renderCall: (args, theme) => renderWorkflowToolCall(name, args as Record<string, unknown>, theme),\n    renderResult: (result, renderOptions, theme, renderContext) =>\n      renderWorkflowToolResult(\n        name,\n        renderContext.args as Record<string, unknown>,\n        result,\n        { ...renderOptions, isError: renderContext.isError },\n        theme,\n      ),\n  }));\n  const selectedTools = dispatcher\n    ? dispatcherTools(nativeTools, resolveDispatcherParentSession(environment), environment)\n    : nativeTools;\n  return {\n    services: [\n      ...(runtime.services ?? []),\n      (cordis: Context) => {\n        cordis.inject([DOOM_SKILL_SOURCES_SERVICE], (skillContext) => {\n          const directory = workflowSkillDirectory();\n          const contribution = requireDoomSkillSourcesService(skillContext).register({\n            source: PACKAGE_SOURCE,\n            directories: [directory],\n          });\n          return () => contribution.dispose();\n        });\n        if (!dispatcher)\n          cordis.inject([DOOM_UI_HUB_SERVICE], (uiContext) => {\n            const contribution = registerLeaderContribution(requireDoomUiHub(uiContext), workflowMode);\n            leader = contribution;\n            return () => {\n              contribution.dispose();\n              if (leader === contribution) leader = undefined;\n            };\n          });\n      },\n    ],\n    tools: selectedTools.map((tool) =>\n      definePiTool(\n        fence.tool({\n          ...tool,\n          async execute(...args) {\n            await runtime.waitForReadiness(args[2]);\n            return tool.execute(...args);\n          },\n        }),\n      ),\n    ),\n    commands: runtime.commands.map(([name, command]) => fence.command(name, command)),\n    shortcuts: runtime.shortcuts?.map(([key, shortcut]) => fence.shortcut(key, shortcut)),\n    events: fence.events(runtime.events ?? {}),\n\n    toolRestrictions: [\n      ...(runtime.toolRestrictions ?? []),\n      ...(dispatcher ? [{ source: `${PACKAGE_SOURCE}/dispatcher`, restrict: dispatcherToolRestriction() }] : []),\n    ],\n    resources: dispatcher\n      ? []\n      : [\n          {\n            source: PACKAGE_SOURCE,\n            moduleUrl: import.meta.url,\n            skills: [\n              {\n                name: 'doompi-author-workflow',\n                description: 'Author DoomPi workflow definitions, job dependencies and host-executed steps.',\n              },\n              {\n                name: 'doompi-use-workflow',\n                description: 'Discover, launch, monitor, control and recover DoomPi workflow runs.',\n              },\n            ],\n          },\n        ],\n    async onStop() {\n      fence.beginDisposal();\n      await fence.runCleanup(() => runtime.dispose());\n    },\n    async onDispose() {\n      fence.beginDisposal();\n      try {\n        await fence.runCleanup(() => runtime.dispose());\n      } finally {\n        fence.finishDisposal();\n      }\n    },\n  };\n}) satisfies (\n  context: PiPluginContext<Partial<WorkflowPiExtensionOptions>>,\n) => PiPluginContributions<Partial<WorkflowPiExtensionOptions>>;\n"],"mappings":";;;;;;;;;;;AAoBA,IAAA,sBAAiB,EAAE,IAAI,SAAS,SAAS,aAAa;CACpD,MAAM,cAAc,SAAS,eAAe,OAAO,OAAO,EAAE,GAAG,QAAQ,IAAI,CAAC;CAC5E,MAAM,aAAaA,cAAAA,4BAA4B,WAAW;CAC1D,MAAM,QAAQC,cAAAA,oBAAoB,IAAI,MAAM;CAC5C,IAAI,eAAe;CACnB,IAAI;CACJ,MAAM,UAAUC,wBAAAA,wBAAwB,MAAM,IAAI;EAChD,GAAG;EACH;EACA,QAAQ;EACR,aAAa,cAAc,SAAS;EACpC,UAAU,MAAM;EAChB,YAAY,MAAM;EAClB,aAAa,SAAS;GACpB,eAAe;GACf,QAAQ,QAAQ,OAAO;GACvB,SAAS,eAAe,OAAO;EACjC;CACF,CAAC;CACD,MAAM,cAAcC,gBAAAA,oBAAoB,QAAQ,mBAAmB,UAAU;EAC3E,aAAa,MAAM,UAAUC,2BAAAA,uBAAuB,MAAM,MAAiC,KAAK;EAChG,eAAe,QAAQ,eAAe,OAAO,kBAC3CC,2BAAAA,yBACE,MACA,cAAc,MACd,QACA;GAAE,GAAG;GAAe,SAAS,cAAc;EAAQ,GACnD,KACF;CACJ,EAAE;CACF,MAAM,gBAAgB,aAClBC,cAAAA,gBAAgB,aAAaC,cAAAA,+BAA+B,WAAW,GAAG,WAAW,IACrF;CACJ,OAAO;EACL,UAAU,CACR,GAAI,QAAQ,YAAY,CAAC,IACxB,WAAoB;GACnB,OAAO,OAAO,CAACC,8BAAAA,0BAA0B,IAAI,iBAAiB;IAC5D,MAAM,YAAYC,gBAAAA,uBAAuB;IACzC,MAAM,gBAAA,GAAeC,8BAAAA,+BAAAA,CAA+B,YAAY,CAAC,CAAC,SAAS;KACzE,QAAQC,iBAAAA;KACR,aAAa,CAAC,SAAS;IACzB,CAAC;IACD,aAAa,aAAa,QAAQ;GACpC,CAAC;GACD,IAAI,CAAC,YACH,OAAO,OAAO,CAACC,8BAAAA,mBAAmB,IAAI,cAAc;IAClD,MAAM,eAAeC,eAAAA,4BAAAA,GAA2BC,8BAAAA,iBAAAA,CAAiB,SAAS,GAAG,YAAY;IACzF,SAAS;IACT,aAAa;KACX,aAAa,QAAQ;KACrB,IAAI,WAAW,cAAc,SAAS,KAAA;IACxC;GACF,CAAC;EACL,CACF;EACA,OAAO,cAAc,KAAK,UAAA,GACxBC,oCAAAA,aAAAA,CACE,MAAM,KAAK;GACT,GAAG;GACH,MAAM,QAAQ,GAAG,MAAM;IACrB,MAAM,QAAQ,iBAAiB,KAAK,EAAE;IACtC,OAAO,KAAK,QAAQ,GAAG,IAAI;GAC7B;EACF,CAAC,CACH,CACF;EACA,UAAU,QAAQ,SAAS,KAAK,CAAC,MAAM,aAAa,MAAM,QAAQ,MAAM,OAAO,CAAC;EAChF,WAAW,QAAQ,WAAW,KAAK,CAAC,KAAK,cAAc,MAAM,SAAS,KAAK,QAAQ,CAAC;EACpF,QAAQ,MAAM,OAAO,QAAQ,UAAU,CAAC,CAAC;EAEzC,kBAAkB,CAChB,GAAI,QAAQ,oBAAoB,CAAC,GACjC,GAAI,aAAa,CAAC;GAAE,QAAQ,GAAGJ,iBAAAA,eAAe;GAAc,UAAUK,cAAAA,0BAA0B;EAAE,CAAC,IAAI,CAAC,CAC1G;EACA,WAAW,aACP,CAAC,IACD,CACE;GACE,QAAQL,iBAAAA;GACR,WAAA,QAAA,KAAA,CAAA,CAAA,cAAA,UAAA,CAAA,CAAA;GACA,QAAQ,CACN;IACE,MAAM;IACN,aAAa;GACf,GACA;IACE,MAAM;IACN,aAAa;GACf,CACF;EACF,CACF;EACJ,MAAM,SAAS;GACb,MAAM,cAAc;GACpB,MAAM,MAAM,iBAAiB,QAAQ,QAAQ,CAAC;EAChD;EACA,MAAM,YAAY;GAChB,MAAM,cAAc;GACpB,IAAI;IACF,MAAM,MAAM,iBAAiB,QAAQ,QAAQ,CAAC;GAChD,UAAU;IACR,MAAM,eAAe;GACvB;EACF;CACF;AACF"}