Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions server/routes/slow.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { defineRoute } from 'theokit/server'

/**
* RED TEAM probe for theo-cloud#107 (edge writeTimeout=60s on client apps).
* Holds the response open for 70s (no intermediate writes), then replies.
* If the Traefik edge writeTimeout=60s is in effect, the connection is cut
* at ~60s before this responds. If the app's edge tolerates long-lived
* responses, curl receives {ok:true,sleptMs:70000} after ~70s.
*/
export const GET = defineRoute({
handler: async () => {
const sleptMs = 70000
await new Promise((resolve) => setTimeout(resolve, sleptMs))
return { ok: true, sleptMs, note: 'redteam-107-probe' }
},
})
33 changes: 33 additions & 0 deletions server/routes/sse.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import { defineRoute } from 'theokit/server'

/**
* RED TEAM probe for theo-cloud#107 (edge writeTimeout vs SSE).
* A REAL Server-Sent Events stream: sends the text/event-stream header +
* an initial comment immediately, then stays idle for 70s (gap > 60s, no
* keep-alive) before the first data event.
*
* If the edge is SSE-aware (exempts text/event-stream from writeTimeout),
* curl stays connected past 60s and receives `data: {"tick":1}` at ~70s.
* If the edge still cuts at ~60s, #107 is NOT fixed for real SSE either.
*/
export const GET = defineRoute({
handler: () => {
const enc = new TextEncoder()
const stream = new ReadableStream({
start(controller) {
controller.enqueue(enc.encode(': sse-connected (redteam-107)\n\n'))
setTimeout(() => {
controller.enqueue(enc.encode('data: {"tick":1,"atSeconds":70}\n\n'))
controller.close()
}, 70000)
},
})
return new Response(stream, {
headers: {
'content-type': 'text/event-stream',
'cache-control': 'no-cache',
connection: 'keep-alive',
},
})
},
})
1 change: 0 additions & 1 deletion t-active-release-1781655385.txt

This file was deleted.

1 change: 0 additions & 1 deletion t-bash-trigger-1781650792.txt

This file was deleted.

1 change: 0 additions & 1 deletion t-cleanroom-argocd-token-1782173991.txt

This file was deleted.

1 change: 0 additions & 1 deletion t-cleanroom-final-1782175264.txt

This file was deleted.

1 change: 0 additions & 1 deletion t-cleanroom-retry-1782173129.txt

This file was deleted.

1 change: 0 additions & 1 deletion t-dash-shim-1781651231.txt

This file was deleted.

1 change: 0 additions & 1 deletion t-force-trigger-1781650298.txt

This file was deleted.

1 change: 0 additions & 1 deletion t-fresh-deploy-1781653429.txt

This file was deleted.

1 change: 0 additions & 1 deletion t-npm-start-1781654211.txt

This file was deleted.

1 change: 0 additions & 1 deletion t-start-extract-1781652369.txt

This file was deleted.

1 change: 0 additions & 1 deletion t-start-fix-1781652060.txt

This file was deleted.

1 change: 0 additions & 1 deletion t-subsh-fix-1781651619.txt

This file was deleted.

1 change: 0 additions & 1 deletion t-trigger-build-1781649273.txt

This file was deleted.

1 change: 0 additions & 1 deletion t-trigger-slim-1781650091.txt

This file was deleted.

1 change: 0 additions & 1 deletion t61-marker-1781648318.txt

This file was deleted.

1 change: 0 additions & 1 deletion t61-marker-1782170116.txt

This file was deleted.