6915f15299
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
102 lines
3.0 KiB
TypeScript
102 lines
3.0 KiB
TypeScript
/// <reference types="bun-types" />
|
|
import { afterEach, beforeEach, describe, expect, test } from "bun:test"
|
|
|
|
import { OMO_INTERNAL_INITIATOR_MARKER } from "../../shared/internal-initiator-marker"
|
|
import { handleNonIdleEvent } from "./non-idle-events"
|
|
import { createSessionStateStore, type SessionStateStore } from "./session-state"
|
|
|
|
describe("handleNonIdleEvent", () => {
|
|
let sessionStateStore: SessionStateStore
|
|
|
|
beforeEach(() => {
|
|
sessionStateStore = createSessionStateStore()
|
|
})
|
|
|
|
afterEach(() => {
|
|
sessionStateStore.shutdown()
|
|
})
|
|
|
|
test("given synthetic user message update, keeps continuation countdown state intact", () => {
|
|
// given
|
|
const sessionID = "ses_synthetic_user_event"
|
|
const state = sessionStateStore.getState(sessionID)
|
|
state.countdownStartedAt = Date.now() - 10_000
|
|
state.wasCancelled = true
|
|
state.tokenLimitDetected = true
|
|
|
|
// when
|
|
handleNonIdleEvent({
|
|
eventType: "message.updated",
|
|
properties: {
|
|
sessionID,
|
|
info: { role: "user" },
|
|
parts: [{ type: "text", text: "internal wake", synthetic: true }],
|
|
},
|
|
sessionStateStore,
|
|
})
|
|
|
|
// then
|
|
expect(state.countdownStartedAt).toBeDefined()
|
|
expect(state.wasCancelled).toBe(true)
|
|
expect(state.tokenLimitDetected).toBe(true)
|
|
})
|
|
|
|
test("given internally marked user message update, keeps continuation countdown state intact", () => {
|
|
// given
|
|
const sessionID = "ses_internal_user_event"
|
|
const state = sessionStateStore.getState(sessionID)
|
|
state.countdownStartedAt = Date.now() - 10_000
|
|
state.wasCancelled = true
|
|
state.tokenLimitDetected = true
|
|
|
|
// when
|
|
handleNonIdleEvent({
|
|
eventType: "message.updated",
|
|
properties: {
|
|
sessionID,
|
|
info: { role: "user" },
|
|
parts: [
|
|
{ type: "text", text: `internal wake\n${OMO_INTERNAL_INITIATOR_MARKER}` },
|
|
],
|
|
},
|
|
sessionStateStore,
|
|
})
|
|
|
|
// then
|
|
expect(state.countdownStartedAt).toBeDefined()
|
|
expect(state.wasCancelled).toBe(true)
|
|
expect(state.tokenLimitDetected).toBe(true)
|
|
})
|
|
|
|
test("given ultrawork loop continuation user message update, cancels stale todo continuation countdown", () => {
|
|
// given
|
|
const sessionID = "ses_ulw_todo_overlap"
|
|
const state = sessionStateStore.getState(sessionID)
|
|
state.countdownStartedAt = Date.now() - 10_000
|
|
state.wasCancelled = true
|
|
state.tokenLimitDetected = true
|
|
|
|
// when
|
|
handleNonIdleEvent({
|
|
eventType: "message.updated",
|
|
properties: {
|
|
sessionID,
|
|
info: { role: "user" },
|
|
parts: [
|
|
{
|
|
type: "text",
|
|
text: `ultrawork [SYSTEM DIRECTIVE: OH-MY-OPENCODE - RALPH LOOP 2/500]\ncontinue\n${OMO_INTERNAL_INITIATOR_MARKER}`,
|
|
synthetic: true,
|
|
},
|
|
],
|
|
},
|
|
sessionStateStore,
|
|
})
|
|
|
|
// then
|
|
expect(state.countdownStartedAt).toBeUndefined()
|
|
expect(state.wasCancelled).toBe(true)
|
|
expect(state.tokenLimitDetected).toBe(true)
|
|
})
|
|
})
|