AI suite powered by state-of-the-art models and providing advanced AI/AGI functions. Includes AI personas, AGI functions, world-class Beam multi-model chats, text-to-image, voice, response streaming, code highlighting and execution, PDF import, presets for developers, much more. Deploy on-prem or in the cloud.
This report summarizes scanner evidence for enricoros/big-AGI, a TypeScript project with 7,162 GitHub stars. SynthScan examined 227,310 lines of code across 1258 source files, recording 649 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 3.5 (Low 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.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 632 finding(s).
Are imports declared and package/API names verified? 12 finding(s).
Are wrappers, guards, and repeated structures necessary? 314 finding(s).
Which changes need focused human review? 649 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 649 distinct pattern matches across 14 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 |
|---|---|---|---|---|
| LOW | tools/develop/llm-parameter-sweep/sweep.ts | 583 | function modelOverridesFromInterfaces(interfaces: string[]): Partial<AixAPI_Model> { | CODE |
| LOW | tools/develop/llm-parameter-sweep/sweep.ts | 1259 | function loadExistingDialectResults(filePath: string): DialectReultsByModel | null { | CODE |
| LOW | tools/develop/llm-parameter-sweep/sweep.ts | 1339 | function vendorResultToDialectResults(vendorResult: VendorSweepResult): DialectReultsByModel { | CODE |
| LOW | tools/develop/aix-gemini-antigravity-probe/probe.ts | 34 | function createRecordingTransmitter(): { pt: IParticleTransmitter; log: LogEntry[] } { | CODE |
| LOW | kb/modules/LLM-vendor-integration.md | 32 | export function vendorModelsToModelDescriptions(wireModels: unknown): ModelDescriptionSchema[] { | CODE |
| LOW | kb/modules/AIX-callers-analysis.md | 100 | function messageWasInterruptedAtStart(message: Pick<DMessage, 'generator' | 'fragments'>): boolean { | CODE |
| LOW | src/server/wire.ts | 25 | export async function nonTrpcServerFetchOrThrow(url: string, method: 'GET' | 'POST', headers: HeadersInit, body: object | CODE |
| LOW | src/server/wire.ts | 143 | export function serverCapitalizeFirstLetter(string: string) { | CODE |
| LOW | src/server/posthog/posthog.server.ts | 81 | export async function posthogServerSendException(error: Error | unknown, distinctId: string | undefined, context: { | CODE |
| LOW | src/server/posthog/posthog.client-mock.ts | 19 | export async function posthogServerSendException(): Promise<void> { | CODE |
| LOW | src/common/app.queryclient.ts | 8 | export function reactQueryClientSingleton(): QueryClient { | CODE |
| LOW | src/common/logger/interceptors/logger.unhandled.ts | 8 | export function setupClientUncaughtErrorsLogging(): () => void { | CODE |
| LOW | src/common/logger/interceptors/logger.network.ts | 9 | export function setupClientFetchErrorsLogging(): () => void { | CODE |
| LOW | src/common/logger/hooks/useClientLoggerInterception.ts | 10 | export function useClientLoggerInterception(captureUnhandledErrors: boolean, captureFetchErrors: boolean) { | CODE |
| LOW | src/common/util/timeUtils.ts | 46 | export function prettyTimestampForFilenames(useSeconds: boolean = true) { | CODE |
| LOW | src/common/util/timeUtils.ts | 66 | export function createTimeBucketClassifierEn() { | CODE |
| LOW | src/common/util/fileSystemUtils.ts | 13 | export async function getAllFilesFromDirectoryRecursively(directoryHandle: FileSystemDirectoryHandle): Promise<FileWithH | CODE |
| LOW | src/common/util/fileSystemUtils.ts | 62 | export function getDataTransferFilesOrPromises(items: DataTransferItemList, fallbackAsFiles: boolean): FileOrFileHandleP | CODE |
| LOW | src/common/util/fileSystemUtils.ts | 104 | export async function getFirstFileSystemFileHandle(dataTransfer: DataTransfer): Promise<FileSystemFileHandle | null> { | CODE |
| LOW | src/common/util/objectUtils.ts | 121 | export function objectDeepCloneWithStringLimit(value: unknown, debugCaller: string, maxBytes: number = 2048): unknown { | CODE |
| LOW | src/common/util/objectUtils.ts | 171 | export function objectStringifyWithIndentDepth( | CODE |
| LOW | src/common/util/objectUtils.ts | 258 | export function objectFindLargestStringPaths(obj: unknown, debugCaller: string, topN: number = 5, maxDepth: number = 20) | CODE |
| LOW | src/common/util/storageUtils.ts | 12 | export async function requestPersistentStorageSafe(): Promise<boolean> { | CODE |
| LOW | src/common/util/storageUtils.ts | 46 | export async function estimatePersistentStorageOrThrow(): Promise<{ usageMB: number, quotaMB: number } | null> { | CODE |
| LOW | src/common/util/canvasUtils.ts | 8 | export function canvasToDataURLAndMimeType( | CODE |
| LOW | src/common/util/canvasUtils.ts | 43 | export async function asyncCanvasToBlobWithValidation( | CODE |
| LOW | src/common/util/canvasUtils.ts | 64 | export function renderVideoFrameToNewCanvas(videoElement: HTMLVideoElement): HTMLCanvasElement { | CODE |
| LOW | src/common/util/textUtils.ts | 132 | export function textEqualsDotDashInsensitive(a: string, b: string): boolean { | CODE |
| LOW | src/common/util/forceTouchToDoubleClick.ts | 30 | // function initForceTouchToDoubleClick(): void { | COMMENT |
| LOW | src/common/util/clipboardUtils.ts | 36 | export async function copyBlobPromiseToClipboard(mimeType: string, blobPromise: Promise<Blob>, typeLabel: string): Promi | CODE |
| LOW | src/common/util/clipboardUtils.ts | 79 | export function clipboardCopyDOMSelectionOrFallback(containerElement: HTMLElement | null, fallbackText: string, typeLabe | CODE |
| LOW | src/common/util/clipboardUtils.ts | 113 | export function clipboardInterceptCtrlCForCleanup(event: ReactClipboardEvent): boolean { | CODE |
| LOW | src/common/util/netstate.ts | 96 | export function netStateSubscribeOnlineHint(callback: (online: boolean) => void): () => void { | CODE |
| LOW | src/common/util/webGeolocationUtils.ts | 45 | export async function webGeolocationPermissionState(): Promise< | CODE |
| LOW | src/common/layout/optima/ChromelessFloatingButtons.tsx | 24 | export function ChromelessFloatingButtons() { | CODE |
| LOW | …n/layout/optima/scratchclip/useGlobalClipboardSaver.ts | 7 | function isTargetTypicallyEditable(target: EventTarget | null): target is HTMLElement { | CODE |
| LOW | src/common/layout/optima/portals/OptimaPortalsIn.tsx | 67 | function useOptimaPortalTargetElement(targetPortalId: OptimaPortalId) { | CODE |
| LOW | src/common/providers/ProviderBackendCapabilities.tsx | 74 | export function ProviderBackendCapabilities(props: { children: React.ReactNode }) { | CODE |
| LOW | src/common/providers/single-tab/instanceLock.ts | 474 | export function instanceLockRequestTransfer(): void { | CODE |
| LOW | src/common/logic/llmsRefreshStaleServicesOnBoot.ts | 23 | export async function llmsRefreshStaleServicesOnBoot(remoteServices: boolean, existingServices: boolean): Promise<number | CODE |
| LOW | src/common/stores/store-client.ts | 74 | export function deviceCreateRegistrationPayload(): DeviceRegistrationClientPayload { | CODE |
| LOW | src/common/stores/store-ai.ts | 96 | // export function resetAIPreferencesToDefaults(): void { | COMMENT |
| LOW | src/common/stores/metrics/metrics.chatgenerate.ts | 86 | export function metricsPendChatGenerateLg(metrics: DMetricsChatGenerate_Lg | undefined): void { | CODE |
| LOW | src/common/stores/metrics/metrics.chatgenerate.ts | 91 | export function metricsFinishChatGenerateLg(metrics: DMetricsChatGenerate_Lg | undefined, isAborted: boolean): void { | CODE |
| LOW | src/common/stores/metrics/metrics.chatgenerate.ts | 144 | export function metricsChatGenerateLgToMd(metrics: DMetricsChatGenerate_Lg): DMetricsChatGenerate_Md { | CODE |
| LOW | src/common/stores/metrics/metrics.chatgenerate.ts | 172 | export function metricsComputeChatGenerateCostsMd(metrics?: Readonly<DMetricsChatGenerate_Md>, pricing?: DPricingChatGen | CODE |
| LOW | src/common/stores/metrics/metrics.modelservice.ts | 28 | function createServiceMetricsAggregate(): ServiceMetricsAggregate { | CODE |
| LOW | src/common/stores/metrics/store-metrics.ts | 20 | export function metricsStoreAddChatGenerate(costs: MetricsChatGenerateCost_Md, inputTokens: number, outputTokens: number | CODE |
| LOW | src/common/stores/metrics/store-metrics.ts | 24 | export function useCostMetricsForLLMService(serviceId?: DModelsServiceId) { | CODE |
| LOW | src/common/stores/chat/chat.fragment-order.ts | 16 | export function normalizeUserFragmentGroupsOrder(order?: readonly unknown[] | null): UserMessageFragmentGroup[] { | CODE |
| LOW | src/common/stores/chat/chat.fragment-order.ts | 90 | export function findFirstUserPromptFragment(fragments: Immutable<DMessageFragment[]>) { | CODE |
| LOW | src/common/stores/chat/chat.fragment-order.ts | 94 | export function findLastUserPromptFragment(fragments: Immutable<DMessageFragment[]>) { | CODE |
| LOW | src/common/stores/chat/store-chats.ts | 519 | function updateMessagesTokenCounts(messages: DMessage[], forceUpdate: boolean, debugFrom: string): number { | CODE |
| LOW | src/common/stores/chat/store-chats.ts | 572 | export function getConversationSystemPurposeId(conversationId: DConversationId | null): SystemPurposeId | null { | CODE |
| LOW | src/common/stores/chat/chat.tokens.ts | 12 | export function estimateTokensForFragments(llm: DLLM, role: DMessageRole, fragments: DMessageFragment[], addTopGlue: boo | CODE |
| LOW⚡ | src/common/stores/chat/chat.message.ts | 165 | export function createDMessageTextContent(role: DMessageRole, text: string): DMessage { | CODE |
| LOW⚡ | src/common/stores/chat/chat.message.ts | 169 | export function createDMessagePlaceholderIncomplete(role: DMessageRole, placeholderText: string): DMessage { | CODE |
| LOW⚡ | src/common/stores/chat/chat.message.ts | 176 | export function createDMessageFromFragments(role: DMessageRole, fragments: DMessageFragment[]): DMessage { | CODE |
| LOW | src/common/stores/chat/chat.message.ts | 228 | export function duplicateDMessageMetadata(metadata: Immutable<DMessageMetadata>): DMessageMetadata { | CODE |
| LOW | src/common/stores/chat/chat.message.ts | 243 | export function duplicateDMessageGenerator(generator: Immutable<DMessageGenerator>): DMessageGenerator { | CODE |
| 249 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | next-env.d.ts | 1 | /// <reference types="next" /> | COMMENT |
| LOW | next.config.ts | 161 | COMMENT | |
| LOW | tools/develop/worktrees/wt.sh | 221 | fi | COMMENT |
| LOW | tools/develop/worktrees/wt.sh | 241 | #if [ "$ds_copied" = true ]; then | COMMENT |
| LOW | …develop/gen-icon-sprites/VendorIconSprite.template.tsx | 1 | // /** | COMMENT |
| LOW | …develop/gen-icon-sprites/VendorIconSprite.template.tsx | 21 | // * Mount once in the app root (ProviderTheming) - all `<use href="#vi-...">` references resolve from here. | COMMENT |
| LOW | …develop/gen-icon-sprites/VendorIconSprite.template.tsx | 41 | // * Near-zero per-instance cost - no Emotion/styled-components. | COMMENT |
| LOW | …develop/gen-icon-sprites/VendorIconSprite.template.tsx | 61 | // // if (sx.ml !== undefined) s.marginLeft = typeof sx.ml === 'number' ? sx.ml * 8 : sx.ml; | COMMENT |
| LOW | …develop/gen-icon-sprites/VendorIconSprite.template.tsx | 81 | // // fill: 'currentColor', | COMMENT |
| LOW | .claude/commands/code/tape-opens/census.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | .github/dependabot.yml | 21 | # - package-ecosystem: npm | COMMENT |
| LOW | .github/dependabot.yml | 41 | # versions: [">=5.0.7", "<6"] | COMMENT |
| LOW | .github/dependabot.yml | 61 | # patterns: | COMMENT |
| LOW | pages/_document.tsx | 81 | MyDocument.getInitialProps = async (ctx: DocumentContext) => { | COMMENT |
| LOW | src/common/app.nav.ts | 101 | hideDrawer: true, | COMMENT |
| LOW | src/common/app.nav.ts | 121 | // route: '/cortex', | COMMENT |
| LOW | src/common/util/urlUtils.ts | 161 | COMMENT | |
| LOW | src/common/util/urlUtils.ts | 181 | // _update(searchParams); | COMMENT |
| LOW | src/common/util/urlUtils.ts | 201 | // } | COMMENT |
| LOW | src/common/util/viewTransitionUtils.ts | 1 | // import { flushSync } from 'react-dom'; | COMMENT |
| LOW | src/common/util/viewTransitionUtils.ts | 21 | // } | COMMENT |
| LOW | src/common/util/animUtils.ts | 321 | 50% { | COMMENT |
| LOW | src/common/util/animUtils.ts | 341 | // `; | COMMENT |
| LOW | src/common/util/animUtils.ts | 361 | // } | COMMENT |
| LOW | src/common/util/animUtils.ts | 381 | // box-shadow: -12px 32px 24px 0 rgba(11, 107, 203, 0.2); | COMMENT |
| LOW | src/common/util/stateUtils.tsx | 1 | // import * as React from 'react'; | COMMENT |
| LOW | src/common/util/stateUtils.tsx | 21 | // {props.children} | COMMENT |
| LOW | src/common/util/forceTouchToDoubleClick.ts | 1 | // /** | COMMENT |
| LOW | src/common/util/forceTouchToDoubleClick.ts | 21 | // (_forceTouchSupported ??= typeof MouseEvent !== 'undefined' && 'webkitForce' in MouseEvent.prototype); | COMMENT |
| LOW | src/common/util/forceTouchToDoubleClick.ts | 41 | // // Force touch → synthetic double-click | COMMENT |
| LOW | src/common/util/eventUtils.ts | 1 | // /** | COMMENT |
| LOW | src/common/util/eventUtils.ts | 21 | // return () => target.removeEventListener(eventType, listener); | COMMENT |
| LOW | src/common/util/downloadUtils.ts | 21 | const url = URL.createObjectURL(blob); | COMMENT |
| LOW | src/common/util/downloadUtils.ts | 41 | // */ | COMMENT |
| LOW | …c/common/util/mediasession/useMediaSessionCallbacks.ts | 1 | // import * as React from 'react'; | COMMENT |
| LOW | …c/common/util/mediasession/useMediaSessionCallbacks.ts | 21 | // }, [stableHandlers]); | COMMENT |
| LOW | src/common/util/mediasession/MediaSessionManager.ts | 1 | // type MediaSessionAction = 'play' | 'pause' | 'stop' | 'seekbackward' | 'seekforward' | 'previoustrack' | 'nexttrack'; | COMMENT |
| LOW | src/common/util/mediasession/MediaSessionManager.ts | 21 | // console.warn('Media Session API is not supported in this browser.'); | COMMENT |
| LOW | src/common/util/mediasession/MediaSessionManager.ts | 41 | // public unregisterComponent(handlers: MediaSessionCallbacks): void { | COMMENT |
| LOW | src/common/util/mediasession/MediaSessionManager.ts | 61 | // if (!navigator.mediaSession.metadata) | COMMENT |
| LOW | src/common/util/mediasession/MediaSessionManager.ts | 81 | // | COMMENT |
| LOW | src/common/util/audio/AudioGenerator.ts | 161 | COMMENT | |
| LOW | src/common/util/audio/AudioGenerator.ts | 461 | } | COMMENT |
| LOW | src/common/util/audio/AudioGenerator.ts | 481 | // | COMMENT |
| LOW | src/common/util/audio/AudioGenerator.ts | 501 | // oToneFilter.type = 'lowpass'; | COMMENT |
| LOW | src/common/util/audio/AudioGenerator.ts | 521 | // const { pitch = 150, decay = 0.2, tone = 1, noiseType = 'white' } = options; | COMMENT |
| LOW | src/common/util/audio/AudioGenerator.ts | 541 | // const ng = ctx.createGain(); | COMMENT |
| LOW | src/common/util/audio/AudioGenerator.ts | 561 | // } | COMMENT |
| LOW | src/common/util/audio/AudioGenerator.ts | 581 | // | COMMENT |
| LOW | src/common/util/audio/AudioGenerator.ts | 601 | // createEnvelope(ctx, n1gain.gain, 0.001, 0.03, 0, 0.02); | COMMENT |
| LOW | src/common/layout/withLayout.tsx | 61 | // return <OptimaLayout {...rest}>{children}</OptimaLayout>; | COMMENT |
| LOW | src/common/layout/overlays/store-layout-overlays.ts | 121 | overlays: [ | COMMENT |
| LOW | src/common/logic/ProcessingQueue.ts | 181 | COMMENT | |
| LOW | src/common/stores/llms/model.domains.registry.ts | 81 | // - Domains: general, specialized, task-specific, ... | COMMENT |
| LOW | src/common/stores/llms/llms.types.ts | 321 | // Future changes? | COMMENT |
| LOW | src/common/stores/llms/llms.types.ts | 341 | // mimeTypes?: string[]; | COMMENT |
| LOW | src/common/attachment-drafts/attachment.mimetypes.ts | 181 | export function mimeTypeIsPlainText(mimeType: string): boolean { | COMMENT |
| LOW | src/common/attachment-drafts/attachment.mimetypes.ts | 201 | // - Maximum of 16 individual images for the gemini-pro-vision and 3600 images for gemini-1.5-pro | COMMENT |
| LOW | …nt-drafts/attachment-sources/useWebAttachmentModal.tsx | 101 | if (!cleanUrls.length) { | COMMENT |
| LOW | src/common/components/useDebouncer.ts | 1 | // import * as React from 'react'; | COMMENT |
| 174 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/common/stores/chat/chat.message.ts | 30 | // Session metadata for multi-turn agentic sessions was considered here (see commit 3cd38f47) | COMMENT |
| MEDIUM | src/common/stores/llms/model.domains.editorial.ts | 108 | { vendor: 'xai', modelId: 'grok-4.6' }, // 2026-08-12 GA - frontier for coding/agentic/knowledge work, extend | CODE |
| MEDIUM⚡ | src/common/stores/llms/model.domains.editorial.ts | 125 | { vendor: 'googleai', modelId: 'models/gemini-3.6-flash' }, // 2026-07-21 GA - "improved code/agentic planning" + | CODE |
| MEDIUM⚡ | src/common/stores/llms/model.domains.editorial.ts | 127 | { vendor: 'openai', modelId: 'gpt-6.1-sol' }, // 2026-09-29 - "exceptionally strong on agentic coding", same pri | CODE |
| MEDIUM⚡ | src/common/stores/llms/model.domains.editorial.ts | 128 | { vendor: 'openai', modelId: 'gpt-6-sol' }, // 2026-09-22 - "built for complex coding and agentic workflows" | CODE |
| MEDIUM⚡ | src/common/stores/llms/model.domains.editorial.ts | 129 | { vendor: 'openai', modelId: 'gpt-5.6-sol' }, // 2026-07-09 GA - "strongest yet for agentic coding" | CODE |
| MEDIUM | src/common/stores/llms/model.domains.editorial.ts | 141 | { vendor: 'xai', modelId: 'grok-4.6' }, // xAI frontier for coding/agentic; new Grok Build default (2026-08-1 | CODE |
| MEDIUM | src/common/stores/llms/model.domains.editorial.ts | 150 | { vendor: 'nvidianim', modelId: 'nvidia/nemotron-3.5-super-vl-120b-a12b' }, // agentic/tool-use tuned, 12B active ( | CODE |
| MEDIUM | src/modules/llms/server/gemini/gemini.models.ts | 357 | // Improved token efficiency and code/agentic planning capabilities, at a lower price point than 3.5 Flash | COMMENT |
| MEDIUM | src/modules/llms/server/gemini/gemini.models.ts | 420 | // First "point one" update - introduces 'medium' thinking level, improved agentic coding | COMMENT |
| MEDIUM | src/modules/llms/server/openai/models/zai.models.ts | 45 | // GLM-5.3 - 1M context flagship (post-train of the GLM-5.2 base; coding, cyber, agentic) | COMMENT |
| MEDIUM | src/modules/llms/server/openai/models/cohere.models.ts | 38 | // chatPrice is set only where Cohere publishes per-token prices; newer/agentic models are | COMMENT |
| MEDIUM | src/modules/llms/server/openai/models/cohere.models.ts | 103 | // North Mini Code - agentic coding (North platform) | COMMENT |
| MEDIUM | src/modules/llms/server/openai/models/alibaba.models.ts | 435 | // GA release of V4 Pro (2026-08-13), superseding the April preview: same 1.6T/49B MoE, re-post-trained for agentic | COMMENT |
| MEDIUM | src/modules/llms/server/openai/models/alibaba.models.ts | 436 | // with a DSpark speculative-decoding module attached. Large agentic deltas vs the preview (DeepSWE 62.7 vs 12.8, | COMMENT |
| MEDIUM | …c/modules/llms/server/openai/models/deepseek.models.ts | 32 | // Open weights MIT on HF (deepseek-ai/DeepSeek-V4.1-Flash). DeepSeek's table puts it ahead of V4-Pro-0813 on the agen | COMMENT |
| MEDIUM | …c/modules/llms/server/openai/models/deepseek.models.ts | 38 | // - The hidden agentic preamble that made 'low' cheaper on V4 is gone (identical prompt_tokens at every effort, with an | COMMENT |
| MEDIUM⚡ | …c/modules/llms/server/openai/models/deepseek.models.ts | 63 | // - Preview architecture unchanged (1.6T/49B) plus a DSpark speculative-decoding module, re-post-trained for agentic | COMMENT |
| MEDIUM⚡ | …c/modules/llms/server/openai/models/deepseek.models.ts | 64 | // work; open weights MIT on HF (deepseek-ai/DeepSeek-V4-Pro-0813). Gains are agentic (DeepSWE 12.8 -> 62.7, Terminal | COMMENT |
| MEDIUM⚡ | …c/modules/llms/server/openai/models/deepseek.models.ts | 66 | // - Pro's effort mapping now matches flash: 'low' is a real cheaper tier, skipping the ~79-token hidden agentic preambl | COMMENT |
| MEDIUM⚡ | …c/modules/llms/server/openai/models/deepseek.models.ts | 72 | // - Same 'deepseek-v4-flash' id, same arch/size/pricing, public beta. Reported agentic gains are vs V4-Pro-Preview on | COMMENT |
| MEDIUM | …c/modules/llms/server/openai/models/deepseek.models.ts | 120 | // 'low' keeps reasoning on yet skips the hidden agentic preamble (8 vs 87 prompt tokens), so it is cheaper per re | COMMENT |
| MEDIUM | src/modules/llms/server/openai/models/openai.models.ts | 18 | // GPT-6 Astra: Pro reasoning mode, probed live 2026-09-04: the answer streams as one whole delta, ~1.5K input-token s | COMMENT |
| MEDIUM | src/modules/llms/server/openai/models/openai.models.ts | 43 | // on a trivial prompt); each request adds ~1.7K billed input tokens of orchestration scaffold; background mode su | COMMENT |
| MEDIUM | …atch/wiretypes/_upstream/gemini.deep-research.guide.md | 1109 | Pricing follows a [pay-as-you-go model](https://ai.google.dev/gemini-api/docs/pricing#pricing-for-agents) based on the u | CODE |
| MEDIUM | …atch/wiretypes/_upstream/gemini.deep-research.guide.md | 1109 | Pricing follows a [pay-as-you-go model](https://ai.google.dev/gemini-api/docs/pricing#pricing-for-agents) based on the u | CODE |
| MEDIUM | …spatch/chatGenerate/adapters/openai.chatCompletions.ts | 204 | // (on V4 'low' also skipped a hidden agentic preamble; gone on V4.1-Flash, probed 2026-09-12) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .claude/commands/code/grep-history.md | 25 | ### Step 1: Resolve the ancestor commit | COMMENT |
| LOW⚡ | .claude/commands/code/grep-history.md | 39 | ### Step 2: Run pickaxe search | COMMENT |
| LOW⚡ | .claude/commands/code/grep-history.md | 47 | ### Step 3: Check endpoints | COMMENT |
| LOW⚡ | .claude/commands/code/grep-history.md | 56 | ### Step 4: Report | COMMENT |
| LOW | .claude/commands/code/tape-opens/SKILL.md | 17 | ## Step 1 - census (deterministic, run exactly this) | COMMENT |
| LOW | .claude/commands/code/tape-opens/SKILL.md | 27 | ## Step 2 - read the spine | COMMENT |
| LOW | .claude/commands/code/tape-opens/SKILL.md | 38 | ## Step 3 - build the tree | COMMENT |
| LOW | .claude/commands/code/tape-opens/SKILL.md | 52 | ## Step 4 - output | COMMENT |
| LOW⚡ | .claude/commands/rel/release-open.md | 8 | ## Step 1: Determine Version | COMMENT |
| LOW⚡ | .claude/commands/rel/release-open.md | 12 | ## Step 2: Gather Context | COMMENT |
| LOW⚡ | .claude/commands/rel/release-open.md | 20 | ## Step 3: Update Files | COMMENT |
| LOW⚡ | .claude/commands/rel/release-open.md | 40 | ## Step 4: README | COMMENT |
| LOW⚡ | .claude/commands/rel/release-open.md | 48 | ## Step 5: Git Operations | COMMENT |
| LOW⚡ | .claude/commands/rel/release-open.md | 56 | ## Step 6: GitHub Release | COMMENT |
| LOW | .claude/commands/rel/release-open.md | 88 | ## Step 7: Changelog (big-agi.com/changes) | COMMENT |
| LOW | .claude/commands/rel/release-open.md | 95 | ## Step 8: Announcements | COMMENT |
| LOW | .claude/commands/rel/release-open.md | 119 | ## Step 9: Cover Image Prompts | COMMENT |
| LOW | docs/config-azure-openai.md | 58 | ### Step 1: Azure Account & Subscription | COMMENT |
| LOW | docs/config-azure-openai.md | 67 | ### Step 2: Create Azure OpenAI Resource | COMMENT |
| LOW | docs/config-azure-openai.md | 92 | ### Step 3: Deploy Models | COMMENT |
| LOW⚡ | docs/deploy-cloudflare.md | 23 | ## Step 1: Repository Forking | COMMENT |
| LOW⚡ | docs/deploy-cloudflare.md | 27 | ## Step 2: Linking Cloudflare Pages to Your GitHub Account | COMMENT |
| LOW⚡ | docs/deploy-cloudflare.md | 33 | ## Step 3: Configuring Build and Deployments | COMMENT |
| LOW | docs/deploy-cloudflare.md | 44 | ## Step 4: Monitoring the Deployment Process | COMMENT |
| LOW | docs/deploy-cloudflare.md | 49 | ## Step 5: Required: Set the `nodejs_compat` compatibility flag | COMMENT |
| LOW⚡ | docs/deploy-k8s.md | 8 | ### Step 1: Clone the big-AGI repository | COMMENT |
| LOW⚡ | docs/deploy-k8s.md | 15 | ### Step 2: Create the namespace | COMMENT |
| LOW⚡ | docs/deploy-k8s.md | 21 | ### Step 3: Fill in the key information into env-secret.yaml | COMMENT |
| LOW | docs/deploy-k8s.md | 34 | ### Step 4: Deploying Kubernetes Resources | COMMENT |
| LOW | docs/deploy-k8s.md | 40 | ### Step 5: Verifying the Resource Statuses | COMMENT |
| LOW | docs/deploy-k8s.md | 54 | ### Step 6: Testing the Service | COMMENT |
| LOW⚡ | …ocks/enhanced-code/livefile-patch/useLiveFilePatch.tsx | 40 | // // Step 1: Load the latest version of the file | COMMENT |
| LOW⚡ | …ocks/enhanced-code/livefile-patch/useLiveFilePatch.tsx | 45 | // // Step 2: Generate patch | COMMENT |
| LOW⚡ | …ocks/enhanced-code/livefile-patch/useLiveFilePatch.tsx | 50 | // // Step 3: Apply patch and check if it succeeds | COMMENT |
| LOW⚡ | …ocks/enhanced-code/livefile-patch/useLiveFilePatch.tsx | 53 | // // Step 4: Success - user can decide to proceed | COMMENT |
| LOW | …atch/wiretypes/_upstream/gemini.deep-research.guide.md | 115 | ### Step 1: Request a plan | COMMENT |
| LOW | …atch/wiretypes/_upstream/gemini.deep-research.guide.md | 178 | ### Step 2: Refine the plan (optional) | COMMENT |
| LOW | …atch/wiretypes/_upstream/gemini.deep-research.guide.md | 240 | ### Step 3: Approve and execute | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tools/develop/worktrees/wt.sh | 325 | # Handle --materialize flag: bring an EXISTING worktree (e.g. created by an AI | COMMENT |
| HIGH | …ules/aix/server/dispatch/wiretypes/openai.wiretypes.ts | 979 | // Control the content-moderation level for images generated by GPT Image models. | COMMENT |
| HIGH | …/message/fragments-content/BlockPartHostedResource.tsx | 228 | From now on, files generated by Claude tools (code execution, etc.) will be automatically downloaded and embed | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tools/develop/gen-icon-sprites/generate-llm-sprites.ts | 35 | // ── Step 1: Parse vendor registry (vendorId → component name → file) ────────── | COMMENT |
| MEDIUM | tools/develop/gen-icon-sprites/generate-llm-sprites.ts | 65 | // ── Step 2: Parse a vendor icon .tsx file ───────────────────────────────────── | COMMENT |
| MEDIUM | tools/develop/gen-icon-sprites/generate-llm-sprites.ts | 110 | // ── Step 3: Build <symbol> JSX for one vendor ───────────────────────────────── | COMMENT |
| MEDIUM | tools/develop/gen-icon-sprites/generate-llm-sprites.ts | 156 | // ── Step 4: Generate output by replacing template placeholders ──────────────── | COMMENT |
| MEDIUM | tools/develop/gen-icon-sprites/generate-llm-sprites.ts | 176 | // ── Main ────────────────────────────────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/apps/chat/components/composer/Composer.tsx | 979 | <span className={speechInterimResult.interimTranscript === PLACEHOLDER_INTERIM_TRANSCRIPT ? 'place | CODE |
| LOW | …t/components/message/render-tree/cmRenderTree.build.ts | 121 | nodes.push({ kind: 'placeholder', key: `placeholder:${fragment.fId}`, fragment: _withPart(fragment, part) }) | CODE |
| LOW | …t/components/message/render-tree/cmRenderTree.types.ts | 101 | export interface CMNodePlaceholder extends _CMNodeBase<'placeholder'> { | CODE |
| LOW⚡ | …at/components/message/render-tree/cmRenderTree.test.ts | 89 | assert.deepEqual(kinds(tree), ['tool-calls', 'placeholder', 'tool-response']); | CODE |
| LOW⚡ | …at/components/message/render-tree/cmRenderTree.test.ts | 97 | assert.deepEqual(kinds(spanned), ['reasoning', 'placeholder']); | CODE |
| LOW⚡ | …at/components/message/render-tree/cmRenderTree.test.ts | 99 | assert.deepEqual(kinds(build([t1, notice, t2])), ['text', 'placeholder', 'text']); | CODE |
| LOW | …at/components/message/render-tree/cmRenderTree.test.ts | 140 | assert.deepEqual(kinds(build([vehicle, redacted, t, ph], 'edit')), ['reasoning', 'edit-text', 'placeholder']); | CODE |
| LOW | …at/components/message/render-tree/cmRenderTree.test.ts | 141 | assert.deepEqual(kinds(build([vehicle, redacted, t, ph])), ['reasoning', 'text', 'placeholder']); | CODE |
| LOW | …at/components/message/render-tree/cmRenderTree.test.ts | 313 | assert.deepEqual(kinds(edit), ['reasoning', 'edit-text', 'placeholder']); | CODE |
| LOW | …t/components/message/render-tree/CMRenderTreeNodes.tsx | 378 | && body[0].kind === 'placeholder'; | CODE |
| LOW | …t/components/message/render-tree/CMRenderTreeNodes.tsx | 571 | case 'placeholder': { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/develop/worktrees/wt.sh | 456 | # Check if trying to remove the main branch | COMMENT |
| LOW | tools/develop/worktrees/wt.sh | 505 | # Check if branch exists | COMMENT |
| LOW | tools/develop/worktrees/wt.sh | 703 | # Check if branch already exists | COMMENT |
| LOW | tools/develop/worktrees/wt.sh | 711 | # Check if worktree already exists | COMMENT |
| LOW | tools/ai/repo-structure.sh | 31 | # Check if we're in a git repository | COMMENT |
| LOW | tools/ai/repo-structure.sh | 76 | # Check if TMP_FILE is empty after filtering | COMMENT |
| LOW | tools/ai/repo-structure.sh | 117 | # Check if we've already processed this directory | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …ocks/enhanced-code/livefile-patch/useLiveFilePatch.tsx | 40 | // // Step 1: Load the latest version of the file | COMMENT |
| LOW⚡ | …ocks/enhanced-code/livefile-patch/useLiveFilePatch.tsx | 45 | // // Step 2: Generate patch | COMMENT |
| LOW⚡ | …ocks/enhanced-code/livefile-patch/useLiveFilePatch.tsx | 50 | // // Step 3: Apply patch and check if it succeeds | COMMENT |
| LOW⚡ | …ocks/enhanced-code/livefile-patch/useLiveFilePatch.tsx | 53 | // // Step 4: Success - user can decide to proceed | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tools/develop/worktrees/wt.sh | 734 | # Create the worktree with a new branch at the selected source ref. | COMMENT |
| MEDIUM | docs/docker/docker-compose-browserless.yaml | 1 | # This file is used to run `big-AGI` and `browserless` with Docker Compose. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/common/stores/chat/chat.tokens.ts | 64 | // TODO: implement this properly - as we don't have resolutions in the part(!) - and this could be really expens | COMMENT |
| LOW | src/common/stores/chat/chat.tokens.ts | 85 | // TODO: implement this properly - as we don't have resolutions in the part(!) - and this could be really expens | COMMENT |
| LOW | …erver/dispatch/chatGenerate/ChatGenerateTransmitter.ts | 86 | // TODO: implement throttling on a particle basis | COMMENT |
| LOW | …c/modules/aix/client/aix.client.chatGenerateRequest.ts | 587 | // TODO: implement mid-chat system messages if needed | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/config-azure-openai.md | 32 | AZURE_OPENAI_API_KEY=your-api-key | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/common/util/webGeolocationUtils.ts | 130 | // TODO: use a robust geocoding service | COMMENT |
| MEDIUM | …patch/chatGenerate/adapters/anthropic.messageCreate.ts | 16 | const hotFixAntSeparateContiguousThinkingBlocks = true; // Interleave continuous thinking blocks (without aText) with th | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/develop/aix-gemini-antigravity-probe/examples.sh | 5 | # Usage: | COMMENT |
| LOW | src/common/util/idbUtils.ts | 314 | // Example usage: | COMMENT |