The sandbox agent framework.
This report summarizes scanner evidence for withastro/flue, a TypeScript project with 8,443 GitHub stars. SynthScan examined 162,195 lines of code across 936 source files, recording 442 pattern matches distributed across 9 syntactic categories. The legacy adjusted pattern signal is 5.1 (Moderate pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 263 finding(s).
Are imports declared and package/API names verified? 2 finding(s).
Are wrappers, guards, and repeated structures necessary? 383 finding(s).
Which changes need focused human review? 442 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 442 distinct pattern matches across 9 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. 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 configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .flue/agents/pr-redirect.ts | 62 | // ─── Agent ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | .flue/agents/pr-redirect.ts | 91 | // ─── LLM phase ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | .flue/agents/pr-redirect.ts | 126 | // ─── Build the Decision ───────────────────────────────────────── | COMMENT |
| MEDIUM | .flue/agents/pr-redirect.ts | 151 | // ─── Deterministic phase ──────────────────────────────────────── | COMMENT |
| MEDIUM | .flue/agents/pr-redirect.ts | 202 | // ─── Types ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | .flue/agents/pr-redirect.ts | 241 | // ─── Step 0: fetch PR via `gh` ────────────────────────────────────────────── | COMMENT |
| MEDIUM | .flue/agents/pr-redirect.ts | 285 | // ─── Step 1: classify ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | .flue/agents/pr-redirect.ts | 309 | // ─── Step 2 & 3: duplicate search ─────────────────────────────────────────── | COMMENT |
| MEDIUM | .flue/agents/pr-redirect.ts | 487 | // ─── Body composition ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | .flue/lib/github.ts | 77 | // ─── REST writes ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | .flue/lib/github.ts | 108 | // ─── GraphQL: discussions ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | examples/cloudflare/src/app.ts | 22 | // ─── Cloudflare AI Gateway (optional) ─────────────────────────────────────── | COMMENT |
| MEDIUM | examples/hello-world/src/sandboxes/daytona.ts | 35 | // ─── DaytonaSandboxDriver ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | examples/hello-world/src/sandboxes/daytona.ts | 127 | // ─── Sandbox Adapter ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | examples/sentry/src/sentry.ts | 73 | // ─── Traces: Flue's OpenTelemetry instrumentation ─────────────────────────── | COMMENT |
| MEDIUM | examples/sentry/src/sentry.ts | 84 | // ─── Issues and logs: the Flue → Sentry event bridge ──────────────────────── | COMMENT |
| MEDIUM | examples/sentry/src/sentry.ts | 174 | // ─── Helpers ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/redis/src/redis-adapter.ts | 619 | // ── Turn-boundary joins ────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/errors.ts | 104 | // ─── Helpers ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/errors.ts | 119 | // ─── Base classes ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/errors.ts | 223 | // ─── HTTP-layer error vocabulary ──────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/errors.ts | 474 | // ─── Persistence error vocabulary ─────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/errors.ts | 567 | // ─── Sandbox error vocabulary ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/errors.ts | 633 | // ─── Session error vocabulary ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/errors.ts | 1126 | // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ | COMMENT |
| MEDIUM | packages/runtime/src/errors.ts | 1128 | // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ | COMMENT |
| MEDIUM | packages/runtime/src/compaction.ts | 26 | // ─── Settings ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/compaction.ts | 76 | // ─── Token Estimation ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/compaction.ts | 183 | // ─── File Operation Tracking ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/compaction.ts | 238 | // ─── Message Serialization ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/compaction.ts | 302 | // ─── Summarization Prompts ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/compaction.ts | 394 | // ─── Cut Point Detection ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/compaction.ts | 461 | // ─── Compaction Preparation ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/compaction.ts | 559 | // ─── Summary Generation ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/compaction.ts | 657 | // ─── Main Compaction Function ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/agent.ts | 623 | // ─── Helpers ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/context.ts | 17 | // ─── Context Discovery ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/adapter-helpers.ts | 41 | // ─── Payload validation ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/adapter-helpers.ts | 98 | // ─── Submission admission ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/adapter-helpers.ts | 227 | // ─── Timestamp parsing ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/adapter-helpers.ts | 241 | // ─── Limit clamping ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/result.ts | 125 | // ─── Result tools ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/result.ts | 308 | // ─── Helpers ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/result.ts | 353 | // ─── Errors ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/agent-execution-store.ts | 16 | // ─── Durability defaults ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/agent-execution-store.ts | 25 | // ─── Submission ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/agent-execution-store.ts | 128 | // ─── Dispatch admission ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/agent-execution-store.ts | 134 | // ─── Submission store ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/agent-execution-store.ts | 385 | // ─── Persistence adapter ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/types.ts | 188 | // ─── Skill ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/types.ts | 259 | // ─── File Stat ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/types.ts | 276 | // ─── Sandbox ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/types.ts | 399 | // ─── Compaction ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/types.ts | 430 | // ─── Durability ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/types.ts | 449 | // ─── Agent Config (internal, passed to the harness at runtime) ────────────── | COMMENT |
| MEDIUM | packages/runtime/src/types.ts | 481 | // ─── Agent Runtime Configuration ──────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/types.ts | 550 | // ─── Agent functions (Flue Hooks) ──────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/types.ts | 684 | // ─── Flue Event Context ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/types.ts | 726 | // ─── Flue Harness ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/runtime/src/types.ts | 779 | // ─── Flue Session ─────────────────────────────────────────────────────────── | COMMENT |
| 117 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | blueprints/channel--salesforce-marketing-cloud.md | 56 | export function createSalesforceMarketingCloudClient({ | CODE |
| LOW | blueprints/channel--salesforce-marketing-cloud.md | 106 | export function salesforceMarketingCloudRestOrigin(value: string): string { | CODE |
| LOW | blueprints/channel--discord.md | 112 | function destinationFromInteraction(interaction: APIInteraction): DiscordDestinationRef | undefined { | CODE |
| LOW | .flue/agents/pr-redirect.ts | 495 | function originalImplementationLine(pr: PrDetails): string { | CODE |
| LOW | …-cloud-channel/src/salesforce-marketing-cloud-email.ts | 57 | export function parseEmailEventInstanceId(id: string): SalesforceMarketingCloudEmailRef { | CODE |
| LOW | …cloud-channel/src/salesforce-marketing-cloud-client.ts | 20 | export function createSalesforceMarketingCloudClient({ | CODE |
| LOW | …cloud-channel/src/salesforce-marketing-cloud-client.ts | 67 | export function salesforceMarketingCloudRestOrigin(restBaseUrl: string): string { | CODE |
| LOW | examples/discord-channel/src/channels/discord.ts | 75 | function destinationFromInteraction( | CODE |
| LOW | packages/opentelemetry/src/index.ts | 93 | export function createOpenTelemetryInstrumentation( | CODE |
| LOW | packages/google-chat/src/index.ts | 285 | function validateInteractionAuthentication( | CODE |
| LOW | packages/google-chat/src/index.ts | 310 | function validatePubSubAuthentication(authentication: GoogleChatPubSubAuthentication): void { | CODE |
| LOW | packages/google-chat/src/auth.ts | 92 | export function createInteractionTokenVerifier( | CODE |
| LOW | packages/google-chat/src/auth.ts | 127 | export function createPubSubTokenVerifier( | CODE |
| LOW | packages/runtime/src/model-request-info.ts | 8 | export function modelContextCompactionFields( | CODE |
| LOW | packages/runtime/src/conversation-public.ts | 206 | export function projectAgentConversationSnapshot( | CODE |
| LOW | packages/runtime/src/conversation-public.ts | 242 | export function projectLiveMessageTargets(state: ReducedInstanceState): ReadonlySet<string> { | CODE |
| LOW | packages/runtime/src/conversation-public.ts | 269 | export function projectAgentConversationBatch(options: { | CODE |
| LOW | packages/runtime/src/conversation-public.ts | 311 | function buildResponseMessageIndex(conversation: ReducedConversationState): Map<string, string> { | CODE |
| LOW | packages/runtime/src/conversation-public.ts | 592 | function assistantSubmissionByAttempt(state: ReducedInstanceState): Map<string, string> { | CODE |
| LOW | packages/runtime/src/persisted-images.ts | 55 | export function extractSubmissionAttachments( | CODE |
| LOW | packages/runtime/src/persisted-images.ts | 72 | export function hydrateSubmissionAttachments( | CODE |
| LOW | packages/runtime/src/document-attachments.ts | 91 | export function mergeOperationAttachments( | CODE |
| LOW | packages/runtime/src/document-attachments.ts | 122 | export function documentOmittedPlaceholder(api: string, filename?: string): string { | CODE |
| LOW | packages/runtime/src/document-attachments.ts | 193 | function replaceDocumentsWithPlaceholder(context: Context, api: string): Context { | CODE |
| LOW | packages/runtime/src/document-attachments.ts | 283 | function rewriteOpenAIResponsesPayload( | CODE |
| LOW | packages/runtime/src/conversation-projections.ts | 208 | export function classifyConversationSubmission( | CODE |
| LOW | packages/runtime/src/conversation-projections.ts | 230 | export function supersededAssistantErrorEntryIds( | CODE |
| LOW | packages/runtime/src/conversation-projections.ts | 355 | function mergeAssistantContinuation( | CODE |
| LOW | packages/runtime/src/conversation-projections.ts | 391 | export function getActiveConversationPathSince( | CODE |
| LOW | packages/runtime/src/conversation-projections.ts | 401 | export function aggregateConversationUsageSince( | CODE |
| LOW | packages/runtime/src/conversation-projections.ts | 419 | export function getLatestConversationCompaction( | CODE |
| LOW | packages/runtime/src/tool.ts | 330 | export async function validateAndRunTool<TTool extends ToolDefinition>( | CODE |
| LOW | packages/runtime/src/execution-interceptor.ts | 61 | export function registerExecutionInterceptor(interceptor: FlueExecutionInterceptor): () => void { | CODE |
| LOW | packages/runtime/src/resources.ts | 201 | export function renderMcpUnavailableSignalBody( | CODE |
| LOW | packages/runtime/src/resources.ts | 215 | export function renderEnvironmentSignalBody(snapshot: EnvironmentSignalSnapshot): string { | CODE |
| LOW | packages/runtime/src/provider-diagnostics.ts | 66 | export function attachProviderResponseDiagnostics( | CODE |
| LOW | packages/runtime/src/provider-diagnostics.ts | 90 | export function readProviderResponseDiagnostics( | CODE |
| LOW | packages/runtime/src/tool-adapter.ts | 14 | export function registerPreparedToolAdapter( | CODE |
| LOW | packages/runtime/src/compaction.ts | 96 | function getLastAssistantUsageInfo( | CODE |
| LOW | packages/runtime/src/compaction.ts | 195 | function extractFileOpsFromMessage(message: AgentMessage, fileOps: FileOps): void { | CODE |
| LOW | packages/runtime/src/compaction.ts | 635 | async function generateTurnPrefixSummary( | CODE |
| LOW | packages/runtime/src/compaction.ts | 743 | export function isAssistantContextOverflow( | CODE |
| LOW | packages/runtime/src/agent.ts | 77 | export function createPackagedSkillReadTool( | CODE |
| LOW | packages/runtime/src/agent.ts | 695 | export function formatPackagedSkillFilePath(skillId: string, filePath: string): string { | CODE |
| LOW | packages/runtime/src/format-version.ts | 32 | export function assertSupportedFlueFormatVersion(storedVersion: string): void { | CODE |
| LOW | packages/runtime/src/mcp.ts | 125 | export async function createMcpConnectionWithClient( | CODE |
| LOW | packages/runtime/src/sql-persisted-chunk-store.ts | 4 | export function ensureSqlSubmissionChunkTable(sql: SqlStorage): void { | CODE |
| LOW | packages/runtime/src/sql-persisted-chunk-store.ts | 17 | export function createSqlSubmissionChunkStore(sql: SqlStorage): SubmissionChunkStore { | CODE |
| LOW | packages/runtime/src/event-redaction.ts | 77 | export function redactObservationDetailImages( | CODE |
| LOW | packages/runtime/src/submission-state.ts | 314 | function hasAdjacentStreamContinuation( | CODE |
| LOW | packages/runtime/src/submission-state.ts | 342 | function isTerminalTrailingToolBatch( | CODE |
| LOW | packages/runtime/src/submission-state.ts | 395 | export function findTrailingPartialToolBatch( | CODE |
| LOW | packages/runtime/src/submission-state.ts | 466 | function isCompletedAssistantResponse(message: AssistantMessage): boolean { | CODE |
| LOW | packages/runtime/src/submission-state.ts | 470 | export function countConsecutiveRetryableModelErrors( | CODE |
| LOW | packages/runtime/src/result.ts | 27 | export function buildResultFollowUpPrompt(): string { | CODE |
| LOW | packages/runtime/src/result.ts | 74 | export function buildWorkspaceSkillPrompt( | CODE |
| LOW | packages/runtime/src/result.ts | 97 | export function buildSkillByPathlessNamePrompt( | CODE |
| LOW | packages/runtime/src/skill-package.ts | 52 | export function getSkillReferenceDirectory( | CODE |
| LOW | packages/runtime/src/conversation-records.ts | 467 | export function generateConversationRecordId(): string { | CODE |
| LOW | packages/runtime/src/conversation-records.ts | 471 | export function generateConversationEntryId(): string { | CODE |
| 146 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | blueprints/sandbox--cloudflare-computer.md | 141 | COMMENT | |
| LOW | blueprints/tooling--sentry.md | 141 | // error, with the throw-site stack on the live `errorInfo`) and then a | COMMENT |
| LOW | blueprints/channel--google-chat.md | 121 | // Optional Path: /channels/google-chat/events | COMMENT |
| LOW | blueprints/channel--slack.md | 81 | COMMENT | |
| LOW | examples/cloudflare/seed-r2.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | examples/cloudflare/src/app.ts | 21 | COMMENT | |
| LOW | examples/cloudflare/src/app.ts | 41 | // }, | COMMENT |
| LOW | …amples/cloudflare/src/sandboxes/cloudflare-computer.ts | 101 | // DurableObjectStorageLike declares; the runtime shape matches. | COMMENT |
| LOW | examples/slack-channel/src/channels/slack.ts | 41 | } | COMMENT |
| LOW | examples/sentry/src/sentry.ts | 81 | instrument(createOpenTelemetryInstrumentation({ content: contentPolicy() })); | COMMENT |
| LOW | examples/chat-sdk/src/app.ts | 41 | // The use-agent directive (via the build-time scan) is what registers an | COMMENT |
| LOW | …amples/google-chat-channel/src/channels/google-chat.ts | 61 | // Optional Path: /channels/google-chat/events | COMMENT |
| LOW | packages/runtime/src/agent.ts | 301 | // fidelity. Bash factories translate it into a signal | COMMENT |
| LOW | packages/runtime/src/agent.ts | 481 | literal: Type.Optional(Type.Boolean({ description: 'Match the pattern as literal text' })), | COMMENT |
| LOW | packages/runtime/src/sandbox.ts | 241 | const resolve = (p: string) => (p.startsWith('/') ? p : fs.resolvePath(cwd, p)); | COMMENT |
| LOW | packages/runtime/src/conversation-records.ts | 121 | // Dynamic-resource narration: the declared tool/skill/subagent set moved. | COMMENT |
| LOW | packages/runtime/src/session.ts | 941 | ): Promise<AgentLoopTurnUpdate | undefined> { | COMMENT |
| LOW | packages/runtime/src/session.ts | 1161 | { advance: false }, | COMMENT |
| LOW | packages/runtime/src/session.ts | 4261 | // Skill activation resolves against the LIVE skill set (dynamic skills | COMMENT |
| LOW | packages/runtime/src/session.ts | 5541 | // carries content worth continuing from, append the recovery signal | COMMENT |
| LOW | packages/runtime/src/session.ts | 5681 | // the parent's `config.model` (durable submissions carry no | COMMENT |
| LOW | packages/runtime/src/session.ts | 5761 | // Structural convergence, before anything else appends: any | COMMENT |
| LOW | packages/runtime/src/session.ts | 5781 | // NOT marker-settle: their trailing batch is live work the | COMMENT |
| LOW | packages/runtime/src/index.ts | 201 | // | COMMENT |
| LOW | packages/runtime/src/cloudflare/agent-coordinator.ts | 281 | * its own clock. In-memory is exactly coextensive with the enforcement | COMMENT |
| LOW | packages/runtime/src/cloudflare/agent-coordinator.ts | 301 | // The pass is bounded and storage-only — it never awaits agent execution. | COMMENT |
| LOW | packages/runtime/src/cloudflare/agent-coordinator.ts | 361 | if (!(await this.submissions.hasUnsettledSubmissions())) return; | COMMENT |
| LOW | …ages/runtime/src/runtime/handle-conversation-routes.ts | 201 | // no longer exists (e.g. the store was reset and regrown shorter). Fail | COMMENT |
| LOW | packages/runtime/src/runtime/agent-submissions.ts | 621 | return undefined; | COMMENT |
| LOW | packages/runtime/src/runtime/agent-submissions.ts | 641 | // input entry is on the active path (the stream is the single truth) — | COMMENT |
| LOW | packages/runtime/src/runtime/agent-submissions.ts | 661 | // same durable row facts, so their advisories are byte-identical and | COMMENT |
| LOW | packages/cli/src/lib/run-bootstrap.ts | 241 | // The default run.db is NEVER wiped — `--id` continuation across | COMMENT |
| LOW | packages/vite/src/flue-plugin.ts | 341 | COMMENT | |
| LOW | packages/sdk/src/public/observe.ts | 141 | // interval), cleared whenever the active stream is torn down. | COMMENT |
| LOW | packages/sdk/src/public/settle.ts | 101 | let baseOffset = admission.offset; | COMMENT |
| LOW | packages/react/src/agent-reducer.ts | 241 | lastSettledLocalSubmission?.outcome === 'failed' ? lastSettledLocalSubmission : undefined; | COMMENT |
| LOW | .github/workflows/pr-redirect.yml | 1 | name: PR Redirect | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | apps/docs/src/content/docs/guide/workflows.md | 20 | | [Durable Workflows](#durable-workflows) | You need to initialize and control a hosted agent from a hosted runtime, a | CODE |
| MEDIUM | apps/docs/src/content/docs/guide/project-layout.md | 27 | ## Example multi-agent codebase | COMMENT |
| MEDIUM | …ps/docs/src/content/docs/ecosystem/deploy/gitlab-ci.md | 249 | ## Typed results and orchestration | COMMENT |
| MEDIUM | …cs/src/content/docs/ecosystem/deploy/github-actions.md | 239 | ## Typed results and orchestration | COMMENT |
| MEDIUM⚡ | apps/docs/src/content/docs/cli/init.md | 52 | flue init # prompt for everything, scaffold into the current directory | CODE |
| MEDIUM⚡ | apps/docs/src/content/docs/cli/init.md | 53 | flue init ./my-agent-app # prompt, scaffold into ./my-agent-app (created if missing) | CODE |
| MEDIUM⚡ | apps/docs/src/content/docs/cli/init.md | 57 | flue init --target node --force # scaffold into a non-empty directory, overwrite flue.config.* | CODE |
| MEDIUM | apps/docs/src/content/docs/cli/run.md | 66 | # Pick one agent from a multi-agent module | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | apps/docs/src/content/docs/ecosystem/deploy/node.md | 89 | OPENAI_API_KEY="your-api-key" | CODE |
| HIGH | …s/docs/src/content/docs/ecosystem/deploy/cloudflare.md | 118 | ANTHROPIC_API_KEY="your-api-key" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …kages/runtime/src/message-timestamp-projection.test.ts | 52 | // Step 1: a tool call, then its committed result. | COMMENT |
| LOW⚡ | apps/www/src/pages/start.md.ts | 24 | ## Step 1: Gather Context | COMMENT |
| LOW⚡ | apps/www/src/pages/start.md.ts | 31 | ## Step 2: Discover Requirements | COMMENT |
| LOW | apps/www/src/pages/start.md.ts | 72 | ## Step 3: Scaffold with \`flue init\`, Then Customize | COMMENT |
| LOW | apps/www/src/pages/start.md.ts | 95 | ## Step 4: Verify Implementation | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …kages/runtime/src/message-timestamp-projection.test.ts | 52 | // Step 1: a tool call, then its committed result. | COMMENT |
| LOW⚡ | apps/www/src/pages/start.md.ts | 24 | ## Step 1: Gather Context | COMMENT |
| LOW⚡ | apps/www/src/pages/start.md.ts | 31 | ## Step 2: Discover Requirements | COMMENT |
| LOW | apps/www/src/pages/start.md.ts | 72 | ## Step 3: Scaffold with \`flue init\`, Then Customize | COMMENT |
| LOW | apps/www/src/pages/start.md.ts | 95 | ## Step 4: Verify Implementation | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | packages/runtime/src/runtime/agent-submissions.ts | 943 | // Abort: keyed on the coordinator signal's reason (robust even when the | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/cloudflare/seed-r2.sh | 8 | # Usage: | COMMENT |