api.types.ts 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { Effect } from "effect"
  2. import { OpenCode as EffectOpenCode, type AppApi as EffectApi } from "../src/effect"
  3. import type { Session } from "@opencode-ai/schema/session"
  4. type EffectClient = Effect.Success<ReturnType<typeof EffectOpenCode.make>>
  5. type PromiseClient = ReturnType<typeof import("../src/promise").OpenCode.make>
  6. declare const effectClient: EffectClient
  7. declare const promiseClient: PromiseClient
  8. const effectApi: EffectApi<unknown> = effectClient
  9. const effectSession: Effect.Effect<Session.Info, unknown> = effectClient.session.get({
  10. sessionID: "ses_test" as Session.ID,
  11. })
  12. declare const sessionID: Parameters<typeof effectApi.session.instructions.entry.list>[0]["sessionID"]
  13. const effectList: Effect.Effect<
  14. ReadonlyArray<{ readonly key: string; readonly value: unknown }>,
  15. unknown
  16. > = effectApi.session.instructions.entry.list({ sessionID })
  17. const effectPut: Effect.Effect<void, unknown> = effectApi.session.instructions.entry.put({
  18. sessionID,
  19. key: "review-notes",
  20. value: { text: "Check the diff" },
  21. })
  22. const effectRemove: Effect.Effect<void, unknown> = effectApi.session.instructions.entry.remove({
  23. sessionID,
  24. key: "review-notes",
  25. })
  26. const promiseList: Promise<ReadonlyArray<{ readonly key: string; readonly value: unknown }>> =
  27. promiseClient.session.instructions.entry.list({ sessionID: "ses_test" })
  28. const promisePut: Promise<void> = promiseClient.session.instructions.entry.put({
  29. sessionID: "ses_test",
  30. key: "review-notes",
  31. value: { text: "Check the diff" },
  32. })
  33. const promiseRemove: Promise<void> = promiseClient.session.instructions.entry.remove({
  34. sessionID: "ses_test",
  35. key: "review-notes",
  36. })
  37. void [effectSession, effectList, effectPut, effectRemove, promiseList, promisePut, promiseRemove]