seed-e2e.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. const dir = process.env.OPENCODE_E2E_PROJECT_DIR ?? process.cwd()
  2. const title = process.env.OPENCODE_E2E_SESSION_TITLE ?? "E2E Session"
  3. const text = process.env.OPENCODE_E2E_MESSAGE ?? "Seeded for UI e2e"
  4. const model = process.env.OPENCODE_E2E_MODEL ?? "opencode/gpt-5-nano"
  5. const parts = model.split("/")
  6. const providerID = parts[0] ?? "opencode"
  7. const modelID = parts[1] ?? "gpt-5-nano"
  8. const now = Date.now()
  9. const seed = async () => {
  10. const { Instance } = await import("../src/project/instance")
  11. const { InstanceBootstrap } = await import("../src/project/bootstrap")
  12. const { Session } = await import("../src/session")
  13. const { Identifier } = await import("../src/id/id")
  14. const { Project } = await import("../src/project/project")
  15. await Instance.provide({
  16. directory: dir,
  17. init: InstanceBootstrap,
  18. fn: async () => {
  19. const session = await Session.create({ title })
  20. const messageID = Identifier.descending("message")
  21. const partID = Identifier.descending("part")
  22. const message = {
  23. id: messageID,
  24. sessionID: session.id,
  25. role: "user" as const,
  26. time: { created: now },
  27. agent: "build",
  28. model: {
  29. providerID,
  30. modelID,
  31. },
  32. }
  33. const part = {
  34. id: partID,
  35. sessionID: session.id,
  36. messageID,
  37. type: "text" as const,
  38. text,
  39. time: { start: now },
  40. }
  41. await Session.updateMessage(message)
  42. await Session.updatePart(part)
  43. await Project.update({ projectID: Instance.project.id, name: "E2E Project" })
  44. },
  45. })
  46. }
  47. await seed()