setup.ts 1.2 KB

1234567891011121314151617181920212223
  1. import { Context } from '@deepseek-ai/cordis'
  2. import { onTestFinished } from 'vitest'
  3. import SessionStore from '@deepseek-ai/dsh-session'
  4. import FileSystem from '@deepseek-ai/dsh-fs-local'
  5. import Subprocess from '@deepseek-ai/dsh-subprocess-local'
  6. import Sandbox from '@deepseek-ai/dsh-sandbox-local'
  7. import SandboxPolicy from '@deepseek-ai/dsh-sandbox-policy'
  8. import SessionProjections from '@deepseek-ai/dsh-session-projection'
  9. import type { SandboxMode } from '@deepseek-ai/dsh-sandbox'
  10. import NodeRuntime from '../src/index.ts'
  11. import type { Config } from '../src/index.ts'
  12. export async function mountRuntime(ctx: Context, config: Config = {}, policy: { mode?: SandboxMode; workspaceRoot?: string } = {}) {
  13. onTestFinished(async () => { await ctx.fiber.dispose() })
  14. if (!ctx.get('sessions')) await ctx.plugin(SessionStore)
  15. if (!ctx.get('fs')) await ctx.plugin(FileSystem)
  16. if (!ctx.get('subprocess')) await ctx.plugin(Subprocess)
  17. if (!ctx.get('sandbox')) await ctx.plugin(Sandbox, {})
  18. if (!ctx.get('sessionProjections')) await ctx.plugin(SessionProjections)
  19. if (!ctx.get('sandboxPolicy')) await ctx.plugin(SandboxPolicy, { mode: 'danger-full-access', ...policy })
  20. await ctx.plugin(NodeRuntime, config)
  21. return ctx.ptcRuntime as NodeRuntime
  22. }