api.types.ts 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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. import type { DiscoverOptions } from "../src/service"
  5. type EffectClient = Effect.Success<ReturnType<typeof EffectOpenCode.make>>
  6. type PromiseClient = ReturnType<typeof import("../src/promise").OpenCode.make>
  7. declare const effectClient: EffectClient
  8. declare const promiseClient: PromiseClient
  9. const exactVersion: DiscoverOptions = { version: "2.0.0" }
  10. const compatibleVersion: DiscoverOptions = { version: (version) => version.startsWith("2.") }
  11. const effectApi: EffectApi<unknown> = effectClient
  12. const effectSession: Effect.Effect<Session.Info, unknown> = effectClient.session.get({
  13. sessionID: "ses_test" as Session.ID,
  14. })
  15. declare const sessionID: Parameters<typeof effectApi.session.instructions.entry.list>[0]["sessionID"]
  16. const effectList: Effect.Effect<
  17. ReadonlyArray<{ readonly key: string; readonly value: unknown }>,
  18. unknown
  19. > = effectApi.session.instructions.entry.list({ sessionID })
  20. const effectPut: Effect.Effect<void, unknown> = effectApi.session.instructions.entry.put({
  21. sessionID,
  22. key: "review-notes",
  23. value: { text: "Check the diff" },
  24. })
  25. const effectRemove: Effect.Effect<void, unknown> = effectApi.session.instructions.entry.remove({
  26. sessionID,
  27. key: "review-notes",
  28. })
  29. const promiseList: Promise<ReadonlyArray<{ readonly key: string; readonly value: unknown }>> =
  30. promiseClient.session.instructions.entry.list({ sessionID: "ses_test" })
  31. const promisePut: Promise<void> = promiseClient.session.instructions.entry.put({
  32. sessionID: "ses_test",
  33. key: "review-notes",
  34. value: { text: "Check the diff" },
  35. })
  36. const promiseRemove: Promise<void> = promiseClient.session.instructions.entry.remove({
  37. sessionID: "ses_test",
  38. key: "review-notes",
  39. })
  40. void [
  41. effectSession,
  42. effectList,
  43. effectPut,
  44. effectRemove,
  45. promiseList,
  46. promisePut,
  47. promiseRemove,
  48. exactVersion,
  49. compatibleVersion,
  50. ]