{"version":3,"file":"server.cjs","names":["DefaultSandboxExtensionService","BROKER_STATUS_SOURCE","startBroker","defineRoot","defineRoutedContribution","createSandboxServerCommands","defineRoutedContribution","defineResource","createSandboxContextResource","defineRoutedContribution","defineResource","createSandboxSkillResource","defineServerPlugin","rootSession","composeRootHooks","commandSandbox","resourceDoompiSandbox","resourceDoompiUseSandbox"],"sources":["../../src/extensions/workspaces/sessions/(backend)/_lib/serverRoot.ts","../../src/extensions/workspaces/sessions/(backend)/root.server.ts","../../src/extensions/workspaces/sessions/(backend)/command/sandbox.server.ts","../../src/extensions/workspaces/sessions/(backend)/resource/doompiSandbox.server.ts","../../src/extensions/workspaces/sessions/(backend)/resource/doompiUseSandbox.server.ts","../../generated/server.ts"],"sourcesContent":["import type { DoomHeadlessActivity } from '@agimon-ai/doompi-core/headless';\nimport type { DoomServerPluginContext } from '@agimon-ai/doompi-core/serverFacet';\n\nimport { BROKER_DISABLED_ENV, BROKER_STATUS_SOURCE, DISABLED_VALUE } from '../../../../../constants/sandbox';\nimport { startBroker, type RunningBroker } from '../../../../../services/brokerHost';\nimport { DefaultSandboxExtensionService } from '../../../../../services/extensionService';\nimport type { SandboxServerScope } from './sandboxScope';\n\nexport function createSandboxServerRoot({ agent }: DoomServerPluginContext) {\n  if (!agent) return { value: {} as SandboxServerScope };\n  const service = new DefaultSandboxExtensionService(agent.context.environment);\n  let broker: RunningBroker | undefined;\n  const activity: DoomHeadlessActivity = {\n    name: BROKER_STATUS_SOURCE,\n    async start(execution) {\n      if (execution.environment[BROKER_DISABLED_ENV] === DISABLED_VALUE) return () => undefined;\n      const started = await startBroker({\n        environment: execution.environment,\n        onDenied: (reason) => {\n          void execution.client.notify({\n            title: 'DoomPi sandbox broker',\n            body: `Broker refused a call: ${reason}`,\n            level: 'warning',\n          });\n        },\n      });\n      broker = started;\n      if (started === undefined) return () => undefined;\n      execution.client.setStatus(BROKER_STATUS_SOURCE, `provider broker: ${started.providers.join(', ')}`);\n      return async () => {\n        if (broker !== started) return;\n        broker = undefined;\n        execution.client.setStatus(BROKER_STATUS_SOURCE, undefined);\n        await started.stop();\n      };\n    },\n  };\n  return { value: { service }, activities: [activity] };\n}\n","import { defineRoot } from '@agimon-ai/doompi-core/extensionFile';\n\nimport { createSandboxServerRoot } from './_lib/serverRoot';\n\nexport default defineRoot(createSandboxServerRoot);\n","import { defineRoutedContribution, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\nimport type { DoomServerPluginContext } from '@agimon-ai/doompi-core/serverFacet';\n\nimport { createSandboxServerCommands } from '../_lib/sandboxCommands';\nimport type { SandboxServerScope } from '../_lib/sandboxScope';\n\nexport default defineRoutedContribution(\n  (context: WithRoot<DoomServerPluginContext, SandboxServerScope>) => createSandboxServerCommands(context),\n  { cardinality: 'many' },\n);\n","import { defineResource, defineRoutedContribution, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\nimport type { DoomServerPluginContext } from '@agimon-ai/doompi-core/serverFacet';\n\nimport { createSandboxContextResource } from '../_lib/sandboxResources';\nimport type { SandboxServerScope } from '../_lib/sandboxScope';\n\nexport default defineRoutedContribution(\n  defineResource((context: WithRoot<DoomServerPluginContext, SandboxServerScope>) =>\n    createSandboxContextResource(context.root),\n  ),\n  { cardinality: 'optional' },\n);\n","import { defineResource, defineRoutedContribution, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\nimport type { DoomServerPluginContext } from '@agimon-ai/doompi-core/serverFacet';\n\nimport { createSandboxSkillResource } from '../_lib/sandboxResources';\nimport type { SandboxServerScope } from '../_lib/sandboxScope';\n\nexport default defineRoutedContribution(\n  defineResource((context: WithRoot<DoomServerPluginContext, SandboxServerScope>) =>\n    createSandboxSkillResource(context.root),\n  ),\n  { cardinality: 'optional' },\n);\n","// Generated by @agimon-ai/doompi-build. Do not edit by hand.\nimport { defineServerPlugin, type DoomServerSessionPlugin } from '@agimon-ai/doompi-core/serverFacet';\nimport { composeRootHooks } from '@agimon-ai/doompi-core/extensionFile';\n\nimport rootSession from '../src/extensions/workspaces/sessions/(backend)/root.server';\nimport commandSandbox from '../src/extensions/workspaces/sessions/(backend)/command/sandbox.server';\nimport resourceDoompiSandbox from '../src/extensions/workspaces/sessions/(backend)/resource/doompiSandbox.server';\nimport resourceDoompiUseSandbox from '../src/extensions/workspaces/sessions/(backend)/resource/doompiUseSandbox.server';\n\ntype Factory<T, C> = (context: C) => T;\nconst at = <T, C>(value: T | Factory<T, C>, context: C): T =>\n  typeof value === 'function' ? (value as Factory<T, C>)(context) : value;\ntype ManyFactory<T, C> = (context: C) => T | readonly T[];\nconst many = <T, C>(value: T | readonly T[] | ManyFactory<T, C>, context: C): readonly T[] => {\n  const resolved = typeof value === 'function' ? (value as ManyFactory<T, C>)(context) : value;\n  return Array.isArray(resolved) ? resolved : [resolved as T];\n};\n/* v8 ignore next -- generated normalization branch */\nconst defined = <T>(values: readonly (T | undefined)[]): T[] =>\n  values.filter((value): value is T => value !== undefined);\n\nexport const facet = defineServerPlugin({\n  name: '@agimon-ai/doompi-sandbox',\n  session: async (context) => {\n    const scopeSession = await rootSession(context);\n    const contextSession = { ...context, root: scopeSession.value };\n    return {\n      ...composeRootHooks(scopeSession),\n      get commands(): DoomServerSessionPlugin['commands'] { return [...many(commandSandbox, contextSession)]; },\n      get resources(): DoomServerSessionPlugin['resources'] { return defined([at(resourceDoompiSandbox, contextSession), at(resourceDoompiUseSandbox, contextSession)]); },\n      services: [...(scopeSession.services ?? [])],\n      get activities(): DoomServerSessionPlugin['activities'] { return [...(scopeSession.activities ?? [])]; },\n    };\n  },\n});\n\nexport default facet;\n"],"mappings":";;;;;;;;;;AAQA,SAAgB,wBAAwB,EAAE,SAAkC;CAC1E,IAAI,CAAC,OAAO,OAAO,EAAE,OAAO,CAAC,EAAwB;CACrD,MAAM,UAAU,IAAIA,yBAAAA,+BAA+B,MAAM,QAAQ,WAAW;CAC5E,IAAI;CA0BJ,OAAO;EAAE,OAAO,EAAE,QAAQ;EAAG,YAAY,CAAC;GAxBxC,MAAMC,yBAAAA;GACN,MAAM,MAAM,WAAW;IACrB,IAAI,UAAU,YAAA,6BAAA,KAAqD,aAAa,KAAA;IAChF,MAAM,UAAU,MAAMC,mBAAAA,YAAY;KAChC,aAAa,UAAU;KACvB,WAAW,WAAW;MACpB,UAAe,OAAO,OAAO;OAC3B,OAAO;OACP,MAAM,0BAA0B;OAChC,OAAO;MACT,CAAC;KACH;IACF,CAAC;IACD,SAAS;IACT,IAAI,YAAY,KAAA,GAAW,aAAa,KAAA;IACxC,UAAU,OAAO,UAAUD,yBAAAA,sBAAsB,oBAAoB,QAAQ,UAAU,KAAK,IAAI,GAAG;IACnG,OAAO,YAAY;KACjB,IAAI,WAAW,SAAS;KACxB,SAAS,KAAA;KACT,UAAU,OAAO,UAAUA,yBAAAA,sBAAsB,KAAA,CAAS;KAC1D,MAAM,QAAQ,KAAK;IACrB;GACF;EAE+C,CAAC;CAAE;AACtD;;;AClCA,IAAA,uBAAA,GAAeE,qCAAAA,WAAAA,CAAW,uBAAuB;;;ACEjD,IAAA,0BAAA,GAAeC,qCAAAA,yBAAAA,EACZ,YAAmEC,yBAAAA,4BAA4B,OAAO,GACvG,EAAE,aAAa,OAAO,CACxB;;;ACHA,IAAA,gCAAA,GAAeC,qCAAAA,yBAAAA,EAAAA,GACbC,qCAAAA,eAAAA,EAAgB,YACdC,yBAAAA,6BAA6B,QAAQ,IAAI,CAC3C,GACA,EAAE,aAAa,WAAW,CAC5B;;;ACLA,IAAA,mCAAA,GAAeC,qCAAAA,yBAAAA,EAAAA,GACbC,qCAAAA,eAAAA,EAAgB,YACdC,yBAAAA,2BAA2B,QAAQ,IAAI,CACzC,GACA,EAAE,aAAa,WAAW,CAC5B;;;ACDA,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;AAEpE,MAAM,QAAc,OAA6C,YAA6B;CAC5F,MAAM,WAAW,OAAO,UAAU,aAAc,MAA4B,OAAO,IAAI;CACvF,OAAO,MAAM,QAAQ,QAAQ,IAAI,WAAW,CAAC,QAAa;AAC5D;;AAEA,MAAM,WAAc,WAClB,OAAO,QAAQ,UAAsB,UAAU,KAAA,CAAS;AAE1D,MAAa,SAAA,GAAQC,mCAAAA,mBAAAA,CAAmB;CACtC,MAAM;CACN,SAAS,OAAO,YAAY;EAC1B,MAAM,eAAe,MAAMC,oBAAY,OAAO;EAC9C,MAAM,iBAAiB;GAAE,GAAG;GAAS,MAAM,aAAa;EAAM;EAC9D,OAAO;GACL,IAAA,GAAGC,qCAAAA,iBAAAA,CAAiB,YAAY;GAChC,IAAI,WAAgD;IAAE,OAAO,CAAC,GAAG,KAAKC,wBAAgB,cAAc,CAAC;GAAG;GACxG,IAAI,YAAkD;IAAE,OAAO,QAAQ,CAAC,GAAGC,8BAAuB,cAAc,GAAG,GAAGC,iCAA0B,cAAc,CAAC,CAAC;GAAG;GACnK,UAAU,CAAC,GAAI,aAAa,YAAY,CAAC,CAAE;GAC3C,IAAI,aAAoD;IAAE,OAAO,CAAC,GAAI,aAAa,cAAc,CAAC,CAAE;GAAG;EACzG;CACF;AACF,CAAC"}