message-without-active-task.ts 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import { runStreamCase, StreamEvent } from "../lib/stream-harness"
  2. async function main() {
  3. const messageRequestId = `message-${Date.now()}`
  4. const shutdownRequestId = `shutdown-${Date.now()}`
  5. let initSeen = false
  6. let sawNoActiveTaskError = false
  7. let sentShutdown = false
  8. await runStreamCase({
  9. onEvent(event: StreamEvent, context) {
  10. if (event.type === "system" && event.subtype === "init" && !initSeen) {
  11. initSeen = true
  12. context.sendCommand({
  13. command: "message",
  14. requestId: messageRequestId,
  15. prompt: "Hello",
  16. })
  17. return
  18. }
  19. if (
  20. event.type === "control" &&
  21. event.subtype === "error" &&
  22. event.requestId === messageRequestId &&
  23. event.code === "no_active_task"
  24. ) {
  25. sawNoActiveTaskError = true
  26. if (!sentShutdown) {
  27. context.sendCommand({
  28. command: "shutdown",
  29. requestId: shutdownRequestId,
  30. })
  31. sentShutdown = true
  32. }
  33. }
  34. },
  35. onTimeoutMessage() {
  36. return `timed out waiting for no_active_task error (initSeen=${initSeen}, sawNoActiveTaskError=${sawNoActiveTaskError})`
  37. },
  38. })
  39. if (!sawNoActiveTaskError) {
  40. throw new Error("expected no_active_task error was not observed")
  41. }
  42. }
  43. main().catch((error) => {
  44. console.error(`[FAIL] ${error instanceof Error ? error.message : String(error)}`)
  45. process.exit(1)
  46. })