AI Slop Code Risk Monitor

janhq/jan

SlopCodeMonitor badge for janhq/jan Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

Jan is an open source alternative to ChatGPT that runs 100% offline on your computer.

3.0 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for janhq/jan, a Rust project with 45,191 GitHub stars. SynthScan examined 423,966 lines of code across 1954 source files, recording 1017 pattern matches distributed across 19 syntactic categories. The legacy adjusted pattern signal is 3.0 (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.

3.0
Adjusted Signal
3.0
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
45.2K
Stars
Rust
Language
424.0K
Lines of Code
2.0K
Files
1.0K
Pattern Hits
2026-10-31
Scan Date
0.01
HC Hit Rate

Risk Review · Payload v1

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.

Cognitive Ownership Risk 9.2/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 764 finding(s).

Hallucinated Dependency & Supply Chain Risk 1.8/100 · LOW

Are imports declared and package/API names verified? 129 finding(s).

Agent Over-Engineering Ratio 4.9/100 · LOW

Are wrappers, guards, and repeated structures necessary? 251 finding(s).

PR Review Velocity Impact 14.2/100 · LOW

Which changes need focused human review? 1017 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

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.

Severity Breakdown

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.

CRITICAL 3HIGH 8MEDIUM 108LOW 898

Directory Score Breakdown

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.

Pattern Findings

The scanner identified 1017 distinct pattern matches across 19 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.

Over-Commented Block557 hits · 530 pts
SeverityFileLineSnippetContext
LOWbuild-tui.sh1#!/usr/bin/env bashCOMMENT
LOWweb-app/src/hooks/useCoworkRun.ts221 // terminal event); untouched by a `null` usage so a provider that doesn'tCOMMENT
LOWweb-app/src/routes/threads/$threadId.tsx121} as constCOMMENT
LOWweb-app/src/routes/threads/$threadId.tsx141// controller, so a Stop settles that turn even when the user has sent anotherCOMMENT
LOWweb-app/src/routes/threads/$threadId.tsx1121 // router path, leaving the SDK stream stuck at 'submitted' so theCOMMENT
LOWweb-app/src/routes/threads/$threadId.tsx1381 }COMMENT
LOWextensions/llamacpp-extension/src/preset.ts661 // A model with speculative decoding gets one slot when parallel is auto.COMMENT
LOWextensions/llamacpp-extension/src/preset.ts701 // moe-cache-mib default = 0 (off): a GPU cache for the experts thatCOMMENT
LOWmlx-server/Sources/MLXServer/ReasoningSplitter.swift1import FoundationCOMMENT
LOWpackages/adk/tests/types.ts1// Compile-time assertions over the generated types and the public surface.COMMENT
LOWpackages/adk/src/index.js1// JavaScript/TypeScript client for the Jan agent runtime.COMMENT
LOWpackages/adk/src/index.js161 })COMMENT
LOWpackages/adk/src/index.js241 // Why the runtime failed this session, once it has: nothing it was stillCOMMENT
LOWpackages/adk/src/index.js441 }COMMENT
LOWpackages/adk/src/index.js541// that cannot speak this protocol version fails before any work starts ratherCOMMENT
LOWpackages/adk/src/install.js1// Installing a pinned Jan runtime, without a Rust toolchain and without JanCOMMENT
LOWpackages/adk/src/install.js301// The archives are a tarball on macOS and Linux and a zip on Windows. TheCOMMENT
LOWpackages/adk/src/index.d.ts1// The public surface of the JavaScript/TypeScript ADK, declared by hand overCOMMENT
LOW.github/workflows/rust-check.yml161 # a tree whose manifests agree but lag the last tag (0.8.5 through v0.8.8).COMMENT
LOW.github/workflows/rust-check.yml261 # Each plugin and src-tauri/utils is its own workspace, so checking the appCOMMENT
LOW.github/workflows/e2e-suite.yml1# Runs the desktop e2e suite against a real Jan build on all four supportedCOMMENT
LOW.github/workflows/jan-tauri-build-nightly.yaml221 # build-linux-x64,COMMENT
LOW.github/workflows/jan-tauri-build-nightly.yaml241 # get-update-version,COMMENT
LOW.github/workflows/jan-tauri-build-nightly.yaml261 # set-public-provider,COMMENT
LOW.github/workflows/template-tauri-build-windows-x64.yml441 # if: inputs.public_provider == 'github'COMMENT
LOW.github/workflows/template-cli-build-linux-x64.yml81 # so a regression here would surface as a confusing linker error later.COMMENT
LOW.github/workflows/update-feed-check.yml1# Guards the release-update feeds that the in-app updater pollsCOMMENT
LOW.github/workflows/update-feed-check.yml21# build. (Follow-up: also run the live check as the final step of the publishCOMMENT
LOW.github/scripts/stamp-version.sh1#!/usr/bin/env bashCOMMENT
LOW.github/scripts/stamp-version.sh21# bumping them is still a commit (see `chore(release): bump app version toCOMMENT
LOW.github/scripts/rename-tauri-app.sh61COMMENT
LOW.github/actions/setup-engine-toolchain/action.yml61COMMENT
LOWsrc-tauri/jan-cli/tests/stream_json_host_tools.rs1//! `--host-tools` end to end, through the real binary.COMMENT
LOWsrc-tauri/jan-cli/tests/stream_json_init.rs1//! The first line of a `stream-json` run is the `init` handshake -- for a runCOMMENT
LOWsrc-tauri/jan-cli/tests/tui_panic.rs1//! A panic inside the TUI (`JAN_TUI_PANIC_AFTER_RAW_MODE`, seeCOMMENT
LOWsrc-tauri/jan-cli/tests/rpc_parity.rs421/// A `permission/request` answered over RPC and the same prompt answered with aCOMMENT
LOWsrc-tauri/jan-cli/tests/adk_examples.rs1//! The ADK cookbook's runnable source, run.COMMENT
LOWsrc-tauri/jan-cli/tests/agent_rpc.rs1181}COMMENT
LOWsrc-tauri/jan-cli/.cargo/config.toml1# Redirect build output into the desktop crate's target dir so the producedCOMMENT
LOWsrc-tauri/jan-cli/src/main.rs61 #[arg(long, default_value = ".")]COMMENT
LOWsrc-tauri/jan-cli/src/main.rs81 /// Ignored when a subcommand is given.COMMENT
LOWsrc-tauri/jan-cli/src/main.rs101 sandbox: bool,COMMENT
LOWsrc-tauri/jan-cli/src/main.rs181/// it may take, `--max-budget-usd` bounds what it may spend; the token ceilingCOMMENT
LOWsrc-tauri/jan-cli/src/main.rs241 paste_token: bool,COMMENT
LOWsrc-tauri/jan-cli/src/main.rs261 /// figure loses digits, so this forwards the bytes as received.COMMENT
LOWsrc-tauri/jan-cli/src/main.rs281 cmd: McpServeCommands,COMMENT
LOWsrc-tauri/jan-cli/src/main.rs301 force: bool,COMMENT
LOWsrc-tauri/jan-cli/src/main.rs321 /// Also serve the shell tool (runs under the same OS sandbox as the agent)COMMENT
LOWsrc-tauri/jan-cli/src/main.rs341/// the provider recorded -- not the local per-session estimate the TUI's bareCOMMENT
LOWsrc-tauri/jan-cli/src/main.rs501 #[command(flatten)]COMMENT
LOWsrc-tauri/jan-cli/src/main.rs521 input_format: InputFormat,COMMENT
LOWsrc-tauri/jan-cli/src/main.rs541 project: String,COMMENT
LOWsrc-tauri/jan-cli/src/main.rs581/// Read/write the user-wide `~/.jan/config.toml` provider store. This is theCOMMENT
LOWsrc-tauri/jan-cli/src/main.rs601 #[arg(long)]COMMENT
LOWsrc-tauri/jan-cli/src/main.rs681/// Manage MCP servers in the shared <jan_data>/mcp_config.json, the same storeCOMMENT
LOWsrc-tauri/jan-cli/src/main.rs701 /// Command for a stdio server (e.g. npx, uvx)COMMENT
LOWsrc-tauri/plugins/tauri-plugin-vector-db/src/db.rs41#[derive(Debug, Serialize, Deserialize, Clone)]COMMENT
LOWsrc-tauri/plugins/tauri-plugin-llamacpp/build.rs1//! Permission generation, plus the optional native llama.cpp engine build.COMMENT
LOWsrc-tauri/plugins/tauri-plugin-llamacpp/build.rs221 /// nested. The toolchain file sets `CMAKE_SYSTEM_NAME`, which makesCOMMENT
LOWsrc-tauri/plugins/tauri-plugin-llamacpp/build.rs341 "cargo:rustc-env=JAN_GGML_BACKEND_DIR={}",COMMENT
497 more matches not shown…
Decorative Section Separators77 hits · 234 pts
SeverityFileLineSnippetContext
MEDIUM⚡build-tui.sh4# ────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡build-tui.sh14# ────────────────────────────────────────────────────────────COMMENT
MEDIUMweb-app/src/components/FilePickerPopover.tsx12// ─── File-type icon helper ───────────────────────────────────────────────────COMMENT
MEDIUMweb-app/src/components/FilePickerPopover.tsx51// ─── Props ───────────────────────────────────────────────────────────────────COMMENT
MEDIUMweb-app/src/components/ai-elements/chain-of-thought.tsx38// ── Types ──────────────────────────────────────────────────────────────────COMMENT
MEDIUMweb-app/src/components/ai-elements/chain-of-thought.tsx42// ── Context ────────────────────────────────────────────────────────────────COMMENT
MEDIUMweb-app/src/components/ai-elements/chain-of-thought.tsx67// ── ChainOfThought (root) ──────────────────────────────────────────────────COMMENT
MEDIUMweb-app/src/components/ai-elements/chain-of-thought.tsx190// ── ChainOfThoughtHeader ───────────────────────────────────────────────────COMMENT
MEDIUMweb-app/src/components/ai-elements/chain-of-thought.tsx311// ── ChainOfThoughtContent ──────────────────────────────────────────────────COMMENT
MEDIUMweb-app/src/components/ai-elements/chain-of-thought.tsx334// ── ChainOfThoughtText ─────────────────────────────────────────────────────COMMENT
MEDIUMweb-app/src/components/ai-elements/chain-of-thought.tsx361// ── ChainOfThoughtStep ─────────────────────────────────────────────────────COMMENT
MEDIUMweb-app/src/components/ai-elements/chain-of-thought.tsx403// ── ChainOfThoughtSearchResults ────────────────────────────────────────────COMMENT
MEDIUMweb-app/src/components/ai-elements/chain-of-thought.tsx427// ── ChainOfThoughtSearchResult ─────────────────────────────────────────────COMMENT
MEDIUMweb-app/src/components/ai-elements/chain-of-thought.tsx448// ── ChainOfThoughtImage ────────────────────────────────────────────────────COMMENT
MEDIUMweb-app/src/components/ai-elements/chain-of-thought.tsx468// ── Display names ──────────────────────────────────────────────────────────COMMENT
MEDIUMweb-app/src/lib/path-references.ts16// ── Exports ──────────────────────────────────────────────────────────────────COMMENT
MEDIUMweb-app/src/lib/path-references.ts65// ── Parsing references from text ─────────────────────────────────────────────COMMENT
MEDIUMweb-app/src/lib/path-references.ts119// ── Fuzzy file search ────────────────────────────────────────────────────────COMMENT
MEDIUMweb-app/src/lib/path-references.ts170// ── Resolving a single reference content ─────────────────────────────────────COMMENT
MEDIUMweb-app/src/lib/path-references.ts296// ── Internal helpers ─────────────────────────────────────────────────────────COMMENT
MEDIUM…ib/mcp-orchestrator/__tests__/mcp-orchestrator.test.ts44 // ─── below threshold — uses getTools() ───────────────────────────────────COMMENT
MEDIUM…ib/mcp-orchestrator/__tests__/mcp-orchestrator.test.ts100 // ─── above threshold — uses getToolsForServers() ─────────────────────────COMMENT
MEDIUM…ib/mcp-orchestrator/__tests__/mcp-orchestrator.test.ts137 // ─── caching ─────────────────────────────────────────────────────────────COMMENT
MEDIUM…ib/mcp-orchestrator/__tests__/mcp-orchestrator.test.ts192 // ─── summary caching ─────────────────────────────────────────────────────COMMENT
MEDIUM…ib/mcp-orchestrator/__tests__/mcp-orchestrator.test.ts222 // ─── error resilience ────────────────────────────────────────────────────COMMENT
MEDIUMweb-app/src/services/__tests__/mcp.test.ts461 // ─── getToolsForServers ──────────────────────────────────────────────────COMMENT
MEDIUMweb-app/src/services/__tests__/mcp.test.ts505 // ─── getServerSummaries ──────────────────────────────────────────────────COMMENT
MEDIUMadk/python/jan_adk/_generated.py115# -------------------------------------------------------------------------COMMENT
MEDIUMadk/python/jan_adk/_generated.py117# -------------------------------------------------------------------------COMMENT
MEDIUMadk/python/jan_adk/_generated.py204# -------------------------------------------------------------------------COMMENT
MEDIUMadk/python/jan_adk/_generated.py206# -------------------------------------------------------------------------COMMENT
MEDIUMadk/python/jan_adk/_generated.py279# -------------------------------------------------------------------------COMMENT
MEDIUMadk/python/jan_adk/_generated.py281# -------------------------------------------------------------------------COMMENT
MEDIUMsrc-tauri/jan-cli/src/main.rs26// ── Top-level CLI ──────────────────────────────────────────────────────────COMMENT
MEDIUMsrc-tauri/jan-cli/src/main.rs434// ── Agent subcommands ──────────────────────────────────────────────────────COMMENT
MEDIUMsrc-tauri/jan-cli/src/main.rs632// ── Threads subcommands ────────────────────────────────────────────────────COMMENT
MEDIUMsrc-tauri/jan-cli/src/main.rs655// ── Models subcommands ─────────────────────────────────────────────────────COMMENT
MEDIUMsrc-tauri/jan-cli/src/main.rs679// ── MCP subcommands ────────────────────────────────────────────────────────COMMENT
MEDIUMsrc-tauri/jan-cli/src/main.rs740// ── ASCII logo ─────────────────────────────────────────────────────────────COMMENT
MEDIUMsrc-tauri/jan-cli/src/main.rs760// ── Entry point ────────────────────────────────────────────────────────────COMMENT
MEDIUMsrc-tauri/jan-cli/src/main.rs883// ── ACP server handler ─────────────────────────────────────────────────────COMMENT
MEDIUMsrc-tauri/jan-cli/src/main.rs908// ── MCP server handler ─────────────────────────────────────────────────────COMMENT
MEDIUMsrc-tauri/jan-cli/src/main.rs933// ── Update handler ─────────────────────────────────────────────────────────COMMENT
MEDIUMsrc-tauri/jan-cli/src/main.rs1074// ── CLI dispatch ─────────────────────────────────────────────────────────COMMENT
MEDIUMsrc-tauri/jan-cli/src/main.rs1090// ── Agent handlers ───────────────────────────────────────────────────────COMMENT
MEDIUMsrc-tauri/jan-cli/src/main.rs1373// ── Threads handlers ───────────────────────────────────────────────────────COMMENT
MEDIUMsrc-tauri/jan-cli/src/main.rs1413// ── Models handlers ────────────────────────────────────────────────────────COMMENT
MEDIUMsrc-tauri/src/core/server/tests.rs584 // ── Pure helper coverage ───────────────────────────────────────────────COMMENT
MEDIUMsrc-tauri/src/core/agent/subagent.rs3676 // ── intersect_allowed_tools ─────────────────────────────────────────────COMMENT
MEDIUMsrc-tauri/src/core/agent/subagent.rs3852 // ── resolve_dispatch ────────────────────────────────────────────────────COMMENT
MEDIUMsrc-tauri/src/core/agent/subagent.rs4273 // ── event forwarding + final text ───────────────────────────────────────COMMENT
MEDIUMsrc-tauri/src/core/agent/subagent.rs4358 // ── tool schemas + arg parsing ──────────────────────────────────────────COMMENT
MEDIUMsrc-tauri/src/core/agent/subagent.rs4372 // ── background registry (spawn/await/abort) ─────────────────────────────COMMENT
MEDIUMsrc-tauri/src/core/agent/subagent.rs4529 // ── max-parallel admission (semaphore queue) ───────────────────────────COMMENT
MEDIUMsrc-tauri/src/core/agent/context.rs966 // ── Runtime environment block ────────────────────────────────────────COMMENT
MEDIUMsrc-tauri/src/core/agent/otel/encode.rs100// ── OTLP/JSON ────────────────────────────────────────────────────────────────COMMENT
MEDIUMsrc-tauri/src/core/agent/otel/encode.rs229// ── OTLP/protobuf ────────────────────────────────────────────────────────────COMMENT
MEDIUMsrc-tauri/src/core/agent/otel/mod.rs385// ── The process-wide exporter ────────────────────────────────────────────────COMMENT
MEDIUMsrc-tauri/src/core/agent/otel/mod.rs574// ── Aggregation ──────────────────────────────────────────────────────────────COMMENT
MEDIUMsrc-tauri/src/core/agent/otel/mod.rs1339// ── Export ───────────────────────────────────────────────────────────────────COMMENT
17 more matches not shown…
Hyper-Verbose Identifiers125 hits · 122 pts
SeverityFileLineSnippetContext
LOWweb-app/src/providers/DataProvider.tsx73async function seedProviderKeysFromKeyring(CODE
LOWweb-app/src/providers/KeyboardShortcuts.tsx13export function KeyboardShortcutsProvider() {CODE
LOWweb-app/src/utils/reasoning.ts44export function extractReasoningFromMessage(CODE
LOWweb-app/src/utils/toastPlacement.ts23export function getDefaultNotificationPosition(): NotificationPosition {CODE
LOWweb-app/src/utils/error.ts30export function isLocalContextOverflowMessage(message: string): boolean {CODE
LOWweb-app/src/components/left-sidebar/NavMain.tsx141function NavMainItemWithAnimatedIcon({CODE
LOWweb-app/src/hooks/useReconcileVideoCapability.ts38export function useReconcileVideoCapability(CODE
LOWweb-app/src/lib/provider-api-keys.ts18export function providerRemoteApiKeyChain(provider: {CODE
LOWweb-app/src/lib/migrateLocalStorageSettings.ts51async function transformModelProviderBlob(CODE
LOWweb-app/src/lib/migrateLocalStorageSettings.ts148export async function migrateLocalStorageToBackend(): Promise<void> {CODE
LOWweb-app/src/lib/model-factory.ts224export function reconcileConstraintParams(body: Record<string, unknown>): void {CODE
LOWweb-app/src/lib/model-factory.ts367export function cleanUpstreamErrorMessage(raw: string): string {CODE
LOWweb-app/src/lib/model-factory.ts662export function stripAssistantReasoningInBody(CODE
LOWweb-app/src/lib/model-factory.ts677function shouldStripReasoningFromContext(): boolean {CODE
LOWweb-app/src/lib/model-factory.ts708function withAssistantReasoningStripped(CODE
LOWweb-app/src/lib/model-factory.ts728export function decodeAudioSentinelsInBody(body: Record<string, unknown>): void {CODE
LOWweb-app/src/lib/model-factory.ts770export function decodeVideoSentinelsInBody(body: Record<string, unknown>): void {CODE
LOWweb-app/src/lib/model-factory.ts811export function decodeToolImageSentinelsInBody(CODE
LOWweb-app/src/lib/model-factory.ts832function createApiKeyRotatingFetch(CODE
LOWweb-app/src/lib/partialJson.ts88export function unescapePartialJsonString(raw: string): string {CODE
LOWweb-app/src/lib/custom-chat-transport.ts171function extractModelSamplingDefaults(CODE
LOWweb-app/src/lib/custom-chat-transport.ts213function extractModelTemplateKwargs(CODE
LOWweb-app/src/lib/custom-chat-transport.ts238async function resolveThinkingBudgetTokens(CODE
LOWweb-app/src/lib/custom-chat-transport.ts294function normalizeToolInputSchemaValue(value: unknown): unknown {CODE
LOWweb-app/src/lib/custom-chat-transport.ts478export function extractContextInfoFromError(CODE
LOWweb-app/src/lib/custom-chat-transport.ts518export function stripUnsupportedImageParts(CODE
LOWweb-app/src/lib/custom-chat-transport.ts672export function coalesceMessagesForAlternation(CODE
LOWweb-app/src/lib/custom-chat-transport.ts771export function buildLlamacppReasoningParams(CODE
LOWweb-app/src/lib/custom-chat-transport.ts817function prependContinuationToUIStream(CODE
LOWweb-app/src/lib/chatFinish.ts14export function providerHasContextSetting(provider: string | undefined): boolean {CODE
LOWweb-app/src/lib/coworkPrompt.ts199export function buildSubagentSystemPrompt(CODE
LOWweb-app/src/lib/messages.ts17export function convertUIMessageToThreadMessage(CODE
LOWweb-app/src/lib/messages.ts138export function convertUIMessagesToThreadMessages(CODE
LOWweb-app/src/lib/messages.ts255export function convertThreadMessageToUIMessage(CODE
LOWweb-app/src/lib/messages.ts402export function uiMessageHasMeaningfulContent(message: {CODE
LOWweb-app/src/lib/messages.ts452export function convertThreadMessagesToUIMessages(CODE
LOWweb-app/src/lib/messages.ts491export function extractContentPartsFromUIMessage(message: UIMessage): ThreadContent[] {CODE
LOWweb-app/src/lib/reasoningProviderOptions.ts58export function buildReasoningProviderOptions(CODE
LOWweb-app/src/lib/utils.ts34export function disableIndentedCodeBlockPlugin() {CODE
LOWweb-app/src/lib/backendDependencies.ts26export function getInstallRecommendations(CODE
LOWweb-app/src/lib/mcp-router-model-filter.ts48export function isLikelyLightweightRouterModel(model: Model): boolean {CODE
LOWweb-app/src/lib/thinkingBudget.ts26export function tokensForThinkingBudgetLevel(CODE
LOWweb-app/src/lib/remoteModelCatalog.ts155function inferAnthropicCapabilities(id: string): string[] | null {CODE
LOWweb-app/src/lib/context-manager.ts96export function estimateConversationTokens(CODE
LOWweb-app/src/lib/toolCallRepair.ts12export function sanitizeInvalidJsonEscapes(raw: string): string {CODE
LOWweb-app/src/lib/providerCaps.ts191export function buildsOwnToolImageRequest(CODE
LOWweb-app/src/lib/providerCaps.ts208export function isPredefinedRemoteProvider(CODE
LOWweb-app/src/lib/citation-parser.ts86export function parseCitationsFromToolOutput(CODE
LOWweb-app/src/containers/DownloadButton.tsx27export function DownloadButtonPlaceholder({CODE
LOWweb-app/src/containers/ParametersSection.tsx462function isGroupCapabilitySupported(CODE
LOWweb-app/src/containers/TokenCounterCompactSwitcher.tsx4export function TokenCounterCompactSwitcher() {CODE
LOWweb-app/src/containers/NotificationPositionSwitcher.tsx30export function NotificationPositionSwitcher() {CODE
LOW…p/src/containers/dialogs/MissingDependenciesDialog.tsx23export default function MissingDependenciesDialog() {CODE
LOW…p/src/containers/dialogs/ImportLlamacppModelDialog.tsx126function detectEmbeddingFromMetadata(CODE
LOW…p/src/containers/dialogs/JanBrowserExtensionDialog.tsx31export default function JanBrowserExtensionDialog({CODE
LOWweb-app/src/containers/dialogs/llamacppRouterError.ts23export function stampErrorOnLastUserMessage(CODE
LOW…containers/dialogs/DeleteAllThreadsInProjectDialog.tsx25export function DeleteAllThreadsInProjectDialog({CODE
LOW…p/src/containers/dialogs/AttachmentIngestionDialog.tsx14export default function AttachmentIngestionDialog() {CODE
LOWweb-app/src/routes/threads/$threadId.tsx342function stampContextErrorOnThread(CODE
LOWweb-app/src/services/app/console-logger.ts18export function installConsoleLogForwarding(): void {CODE
65 more matches not shown…
Fake / Example Data96 hits · 94 pts
SeverityFileLineSnippetContext
LOWweb-app/src/locales/de-DE/mcp-servers.json36 "placeholder": "JSON Konfiguration eingeben",CODE
LOWweb-app/src/locales/de-DE/common.json130 "placeholder": {CODE
LOWweb-app/src/locales/de-DE/common.json181 "placeholder": "JSON-Konfiguration eingeben...",CODE
LOWweb-app/src/locales/pl/mcp-servers.json36 "placeholder": "Wprowadź konfigurację JSON",CODE
LOWweb-app/src/locales/pl/common.json128 "placeholder": {CODE
LOWweb-app/src/locales/pl/common.json175 "placeholder": "Wprowadź konfigurację JSON…",CODE
LOWweb-app/src/locales/vn/mcp-servers.json36 "placeholder": "Nhập cấu hình JSON",CODE
LOWweb-app/src/locales/vn/common.json135 "placeholder": {CODE
LOWweb-app/src/locales/vn/common.json181 "placeholder": "Nhập cấu hình JSON...",CODE
LOWweb-app/src/locales/ja/mcp-servers.json36 "placeholder": "JSON構成を入力",CODE
LOWweb-app/src/locales/ja/common.json148 "placeholder": {CODE
LOWweb-app/src/locales/ja/common.json203 "placeholder": "JSON構成を入力...",CODE
LOWweb-app/src/locales/ja/providers.json97 "placeholder": "sk-…\nsk-…",CODE
LOWweb-app/src/locales/it/mcp-servers.json36 "placeholder": "Inserisci la configurazione JSON",CODE
LOWweb-app/src/locales/it/common.json143 "placeholder": {CODE
LOWweb-app/src/locales/it/common.json195 "placeholder": "Inserisci configurazione JSON...",CODE
LOWweb-app/src/locales/it/providers.json91 "placeholder": "sk-…\nsk-…",CODE
LOWweb-app/src/locales/ca/mcp-servers.json36 "placeholder": "Introdueix la configuració JSON",CODE
LOWweb-app/src/locales/ca/common.json123 "placeholder": {CODE
LOWweb-app/src/locales/ca/common.json175 "placeholder": "Introdueix la configuració JSON...",CODE
LOWweb-app/src/locales/cs/mcp-servers.json36 "placeholder": "Zadejte konfiguraci JSON",CODE
LOWweb-app/src/locales/cs/common.json130 "placeholder": {CODE
LOWweb-app/src/locales/cs/common.json182 "placeholder": "Zadejte konfiguraci JSON...",CODE
LOWweb-app/src/locales/ru/mcp-servers.json36 "placeholder": "Введите конфигурацию JSON",CODE
LOWweb-app/src/locales/ru/common.json130 "placeholder": {CODE
LOWweb-app/src/locales/ru/common.json182 "placeholder": "Введите конфигурацию JSON",CODE
LOWweb-app/src/locales/zh-CN/mcp-servers.json36 "placeholder": "输入 JSON 配置",CODE
LOWweb-app/src/locales/zh-CN/common.json142 "placeholder": {CODE
LOWweb-app/src/locales/zh-CN/common.json188 "placeholder": "输入 JSON 配置...",CODE
LOWweb-app/src/locales/zh-TW/mcp-servers.json36 "placeholder": "輸入 JSON 設定",CODE
LOWweb-app/src/locales/zh-TW/common.json142 "placeholder": {CODE
LOWweb-app/src/locales/zh-TW/common.json188 "placeholder": "輸入 JSON 組態...",CODE
LOWweb-app/src/locales/pt-BR/mcp-servers.json36 "placeholder": "Digite a configuração JSON",CODE
LOWweb-app/src/locales/pt-BR/common.json128 "placeholder": {CODE
LOWweb-app/src/locales/pt-BR/common.json179 "placeholder": "Entre com a configuração do JSON...",CODE
LOWweb-app/src/locales/hi/settings.json398 "placeholder": "यहाँ अपना बॉट टोकन पेस्ट करें",CODE
LOWweb-app/src/locales/hi/mcp-servers.json36 "placeholder": "JSON कॉन्फ़िगरेशन दर्ज करें",CODE
LOWweb-app/src/locales/hi/common.json142 "placeholder": {CODE
LOWweb-app/src/locales/hi/common.json194 "placeholder": "JSON कॉन्फ़िगरेशन दर्ज करें...",CODE
LOWweb-app/src/locales/ko/settings.json398 "placeholder": "여기에 봇 토큰을 붙여넣으세요",CODE
LOWweb-app/src/locales/ko/mcp-servers.json36 "placeholder": "JSON 설정을 입력하세요",CODE
LOWweb-app/src/locales/ko/common.json141 "placeholder": {CODE
LOWweb-app/src/locales/ko/common.json193 "placeholder": "JSON 구성을 입력하세요...",CODE
LOWweb-app/src/locales/id/mcp-servers.json36 "placeholder": "Masukkan konfigurasi JSON",CODE
LOWweb-app/src/locales/id/common.json130 "placeholder": {CODE
LOWweb-app/src/locales/id/common.json181 "placeholder": "Masukkan konfigurasi JSON...",CODE
LOWweb-app/src/locales/fr/mcp-servers.json36 "placeholder": "Entrez la configuration JSON",CODE
LOWweb-app/src/locales/fr/common.json130 "placeholder": {CODE
LOWweb-app/src/locales/fr/common.json181 "placeholder": "Entrez la configuration JSON...",CODE
LOWweb-app/src/locales/es/settings.json398 "placeholder": "Pega tu token del bot aquí",CODE
LOWweb-app/src/locales/es/mcp-servers.json36 "placeholder": "Ingresa la configuración JSON",CODE
LOWweb-app/src/locales/es/common.json142 "placeholder": {CODE
LOWweb-app/src/locales/es/common.json194 "placeholder": "Ingresa la configuración JSON...",CODE
LOWweb-app/src/locales/en/mcp-servers.json36 "placeholder": "Enter JSON configuration",CODE
LOWweb-app/src/locales/en/common.json243 "placeholder": {CODE
LOWweb-app/src/locales/en/common.json298 "placeholder": "Enter JSON configuration...",CODE
LOWweb-app/src/locales/en/common.json769 "placeholder": "Ask for a plan. The agent won't change any files."CODE
LOWweb-app/src/locales/en/providers.json113 "placeholder": "sk-…\nsk-…",CODE
LOWweb-app/src/containers/__tests__/ModelCombobox.test.tsx79 expect(input).toHaveAttribute('placeholder', 'Type or select a model...')CODE
LOWweb-app/src/containers/__tests__/ModelCombobox.test.tsx88 expect(input).toHaveAttribute('placeholder', 'Choose a model')CODE
36 more matches not shown…
Modern AI Meta-Vocabulary22 hits · 65 pts
SeverityFileLineSnippetContext
MEDIUMweb-app/src/components/ai-elements/chain-of-thought.tsx150 // Accumulated, not replaced: an agentic turn reasons, answers, thenCOMMENT
MEDIUM…-elements/__tests__/chain-of-thought-duration.test.tsx84 // An agentic turn reasons, answers, then reasons again. Each window used toCOMMENT
MEDIUMweb-app/src/hooks/useSkills.ts18// [] -> all skills enabled (scaffold default; backward compatible)COMMENT
MEDIUMweb-app/src/lib/__tests__/skillStore.test.ts94 // guest-js would silently drop the scaffold.COMMENT
MEDIUMsrc-tauri/jan-cli/src/main.rs188 /// Fail the run after at most N agentic turns; bounds this run only, notCOMMENT
MEDIUM…c-tauri/plugins/tauri-plugin-agent-tools/src/skills.rs348/// (backward-compatible with the agent.toml scaffold, which ships `enabled = []`).COMMENT
MEDIUMsrc-tauri/src/core/agent/global_config.rs1856 // the scaffold are not preserved, but no provider data is lost).COMMENT
MEDIUMsrc-tauri/src/core/agent/store_migration.rs151 // An empty store directory (a scaffold from an earlier launch that foundCOMMENT
MEDIUMsrc-tauri/src/core/agent/skills.rs735/// (backward-compatible with the agent.toml scaffold, which ships `enabled = []`).COMMENT
MEDIUMsrc-tauri/src/core/agent/project.rs173/// `enabled` list means "all skills" (backward-compatible with the scaffoldCOMMENT
MEDIUMsrc-tauri/src/core/agent/project.rs349# run. Defaults to the model's context window when unset (128000 if the windowCOMMENT
MEDIUMsrc-tauri/src/core/agent/project.rs673/// Delete keys an older scaffold wrote that nothing reads any more, in place andCOMMENT
MEDIUMsrc-tauri/src/core/agent/project.rs675/// agent.toml is Jan's own scaffold in Jan's store, so tidying it here beats aCOMMENT
MEDIUMsrc-tauri/src/core/agent/project.rs961 /// The scaffold documents the key, so it has to stay parseable as written.COMMENT
MEDIUMsrc-tauri/src/core/agent/project.rs971 // A mistyped --project (e.g. wrong case) must fail fast, not scaffold aCOMMENT
MEDIUMsrc-tauri/src/core/agent/project.rs984 /// user's (or `/init`'s) to create -- the scaffold must not plant an emptyCOMMENT
MEDIUMsrc-tauri/src/core/agent/project.rs1295 /// The scaffold leaves the key commented out, so a fresh project picks upCOMMENT
MEDIUMsrc-tauri/src/core/agent/compaction.rs251/// one. Forward first, since that drops the most; but a long agentic run underCOMMENT
MEDIUMsrc-tauri/src/core/agent/compaction.rs987 /// One prompt driving a long agentic run is the normal shape here: a singleCOMMENT
MEDIUMsrc-tauri/src/core/agent/context.rs240const SUBAGENT_GUIDE: &str = "# Subagents\n\nYour own context window is limited. For open-ended exploration \CODE
MEDIUMsrc-tauri/src/core/cli/mod.rs1550 /// `--max-turns`: hard cap on agentic turns for this run, and the onlyCOMMENT
MEDIUMsrc-tauri/src/core/cli/mod.rs1687 /// `--max-turns`: hard cap on agentic turns, and the only setting thatCOMMENT
Empty Error Handlers7 hits · 35 pts
SeverityFileLineSnippetContext
HIGHadk/python/jan_adk/session.py408except Exception: # noqa: BLE001 - nothing left to tellCODE
HIGHadk/python/jan_adk/runtime.py400except (ProcessLookupError, OSError):CODE
HIGHadk/python/jan_adk/runtime.py346except OSError:CODE
HIGHscripts/adk-nightly/smoke_client.py52except ProcessLookupError:CODE
HIGHautoqa/utils.py32except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):CODE
HIGHautoqa/utils.py49except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):CODE
HIGHautoqa/main.py128except:CODE
Hallucination Indicators3 hits · 30 pts
SeverityFileLineSnippetContext
CRITICALweb-app/src/routes/threads/__tests__/$threadId.test.tsx1034 const added = h.messagesState.addMessage.mock.calls.map((c: any[]) => c[0])CODE
CRITICALweb-app/src/routes/threads/__tests__/$threadId.test.tsx1063 const added = h.messagesState.addMessage.mock.calls.map((c: any[]) => c[0])CODE
CRITICALweb-app/src/routes/threads/__tests__/$threadId.test.tsx1078 const added = h.messagesState.addMessage.mock.calls.map((c: any[]) => c[0])CODE
Excessive Try-Catch Wrapping34 hits · 30 pts
SeverityFileLineSnippetContext
LOWadk/python/jan_adk/session.py393 except Exception as error: # noqa: BLE001 - classified belowCODE
LOWadk/python/jan_adk/session.py408 except Exception: # noqa: BLE001 - nothing left to tellCODE
LOWadk/python/jan_adk/runtime.py424 except Exception as error: # noqa: BLE001 - one bad frame must not stop the readerCODE
LOWadk/python/jan_adk/runtime.py502 except Exception as error: # noqa: BLE001 - a listener chose to raiseCODE
LOWadk/python/jan_adk/errors.py68 except Exception: # noqa: BLE001CODE
LOWexamples/adk/python/host_tool.py101 except Exception as error: # the model sees this as the tool's errorCODE
LOWautoqa/reportportal_handler.py40 except Exception as e:CODE
LOWautoqa/reportportal_handler.py64 except Exception as e:CODE
LOWautoqa/reportportal_handler.py161 except Exception as e:CODE
LOWautoqa/reportportal_handler.py207 except Exception as e:CODE
LOWautoqa/reportportal_handler.py265 except Exception as e:CODE
LOWautoqa/reportportal_handler.py282 except Exception as e:CODE
LOWautoqa/reportportal_handler.py328 except Exception as e:CODE
LOWautoqa/reportportal_handler.py395 except Exception as e:CODE
LOWautoqa/reportportal_handler.py433 except Exception as e:CODE
LOWautoqa/screen_recorder.py76 except Exception as e:CODE
LOWautoqa/screen_recorder.py80 except Exception as e:CODE
LOWautoqa/utils.py163 except Exception as e:STRING
LOWautoqa/utils.py201 except Exception as e:STRING
LOWautoqa/utils.py217 except Exception as e2:STRING
LOWautoqa/utils.py285 except Exception as e:STRING
LOWautoqa/utils.py316 except Exception as e:STRING
LOW⚡autoqa/test_runner.py143 except Exception as e:CODE
LOW⚡autoqa/test_runner.py201 except Exception as e:CODE
LOWautoqa/test_runner.py185 except Exception as e:CODE
LOWautoqa/test_runner.py249 except Exception as e:CODE
LOWautoqa/test_runner.py257 except Exception as upload_error:CODE
LOWautoqa/main.py120 except Exception as e:CODE
LOWautoqa/main.py151 except Exception as e:CODE
LOWautoqa/main.py380 except Exception as e:STRING
LOWautoqa/main.py451 except Exception as e:STRING
LOWautoqa/main.py480 except Exception as e:STRING
LOWautoqa/main.py493 except Exception as e:STRING
MEDIUMautoqa/main.py106def run_server():CODE
Unused Imports29 hits · 28 pts
SeverityFileLineSnippetContext
LOWadk/python/tests/test_adk.py14CODE
LOWadk/python/tests/harness.py9CODE
LOWadk/python/tests/test_install.py10CODE
LOWadk/python/jan_adk/_generated.py5CODE
LOWadk/python/jan_adk/session.py3CODE
LOWadk/python/jan_adk/__init__.py19CODE
LOWadk/python/jan_adk/__init__.py19CODE
LOWadk/python/jan_adk/__init__.py20CODE
LOWadk/python/jan_adk/__init__.py20CODE
LOWadk/python/jan_adk/__init__.py21CODE
LOWadk/python/jan_adk/__init__.py21CODE
LOWadk/python/jan_adk/__init__.py21CODE
LOWadk/python/jan_adk/__init__.py21CODE
LOWadk/python/jan_adk/__init__.py21CODE
LOWadk/python/jan_adk/__init__.py21CODE
LOWadk/python/jan_adk/__init__.py21CODE
LOWadk/python/jan_adk/__init__.py21CODE
LOWadk/python/jan_adk/__init__.py21CODE
LOWadk/python/jan_adk/__init__.py32CODE
LOWadk/python/jan_adk/__init__.py32CODE
LOWadk/python/jan_adk/__init__.py33CODE
LOWadk/python/jan_adk/__init__.py33CODE
LOWadk/python/jan_adk/__init__.py33CODE
LOWadk/python/jan_adk/__init__.py33CODE
LOWadk/python/jan_adk/__init__.py33CODE
LOWadk/python/jan_adk/_queue.py8CODE
LOWadk/python/jan_adk/runtime.py9CODE
LOWadk/python/jan_adk/install.py21CODE
LOWadk/python/jan_adk/errors.py7CODE
Redundant / Tautological Comments15 hits · 22 pts
SeverityFileLineSnippetContext
LOW…orkflows/template-tauri-build-windows-x64-external.yml84 # Check if it has a "-"COMMENT
LOW…orkflows/template-tauri-build-windows-x64-external.yml88 # Check if it is rcX-betaCOMMENT
LOW.github/workflows/template-tauri-build-windows-x64.yml196 # Check if it has a "-"COMMENT
LOW.github/workflows/template-tauri-build-windows-x64.yml200 # Check if it is rcX-betaCOMMENT
LOW.github/workflows/autoqa-template.yml393 # Check if Homebrew is availableCOMMENT
LOW.github/scripts/rename-uninstaller.sh6# Check if the correct number of arguments is providedCOMMENT
LOW.github/scripts/rename-uninstaller.sh14# Check if the file existsCOMMENT
LOW.github/scripts/rename-app.sh3# Check if the correct number of arguments is providedCOMMENT
LOW.github/scripts/rename-app.sh19# Check if the input file existsCOMMENT
LOW.github/scripts/auto-sign.sh3# Check if both APP_PATH and DEVELOPER_ID environment variables are setCOMMENT
LOW.github/scripts/rename-tauri-app.sh3# Check if the correct number of arguments is providedCOMMENT
LOW.github/scripts/rename-tauri-app.sh19# Check if the input file existsCOMMENT
LOW.github/scripts/rename-workspace.sh8# Check if the file existsCOMMENT
LOWautoqa/utils.py304 # Read file contentSTRING
LOWautoqa/main.py139 # Check if thread is still alive (server is running)COMMENT
Verbosity Indicators10 hits · 20 pts
SeverityFileLineSnippetContext
LOWdocs/src/components/OAICoverage/index.tsx109 // Step 2: Find the first date for each groupCOMMENT
LOW⚡autoqa/test_runner.py82 # Step 1: Check and force close Jan app if runningCOMMENT
LOW⚡autoqa/test_runner.py87 # Step 2: Start Jan app in maximized modeCOMMENT
LOW⚡autoqa/test_runner.py93 # Step 3: Start screen recordingCOMMENT
LOW⚡autoqa/test_runner.py96 # Step 4: Create agent for this test using configCOMMENT
LOW⚡autoqa/test_runner.py151 # Step 6: Run the test with promptCOMMENT
LOW⚡autoqa/test_runner.py197 # Step 7: Stop screen recordingCOMMENT
LOW⚡autoqa/test_runner.py204 # Step 8: Upload results to ReportPortal only if enabledCOMMENT
LOWautoqa/test_runner.py108 # Step 5: Start monitoring threadCOMMENT
LOWautoqa/test_runner.py317 # Step 9: Always force close Jan app after test completionCOMMENT
AI Slop Vocabulary7 hits · 20 pts
SeverityFileLineSnippetContext
MEDIUMweb-app/src/lib/custom-chat-transport.ts1744 // user sees a seamless continuation rather than an empty box.COMMENT
MEDIUMadk/python/jan_adk/_generated.py518 # SHA-256 of the request body as Jan built it, as canonical JSON: every object's keys sorted, recursively, so re-encCOMMENT
MEDIUMscripts/find-missing-i18n-key.js72 /\bt\(\s*["']([^"']+)["']\s*(?:,\s*[^)]+)?\)/g, // Match t("key") format with optional parameters - simplified and morCODE
MEDIUM.github/workflows/e2e-suite.yml2# platforms. e2e-check.yml is the per-PR gate and only type-checks the harness;COMMENT
MEDIUM.github/workflows/e2e-suite.yml148 # Produces the debug binary the harness expects atCOMMENT
MEDIUMsrc-tauri/src/core/openai_schema.rs51/// To be robust, we default `type` to `"string"` for description-only leaf schemasCOMMENT
MEDIUMsrc-tauri/src/core/agent/goal.rs71 /// Seconds elapsed since the goal was set (saturating; robust to clock skew).COMMENT
Structural Annotation Overuse10 hits · 20 pts
SeverityFileLineSnippetContext
LOWdocs/src/components/OAICoverage/index.tsx109 // Step 2: Find the first date for each groupCOMMENT
LOW⚡autoqa/test_runner.py82 # Step 1: Check and force close Jan app if runningCOMMENT
LOW⚡autoqa/test_runner.py87 # Step 2: Start Jan app in maximized modeCOMMENT
LOW⚡autoqa/test_runner.py93 # Step 3: Start screen recordingCOMMENT
LOW⚡autoqa/test_runner.py96 # Step 4: Create agent for this test using configCOMMENT
LOW⚡autoqa/test_runner.py151 # Step 6: Run the test with promptCOMMENT
LOW⚡autoqa/test_runner.py197 # Step 7: Stop screen recordingCOMMENT
LOW⚡autoqa/test_runner.py204 # Step 8: Upload results to ReportPortal only if enabledCOMMENT
LOWautoqa/test_runner.py108 # Step 5: Start monitoring threadCOMMENT
LOWautoqa/test_runner.py317 # Step 9: Always force close Jan app after test completionCOMMENT
Deep Nesting13 hits · 12 pts
SeverityFileLineSnippetContext
LOWadk/python/jan_adk/install.py358CODE
LOWexamples/adk/python/host_tool.py47CODE
LOWexamples/adk/python/first_turn.py20CODE
LOWautoqa/reportportal_handler.py12CODE
LOWautoqa/reportportal_handler.py93CODE
LOWautoqa/reportportal_handler.py192CODE
LOWautoqa/reportportal_handler.py291CODE
LOWautoqa/utils.py58CODE
LOWautoqa/utils.py168CODE
LOWautoqa/utils.py221CODE
LOWautoqa/test_runner.py18CODE
LOWautoqa/test_runner.py109CODE
LOWautoqa/main.py287CODE
Modern Structural Boilerplate6 hits · 6 pts
SeverityFileLineSnippetContext
LOWadk/python/jan_adk/__init__.py37__all__ = [CODE
LOWautoqa/reportportal_handler.py10logger = logging.getLogger(__name__)CODE
LOWautoqa/screen_recorder.py8logger = logging.getLogger(__name__)CODE
LOWautoqa/utils.py10logger = logging.getLogger(__name__)CODE
LOWautoqa/test_runner.py16logger = logging.getLogger(__name__)CODE
LOWautoqa/main.py24logger = logging.getLogger(__name__)CODE
Cross-Language Confusion1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHadk/python/jan_adk/session.py119 self._queue.push(event)CODE
Self-Referential Comments1 hit · 4 pts
SeverityFileLineSnippetContext
MEDIUM⚡autoqa/test_runner.py155 # Create the agent taskCOMMENT
Example Usage Blocks2 hits · 4 pts
SeverityFileLineSnippetContext
LOW⚡build-tui.sh8# Usage:COMMENT
LOWjan-agent.sh3# Usage:COMMENT
AI Structural Patterns2 hits · 2 pts
SeverityFileLineSnippetContext
LOWadk/python/jan_adk/runtime.py71CODE
LOWadk/python/jan_adk/runtime.py201CODE