1
0

provider-alibaba.test.ts 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import { describe, expect } from "bun:test"
  2. import { createAlibaba } from "@ai-sdk/alibaba"
  3. import { Effect } from "effect"
  4. import { ModelV2 } from "@opencode-ai/core/model"
  5. import { PluginV2 } from "@opencode-ai/core/plugin"
  6. import { AlibabaPlugin } from "@opencode-ai/core/plugin/provider/alibaba"
  7. import { it, model } from "./provider-helper"
  8. describe("AlibabaPlugin", () => {
  9. it.effect("creates an Alibaba SDK for @ai-sdk/alibaba", () =>
  10. Effect.gen(function* () {
  11. const plugin = yield* PluginV2.Service
  12. yield* plugin.add(AlibabaPlugin)
  13. const result = yield* plugin.trigger(
  14. "aisdk.sdk",
  15. { model: model("alibaba", "qwen"), package: "@ai-sdk/alibaba", options: { name: "alibaba" } },
  16. {},
  17. )
  18. expect(result.sdk).toBeDefined()
  19. }),
  20. )
  21. it.effect("ignores non-Alibaba SDK packages", () =>
  22. Effect.gen(function* () {
  23. const plugin = yield* PluginV2.Service
  24. yield* plugin.add(AlibabaPlugin)
  25. const result = yield* plugin.trigger(
  26. "aisdk.sdk",
  27. { model: model("alibaba", "qwen"), package: "@ai-sdk/openai-compatible", options: { name: "alibaba" } },
  28. {},
  29. )
  30. expect(result.sdk).toBeUndefined()
  31. }),
  32. )
  33. it.effect("matches the old bundled Alibaba SDK provider naming", () =>
  34. Effect.gen(function* () {
  35. const plugin = yield* PluginV2.Service
  36. yield* plugin.add(AlibabaPlugin)
  37. const result = yield* plugin.trigger(
  38. "aisdk.sdk",
  39. {
  40. model: model("custom-alibaba", "qwen"),
  41. package: "@ai-sdk/alibaba",
  42. options: { name: "custom-alibaba", apiKey: "test" },
  43. },
  44. {},
  45. )
  46. const expected = createAlibaba({ apiKey: "test", ...{ name: "custom-alibaba" } }).languageModel("qwen")
  47. const actual = result.sdk?.languageModel("qwen")
  48. expect(actual?.provider).toBe(expected.provider)
  49. expect(actual?.modelId).toBe(expected.modelId)
  50. }),
  51. )
  52. it.effect("uses the old default languageModel(api.id) behavior", () =>
  53. Effect.gen(function* () {
  54. const plugin = yield* PluginV2.Service
  55. yield* plugin.add(AlibabaPlugin)
  56. const item = model("alibaba", "alias", { api: { id: ModelV2.ID.make("qwen-plus") } })
  57. const result = yield* plugin.trigger("aisdk.sdk", { model: item, package: "@ai-sdk/alibaba", options: {} }, {})
  58. const language = result.sdk?.languageModel(item.api.id)
  59. expect(language?.modelId).toBe("qwen-plus")
  60. expect(language?.provider).toBe("alibaba.chat")
  61. }),
  62. )
  63. })