Build and deploy AI Agents on Cloudflare
This report presents the forensic synthetic code analysis of cloudflare/agents, a TypeScript project with 5,497 GitHub stars. SynthScan v2.0 examined 588,814 lines of code across 2197 source files, recording 1408 pattern matches distributed across 13 syntactic categories. The overall adjusted score of 5.6 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 1408 distinct pattern matches across 13 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | design/rfc-think-multi-session.md | 120 | // ── SQLite schema (managed internally) ────────────────────────── | COMMENT |
| MEDIUM | design/rfc-think-multi-session.md | 176 | // ── Search-provider hooks (for RemoteSearchProvider) ──────────── | COMMENT |
| MEDIUM | design/rfc-think-multi-session.md | 188 | // ── Spawning chats ────────────────────────────────────────────── | COMMENT |
| MEDIUM | design/think-sessions.md | 261 | // ── Session ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | design/think-sessions.md | 274 | // ── Override points ──────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | design/think-sessions.md | 328 | // ── Dynamic configuration ────────────────────────────────── | COMMENT |
| MEDIUM⚡ | design/think-sessions.md | 336 | // ── Sub-agent RPC ────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | design/think-sessions.md | 345 | // ── Message access ───────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-gatekeeper/src/client.tsx | 51 | // ─── Helpers ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-gatekeeper/src/client.tsx | 121 | // ─── Action Queue Panel ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-gatekeeper/src/client.tsx | 279 | // ─── Customer Table ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-gatekeeper/src/client.tsx | 334 | // ─── Chat Panel ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-gatekeeper/src/client.tsx | 649 | // ─── App Root ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-gatekeeper/src/server.ts | 20 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-gatekeeper/src/server.ts | 22 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-gatekeeper/src/server.ts | 50 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-gatekeeper/src/server.ts | 55 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-gatekeeper/src/server.ts | 105 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-gatekeeper/src/server.ts | 107 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-gatekeeper/src/server.ts | 120 | // ─── Sub-agent access ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-gatekeeper/src/server.ts | 126 | // ─── Queue table ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-gatekeeper/src/server.ts | 145 | // ─── State sync ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-gatekeeper/src/server.ts | 165 | // ─── Gatekeeper API ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-gatekeeper/src/server.ts | 247 | // ─── Chat ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-gatekeeper/src/server.ts | 344 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-sandbox/src/client.tsx | 96 | // ─── Execution Log ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-sandbox/src/client.tsx | 153 | // ─── Customer Table ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-sandbox/src/client.tsx | 204 | // ─── Main ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-sandbox/src/server.ts | 50 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-sandbox/src/server.ts | 52 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-sandbox/src/server.ts | 75 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-sandbox/src/server.ts | 77 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-sandbox/src/server.ts | 134 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-sandbox/src/server.ts | 146 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-sandbox/src/server.ts | 177 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-sandbox/src/server.ts | 183 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-sandbox/src/server.ts | 214 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-sandbox/src/server.ts | 216 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-sandbox/src/server.ts | 230 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-sandbox/src/server.ts | 232 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-sandbox/src/server.ts | 245 | // ─── Database sub-agent ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-sandbox/src/server.ts | 270 | // ─── Tables ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-sandbox/src/server.ts | 284 | // ─── State sync ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-sandbox/src/server.ts | 296 | // ─── Trace delivery (from TailLoopback) ────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-sandbox/src/server.ts | 308 | // ─── Code execution via LOADER ─────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-sandbox/src/server.ts | 407 | // ─── Chat ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gadgets-sandbox/src/server.ts | 504 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/tanstack-recovery/e2e/recovery.test.ts | 369 | // ── Settled-tool persist gate against a FOREIGN tool vocabulary ───────────── | COMMENT |
| MEDIUM | experimental/tanstack-recovery/src/tanstack-agent.ts | 177 | // ── Handshake host state (shared with the streaming/broadcast loop) ───────── | COMMENT |
| MEDIUM | experimental/tanstack-recovery/src/tanstack-agent.ts | 201 | // ── Transcript persistence ────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/tanstack-recovery/src/tanstack-agent.ts | 340 | // ── Model selection (faux default | real Workers AI) ─────────────────────── | COMMENT |
| MEDIUM | experimental/tanstack-recovery/src/tanstack-agent.ts | 379 | // ── Turn execution (fiber-wrapped so a mid-stream crash is recoverable) ───── | COMMENT |
| MEDIUM | experimental/tanstack-recovery/src/tanstack-agent.ts | 624 | // ── Scheduled recovery callbacks (engine-driven) ──────────────────────────── | COMMENT |
| MEDIUM | experimental/tanstack-recovery/src/tanstack-agent.ts | 634 | // ── WebSocket wiring: drive the shared ResumeHandshake ────────────────────── | COMMENT |
| MEDIUM | experimental/tanstack-recovery/src/tanstack-agent.ts | 726 | // ── Fiber recovery entry: drive the shared engine ─────────────────────────── | COMMENT |
| MEDIUM | experimental/tanstack-recovery/src/tanstack-agent.ts | 793 | // ── Shared engine adapter ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/tanstack-recovery/src/tanstack-agent.ts | 904 | // ── Inspection surface (server HTTP → e2e assertions) ─────────────────────── | COMMENT |
| MEDIUM | experimental/tanstack-recovery/src/ws-bridge.ts | 143 | // ── internals ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gateway-resume-think/src/layer-b.test.ts | 11 | // ── helpers ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | experimental/gateway-resume-think/src/layer-b.test.ts | 58 | // ── planResume (Layer-B decision) ────────────────────────────────────────── | COMMENT |
| 825 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | design/chat-api.md | 360 | async function defaultGetInitialMessagesFetch({ url }: GetInitialMessagesOptions) { | CODE |
| LOW | agent-think/src/agent.ts | 79 | export function configureAgentThinkSession( | CODE |
| LOW | agent-think/src/tools/fs/edit-diff.ts | 169 | export function applyEditsToNormalizedContent( | CODE |
| LOW | docs/agents/queue.md | 218 | class DataProcessor extends Agent { | CODE |
| LOW | guides/anthropic-patterns/src/app.tsx | 109 | function getOrCreateSessionId() { | CODE |
| LOW | examples/assistant/src/client.tsx | 309 | function shouldShowStreamedTextPart(part: { | CODE |
| LOW | examples/assistant/src/auth.ts | 180 | export function createUnauthorizedResponse(request: Request) { | CODE |
| LOW | examples/dynamic-tools/src/client.tsx | 158 | function shouldShowStreamedTextPart(part: { | CODE |
| LOW | examples/playground/src/hooks/useUserId.ts | 6 | function getOrCreateUserId(): string { | CODE |
| LOW | examples/agents-as-tools/src/client.tsx | 163 | function isTerminalAgentToolStatus( | CODE |
| LOW | examples/auth-agent/src/auth.ts | 180 | export function createUnauthorizedResponse(request: Request) { | CODE |
| LOW | examples/chat-sdk-messenger/src/client.tsx | 639 | async function resetSelectedConversation() { | CODE |
| LOW | …amples/chat-sdk-messenger/src/intelligence/messages.ts | 14 | export function conversationNameForThread(thread: Pick<Thread, "id">): string { | CODE |
| LOW | …amples/chat-sdk-messenger/src/intelligence/messages.ts | 55 | export function extractLatestAssistantText( | CODE |
| LOW | examples/ai-chat/src/client.tsx | 94 | function shouldShowStreamedTextPart(part: { | CODE |
| LOW | examples/deploy-churn/src/server.ts | 386 | function createSingleTaskMockModel(): LanguageModel { | CODE |
| LOW | examples/voice-agent/src/stt-providers/workers-ai.ts | 8 | export function createWorkersAITranscriber( | CODE |
| LOW | examples/voice-agent/src/stt-providers/elevenlabs.ts | 5 | export function createElevenLabsTranscriber(env: Env, url: URL): Transcriber { | CODE |
| LOW | examples/voice-agent/src/stt-providers/assemblyai.ts | 13 | export function createAssemblyAITranscriber(env: Env, url: URL): Transcriber { | CODE |
| LOW | examples/voice-agent/src/stt-providers/assemblyai.ts | 29 | function getAssemblyAILanguageCodes( | CODE |
| LOW | examples/voice-agent/src/stt-providers/utils.ts | 11 | export function getOptionalProviderKeyterms(url: URL): string[] | undefined { | CODE |
| LOW | …pts/vitest/strip-node-modules-source-map-references.ts | 12 | export function stripNodeModulesSourceMapReferences(): Plugin { | CODE |
| LOW | packages/think/src/media-eviction.ts | 65 | export function resolveMediaEvictionConfig( | CODE |
| LOW | packages/think/src/media-eviction.ts | 110 | export function evictLargeMediaFromMessage( | CODE |
| LOW | packages/think/src/think.ts | 385 | function shouldMarkSkippedAfterGenerationChange( | CODE |
| LOW | packages/think/src/think.ts | 534 | function actionAuthorizationErrorEnvelope( | CODE |
| LOW | packages/think/src/think.ts | 549 | function actionApprovalInputErrorEnvelope(): { | CODE |
| LOW | packages/think/src/think.ts | 560 | function actionPendingErrorEnvelope(): { | CODE |
| LOW | packages/think/src/think.ts | 572 | function actionKeyConflictEnvelope( | CODE |
| LOW | packages/think/src/think.ts | 621 | function safeStringifyActionOutput(output: unknown): { | CODE |
| LOW | packages/think/src/think.ts | 652 | function prepareActionOutputForModel(output: unknown): unknown { | CODE |
| LOW | packages/think/src/think.ts | 740 | function parseDeclaredTaskSchedule( | CODE |
| LOW | packages/think/src/think.ts | 754 | function tryParseDeclaredTaskSchedule( | CODE |
| LOW | packages/think/src/think.ts | 776 | function parseDeclaredTaskScheduleUnchecked( | CODE |
| LOW | packages/think/src/think.ts | 1109 | function ensureValidContinueCheckpoint( | CODE |
| LOW | packages/think/src/think.ts | 1931 | function toProviderSafeExecutionOutcomeMessage(message: UIMessage): UIMessage { | CODE |
| LOW | packages/think/src/think.ts | 1962 | function isThinkFinalAnswerToolName(name: string): boolean { | CODE |
| LOW | packages/think/src/think.ts | 1973 | function thinkFinalAnswerInstruction(toolName: string): string { | CODE |
| LOW | packages/think/src/think.ts | 2350 | export function defaultContextOverflowClassifier( | CODE |
| LOW | packages/think/src/tools/execute.ts | 375 | export function truncatePausedExecutionOutput(output: unknown): unknown { | CODE |
| LOW | packages/think/src/tools/fetch.ts | 856 | function normalizeAllowlistPattern(pattern: string): string { | CODE |
| LOW | packages/think/src/tests/message-reconciliation.test.ts | 138 | function makeClientOptimisticAssistant(id: string): UIMessage { | CODE |
| LOW | packages/think/src/tests/eviction-recovery.test.ts | 35 | async function seedInterruptedContinueTurn( | CODE |
| LOW | packages/think/src/tests/streaming-message-id.test.ts | 40 | function runTurnAndCollectStartChunks( | CODE |
| LOW | packages/think/src/tests/client-tools.test.ts | 223 | async function waitForOverlappingSubmits( | CODE |
| LOW⚡ | packages/think/src/tests/think-session.test.ts | 146 | async function freshConfigInSessionAgent(name: string) { | CODE |
| LOW⚡ | packages/think/src/tests/think-session.test.ts | 153 | async function freshLegacyConfigMigrationAgent(name: string) { | CODE |
| LOW | packages/think/src/tests/agents/execute-hitl.ts | 40 | function executionOutcomeRolesInPrompt( | CODE |
| LOW | packages/think/src/tests/agents/think-session.ts | 179 | function createPrefillRejectingModel( | CODE |
| LOW | packages/think/src/tests/agents/think-session.ts | 272 | function createMultiChunkMockModel(chunks: string[]): LanguageModel { | CODE |
| LOW | packages/think/src/tests/agents/think-session.ts | 309 | function createInBandErrorMockModel( | CODE |
| LOW | packages/think/src/tests/agents/think-session.ts | 346 | function createInBandErrorStreamResult( | CODE |
| LOW | packages/think/src/tests/agents/think-session.ts | 418 | function createDelayedMultiChunkMockModel( | CODE |
| LOW | packages/think/src/tests/agents/think-session.ts | 3535 | function createToolCallingMockModel( | CODE |
| LOW | packages/think/src/tests/agents/think-session.ts | 3606 | function createAttachReplyMockModel(): LanguageModel { | CODE |
| LOW | packages/think/src/tests/agents/think-session.ts | 3676 | function createDurablePauseMockModel(): LanguageModel { | CODE |
| LOW | packages/think/src/tests/agents/think-session.ts | 3772 | function createFinalAnswerMockModel(args: unknown): LanguageModel { | CODE |
| LOW | packages/think/src/tests/agents/assistant-agent-loop.ts | 206 | function createTwoToolThenTextModel( | CODE |
| LOW | packages/think/src/tests/agents/assistant-agent-loop.ts | 473 | function createOverflowThenOkModel( | CODE |
| LOW | packages/think/src/tests/agents/assistant-agent-loop.ts | 547 | function createProactiveThenReactiveModel( | CODE |
| 135 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/agents/workflows.md | 69 | // Step 1: Process data | COMMENT |
| LOW | docs/agents/workflows.md | 82 | // Step 2: Save results | COMMENT |
| LOW | docs/agents/human-in-the-loop.md | 69 | // Step 1: Validate the expense | COMMENT |
| LOW | docs/agents/human-in-the-loop.md | 74 | // Step 2: Wait for manager approval | COMMENT |
| LOW | docs/agents/human-in-the-loop.md | 88 | // Step 3: Process the approved expense | COMMENT |
| LOW | docs/agents/mcp-transports.md | 98 | #### Step 1: Define your MCP server | COMMENT |
| LOW | docs/agents/mcp-transports.md | 134 | #### Step 2: Connect your Agent to the MCP server | COMMENT |
| LOW | docs/agents/mcp-transports.md | 165 | #### Step 3: Configure Durable Object bindings | COMMENT |
| LOW | docs/agents/mcp-transports.md | 186 | #### Step 4: Set up your Worker fetch handler | COMMENT |
| LOW | examples/workflows/src/server.ts | 438 | // Step 1: Validate | COMMENT |
| LOW | examples/workflows/src/server.ts | 460 | // Step 2: Process | COMMENT |
| LOW | examples/workflows/src/server.ts | 486 | // Step 3: Wait for human approval | COMMENT |
| LOW | examples/workflows/src/server.ts | 511 | // Step 4: Finalize | COMMENT |
| LOW⚡ | packages/agents/README.md | 396 | // Step 1: Validate (retries automatically on failure) | COMMENT |
| LOW⚡ | packages/agents/README.md | 401 | // Step 2: Wait for human approval | COMMENT |
| LOW⚡ | packages/agents/README.md | 405 | // Step 3: Process the approved order | COMMENT |
| LOW⚡ | packages/agents/src/tests/test-workflow.ts | 36 | // Step 1: Report start (non-durable) | COMMENT |
| LOW⚡ | packages/agents/src/tests/test-workflow.ts | 44 | // Step 2: If waiting for approval, pause and wait for event | COMMENT |
| LOW | packages/agents/src/tests/test-workflow.ts | 66 | // Step 3: Process the task (non-durable progress report) | COMMENT |
| LOW | packages/agents/src/tests/test-workflow.ts | 85 | // Step 4: Call agent method via RPC (if agent is available) | COMMENT |
| LOW⚡ | packages/agents/src/tests/test-workflow.ts | 96 | // Step 5: Broadcast to clients (non-durable) | COMMENT |
| LOW⚡ | packages/agents/src/tests/test-workflow.ts | 103 | // Step 6: Report completion (durable via step) | COMMENT |
| LOW | packages/ai-chat/e2e/on-stream-end-llm.spec.ts | 186 | // Step 1: Open observer WebSocket and wait for it to be established | COMMENT |
| LOW⚡ | packages/ai-chat/e2e/on-stream-end-llm.spec.ts | 221 | // Step 2: Wait for WebSocket to be fully registered with the DO | COMMENT |
| LOW⚡ | packages/ai-chat/e2e/on-stream-end-llm.spec.ts | 224 | // Step 3: Trigger server-initiated stream via Playwright's request API | COMMENT |
| LOW⚡ | packages/ai-chat/e2e/on-stream-end-llm.spec.ts | 233 | // Step 4: Wait a bit for stream completion to propagate | COMMENT |
| LOW⚡ | packages/ai-chat/e2e/on-stream-end-llm.spec.ts | 236 | // Step 5: Collect observer results from the browser | COMMENT |
| LOW | packages/ai-chat/src/tests/merge-server-state.test.ts | 21 | // Step 1: Persist a message with tool output on the server | COMMENT |
| LOW | packages/ai-chat/src/tests/merge-server-state.test.ts | 38 | // Step 2: Client sends the same message but without the tool output | COMMENT |
| LOW | packages/ai-chat/src/tests/merge-server-state.test.ts | 62 | // Step 3: Verify the tool output is preserved | COMMENT |
| LOW | packages/ai-chat/src/tests/merge-server-state.test.ts | 85 | // Step 1: Server has a tool that was approved and executed (output-available) | COMMENT |
| LOW | packages/ai-chat/src/tests/merge-server-state.test.ts | 102 | // Step 2: Client sends the same tool but in approval-responded state | COMMENT |
| LOW | packages/ai-chat/src/tests/merge-server-state.test.ts | 126 | // Step 3: Verify the server's output-available state is preserved, | COMMENT |
| LOW | packages/ai-chat/src/tests/merge-server-state.test.ts | 152 | // Step 1: Server has a tool that was executed (output-available) | COMMENT |
| LOW | packages/ai-chat/src/tests/merge-server-state.test.ts | 169 | // Step 2: Client sends the same tool but in approval-requested state | COMMENT |
| LOW | packages/ai-chat/src/tests/merge-server-state.test.ts | 192 | // Step 3: Verify the server's output-available state is preserved, | COMMENT |
| LOW | packages/ai-chat/src/tests/continue-last-turn.test.ts | 523 | // Step 1: Simulate an initial interrupted stream | COMMENT |
| LOW | packages/ai-chat/src/tests/continue-last-turn.test.ts | 543 | // Step 2: Continue, producing more content | COMMENT |
| LOW | packages/ai-chat/src/tests/continue-last-turn.test.ts | 556 | // Step 3: Simulate that continuation was ALSO interrupted — | COMMENT |
| LOW | packages/ai-chat/src/tests/continue-last-turn.test.ts | 568 | // Step 4: Trigger fiber recovery — should persist the second partial | COMMENT |
| LOW | packages/ai-chat/src/tests/continue-last-turn.test.ts | 580 | // Step 5: Continue again | COMMENT |
| LOW⚡ | packages/ai-chat/src/tests/request-id.test.ts | 85 | // Step 1: Send initial request so context is established | COMMENT |
| LOW⚡ | packages/ai-chat/src/tests/request-id.test.ts | 88 | // Step 2: Persist a tool call in input-available state | COMMENT |
| LOW⚡ | packages/ai-chat/src/tests/request-id.test.ts | 106 | // Step 3: Clear captured state before continuation | COMMENT |
| LOW⚡ | packages/ai-chat/src/tests/request-id.test.ts | 109 | // Step 4: Send tool result with autoContinue | COMMENT |
| LOW⚡ | packages/ai-chat/src/tests/request-id.test.ts | 145 | // Step 1: Send initial request | COMMENT |
| LOW⚡ | packages/ai-chat/src/tests/request-id.test.ts | 148 | // Step 2: Persist a tool call in approval-required state | COMMENT |
| LOW⚡ | packages/ai-chat/src/tests/request-id.test.ts | 166 | // Step 3: Clear captured state | COMMENT |
| LOW⚡ | packages/ai-chat/src/tests/request-id.test.ts | 169 | // Step 4: Send approval with autoContinue | COMMENT |
| LOW | packages/ai-chat/src/tests/request-id.test.ts | 123 | // Step 5: Verify a requestId was passed (server-generated, so just check it exists) | COMMENT |
| LOW | packages/ai-chat/src/tests/request-id.test.ts | 182 | // Step 5: Verify requestId was passed | COMMENT |
| LOW | …kages/ai-chat/src/tests/client-tools-reconnect.test.ts | 12 | // Step 1: Set up a conversation with a pending tool call (simulates state before refresh) | COMMENT |
| LOW | …kages/ai-chat/src/tests/client-tools-reconnect.test.ts | 38 | // Step 2: Connect (simulates reconnect after refresh) | COMMENT |
| LOW | …kages/ai-chat/src/tests/client-tools-reconnect.test.ts | 49 | // Step 3: Send tool result WITH clientTools (simulates client approval after reconnect) | COMMENT |
| LOW | …kages/ai-chat/src/tests/client-tools-reconnect.test.ts | 83 | // Step 4: Verify continuation received client tools | COMMENT |
| LOW | packages/ai-chat/src/tests/on-stream-end.test.ts | 320 | // Step 1: Send initial chat request to establish the agent | COMMENT |
| LOW | packages/ai-chat/src/tests/on-stream-end.test.ts | 334 | // Step 2: Persist a tool call in input-available state | COMMENT |
| LOW | packages/ai-chat/src/tests/on-stream-end.test.ts | 354 | // Step 3: Send tool result with autoContinue=true | COMMENT |
| LOW | packages/ai-chat/src/tests/on-stream-end.test.ts | 368 | // Step 4: Verify onChatResponse results | COMMENT |
| LOW⚡ | packages/ai-chat/src/tests/regenerate-message.test.ts | 70 | // Step 1: Send the first message — server will respond with an assistant message | COMMENT |
| 14 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | experimental/tanstack-recovery/src/tanstack-agent.ts | 121 | // durably so a cold-wake recovery (post-SIGKILL) re-runs the SAME provider it | COMMENT |
| LOW | experimental/gateway-resume/src/index.ts | 61 | // | COMMENT |
| LOW | experimental/gateway-resume/src/index.ts | 301 | COMMENT | |
| LOW | experimental/chat-recovery-probe/src/server.ts | 61 | // | COMMENT |
| LOW | agent-think/worker-configuration.d.ts | 14461 | // The message includes metadata about the broker, the client, and the payload | COMMENT |
| LOW | agent-think/worker-configuration.d.ts | 14601 | [K in keyof T]: Unstubify<T[K]>; | COMMENT |
| LOW | agent-think/worker-configuration.d.ts | 14641 | [K in keyof T]: MethodOrProperty<T[K]>; | COMMENT |
| LOW | agent-think/worker-configuration.d.ts | 14661 | // interface GlobalProps { | COMMENT |
| LOW | agent-think/worker-configuration.d.ts | 15921 | | StreamDiagnostic | COMMENT |
| LOW | agent-think/test/env.d.ts | 1 | /// <reference types="@cloudflare/vitest-pool-workers/types" /> | COMMENT |
| LOW | agent-think/test/vitest.config.ts | 21 | stripNodeModulesSourceMapReferences(), | COMMENT |
| LOW | agent-think/test/server.ts | 1 | import { setupServer } from "msw/node"; | COMMENT |
| LOW | agent-think/src/sandbox.ts | 61 | constructor(ctx: DurableObjectState, env: SandboxEnv) { | COMMENT |
| LOW | agent-think/src/sandbox.ts | 81 | // CloudflareContainerBackend(container) [stage=connect]: | COMMENT |
| LOW | …amples/assistant/agents/assistant/shared-mcp-client.ts | 1 | import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js"; | COMMENT |
| LOW | examples/assistant/agents/assistant/agent.ts | 1 | import { callable } from "agents"; | COMMENT |
| LOW | examples/assistant/agents/assistant/agent.ts | 281 | } | COMMENT |
| LOW | examples/assistant/agents/assistant/agent.ts | 381 | async symlink(target: string, linkPath: string): Promise<void> { | COMMENT |
| LOW | examples/assistant/agents/assistant/shared-workspace.ts | 1 | import type { Workspace } from "@cloudflare/think"; | COMMENT |
| LOW | examples/assistant/src/use-chats.ts | 101 | // from the directory — which is the single source of truth for | COMMENT |
| LOW | examples/assistant/src/client.tsx | 481 | } | null>(null); | COMMENT |
| LOW | examples/assistant/src/tests/env.d.ts | 1 | /// <reference types="@cloudflare/vitest-pool-workers/types" /> | COMMENT |
| LOW | examples/agents-as-tools/playwright.config.ts | 41 | // Real-LLM timing — see the comment block above. The example | COMMENT |
| LOW | examples/agents-as-tools/playwright.config.ts | 61 | // suite. With 1 retry we can ride out transient capacity issues | COMMENT |
| LOW | examples/agents-as-tools/e2e/refresh-replay.e2e.ts | 61 | // `cf_agent_tool_runs` is the source of truth and never | COMMENT |
| LOW | examples/agents-as-tools/e2e/planner-drill-in.e2e.ts | 61 | // Sanity: a Planner panel rendered. The bug would have NOT | COMMENT |
| LOW | examples/agents-as-tools/e2e/compare-fanout.e2e.ts | 41 | // "Compare X and Y" is in-distribution for the `compare` tool — | COMMENT |
| LOW | examples/agents-as-tools/src/client.tsx | 801 | // | COMMENT |
| LOW | examples/agents-as-tools/src/client.tsx | 841 | // shipped on 2026-04-28 from a different root cause. | COMMENT |
| LOW | examples/deploy-churn/src/server.ts | 281 | // | COMMENT |
| LOW | examples/voice-agent/src/client.tsx | 441 | // The VoiceClient passes unknown JSON to onNonVoiceMessage, but that only | COMMENT |
| LOW | examples/voice-agent/src/client.tsx | 521 | // public API. Instead, we create a temporary PartySocket connection. | COMMENT |
| LOW | examples/voice-agent/src/client.tsx | 541 | // But actually, the better approach is to just send the kick via the | COMMENT |
| LOW | packages/think/src/think.ts | 1041 | * `Think`'s `classifyRecoveredTurn` detail (the {@link ChatFiberWakeHooks} | COMMENT |
| LOW | packages/think/src/think.ts | 1061 | // incident engine (agents/chat) and are applied by `resolveChatRecoveryConfig` | COMMENT |
| LOW | packages/think/src/think.ts | 1081 | // through to a spurious error, and a true orphan (a sibling that never arrives) | COMMENT |
| LOW | packages/think/src/think.ts | 3721 | private _insideInferenceLoop = false; | COMMENT |
| LOW | packages/think/src/think.ts | 5881 | : this._turnTelemetry(turnTelemetry), | COMMENT |
| LOW | packages/think/src/think.ts | 5901 | // instance which is not JSON-serializable, and a returned override | COMMENT |
| LOW | packages/think/src/think.ts | 5961 | onStepFinish: async (event) => { | COMMENT |
| LOW | packages/think/src/think.ts | 7361 | COMMENT | |
| LOW | packages/think/src/think.ts | 8581 | // Run is still live: realign the live sequence to continue right after | COMMENT |
| LOW | packages/think/src/think.ts | 11201 | // the client to send `STREAM_RESUME_ACK`, after which the | COMMENT |
| LOW | packages/think/src/think.ts | 12261 | // cleanly without a terminal error, and hand control back to the driver. | COMMENT |
| LOW | packages/think/src/think.ts | 12741 | // via `onRetry`. The inline retry runs in this same invocation and owns | COMMENT |
| LOW | packages/think/src/think.ts | 13621 | private async _applyToolUpdateToMessages(update: { | COMMENT |
| LOW | packages/think/src/think.ts | 13701 | COMMENT | |
| LOW | packages/think/src/think.ts | 13961 | // runs the boot-recovery path (`_handleInternalFiberRecovery`) BEFORE | COMMENT |
| LOW | packages/think/src/tools/workspace.ts | 1 | import type { Workspace, FileInfo } from "@cloudflare/shell"; | COMMENT |
| LOW | packages/think/src/tests/client-tools.test.ts | 1781 | // (autoContinue:false) result re-arms the EXISTING pending the fast sibling | COMMENT |
| LOW | packages/think/src/tests/think-session.test.ts | 3901 | expect(parked?.status).toBe("skipped"); | COMMENT |
| LOW | packages/think/src/e2e-tests/harden-net.ts | 1 | // Side-effect module for the `wrangler dev` chaos e2e tests. Import it (for its | COMMENT |
| LOW | packages/think/src/e2e-tests/workflow-recovery.test.ts | 301 | await pollUntil( | COMMENT |
| LOW | packages/think/src/e2e-tests/worker.ts | 921 | parentRecoveries: | COMMENT |
| LOW | packages/think/src/e2e-tests/worker.ts | 2081 | } | COMMENT |
| LOW | packages/think/src/react-tests/stream-resume.test.tsx | 1 | // Deterministic client-path coverage for Think's reconnect/resume handshake. | COMMENT |
| LOW | packages/shell/src/tests/workspace.test.ts | 561 | // ═══════════════════════════════════════════════════════════════════ | COMMENT |
| LOW | packages/shell/src/tests/git.test.ts | 541 | expect(removed!.status).toContain("deleted"); | COMMENT |
| LOW | packages/agents/skills-module.d.ts | 1 | // Ambient types for the Agents Vite plugin's `agents:skills` virtual modules. | COMMENT |
| LOW | packages/agents/src/react.tsx | 361 | // and used for cache keying so nested sessions with the same leaf | COMMENT |
| 67 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/workflows/src/server.ts | 438 | // Step 1: Validate | COMMENT |
| LOW | examples/workflows/src/server.ts | 460 | // Step 2: Process | COMMENT |
| LOW | examples/workflows/src/server.ts | 486 | // Step 3: Wait for human approval | COMMENT |
| LOW | examples/workflows/src/server.ts | 511 | // Step 4: Finalize | COMMENT |
| LOW⚡ | packages/agents/src/tests/test-workflow.ts | 36 | // Step 1: Report start (non-durable) | COMMENT |
| LOW⚡ | packages/agents/src/tests/test-workflow.ts | 44 | // Step 2: If waiting for approval, pause and wait for event | COMMENT |
| LOW | packages/agents/src/tests/test-workflow.ts | 66 | // Step 3: Process the task (non-durable progress report) | COMMENT |
| LOW | packages/agents/src/tests/test-workflow.ts | 85 | // Step 4: Call agent method via RPC (if agent is available) | COMMENT |
| LOW⚡ | packages/agents/src/tests/test-workflow.ts | 96 | // Step 5: Broadcast to clients (non-durable) | COMMENT |
| LOW⚡ | packages/agents/src/tests/test-workflow.ts | 103 | // Step 6: Report completion (durable via step) | COMMENT |
| LOW | packages/ai-chat/e2e/on-stream-end-llm.spec.ts | 186 | // Step 1: Open observer WebSocket and wait for it to be established | COMMENT |
| LOW⚡ | packages/ai-chat/e2e/on-stream-end-llm.spec.ts | 221 | // Step 2: Wait for WebSocket to be fully registered with the DO | COMMENT |
| LOW⚡ | packages/ai-chat/e2e/on-stream-end-llm.spec.ts | 224 | // Step 3: Trigger server-initiated stream via Playwright's request API | COMMENT |
| LOW⚡ | packages/ai-chat/e2e/on-stream-end-llm.spec.ts | 233 | // Step 4: Wait a bit for stream completion to propagate | COMMENT |
| LOW⚡ | packages/ai-chat/e2e/on-stream-end-llm.spec.ts | 236 | // Step 5: Collect observer results from the browser | COMMENT |
| LOW | packages/ai-chat/src/tests/merge-server-state.test.ts | 21 | // Step 1: Persist a message with tool output on the server | COMMENT |
| LOW | packages/ai-chat/src/tests/merge-server-state.test.ts | 38 | // Step 2: Client sends the same message but without the tool output | COMMENT |
| LOW | packages/ai-chat/src/tests/merge-server-state.test.ts | 62 | // Step 3: Verify the tool output is preserved | COMMENT |
| LOW | packages/ai-chat/src/tests/merge-server-state.test.ts | 85 | // Step 1: Server has a tool that was approved and executed (output-available) | COMMENT |
| LOW | packages/ai-chat/src/tests/merge-server-state.test.ts | 102 | // Step 2: Client sends the same tool but in approval-responded state | COMMENT |
| LOW | packages/ai-chat/src/tests/merge-server-state.test.ts | 126 | // Step 3: Verify the server's output-available state is preserved, | COMMENT |
| LOW | packages/ai-chat/src/tests/merge-server-state.test.ts | 152 | // Step 1: Server has a tool that was executed (output-available) | COMMENT |
| LOW | packages/ai-chat/src/tests/merge-server-state.test.ts | 169 | // Step 2: Client sends the same tool but in approval-requested state | COMMENT |
| LOW | packages/ai-chat/src/tests/merge-server-state.test.ts | 192 | // Step 3: Verify the server's output-available state is preserved, | COMMENT |
| LOW | packages/ai-chat/src/tests/continue-last-turn.test.ts | 523 | // Step 1: Simulate an initial interrupted stream | COMMENT |
| LOW | packages/ai-chat/src/tests/continue-last-turn.test.ts | 543 | // Step 2: Continue, producing more content | COMMENT |
| LOW | packages/ai-chat/src/tests/continue-last-turn.test.ts | 556 | // Step 3: Simulate that continuation was ALSO interrupted — | COMMENT |
| LOW | packages/ai-chat/src/tests/continue-last-turn.test.ts | 568 | // Step 4: Trigger fiber recovery — should persist the second partial | COMMENT |
| LOW | packages/ai-chat/src/tests/continue-last-turn.test.ts | 580 | // Step 5: Continue again | COMMENT |
| LOW⚡ | packages/ai-chat/src/tests/request-id.test.ts | 85 | // Step 1: Send initial request so context is established | COMMENT |
| LOW⚡ | packages/ai-chat/src/tests/request-id.test.ts | 88 | // Step 2: Persist a tool call in input-available state | COMMENT |
| LOW⚡ | packages/ai-chat/src/tests/request-id.test.ts | 106 | // Step 3: Clear captured state before continuation | COMMENT |
| LOW⚡ | packages/ai-chat/src/tests/request-id.test.ts | 109 | // Step 4: Send tool result with autoContinue | COMMENT |
| LOW⚡ | packages/ai-chat/src/tests/request-id.test.ts | 145 | // Step 1: Send initial request | COMMENT |
| LOW⚡ | packages/ai-chat/src/tests/request-id.test.ts | 148 | // Step 2: Persist a tool call in approval-required state | COMMENT |
| LOW⚡ | packages/ai-chat/src/tests/request-id.test.ts | 166 | // Step 3: Clear captured state | COMMENT |
| LOW⚡ | packages/ai-chat/src/tests/request-id.test.ts | 169 | // Step 4: Send approval with autoContinue | COMMENT |
| LOW | packages/ai-chat/src/tests/request-id.test.ts | 123 | // Step 5: Verify a requestId was passed (server-generated, so just check it exists) | COMMENT |
| LOW | packages/ai-chat/src/tests/request-id.test.ts | 182 | // Step 5: Verify requestId was passed | COMMENT |
| LOW | …kages/ai-chat/src/tests/client-tools-reconnect.test.ts | 12 | // Step 1: Set up a conversation with a pending tool call (simulates state before refresh) | COMMENT |
| LOW | …kages/ai-chat/src/tests/client-tools-reconnect.test.ts | 38 | // Step 2: Connect (simulates reconnect after refresh) | COMMENT |
| LOW | …kages/ai-chat/src/tests/client-tools-reconnect.test.ts | 49 | // Step 3: Send tool result WITH clientTools (simulates client approval after reconnect) | COMMENT |
| LOW | …kages/ai-chat/src/tests/client-tools-reconnect.test.ts | 83 | // Step 4: Verify continuation received client tools | COMMENT |
| LOW | packages/ai-chat/src/tests/on-stream-end.test.ts | 320 | // Step 1: Send initial chat request to establish the agent | COMMENT |
| LOW | packages/ai-chat/src/tests/on-stream-end.test.ts | 334 | // Step 2: Persist a tool call in input-available state | COMMENT |
| LOW | packages/ai-chat/src/tests/on-stream-end.test.ts | 354 | // Step 3: Send tool result with autoContinue=true | COMMENT |
| LOW | packages/ai-chat/src/tests/on-stream-end.test.ts | 368 | // Step 4: Verify onChatResponse results | COMMENT |
| LOW⚡ | packages/ai-chat/src/tests/regenerate-message.test.ts | 70 | // Step 1: Send the first message — server will respond with an assistant message | COMMENT |
| LOW⚡ | packages/ai-chat/src/tests/regenerate-message.test.ts | 80 | // Step 2: Simulate regenerate() — client removes the assistant message | COMMENT |
| LOW⚡ | packages/ai-chat/src/tests/regenerate-message.test.ts | 85 | // Step 3: Verify the old assistant message was deleted and replaced | COMMENT |
| LOW | …ges/ai-chat/src/tests/custom-body-continuation.test.ts | 16 | // Step 1: Send initial chat request WITH custom body fields to store them | COMMENT |
| LOW | …ges/ai-chat/src/tests/custom-body-continuation.test.ts | 67 | // Step 2: Persist a tool call in input-available state | COMMENT |
| LOW⚡ | …ges/ai-chat/src/tests/custom-body-continuation.test.ts | 85 | // Step 3: Clear captured state before continuation | COMMENT |
| LOW⚡ | …ges/ai-chat/src/tests/custom-body-continuation.test.ts | 88 | // Step 4: Send tool result with autoContinue to trigger continuation | COMMENT |
| LOW | …ges/ai-chat/src/tests/custom-body-continuation.test.ts | 104 | // Step 5: Verify continuation received the same body | COMMENT |
| LOW | …es/ai-chat/src/tests/client-tools-continuation.test.ts | 43 | // Step 1: Send initial chat request WITH client tools to store them | COMMENT |
| LOW | …es/ai-chat/src/tests/client-tools-continuation.test.ts | 105 | // Step 2: Persist a tool call in input-available state | COMMENT |
| LOW⚡ | …es/ai-chat/src/tests/client-tools-continuation.test.ts | 123 | // Step 3: Clear captured state before continuation | COMMENT |
| LOW⚡ | …es/ai-chat/src/tests/client-tools-continuation.test.ts | 126 | // Step 4: Send tool result with autoContinue to trigger continuation | COMMENT |
| LOW | …es/ai-chat/src/tests/client-tools-continuation.test.ts | 140 | // Step 5: Verify continuation received client tools | COMMENT |
| 2 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | design/rfc-helper-sub-agent-orchestration.md | 1 | # RFC: Agent tool orchestration | COMMENT |
| MEDIUM | design/rfc-chat-recovery-foundation.md | 1043 | | Auto-continuation barrier | Barrier inside the continuation turn; fixed 60s timeout t | CODE |
| MEDIUM | design/rfc-chat-recovery-foundation.md | 1155 | #### Adopt Think's event-driven auto-continuation barrier | COMMENT |
| MEDIUM | design/rfc-chat-recovery-foundation-progress.md | 1647 | ### Phase 1: introduce internal engine scaffolding | COMMENT |
| MEDIUM | design/think-vs-aichat.md | 270 | ### Multi-agent orchestration | COMMENT |
| MEDIUM | experimental/inference-buffer/README.md | 213 | The SDK handles: model wrapping (custom fetch for all providers — including Workers AI via the `fetch` option added in [ | CODE |
| MEDIUM | docs/think/index.md | 613 | [Compaction](https://github.com/cloudflare/agents/blob/main/docs/agents/sessions.md#compaction) is checked **between tur | CODE |
| MEDIUM | docs/think/sub-agents.md | 312 | See [`cloudflare/agents#1406`](https://github.com/cloudflare/agents/issues/1406) for the original motivation, and [Agent | CODE |
| MEDIUM | docs/agents/index.md | 18 | | A durable, general-purpose reasoning agent | [`Think`](https://github.com/cloudflare/agents/blob/m | CODE |
| MEDIUM | docs/agents/chat-agents.md | 1484 | Use [`wrapLanguageModel`](https://ai-sdk.dev/docs/ai-sdk-core/middleware) to add guardrails, RAG, caching, or logging wi | CODE |
| MEDIUM | examples/assistant/agents/assistant/agent.ts | 32 | // (see `getScheduledTasks`) and leaves room for top-level agentic work | COMMENT |
| MEDIUM | examples/playground/testing.md | 294 | ### Supervisor Pattern (`/multi-agent/supervisor`) | COMMENT |
| MEDIUM | examples/playground/testing.md | 351 | ### Chat Rooms (`/multi-agent/rooms`) | COMMENT |
| MEDIUM | examples/playground/testing.md | 410 | ### Workers Pattern (`/multi-agent/workers`) | COMMENT |
| MEDIUM | examples/playground/testing.md | 425 | ### Pipeline Pattern (`/multi-agent/pipeline`) | COMMENT |
| MEDIUM | examples/chat-sdk-messenger/README.md | 150 | index.ts # Ingress orchestration and Chat SDK event wiring | CODE |
| MEDIUM | examples/deploy-churn/src/server.ts | 590 | // agentic loop actually settles tool results that recovery must preserve. | COMMENT |
| MEDIUM | examples/multi-ai-chat/src/server.ts | 330 | // Allow multi-step agentic loops — the model can call a tool, | COMMENT |
| MEDIUM | packages/think/CHANGELOG.md | 376 | - [#1817](https://github.com/cloudflare/agents/pull/1817) [`7f367d8`](https://github.com/cloudflare/agents/commit/7f367d | CODE |
| MEDIUM | packages/think/CHANGELOG.md | 376 | - [#1817](https://github.com/cloudflare/agents/pull/1817) [`7f367d8`](https://github.com/cloudflare/agents/commit/7f367d | CODE |
| MEDIUM | packages/think/CHANGELOG.md | 871 | - [#1667](https://github.com/cloudflare/agents/pull/1667) [`919bfaa`](https://github.com/cloudflare/agents/commit/919bfa | CODE |
| MEDIUM | packages/think/CHANGELOG.md | 1186 | - [#1641](https://github.com/cloudflare/agents/pull/1641) [`3aa1936`](https://github.com/cloudflare/agents/commit/3aa193 | CODE |
| MEDIUM | packages/think/CHANGELOG.md | 1321 | - [#1561](https://github.com/cloudflare/agents/pull/1561) [`831ba1d`](https://github.com/cloudflare/agents/commit/831ba1 | CODE |
| MEDIUM | packages/think/CHANGELOG.md | 1321 | - [#1561](https://github.com/cloudflare/agents/pull/1561) [`831ba1d`](https://github.com/cloudflare/agents/commit/831ba1 | CODE |
| MEDIUM | packages/think/CHANGELOG.md | 1360 | - [#1517](https://github.com/cloudflare/agents/pull/1517) [`449b421`](https://github.com/cloudflare/agents/commit/449b42 | CODE |
| MEDIUM | packages/think/CHANGELOG.md | 1404 | - [#1421](https://github.com/cloudflare/agents/pull/1421) [`1b65ff5`](https://github.com/cloudflare/agents/commit/1b65ff | CODE |
| MEDIUM | packages/think/CHANGELOG.md | 1480 | - [#1372](https://github.com/cloudflare/agents/pull/1372) [`040da0f`](https://github.com/cloudflare/agents/commit/040da0 | CODE |
| MEDIUM | packages/think/src/tests/hooks.test.ts | 199 | // agentic loop, and `ctx.steps` / `ctx.stepNumber` must reflect the | COMMENT |
| MEDIUM | …ges/think/src/e2e-tests/step-prompt-structured.test.ts | 273 | // Multi-step agentic path: the model must call real (workspace) tools before | COMMENT |
| MEDIUM | packages/agents/CHANGELOG.md | 1404 | - [#1641](https://github.com/cloudflare/agents/pull/1641) [`3aa1936`](https://github.com/cloudflare/agents/commit/3aa193 | CODE |
| MEDIUM | packages/agents/CHANGELOG.md | 1581 | - [#1421](https://github.com/cloudflare/agents/pull/1421) [`1b65ff5`](https://github.com/cloudflare/agents/commit/1b65ff | CODE |
| MEDIUM | packages/ai-chat/CHANGELOG.md | 269 | - [#1788](https://github.com/cloudflare/agents/pull/1788) [`3b2af54`](https://github.com/cloudflare/agents/commit/3b2af5 | CODE |
| MEDIUM | packages/ai-chat/CHANGELOG.md | 773 | - [#1641](https://github.com/cloudflare/agents/pull/1641) [`3aa1936`](https://github.com/cloudflare/agents/commit/3aa193 | CODE |
| MEDIUM | packages/ai-chat/CHANGELOG.md | 896 | - [#1421](https://github.com/cloudflare/agents/pull/1421) [`1b65ff5`](https://github.com/cloudflare/agents/commit/1b65ff | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/agents/email.md | 349 | await email.forward("admin@example.com"); | CODE |
| LOW | docs/agents/scheduling.md | 153 | await this.schedule(300, "sendFollowUp", { email: "user@example.com" }); | CODE |
| LOW | docs/agents/retries.md | 176 | { to: "user@example.com" }, | CODE |
| LOW | docs/agents/queue.md | 55 | email: "user@example.com", | CODE |
| LOW | packages/think/src/tests/action-types.test-d.ts | 144 | to: ["user@example.com"] | CODE |
| LOW | packages/shell/src/tests/git.test.ts | 266 | author: { name: "Test", email: "test@test.com" } | CODE |
| LOW | packages/agents/src/tests/email-routing.test.ts | 552 | from: "user@example.com" | CODE |
| LOW | packages/agents/src/tests/email-routing.test.ts | 639 | to: "user@example.com", | CODE |
| LOW | packages/agents/src/tests/email-routing.test.ts | 655 | to: "user@example.com", | CODE |
| LOW | packages/agents/src/tests/email-routing.test.ts | 666 | expect(call!.to).toBe("user@example.com"); | CODE |
| LOW | packages/agents/src/tests/email-routing.test.ts | 684 | to: "user@example.com", | CODE |
| LOW | packages/agents/src/tests/email-routing.test.ts | 705 | to: "user@example.com", | CODE |
| LOW | packages/agents/src/tests/email-routing.test.ts | 729 | to: "user@example.com", | CODE |
| LOW | packages/agents/src/tests/email-routing.test.ts | 752 | to: "user@example.com", | CODE |
| LOW | packages/agents/src/tests/email-routing.test.ts | 761 | to: "user@example.com", | CODE |
| LOW | packages/agents/src/tests/email-routing.test.ts | 774 | to: "user@example.com", | CODE |
| LOW | packages/agents/src/tests/email-routing.test.ts | 783 | to: "user@example.com", | CODE |
| LOW | packages/agents/src/tests/email-headers.test.ts | 80 | From: "user@example.com", | CODE |
| LOW | packages/agents/conformance/everything-server.ts | 372 | default: "John Doe" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | pnpm-workspace.yaml | 31 | # Transitive dep of @cloudflare/tanstack-ai (tanstack-recovery harness). The | COMMENT |
| MEDIUM | experimental/gateway-resume-think/src/server.ts | 120 | // mismatch (RFC §9.4) it can drop the prefix. from=0 is the robust, | COMMENT |
| MEDIUM | experimental/gateway-resume/src/index.ts | 13 | * (RFC #1257). This harness verifies the contract empirically, across models, | COMMENT |
| MEDIUM | packages/agents/src/tests/retries.test.ts | 396 | // wrappers may not — the cause chain is the robust signal. | COMMENT |
| MEDIUM | …/conformance/baseline-server-handler-legacy-compat.yml | 2 | # All 32 scenarios execute; this is not the alpha harness's smaller `active` | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | packages/agents/src/tests/skill-runner.test.ts | 640 | print(template.replace("{{text}}", data["text"].upper()))`, | CODE |
| HIGH | packages/agents/src/tests/skill-runner.test.ts | 678 | print("done")` | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | design/rfc-workers-ai-gateway-merge.md | 465 | model: string; // slug as requested, e.g. "openrouter/anthropic/claude-…" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | guides/anthropic-patterns/src/app.tsx | 168 | // TODO: Add validation | COMMENT |
| LOW | guides/anthropic-patterns/src/app.tsx | 252 | "e.g.,\nfunction processUserData(data) {\n // TODO: Add validation\n database.save(data);\n return true | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | site/agents/src/components/header-visual.tsx | 167 | text: "If you’re using a CLI-based PR system, let me know which tool you use (e.g., GitLab CLI, Gite | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/agents/src/skills/runner.ts | 779 | except Exception as err: | CODE |