The most powerful AI agent and AI chat software on Android/Operit是一款Android上能力最为强大、发展最久的AI Agent
This report summarizes scanner evidence for AAswordman/Operit, a Kotlin project with 9,138 GitHub stars. SynthScan examined 801,949 lines of code across 2634 source files, recording 1141 pattern matches distributed across 19 syntactic categories. The legacy adjusted pattern signal is 4.1 (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? 677 finding(s).
Are imports declared and package/API names verified? 214 finding(s).
Are wrappers, guards, and repeated structures necessary? 772 finding(s).
Which changes need focused human review? 1141 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 1141 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.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | tools/compose_dsl/generate_compose_dsl_artifacts.py | 1248 | androidx.compose.ui.text.input.PasswordVisualTransformation() | STRING |
| CRITICAL | …e/operit/ui/features/token/TokenConfigWebViewScreen.kt | 69 | val urlConfig by urlConfigManager.urlConfigFlow.collectAsState(initial = com.ai.assistance.operit.ui.features.token. | CODE |
| CRITICAL | …rit/ui/features/demo/components/PermissionLevelCard.kt | 969 | com.ai.assistance.operit.core.tools.system.ShizukuInstaller.isShizukuUpdateNeeded( | CODE |
| CRITICAL | …i/features/settings/sections/ModelParametersSection.kt | 741 | return com.ai.assistance.operit.data.model.CustomParameterData( | CODE |
| CRITICAL | …i/features/settings/sections/ModelParametersSection.kt | 1088 | com.ai.assistance.operit.data.model.CustomParameterData( | CODE |
| CRITICAL | …operit/ui/features/memory/viewmodel/MemoryViewModel.kt | 396 | com.ai.assistance.operit.util.AppLogger.d("MemoryViewModel", "Loaded ${folders.size} folders: $folders") | CODE |
| CRITICAL | …operit/ui/features/memory/viewmodel/MemoryViewModel.kt | 499 | com.ai.assistance.operit.util.AppLogger.d("MemoryVM", "Node click on doc, searching with global | CODE |
| CRITICAL | …operit/ui/features/memory/viewmodel/MemoryViewModel.kt | 502 | com.ai.assistance.operit.util.AppLogger.d("MemoryVM", "Node click on doc, no global query. Getti | CODE |
| CRITICAL | …operit/ui/features/memory/viewmodel/MemoryViewModel.kt | 722 | com.ai.assistance.operit.util.AppLogger.d("MemoryViewModel", "No nodes selected, aborting delete.") | CODE |
| CRITICAL⚡ | …operit/ui/features/memory/viewmodel/MemoryViewModel.kt | 737 | com.ai.assistance.operit.util.AppLogger.d("MemoryViewModel", "deleteSelectedNodes called with ${selectedIds. | CODE |
| CRITICAL⚡ | …operit/ui/features/memory/viewmodel/MemoryViewModel.kt | 739 | com.ai.assistance.operit.util.AppLogger.d("MemoryViewModel", "No nodes selected, aborting delete.") | CODE |
| CRITICAL⚡ | …operit/ui/features/memory/viewmodel/MemoryViewModel.kt | 745 | com.ai.assistance.operit.util.AppLogger.d("MemoryViewModel", "Calling repository.deleteMemoriesByUuids w | CODE |
| CRITICAL⚡ | …operit/ui/features/memory/viewmodel/MemoryViewModel.kt | 748 | com.ai.assistance.operit.util.AppLogger.d("MemoryViewModel", "Graph refreshed after deletion.") | CODE |
| CRITICAL | …operit/ui/features/memory/viewmodel/MemoryViewModel.kt | 760 | com.ai.assistance.operit.util.AppLogger.e("MemoryViewModel", "Failed to delete selected memories", e) | CODE |
| CRITICAL | …ance/operit/ui/features/memory/screens/MemoryScreen.kt | 278 | com.ai.assistance.operit.util.AppLogger.d( | CODE |
| CRITICAL | …ance/operit/ui/features/memory/screens/MemoryScreen.kt | 292 | com.ai.assistance.operit.util.AppLogger.d( | CODE |
| CRITICAL | …/operit/ui/features/tokenstats/TokenStatsComponents.kt | 1453 | com.ai.assistance.operit.data.stats.ModelPriceSettings( | CODE |
| CRITICAL | …/operit/ui/features/tokenstats/TokenStatsComponents.kt | 1466 | com.ai.assistance.operit.data.stats.ModelPriceSettings( | CODE |
| CRITICAL | …nce/operit/ui/features/tokenstats/TokenStatsDialogs.kt | 63 | return com.ai.assistance.operit.data.stats.TokenStatsTimeRanges.customRange(startMs, endMs) | CODE |
| CRITICAL | …/chat/components/style/cursor/UserMessageComposable.kt | 437 | com.ai.assistance.operit.util.AppLogger.e("UserMessageComposable", "Failed to decode image: $id", e) | CODE |
| CRITICAL | …/chat/components/style/cursor/UserMessageComposable.kt | 652 | com.ai.assistance.operit.util.AppLogger.e("UserMessageComposable", "Failed to parse message content", e) | CODE |
| CRITICAL | …/components/style/input/agent/AgentChatInputSection.kt | 3247 | private fun androidx.compose.ui.graphics.drawscope.DrawScope.drawRoundedTopEdge( | CODE |
| CRITICAL | …components/style/bubble/BubbleUserMessageComposable.kt | 1010 | com.ai.assistance.operit.util.AppLogger.e("BubbleUserMessageComposable", "Failed to parse message content", e) | CODE |
| CRITICAL | …/ui/features/chat/components/part/CustomXmlRenderer.kt | 365 | com.ai.assistance.operit.ui.common.displays.MarkdownTextComposable( | CODE |
| CRITICAL | …it/ui/features/workflow/viewmodel/WorkflowViewModel.kt | 1471 | val newConnection = com.ai.assistance.operit.data.model.WorkflowNodeConnection( | CODE |
| CRITICAL | …res/toolbox/screens/htmlpackager/HtmlPackagerScreen.kt | 350 | com.ai.assistance.operit.util.AppLogger.e("HtmlPackager", "Failed to copy file: ${docFile.name}", e) | CODE |
| CRITICAL | …s/toolbox/screens/ffmpegtoolbox/FFmpegToolboxScreen.kt | 144 | result = com.ai.assistance.operit.core.tools.StringResultData(""), | CODE |
| CRITICAL | …s/toolbox/screens/ffmpegtoolbox/FFmpegToolboxScreen.kt | 254 | result = com.ai.assistance.operit.core.tools.StringResultData(""), | CODE |
| CRITICAL | …eatures/toolbox/screens/tooltester/ToolTesterScreen.kt | 148 | item(span = { androidx.compose.foundation.lazy.grid.GridItemSpan(maxLineSpan) }) { | CODE |
| CRITICAL | …ox/screens/filemanager/components/ToolbarComponents.kt | 511 | imageVector = com.ai.assistance.operit.ui.features.toolbox.screens.filemanager.utils.getFile | CODE |
| CRITICAL | …/ui/features/packages/screens/ArtifactPublishScreen.kt | 98 | private fun com.ai.assistance.operit.data.api.MarketV2Entry.toArtifactPublishEditInfo(): ArtifactPublishEditInfo { | CODE |
| CRITICAL | …/ui/features/packages/screens/ArtifactPublishScreen.kt | 119 | fun com.ai.assistance.operit.data.api.MarketV2Entry.toArtifactPublishClusterContext( | CODE |
| CRITICAL⚡ | …operit/ui/features/packages/screens/MCPConfigScreen.kt | 166 | com.ai.assistance.operit.util.AppLogger.d("MCPConfigScreen", "初始化 - 检查服务器状态") | CODE |
| CRITICAL⚡ | …operit/ui/features/packages/screens/MCPConfigScreen.kt | 175 | com.ai.assistance.operit.util.AppLogger.d("MCPConfigScreen", "MCP服务器已在运行") | CODE |
| CRITICAL⚡ | …operit/ui/features/packages/screens/MCPConfigScreen.kt | 177 | com.ai.assistance.operit.util.AppLogger.d("MCPConfigScreen", "MCP服务器未运行") | CODE |
| CRITICAL⚡ | …operit/ui/features/packages/screens/MCPConfigScreen.kt | 181 | com.ai.assistance.operit.util.AppLogger.d("MCPConfigScreen", "已安装的MCP插件列表:") | CODE |
| CRITICAL⚡ | …operit/ui/features/packages/screens/MCPConfigScreen.kt | 185 | com.ai.assistance.operit.util.AppLogger.d("MCPConfigScreen", "插件ID: $pluginId, 已启用: $isEnabled") | CODE |
| CRITICAL⚡ | …operit/ui/features/packages/screens/MCPConfigScreen.kt | 187 | com.ai.assistance.operit.util.AppLogger.e("MCPConfigScreen", "无法读取插件 $pluginId 的启用状态: ${e.message}") | CODE |
| CRITICAL | …operit/ui/features/packages/screens/MCPConfigScreen.kt | 465 | com.ai.assistance.operit.ui.features.packages.screens.mcp.components.MCPDeployConfirmDialog( | CODE |
| CRITICAL | …operit/ui/features/packages/screens/MCPConfigScreen.kt | 505 | com.ai.assistance.operit.ui.features.packages.screens.mcp.components.MCPCommandsEditDialog( | CODE |
| CRITICAL | …operit/ui/features/packages/screens/MCPConfigScreen.kt | 1077 | val launcher = registry.register("zip_picker", androidx.activity.result.contract.ActivityRes | CODE |
| CRITICAL | …/screens/artifact/viewmodel/ArtifactMarketViewModel.kt | 551 | metric = com.ai.assistance.operit.ui.features.packages.market.MarketSortOption.UPDATED.toRankMetric(), | CODE |
| CRITICAL | …/screens/artifact/viewmodel/ArtifactMarketViewModel.kt | 572 | metric = com.ai.assistance.operit.ui.features.packages.market.MarketSortOption.UPDATED.toRankMetric(), | CODE |
| CRITICAL | …it/ui/features/performance/PerformanceMonitorScreen.kt | 375 | private fun androidx.compose.foundation.lazy.LazyListScope.entityListItems( | CODE |
| CRITICAL | …operit/ui/common/composedsl/ToolPkgComposeDslScreen.kt | 4710 | com.ai.assistance.operit.ui.common.icons.MaterialIconNameResolver.resolveOrNull(iconKey) | CODE |
| CRITICAL | …mmon/composedsl/ToolPkgComposeDslGeneratedRenderers.kt | 629 | androidx.compose.ui.text.input.PasswordVisualTransformation() | CODE |
| CRITICAL | …mmon/composedsl/ToolPkgComposeDslGeneratedRenderers.kt | 3312 | androidx.compose.foundation.text.selection.DisableSelection( | CODE |
| CRITICAL | …mmon/composedsl/ToolPkgComposeDslGeneratedRenderers.kt | 3368 | androidx.compose.foundation.text.selection.SelectionContainer( | CODE |
| CRITICAL | …/floating/ui/window/screen/FloatingChatWindowScreen.kt | 193 | androidx.compose.ui.unit.Constraints.fixed( | CODE |
| CRITICAL | …ain/java/com/ai/assistance/operit/ui/main/OperitApp.kt | 225 | com.ai.assistance.operit.ui.main.navigation.RouteEntry( | CODE |
| CRITICAL | …ain/java/com/ai/assistance/operit/ui/main/OperitApp.kt | 324 | com.ai.assistance.operit.ui.main.navigation.RouteEntry( | CODE |
| CRITICAL | …ain/java/com/ai/assistance/operit/ui/main/OperitApp.kt | 481 | com.ai.assistance.operit.ui.main.navigation.RouteEntry( | CODE |
| CRITICAL | …/ai/assistance/operit/ui/main/screens/OperitScreens.kt | 686 | com.ai.assistance.operit.ui.features.agreement.screens.AgreementScreen( | CODE |
| CRITICAL | …/ai/assistance/operit/ui/main/screens/OperitScreens.kt | 920 | com.ai.assistance.operit.ui.features.settings.screens.PersonaCardGenerationScreen( | CODE |
| CRITICAL | …/ai/assistance/operit/ui/main/screens/OperitScreens.kt | 941 | com.ai.assistance.operit.ui.features.settings.screens.WaifuModeSettingsScreen( | CODE |
| CRITICAL | …/ai/assistance/operit/ui/main/screens/OperitScreens.kt | 961 | com.ai.assistance.operit.ui.features.settings.screens.CustomEmojiManagementScreen( | CODE |
| CRITICAL | …/tools/defaultTool/standard/StandardFileSystemTools.kt | 1107 | com.ai.assistance.operit.api.chat.EnhancedAIService.getInstance(context) | CODE |
| CRITICAL | …/tools/defaultTool/standard/StandardFileSystemTools.kt | 1256 | val enhancedService = com.ai.assistance.operit.api.chat.EnhancedAIService.getInstance(context) | CODE |
| CRITICAL | …/tools/defaultTool/standard/StandardFileSystemTools.kt | 1342 | val enhancedService = com.ai.assistance.operit.api.chat.EnhancedAIService.getInstance(context) | CODE |
| CRITICAL | …s/defaultTool/websession/browser/BrowserToolSupport.kt | 195 | com.ai.assistance.operit.core.tools.defaultTool.websession.browser.BrowserNetworkRequestEntry( | CODE |
| 100 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | app/src/main/assets/packages/automatic_ui_subagent.js | 0 | 兼容autoglm,提供基于独立ui控制器模型(例如 autoglm-phone-9b)的高层ui自动化子代理工具,用于根据自然语言意图自动规划并执行点击/输入/滑动等一系列界面操作。 当用户提出需要帮忙完成某个界面操作任务(例如打开应用、 | STRING |
| HIGH | examples/automatic_ui_subagent.ts | 0 | 兼容autoglm,提供基于独立ui控制器模型(例如 autoglm-phone-9b)的高层ui自动化子代理工具,用于根据自然语言意图自动规划并执行点击/输入/滑动等一系列界面操作。 当用户提出需要帮忙完成某个界面操作任务(例如打开应用、 | STRING |
| HIGH | examples/automatic_ui_subagent.js | 0 | 兼容autoglm,提供基于独立ui控制器模型(例如 autoglm-phone-9b)的高层ui自动化子代理工具,用于根据自然语言意图自动规划并执行点击/输入/滑动等一系列界面操作。 当用户提出需要帮忙完成某个界面操作任务(例如打开应用、 | STRING |
| HIGH | app/src/main/assets/packages/automatic_ui_subagent.js | 0 | compatible with autoglm. provides a high-level ui automation sub-agent based on an independent ui-controller model (e.g. | STRING |
| HIGH | examples/automatic_ui_subagent.ts | 0 | compatible with autoglm. provides a high-level ui automation sub-agent based on an independent ui-controller model (e.g. | STRING |
| HIGH | examples/automatic_ui_subagent.js | 0 | compatible with autoglm. provides a high-level ui automation sub-agent based on an independent ui-controller model (e.g. | STRING |
| HIGH | app/src/main/assets/packages/automatic_ui_subagent.js | 0 | ui子代理使用建议: - 屏幕选择规则(重要):不传 agent_id 或传 'default' => 主屏幕;传入且不为 'default' => 对应虚拟屏会话(虚拟屏必须可用,否则会失败)。 - 会话复用(重要):多次调用尽量复用同一 | STRING |
| HIGH | examples/automatic_ui_subagent.ts | 0 | ui子代理使用建议: - 屏幕选择规则(重要):不传 agent_id 或传 'default' => 主屏幕;传入且不为 'default' => 对应虚拟屏会话(虚拟屏必须可用,否则会失败)。 - 会话复用(重要):多次调用尽量复用同一 | STRING |
| HIGH | examples/automatic_ui_subagent.js | 0 | ui子代理使用建议: - 屏幕选择规则(重要):不传 agent_id 或传 'default' => 主屏幕;传入且不为 'default' => 对应虚拟屏会话(虚拟屏必须可用,否则会失败)。 - 会话复用(重要):多次调用尽量复用同一 | STRING |
| HIGH | app/src/main/assets/packages/automatic_ui_subagent.js | 0 | ui sub-agent usage advice: - screen selection rule (important): omitted agent_id or 'default' => main screen; provided a | STRING |
| HIGH | examples/automatic_ui_subagent.ts | 0 | ui sub-agent usage advice: - screen selection rule (important): omitted agent_id or 'default' => main screen; provided a | STRING |
| HIGH | examples/automatic_ui_subagent.js | 0 | ui sub-agent usage advice: - screen selection rule (important): omitted agent_id or 'default' => main screen; provided a | STRING |
| HIGH | app/src/main/assets/packages/automatic_ui_subagent.js | 0 | 并行运行 1-4 个 ui 子代理(强制虚拟屏)。 注意:并行调用时,每个子代理对它自身都是全新对话,因此 intent_1..4 需要由主agent分别写清楚“已完成/下一步/关键信息”。 建议并行时每个子代理使用不同的 agent_id | STRING |
| HIGH | examples/automatic_ui_subagent.ts | 0 | 并行运行 1-4 个 ui 子代理(强制虚拟屏)。 注意:并行调用时,每个子代理对它自身都是全新对话,因此 intent_1..4 需要由主agent分别写清楚“已完成/下一步/关键信息”。 建议并行时每个子代理使用不同的 agent_id | STRING |
| HIGH | examples/automatic_ui_subagent.js | 0 | 并行运行 1-4 个 ui 子代理(强制虚拟屏)。 注意:并行调用时,每个子代理对它自身都是全新对话,因此 intent_1..4 需要由主agent分别写清楚“已完成/下一步/关键信息”。 建议并行时每个子代理使用不同的 agent_id | STRING |
| HIGH | app/src/main/assets/packages/automatic_ui_subagent.js | 0 | ui子代理使用建议(主屏模式): - 屏幕选择规则(重要):主屏模式始终在主屏幕执行;agent_id 会被忽略/不适用。 - 启动前置(非常重要):当你第一次需要操作某个应用时,intent 开头必须写“启动xxx应用 ...”,让子代理 | STRING |
| HIGH | examples/automatic_ui_subagent.ts | 0 | ui子代理使用建议(主屏模式): - 屏幕选择规则(重要):主屏模式始终在主屏幕执行;agent_id 会被忽略/不适用。 - 启动前置(非常重要):当你第一次需要操作某个应用时,intent 开头必须写“启动xxx应用 ...”,让子代理 | STRING |
| HIGH | examples/automatic_ui_subagent.js | 0 | ui子代理使用建议(主屏模式): - 屏幕选择规则(重要):主屏模式始终在主屏幕执行;agent_id 会被忽略/不适用。 - 启动前置(非常重要):当你第一次需要操作某个应用时,intent 开头必须写“启动xxx应用 ...”,让子代理 | STRING |
| HIGH | app/src/main/assets/packages/automatic_ui_subagent.js | 0 | ui sub-agent usage advice (main-screen mode): - screen selection rule (important): main-screen mode always operates on t | STRING |
| HIGH | examples/automatic_ui_subagent.ts | 0 | ui sub-agent usage advice (main-screen mode): - screen selection rule (important): main-screen mode always operates on t | STRING |
| HIGH | examples/automatic_ui_subagent.js | 0 | ui sub-agent usage advice (main-screen mode): - screen selection rule (important): main-screen mode always operates on t | STRING |
| HIGH | app/src/main/assets/packages/automatic_ui_subagent.js | 0 | run the ui sub-agent on the main screen (forced main screen). note: main-screen mode does not support virtual sessions a | STRING |
| HIGH | examples/automatic_ui_subagent.ts | 0 | run the ui sub-agent on the main screen (forced main screen). note: main-screen mode does not support virtual sessions a | STRING |
| HIGH | examples/automatic_ui_subagent.js | 0 | run the ui sub-agent on the main screen (forced main screen). note: main-screen mode does not support virtual sessions a | STRING |
| HIGH | app/src/main/assets/packages/workflow.js | 0 | 工作流管理工具:创建/查询/更新/启用/禁用/删除/触发执行;支持 on_success/on_error 分支;支持语音触发(speech)。 | STRING |
| HIGH | examples/workflow.ts | 0 | 工作流管理工具:创建/查询/更新/启用/禁用/删除/触发执行;支持 on_success/on_error 分支;支持语音触发(speech)。 | STRING |
| HIGH | examples/workflow.js | 0 | 工作流管理工具:创建/查询/更新/启用/禁用/删除/触发执行;支持 on_success/on_error 分支;支持语音触发(speech)。 | STRING |
| HIGH | app/src/main/assets/packages/workflow.js | 0 | workflow management tools for creating/querying/updating/enabling/disabling/deleting workflows, triggering execution, an | STRING |
| HIGH | examples/workflow.ts | 0 | workflow management tools for creating/querying/updating/enabling/disabling/deleting workflows, triggering execution, an | STRING |
| HIGH | examples/workflow.js | 0 | workflow management tools for creating/querying/updating/enabling/disabling/deleting workflows, triggering execution, an | STRING |
| HIGH | app/src/main/assets/packages/workflow.js | 0 | 工作流工具使用建议(给 ai): - 核心概念(请优先对齐这些语义): - 节点类型:trigger/execute/condition/logic/extract - 触发节点类型:manual/schedule/tasker/inten | STRING |
| HIGH | examples/workflow.ts | 0 | 工作流工具使用建议(给 ai): - 核心概念(请优先对齐这些语义): - 节点类型:trigger/execute/condition/logic/extract - 触发节点类型:manual/schedule/tasker/inten | STRING |
| HIGH | examples/workflow.js | 0 | 工作流工具使用建议(给 ai): - 核心概念(请优先对齐这些语义): - 节点类型:trigger/execute/condition/logic/extract - 触发节点类型:manual/schedule/tasker/inten | STRING |
| HIGH | app/src/main/assets/packages/workflow.js | 0 | workflow tool usage advice (for the ai): - core concepts (align your reasoning with these semantics): - node types: trig | STRING |
| HIGH | examples/workflow.ts | 0 | workflow tool usage advice (for the ai): - core concepts (align your reasoning with these semantics): - node types: trig | STRING |
| HIGH | examples/workflow.js | 0 | workflow tool usage advice (for the ai): - core concepts (align your reasoning with these semantics): - node types: trig | STRING |
| HIGH | app/src/main/assets/packages/workflow.js | 0 | 创建工作流。 参数说明: - nodes: json 数组字符串(推荐传对象数组,让封装自动 stringify) - connections: json 数组字符串(同上) 节点类型(node.type): - trigger / exe | STRING |
| HIGH | examples/workflow.ts | 0 | 创建工作流。 参数说明: - nodes: json 数组字符串(推荐传对象数组,让封装自动 stringify) - connections: json 数组字符串(同上) 节点类型(node.type): - trigger / exe | STRING |
| HIGH | examples/workflow.js | 0 | 创建工作流。 参数说明: - nodes: json 数组字符串(推荐传对象数组,让封装自动 stringify) - connections: json 数组字符串(同上) 节点类型(node.type): - trigger / exe | STRING |
| HIGH | app/src/main/assets/packages/workflow.js | 0 | create a workflow. parameter notes: - nodes: json array string (recommended: pass object arrays and let the wrapper stri | STRING |
| HIGH | examples/workflow.ts | 0 | create a workflow. parameter notes: - nodes: json array string (recommended: pass object arrays and let the wrapper stri | STRING |
| HIGH | examples/workflow.js | 0 | create a workflow. parameter notes: - nodes: json array string (recommended: pass object arrays and let the wrapper stri | STRING |
| HIGH | app/src/main/assets/packages/workflow.js | 0 | 更新工作流。 注意:update_workflow 的 nodes / connections 是“整体覆盖”。 - 若你只改其中一部分,推荐使用 patch_workflow。 - 或者:get_workflow 取回旧结构 -> 本地构 | STRING |
| HIGH | examples/workflow.ts | 0 | 更新工作流。 注意:update_workflow 的 nodes / connections 是“整体覆盖”。 - 若你只改其中一部分,推荐使用 patch_workflow。 - 或者:get_workflow 取回旧结构 -> 本地构 | STRING |
| HIGH | examples/workflow.js | 0 | 更新工作流。 注意:update_workflow 的 nodes / connections 是“整体覆盖”。 - 若你只改其中一部分,推荐使用 patch_workflow。 - 或者:get_workflow 取回旧结构 -> 本地构 | STRING |
| HIGH | app/src/main/assets/packages/workflow.js | 0 | update a workflow. note: nodes/connections in update_workflow are full overwrites. - if you only change part of them, pr | STRING |
| HIGH | examples/workflow.ts | 0 | update a workflow. note: nodes/connections in update_workflow are full overwrites. - if you only change part of them, pr | STRING |
| HIGH | examples/workflow.js | 0 | update a workflow. note: nodes/connections in update_workflow are full overwrites. - if you only change part of them, pr | STRING |
| HIGH | app/src/main/assets/packages/workflow.js | 0 | 差异更新工作流(增量 patch)。 使用 node_patches / connection_patches 传入 json 数组字符串: - op: add | update | remove - id: 可选 - node / con | STRING |
| HIGH | examples/workflow.ts | 0 | 差异更新工作流(增量 patch)。 使用 node_patches / connection_patches 传入 json 数组字符串: - op: add | update | remove - id: 可选 - node / con | STRING |
| HIGH | examples/workflow.js | 0 | 差异更新工作流(增量 patch)。 使用 node_patches / connection_patches 传入 json 数组字符串: - op: add | update | remove - id: 可选 - node / con | STRING |
| HIGH | app/src/main/assets/packages/workflow.js | 0 | patch a workflow (incremental update). use node_patches / connection_patches as json array strings: - op: add | update | | STRING |
| HIGH | examples/workflow.ts | 0 | patch a workflow (incremental update). use node_patches / connection_patches as json array strings: - op: add | update | | STRING |
| HIGH | examples/workflow.js | 0 | patch a workflow (incremental update). use node_patches / connection_patches as json array strings: - op: add | update | | STRING |
| HIGH | app/src/main/assets/packages/operit_editor.js | 0 | operit 平台配置直改工具包:提供一组可直接读取与修改 operit 平台设置的工具,覆盖 mcp、skill、sandbox package、角色卡、功能模型绑定、模型参数、上下文总结与 tts/stt 语音服务配置。 | STRING |
| HIGH | examples/operit_editor.ts | 0 | operit 平台配置直改工具包:提供一组可直接读取与修改 operit 平台设置的工具,覆盖 mcp、skill、sandbox package、角色卡、功能模型绑定、模型参数、上下文总结与 tts/stt 语音服务配置。 | STRING |
| HIGH | examples/operit_editor.js | 0 | operit 平台配置直改工具包:提供一组可直接读取与修改 operit 平台设置的工具,覆盖 mcp、skill、sandbox package、角色卡、功能模型绑定、模型参数、上下文总结与 tts/stt 语音服务配置。 | STRING |
| HIGH | app/src/main/assets/packages/operit_editor.js | 0 | direct operit platform configuration toolkit: a collection of tools for reading and directly modifying operit platform s | STRING |
| HIGH | examples/operit_editor.ts | 0 | direct operit platform configuration toolkit: a collection of tools for reading and directly modifying operit platform s | STRING |
| HIGH | examples/operit_editor.js | 0 | direct operit platform configuration toolkit: a collection of tools for reading and directly modifying operit platform s | STRING |
| 90 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/sandboxpackage_dev_install_or_update.js | 118 | function syncBuiltInPackageExamples() { | CODE |
| LOW⚡ | tools/example_packages/sync_example_packages.py | 542 | def _resolve_hot_reload_device(explicit_serial: str | None) -> str | None: | CODE |
| LOW | tools/example_packages/sync_example_packages.py | 103 | def _collect_root_prebuild_inputs(examples_dir: Path) -> list[Path]: | CODE |
| LOW | tools/example_packages/sync_example_packages.py | 122 | def _collect_child_prebuild_inputs(examples_dir: Path, child_dir: Path) -> list[Path]: | CODE |
| LOW | tools/example_packages/sync_example_packages.py | 251 | def _prune_local_sync_state_outputs( | CODE |
| LOW | tools/example_packages/sync_example_packages.py | 260 | def _prune_local_sync_state_prebuild( | CODE |
| LOW | tools/example_packages/sync_example_packages.py | 277 | def _prebuild_planned_child_names(examples_dir: Path, plans: list[SyncPlanItem]) -> set[str]: | CODE |
| LOW | tools/example_packages/sync_example_packages.py | 324 | def _collect_all_example_items(examples_dir: Path) -> list[str]: | CODE |
| LOW | tools/example_packages/sync_example_packages.py | 454 | def _resolve_plan_item_from_roots(source_roots: list[Path], item: str) -> SyncPlanItem | None: | CODE |
| LOW | tools/example_packages/sync_example_packages.py | 590 | def _is_app_package_installed(device_serial: str, app_package: str) -> bool: | CODE |
| LOW | tools/example_packages/sync_example_packages.py | 633 | def _parse_toolpkg_manifest_text(text: str, manifest_path: Path) -> str: | CODE |
| LOW | tools/example_packages/sync_example_packages.py | 707 | def _broadcast_refresh_packages(device_serial: str, app_package: str) -> None: | CODE |
| LOW | tools/example_packages/sync_example_packages.py | 729 | def _broadcast_debug_install_toolpkg( | CODE |
| LOW | tools/example_packages/sync_example_packages.py | 843 | def _delete_unplanned_outputs( | CODE |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 89 | def parse_composable_signatures(source_text: str, function_name: str) -> List[List[Param]]: | CODE |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 187 | def extract_attached_annotation_lines(source_text: str, fun_start: int) -> List[str]: | CODE |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 216 | def has_attached_experimental_annotation(source_text: str, fun_start: int) -> bool: | CODE |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 228 | def has_explicit_non_unit_return_type(source_text: str, close_paren: int) -> bool: | CODE |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 411 | def strip_outer_wrapping_parens(type_name: str) -> str: | CODE |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 502 | def parse_lambda_single_arg_type(type_name: str) -> Optional[str]: | CODE |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 512 | def parse_lambda_receiver_type(type_name: str) -> Optional[str]: | CODE |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 541 | def is_zero_arg_unit_lambda_type(type_name: str) -> bool: | CODE |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 549 | def host_slot_lambda_arg_type(type_name: str) -> Optional[str]: | CODE |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 575 | def is_host_slot_lambda_param(param: Param) -> bool: | CODE |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 584 | def scope_modifier_resolver_expr(receiver_type: Optional[str]) -> str: | CODE |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 635 | def _is_supported_generic_param(param: Param) -> bool: | CODE |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 673 | def can_generate_generic_renderer(params: Sequence[Param]) -> bool: | CODE |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 682 | def discover_additional_components( | CODE |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 816 | def build_component_renderer_function(spec: ComponentSpec, params: Sequence[Param]) -> str: | CODE |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 1524 | def _generic_default_value_expr(component: str, param: Param) -> Optional[str]: | CODE |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 1619 | def build_action_lambda_arg_name(param_name: str) -> str: | CODE |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 1627 | def _supports_text_fallback_for_content(component: str) -> bool: | CODE |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 1645 | def _button_colors_defaults_expr(component: str) -> str | None: | CODE |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 1656 | def _button_colors_renderer_prelude(component: str) -> List[str]: | CODE |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 1684 | def build_generic_renderer_function(spec: ComponentSpec, params: Sequence[Param]) -> str: | CODE |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 1844 | def build_generated_renderer_functions( | CODE |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 2023 | def build_kotlin_registry_file(components: Sequence[ComponentSpec], output_path: Path) -> None: | CODE |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 2044 | def build_kotlin_renderers_file( | STRING |
| LOW | tools/hotbuild/apply_patch.py | 93 | def load_meta_from_release_body(release: dict) -> Optional[dict]: | CODE |
| LOW | tools/hotbuild/apply_patch.py | 294 | def read_zip_local_record_bytes(apk_path: Path, info: zipfile.ZipInfo) -> bytes: | CODE |
| LOW | tools/hotbuild/build_patch.py | 27 | def format_version_with_patch(version: str, patch_index: int) -> str: | CODE |
| LOW | tools/hotbuild/build_patch.py | 155 | def read_zip_local_record_bytes(apk_path: Path, info: zipfile.ZipInfo) -> tuple[bytes, int]: | CODE |
| LOW | tools/hotbuild/nightly_auto.py | 43 | def _parse_version_for_compare(v: str) -> tuple[int, int, int, int]: | CODE |
| LOW | tools/hotbuild/nightly_auto.py | 75 | def _github_latest_tag_via_api(repo: str) -> str: | CODE |
| LOW | tools/hotbuild/nightly_auto.py | 107 | def _github_latest_tag_via_gh(repo: str) -> str: | CODE |
| LOW | tools/hotbuild/nightly_auto.py | 126 | def _github_latest_tag_via_git(repo: str) -> str: | CODE |
| LOW | tools/toolpkg/toolpkg_hook_runner.js | 124 | function resolveManifestFromFolder(folderPath) { | CODE |
| LOW | tools/toolpkg/debug_toolpkg.py | 104 | def load_manifest_from_folder(folder: Path) -> tuple[Path, str, str]: | CODE |
| LOW | tools/toolpkg/debug_toolpkg.py | 116 | def load_manifest_from_archive(archive_path: Path) -> tuple[str, str]: | CODE |
| LOW | tools/toolpkg/debug_toolpkg.py | 254 | def _is_app_package_installed(device_serial: str, app_package: str) -> bool: | CODE |
| LOW | tools/github/commit_ai.py | 95 | def _read_multiline_user_input(header: str) -> str: | CODE |
| LOW | tools/github/import_anthropic_skills.py | 278 | def _repo_slug_from_github_url(repo_url: str) -> str: | CODE |
| LOW | tools/github/import_anthropic_skills.py | 333 | def _list_source_skills_from_awesome_readme(readme_url: str, token: str, ctx: ssl.SSLContext) -> list[SourceSkill]: | CODE |
| LOW | tools/github/import_anthropic_skills.py | 469 | def _list_skill_md_paths_from_repo_zip(owner: str, repo: str, ref: str, ctx: ssl.SSLContext) -> list[str]: | CODE |
| LOW | tools/github/import_anthropic_skills.py | 520 | def _expand_source_skill_by_skill_md(skill: SourceSkill, ctx: ssl.SSLContext) -> list[SourceSkill]: | CODE |
| LOW | tools/github/import_anthropic_skills.py | 642 | def _pick_markdown_file_from_contents(files: list[dict]) -> Optional[dict]: | CODE |
| LOW | tools/github/import_anthropic_skills.py | 656 | def _fetch_markdown_from_github_path( | CODE |
| LOW | tools/github/import_anthropic_skills.py | 693 | def _list_repo_markdown_paths(api_base: str, owner: str, repo: str, ref: str, token: str, ctx: ssl.SSLContext) -> list[s | CODE |
| LOW | tools/github/import_anthropic_skills.py | 753 | def _fetch_markdown_from_generic_url(url: str, token: str, ctx: ssl.SSLContext) -> tuple[str, str]: | CODE |
| LOW | tools/github/import_anthropic_skills.py | 766 | def _try_download_github_raw_candidates( | CODE |
| 461 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tools/example_packages/sync_example_packages.py | 545 | except Exception: | CODE |
| LOW⚡ | tools/example_packages/sync_example_packages.py | 551 | except Exception as exc: | CODE |
| LOW | tools/example_packages/sync_example_packages.py | 50 | except Exception: | CODE |
| LOW | tools/example_packages/sync_example_packages.py | 684 | except Exception: | CODE |
| LOW | tools/example_packages/sync_example_packages.py | 1019 | except Exception as exc: # pragma: no cover - runtime command failure path | CODE |
| LOW | tools/example_packages/sync_example_packages.py | 1086 | except Exception as exc: | CODE |
| LOW | tools/hotbuild/apply_patch.py | 102 | except Exception: | CODE |
| LOW | tools/hotbuild/apply_patch.py | 453 | except Exception: | CODE |
| LOW | tools/hotbuild/build_patch.py | 229 | except Exception: | CODE |
| LOW | tools/hotbuild/nightly_auto.py | 120 | except Exception: | CODE |
| LOW | tools/hotbuild/nightly_auto.py | 165 | except Exception as e: | CODE |
| LOW | tools/hotbuild/nightly_auto.py | 202 | except Exception as e: | CODE |
| LOW | tools/hotbuild/nightly_auto.py | 338 | except Exception as e: | CODE |
| MEDIUM | tools/toolpkg/debug_toolpkg.py | 419 | print(f"Error: {error}", file=sys.stderr) | CODE |
| MEDIUM | tools/toolpkg/debug_toolpkg.py | 446 | print(f"Error: {error}", file=sys.stderr) | CODE |
| LOW | tools/shower/shower_ws_client.py | 35 | except Exception: # pragma: no cover | CODE |
| LOW | tools/shower/shower_ws_client.py | 96 | except Exception as e: # pragma: no cover | CODE |
| LOW | tools/shower/shower_ws_client.py | 127 | except Exception as e: | CODE |
| LOW | tools/shower/shower_ws_client.py | 136 | except Exception as e: | CODE |
| LOW | tools/shower/shower_ws_client.py | 190 | except Exception as e: | CODE |
| LOW | tools/shower/shower_ws_client.py | 251 | except Exception as e: | CODE |
| LOW⚡ | tools/shower/shower_ws_client.py | 273 | except Exception as e: | CODE |
| LOW⚡ | tools/shower/shower_ws_client.py | 281 | except Exception as e: | CODE |
| LOW⚡ | tools/shower/shower_ws_client.py | 289 | except Exception as e: | CODE |
| LOW⚡ | tools/shower/shower_ws_client.py | 297 | except Exception as e: | CODE |
| LOW⚡ | tools/shower/shower_ws_client.py | 305 | except Exception as e: | CODE |
| LOW⚡ | tools/shower/shower_ws_client.py | 344 | except Exception: | CODE |
| LOW⚡ | tools/shower/shower_ws_client.py | 346 | except Exception as e: | CODE |
| LOW⚡ | tools/shower/shower_ws_client.py | 349 | except Exception as e: | CODE |
| LOW⚡ | tools/shower/shower_ws_client.py | 357 | except Exception: | CODE |
| LOW⚡ | tools/shower/shower_ws_client.py | 360 | except Exception as e: # pragma: no cover | CODE |
| LOW⚡ | tools/shower/shower_ws_client.py | 366 | except Exception: | CODE |
| LOW | tools/github/commit_ai.py | 75 | except Exception: | CODE |
| LOW | tools/github/commit_ai.py | 112 | except Exception as e: | CODE |
| LOW | tools/github/import_anthropic_skills.py | 125 | except Exception: | CODE |
| LOW | tools/github/import_anthropic_skills.py | 135 | except Exception: | CODE |
| LOW | tools/github/import_anthropic_skills.py | 193 | except Exception: | CODE |
| LOW | tools/github/import_anthropic_skills.py | 231 | except Exception: | CODE |
| LOW | tools/github/import_anthropic_skills.py | 239 | except Exception as e: | CODE |
| LOW | tools/github/import_anthropic_skills.py | 297 | except Exception: | CODE |
| LOW | tools/github/import_anthropic_skills.py | 543 | except Exception: | CODE |
| LOW | tools/github/import_anthropic_skills.py | 778 | except Exception as e: | CODE |
| LOW | tools/github/import_anthropic_skills.py | 846 | except Exception as e: | CODE |
| LOW | tools/github/import_anthropic_skills.py | 904 | except Exception: | CODE |
| LOW | tools/github/import_anthropic_skills.py | 920 | except Exception as e_no_api: | CODE |
| LOW | tools/github/import_anthropic_skills.py | 1247 | except Exception: | STRING |
| LOW | tools/github/import_anthropic_skills.py | 1274 | except Exception as e: | STRING |
| LOW | tools/github/import_anthropic_skills.py | 1326 | except Exception as e: | STRING |
| LOW | tools/github/import_anthropic_skills.py | 1450 | except Exception as e: | STRING |
| LOW | tools/github/import_anthropic_skills.py | 1572 | except Exception as e: | STRING |
| LOW | tools/github/import_anthropic_skills.py | 1676 | except Exception as e: | STRING |
| LOW | tools/github/list_issues.py | 76 | except Exception: | CODE |
| LOW | tools/github/list_issues.py | 124 | except Exception: | CODE |
| LOW | tools/github/list_issues.py | 175 | except Exception: | CODE |
| LOW | tools/github/list_issues.py | 305 | except Exception as e: | CODE |
| LOW | tools/github/list_issues.py | 510 | except Exception: | STRING |
| LOW | tools/github/list_issues.py | 515 | except Exception: | STRING |
| LOW | tools/string/search_string.py | 81 | except Exception as e: | CODE |
| LOW | tools/string/add_string.py | 40 | except Exception: | CODE |
| LOW | tools/string/add_string.py | 71 | except Exception as e: | CODE |
| 23 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tools/shower/shower_ws_client.py | 366 | except Exception: | CODE |
| HIGH | tools/shower/shower_ws_client.py | 357 | except Exception: | CODE |
| HIGH | tools/github/commit_ai.py | 75 | except Exception: | CODE |
| HIGH | tools/github/import_anthropic_skills.py | 231 | except Exception: | CODE |
| HIGH | tools/github/import_anthropic_skills.py | 125 | except Exception: | CODE |
| HIGH | tools/github/import_anthropic_skills.py | 193 | except Exception: | CODE |
| HIGH | tools/github/list_issues.py | 175 | except Exception: | CODE |
| HIGH | tools/github/list_issues.py | 124 | except Exception: | CODE |
| HIGH | tools/string/add_string.py | 40 | except Exception: | CODE |
| HIGH | tools/string/count_ui_strings.py | 327 | except: | CODE |
| HIGH | tools/string/fill_missing_translations.py | 130 | except Exception: | CODE |
| HIGH | examples/qqbot/resources/qqbot_gateway_service.py | 179 | except Exception: | CODE |
| HIGH | examples/qqbot/resources/qqbot_gateway_service.py | 316 | except Exception: | CODE |
| HIGH | examples/qqbot/resources/qqbot_gateway_service.py | 406 | except Exception: | CODE |
| HIGH | examples/qqbot/resources/qqbot_gateway_service.py | 884 | except Exception: | CODE |
| HIGH | examples/qqbot/resources/qqbot_gateway_service.py | 888 | except Exception: | CODE |
| HIGH | examples/qqbot/resources/qqbot_gateway_service.py | 926 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/shell_identity_launcher/CMakeLists.txt | 1 | # For more information about using CMake with Android Studio, read the | COMMENT |
| LOW | tools/shell_identity_launcher/native-lib.cpp | 1 | // 通用 shell 身份 launcher: | COMMENT |
| LOW | tools/adb/execute_js_dir.sh | 1 | #!/bin/bash | COMMENT |
| LOW | llm/mnn/src/main/cpp/mnnllmnative.cpp | 1 | // | COMMENT |
| LOW | llm/mnn/src/main/cpp/mnnllmnative.cpp | 21 | #include <MNN/expr/Module.hpp> | COMMENT |
| LOW | llm/mnn/src/main/cpp/mnnnetnative.cpp | 1 | // | COMMENT |
| LOW | llm/mnn/src/main/cpp/mnnmodulennative.cpp | 1 | // | COMMENT |
| LOW | llm/mnn/src/main/cpp/mnnportraitnative.cpp | 1 | // | COMMENT |
| LOW | llm/llama/src/main/cpp/llama_jni_stub.cpp | 1 | #include <jni.h> | COMMENT |
| LOW | …ance/operit/api/chat/enhance/FileBindingServiceTest.kt | 101 | line 4 | COMMENT |
| LOW | …ance/operit/api/chat/enhance/FileBindingServiceTest.kt | 341 | // to test the robustness of the patching logic in a clean, logical way. | COMMENT |
| LOW | …res/toolbox/screens/uidebugger/UIDebuggerComponents.kt | 81 | var isUIAnalysisActive by remember { mutableStateOf(false) } | COMMENT |
| LOW | …ce/operit/ui/common/displays/MarkdownTextComposable.kt | 41 | fontSize = fontSize, | COMMENT |
| LOW | …m/ai/assistance/operit/ui/floating/ui/ball/SiriBall.kt | 281 | // val released = tryAwaitRelease() | COMMENT |
| LOW | …ore/tools/defaultTool/standard/StandardWebVisitTool.kt | 1441 | // try { | COMMENT |
| LOW | …/tools/defaultTool/debugger/DebuggerFileSystemTools.kt | 2861 | COMMENT | |
| LOW | …/tools/defaultTool/debugger/DebuggerFileSystemTools.kt | 2881 | // AndroidShellExecutor.executeShellCommand("mkdir -p '$directory'") | COMMENT |
| LOW | …/tools/defaultTool/debugger/DebuggerFileSystemTools.kt | 2901 | // error = "Failed to write binary file: ${writeResult.stderr}" | COMMENT |
| LOW | …/tools/defaultTool/debugger/DebuggerFileSystemTools.kt | 2921 | // details = "Write completed but file size mismatch. Expected: $originalSize, Got: $size. P | COMMENT |
| LOW | …/tools/defaultTool/debugger/DebuggerFileSystemTools.kt | 2941 | // return ToolResult( | COMMENT |
| LOW | …ava/com/ai/assistance/operit/core/tools/mcp/MCPJson.kt | 21 | // This will avoid the need for complex serialization setup | COMMENT |
| LOW | …stance/operit/api/chat/llmprovider/OpenCodeProvider.kt | 221 | modelName = modelName, | COMMENT |
| LOW | app/src/main/cpp/streamnative/native_toolpkg_wasm.cpp | 1 | #include <jni.h> | COMMENT |
| LOW | app/src/main/assets/packages/daily_life.js | 1161 | // } catch (error) { | COMMENT |
| LOW | app/src/main/assets/packages/daily_life.js | 1181 | // } catch (error) { | COMMENT |
| LOW | app/src/main/assets/packages/daily_life.js | 1201 | // console.log("测试设置闹钟..."); | COMMENT |
| LOW | app/src/main/assets/packages/daily_life.js | 1221 | // console.log("测试发送短信功能..."); | COMMENT |
| LOW | app/src/main/assets/packages/daily_life.js | 1241 | // try { | COMMENT |
| LOW | app/src/main/assets/packages/daily_life.js | 1261 | // await toggle_wifi({ state: 'off' }); | COMMENT |
| LOW | app/src/main/assets/packages/daily_life.js | 1281 | // console.log("测试拍照功能..."); | COMMENT |
| LOW | app/src/main/assets/templates/python/requirements.txt | 1 | # Operit Python 项目依赖 | COMMENT |
| LOW | app/src/main/assets/templates/flutter/pubspec.yaml | 1 | name: operit_flutter_project | COMMENT |
| LOW | app/src/main/assets/templates/flutter/pubspec.yaml | 41 | sdk: flutter | COMMENT |
| LOW | app/src/main/assets/templates/flutter/pubspec.yaml | 61 | # To add assets to your application, add an assets section, like this: | COMMENT |
| LOW | app/src/main/assets/templates/flutter/pubspec.yaml | 81 | # - asset: fonts/Schyler-Italic.ttf | COMMENT |
| LOW | …rc/main/assets/templates/flutter/analysis_options.yaml | 1 | # This file configures the analyzer, which statically analyzes Dart code to | COMMENT |
| LOW | …rc/main/assets/templates/flutter/analysis_options.yaml | 21 | # `// ignore_for_file: name_of_lint` syntax on the line or in the file | COMMENT |
| LOW | app/src/main/assets/templates/flutter/lib/main.dart | 61 | // This call to setState tells the Flutter framework that something has | COMMENT |
| LOW | app/src/main/assets/templates/flutter/lib/main.dart | 81 | // Colors.amber, perhaps?) and trigger a hot reload to see the AppBar | COMMENT |
| LOW | …c/main/assets/templates/flutter/windows/runner/utils.h | 1 | #ifndef RUNNER_UTILS_H_ | COMMENT |
| LOW | …sets/templates/flutter/windows/runner/win32_window.cpp | 1 | #include "win32_window.h" | COMMENT |
| LOW | …ain/assets/templates/flutter/windows/runner/resource.h | 1 | //{{NO_DEPENDENCIES}} | COMMENT |
| LOW | …src/main/assets/templates/android/setup_android_env.sh | 361 | # any settings specified in this file. | COMMENT |
| LOW | quickjs/src/main/cpp/quickjs_jni.cpp | 1 | #include <jni.h> | COMMENT |
| LOW | examples/daily_life.ts | 1281 | COMMENT | |
| LOW | examples/daily_life.ts | 1301 | // console.log("✗ 设备状态获取失败"); | COMMENT |
| LOW | examples/daily_life.ts | 1321 | // // // 可以设置未来时间 | COMMENT |
| LOW | examples/daily_life.ts | 1341 | // minute: minute.toString(), | COMMENT |
| LOW | examples/daily_life.ts | 1361 | // const smsResult = await send_message({ | COMMENT |
| LOW | examples/daily_life.ts | 1381 | // // 直接调用拨号功能 | COMMENT |
| LOW | examples/daily_life.ts | 1401 | // await sleep(3000); | COMMENT |
| LOW | examples/daily_life.ts | 1421 | // 10. Test taking a photo | COMMENT |
| LOW | examples/daily_life.js | 1161 | // } catch (error) { | COMMENT |
| LOW | examples/daily_life.js | 1181 | // } catch (error) { | COMMENT |
| LOW | examples/daily_life.js | 1201 | // console.log("测试设置闹钟..."); | COMMENT |
| LOW | examples/daily_life.js | 1221 | // console.log("测试发送短信功能..."); | COMMENT |
| LOW | examples/daily_life.js | 1241 | // try { | COMMENT |
| LOW | examples/daily_life.js | 1261 | // await toggle_wifi({ state: 'off' }); | COMMENT |
| LOW | examples/daily_life.js | 1281 | // console.log("测试拍照功能..."); | COMMENT |
| LOW | avator/mmd/src/main/cpp/android/MmdInspectorBridge.cpp | 1 | #include <jni.h> | COMMENT |
| 11 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tools/compose_dsl/generate_compose_dsl_artifacts.py | 1724 | f" onAction({action_id_var}, null)\n" | CODE |
| HIGH⚡ | tools/compose_dsl/generate_compose_dsl_artifacts.py | 1096 | val textFieldIdentity = props["key"]?.toString()?.trim()?.ifBlank { null } ?: nodePath | STRING |
| HIGH | tools/compose_dsl/generate_compose_dsl_artifacts.py | 834 | if (imageModel != null) { | STRING |
| HIGH | tools/compose_dsl/generate_compose_dsl_artifacts.py | 873 | modifier.clickable { onAction(onClick, null) } | STRING |
| HIGH | tools/compose_dsl/generate_compose_dsl_artifacts.py | 928 | val modifierProps = if (contentPadding != null) props.withoutCommonPaddingProps() else props | STRING |
| HIGH | tools/compose_dsl/generate_compose_dsl_artifacts.py | 932 | modifier.clickable { onAction(onClick, null) } | STRING |
| HIGH | tools/compose_dsl/generate_compose_dsl_artifacts.py | 985 | if (autoScrollToEnd && contentNodes.isNotEmpty()) { | STRING |
| HIGH | tools/compose_dsl/generate_compose_dsl_artifacts.py | 1141 | if (isFocused && !nextFocused && externalValue != textFieldValue.text) { | STRING |
| HIGH | tools/compose_dsl/generate_compose_dsl_artifacts.py | 1196 | } else null, | STRING |
| HIGH | tools/compose_dsl/generate_compose_dsl_artifacts.py | 1207 | } else null, | STRING |
| HIGH | tools/compose_dsl/generate_compose_dsl_artifacts.py | 1218 | } else null, | STRING |
| HIGH | tools/compose_dsl/generate_compose_dsl_artifacts.py | 1229 | } else null, | STRING |
| HIGH | tools/compose_dsl/generate_compose_dsl_artifacts.py | 1240 | } else null, | STRING |
| HIGH | tools/compose_dsl/generate_compose_dsl_artifacts.py | 1310 | } else null, | STRING |
| HIGH | tools/compose_dsl/generate_compose_dsl_artifacts.py | 1367 | if (contentAlpha != null) color.copy(alpha = contentAlpha) else color | STRING |
| HIGH | tools/compose_dsl/generate_compose_dsl_artifacts.py | 1371 | finalContainerColor != null && finalContentColor != null -> | STRING |
| HIGH | tools/compose_dsl/generate_compose_dsl_artifacts.py | 1417 | contentDescription = null, | STRING |
| HIGH | tools/compose_dsl/generate_compose_dsl_artifacts.py | 1419 | modifier = if (size != null) { | STRING |
| HIGH | tools/compose_dsl/generate_compose_dsl_artifacts.py | 1441 | if (progress != null) { | STRING |
| HIGH | tools/compose_dsl/generate_compose_dsl_artifacts.py | 1470 | strokeWidth = if (strokeWidth != null) strokeWidth.dp else 4.dp, | STRING |
| HIGH | tools/compose_dsl/generate_compose_dsl_artifacts.py | 1513 | onAction(onTextLayoutActionId, null) | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …t/ui/features/chat/components/lazy/CacheWindowLogic.kt | 444 | * When caching visible items we need to check if the existing item changed sizes. If so, we | COMMENT |
| LOW | …res/toolbox/screens/htmlpackager/HtmlPackagerScreen.kt | 84 | // Step 1: Select Folder | COMMENT |
| LOW | …res/toolbox/screens/htmlpackager/HtmlPackagerScreen.kt | 105 | // Step 2: Select Index File | COMMENT |
| LOW | …res/toolbox/screens/htmlpackager/HtmlPackagerScreen.kt | 148 | // Step 3: Package | COMMENT |
| LOW | …om/ai/assistance/operit/util/DocumentConversionUtil.kt | 79 | // Step 1: Attempt direct text extraction with PDFBox | COMMENT |
| LOW | …om/ai/assistance/operit/util/DocumentConversionUtil.kt | 91 | // Step 2: Check if the extracted text is meaningful. If not, trigger OCR. | COMMENT |
| LOW | …om/ai/assistance/operit/util/DocumentConversionUtil.kt | 872 | // Step 1: Extract text from PDF. | COMMENT |
| LOW⚡ | …om/ai/assistance/operit/util/DocumentConversionUtil.kt | 883 | // Step 2: Read the extracted text from the temporary file. | COMMENT |
| LOW⚡ | …om/ai/assistance/operit/util/DocumentConversionUtil.kt | 887 | // Step 3: Create a new DOCX document and write the content. | COMMENT |
| LOW | …om/ai/assistance/operit/util/DocumentConversionUtil.kt | 901 | // Step 4: Save the new DOCX document. | COMMENT |
| LOW⚡ | …om/ai/assistance/operit/util/DocumentConversionUtil.kt | 920 | // Step 1: Extract text from the Word document into a temporary file. | COMMENT |
| LOW⚡ | …om/ai/assistance/operit/util/DocumentConversionUtil.kt | 930 | // Step 2: Convert the extracted text file to PDF. | COMMENT |
| LOW⚡ | …om/ai/assistance/operit/util/DocumentConversionUtil.kt | 933 | // Step 3: Clean up the temporary file. | COMMENT |
| LOW⚡ | …/assistance/operit/data/repository/MemoryRepository.kt | 2320 | // Step 1: Find all unique source memories from the given titles. | COMMENT |
| LOW | …ance/operit/services/floating/FloatingWindowManager.kt | 1053 | // Step 1: 更新窗口参数使其可获取焦点 | COMMENT |
| LOW⚡ | …ance/operit/services/floating/FloatingWindowManager.kt | 1069 | // Step 2: 等待Compose真正建立输入焦点后再显示键盘 | COMMENT |
| LOW⚡ | …ance/operit/services/floating/FloatingWindowManager.kt | 1078 | // Step 1: 立即清理悬浮窗焦点并隐藏键盘,避免阻塞外部输入框抢焦点 | COMMENT |
| LOW | …ance/operit/services/floating/FloatingWindowManager.kt | 1089 | // Step 2: 立即恢复窗口不可聚焦状态(全屏模式除外) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/example_packages/sync_example_packages.py | 870 | CODE | |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 89 | CODE | |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 130 | CODE | |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 266 | CODE | |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 289 | CODE | |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 411 | CODE | |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 435 | CODE | |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 682 | CODE | |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 1684 | CODE | |
| LOW | tools/hotbuild/apply_patch.py | 160 | CODE | |
| LOW | tools/hotbuild/apply_patch.py | 257 | CODE | |
| LOW | tools/hotbuild/apply_patch.py | 294 | CODE | |
| LOW | tools/hotbuild/apply_patch.py | 335 | CODE | |
| LOW | tools/hotbuild/apply_patch.py | 485 | CODE | |
| LOW | tools/hotbuild/build_patch.py | 48 | CODE | |
| LOW | tools/hotbuild/build_patch.py | 155 | CODE | |
| LOW | tools/hotbuild/build_patch.py | 196 | CODE | |
| LOW | tools/hotbuild/build_patch.py | 257 | CODE | |
| LOW | tools/shower/shower_ws_client.py | 100 | CODE | |
| LOW | tools/github/import_anthropic_skills.py | 82 | CODE | |
| LOW | tools/github/import_anthropic_skills.py | 423 | CODE | |
| LOW | tools/github/import_anthropic_skills.py | 520 | CODE | |
| LOW | tools/github/import_anthropic_skills.py | 1177 | CODE | |
| LOW | tools/github/list_issues.py | 98 | CODE | |
| LOW | tools/string/search_string.py | 33 | CODE | |
| LOW | tools/string/count_ui_strings.py | 57 | CODE | |
| LOW | tools/string/count_ui_strings.py | 88 | CODE | |
| LOW | tools/string/count_ui_strings.py | 225 | CODE | |
| LOW | tools/string/count_ui_strings.py | 281 | CODE | |
| LOW | tools/string/check_strings.py | 109 | CODE | |
| LOW | tools/string/fill_missing_translations.py | 553 | CODE | |
| LOW | ci/script/check_repo_hygiene.py | 111 | CODE | |
| LOW | ci/script/check_repo_hygiene.py | 168 | CODE | |
| LOW | ci/script/check_output.py | 41 | CODE | |
| LOW | ci/script/check_localizations.py | 163 | CODE | |
| LOW | ci/script/check_localizations.py | 242 | CODE | |
| LOW | ci/script/check_localizations.py | 328 | CODE | |
| LOW | examples/qqbot/resources/qqbot_gateway_service.py | 603 | CODE | |
| LOW | examples/qqbot/resources/qqbot_gateway_service.py | 893 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …res/toolbox/screens/htmlpackager/HtmlPackagerScreen.kt | 84 | // Step 1: Select Folder | COMMENT |
| LOW | …res/toolbox/screens/htmlpackager/HtmlPackagerScreen.kt | 105 | // Step 2: Select Index File | COMMENT |
| LOW | …res/toolbox/screens/htmlpackager/HtmlPackagerScreen.kt | 148 | // Step 3: Package | COMMENT |
| LOW | …om/ai/assistance/operit/util/DocumentConversionUtil.kt | 79 | // Step 1: Attempt direct text extraction with PDFBox | COMMENT |
| LOW | …om/ai/assistance/operit/util/DocumentConversionUtil.kt | 91 | // Step 2: Check if the extracted text is meaningful. If not, trigger OCR. | COMMENT |
| LOW | …om/ai/assistance/operit/util/DocumentConversionUtil.kt | 872 | // Step 1: Extract text from PDF. | COMMENT |
| LOW⚡ | …om/ai/assistance/operit/util/DocumentConversionUtil.kt | 883 | // Step 2: Read the extracted text from the temporary file. | COMMENT |
| LOW⚡ | …om/ai/assistance/operit/util/DocumentConversionUtil.kt | 887 | // Step 3: Create a new DOCX document and write the content. | COMMENT |
| LOW | …om/ai/assistance/operit/util/DocumentConversionUtil.kt | 901 | // Step 4: Save the new DOCX document. | COMMENT |
| LOW⚡ | …om/ai/assistance/operit/util/DocumentConversionUtil.kt | 920 | // Step 1: Extract text from the Word document into a temporary file. | COMMENT |
| LOW⚡ | …om/ai/assistance/operit/util/DocumentConversionUtil.kt | 930 | // Step 2: Convert the extracted text file to PDF. | COMMENT |
| LOW⚡ | …om/ai/assistance/operit/util/DocumentConversionUtil.kt | 933 | // Step 3: Clean up the temporary file. | COMMENT |
| LOW⚡ | …/assistance/operit/data/repository/MemoryRepository.kt | 2320 | // Step 1: Find all unique source memories from the given titles. | COMMENT |
| LOW | …ance/operit/services/floating/FloatingWindowManager.kt | 1053 | // Step 1: 更新窗口参数使其可获取焦点 | COMMENT |
| LOW⚡ | …ance/operit/services/floating/FloatingWindowManager.kt | 1069 | // Step 2: 等待Compose真正建立输入焦点后再显示键盘 | COMMENT |
| LOW⚡ | …ance/operit/services/floating/FloatingWindowManager.kt | 1078 | // Step 1: 立即清理悬浮窗焦点并隐藏键盘,避免阻塞外部输入框抢焦点 | COMMENT |
| LOW | …ance/operit/services/floating/FloatingWindowManager.kt | 1089 | // Step 2: 立即恢复窗口不可聚焦状态(全屏模式除外) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/example_packages/sync_example_packages.py | 1 | CODE | |
| LOW | tools/hotbuild/apply_patch.py | 1 | CODE | |
| LOW | tools/hotbuild/build_patch.py | 1 | CODE | |
| LOW | tools/toolpkg/debug_toolpkg.py | 3 | CODE | |
| LOW | ci/test/test_toolpkg_sync.py | 1 | CODE | |
| LOW | ci/test/test_pr_check.py | 1 | CODE | |
| LOW | ci/test/test_markdown_links.py | 1 | CODE | |
| LOW | ci/test/test_android_dependencies.py | 1 | CODE | |
| LOW | ci/test/test_repo_hygiene.py | 1 | CODE | |
| LOW | ci/test/test_localizations.py | 1 | CODE | |
| LOW | ci/script/prepare_android_dependencies.py | 4 | CODE | |
| LOW | ci/script/check_markdown_links.py | 4 | CODE | |
| LOW | ci/script/check_repo_hygiene.py | 4 | CODE | |
| LOW | ci/script/check_output.py | 4 | CODE | |
| LOW | ci/script/check_localizations.py | 4 | CODE | |
| LOW | ci/script/pr_check.py | 4 | CODE | |
| LOW | …air_repo_enviroment/windows/sync_submodule_symlinks.py | 10 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 43 | ComponentSpec("TextField", "material3", "androidx.compose.material3", "OutlinedTextField", ("value", "onValueChange" | CODE |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 293 | if name in {"modifier", "interactionSource", "colors", "elevation", "shape", "border", "contentPadding", "hostState" | CODE |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 1910 | emitted["placeholder"] = ("string | ComposeChildren", False) | CODE |
| LOW⚡ | tools/compose_dsl/generate_compose_dsl_artifacts.py | 1093 | val placeholder = props.stringOrNull("placeholder") | STRING |
| LOW⚡ | tools/compose_dsl/generate_compose_dsl_artifacts.py | 1099 | val hasPlaceholderSlot = node.slotChildren("placeholder").isNotEmpty() | STRING |
| LOW | tools/compose_dsl/generate_compose_dsl_artifacts.py | 1178 | slotName = "placeholder", | STRING |
| LOW | …/workspace/editor/completion/HtmlCompletionProvider.kt | 18 | "placeholder", "name", "action", "method", "target", "rel", "onclick", "onchange", | CODE |
| LOW | …/chat/webview/workspace/editor/language/HtmlSupport.kt | 20 | "value", "name", "placeholder", "disabled", "checked", "selected", "readonly", "required", | CODE |
| LOW | …mmon/composedsl/ToolPkgComposeDslGeneratedRenderers.kt | 477 | val placeholder = props.stringOrNull("placeholder") | CODE |
| LOW | …mmon/composedsl/ToolPkgComposeDslGeneratedRenderers.kt | 483 | val hasPlaceholderSlot = node.slotChildren("placeholder").isNotEmpty() | CODE |
| LOW | …mmon/composedsl/ToolPkgComposeDslGeneratedRenderers.kt | 559 | slotName = "placeholder", | CODE |
| LOW | …s/defaultTool/websession/browser/BrowserToolSupport.kt | 892 | const placeholder = normalize(element.getAttribute("placeholder")); | STRING |
| LOW | …Tool/websession/browser/BrowserPageExecutionSupport.kt | 2672 | el.getAttribute("placeholder") || | STRING |
| LOW | …n/java/com/ai/assistance/operit/util/HtmlParserUtil.kt | 17 | 'placeholder', 'name', 'role', 'aria-label', 'onclick' | CODE |
| LOW | …n/java/com/ai/assistance/operit/util/HtmlParserUtil.kt | 108 | const attrs = ['aria-label', 'alt', 'title', 'placeholder', 'name']; | CODE |
| LOW | ci/script/check_localizations.py | 291 | "placeholder", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …ance/operit/ui/features/memory/screens/MemoryScreen.kt | 187 | // More robust file name extraction | COMMENT |
| MEDIUM | …ance/operit/ui/features/chat/webview/LocalWebServer.kt | 499 | // Serve the file from a byte array input stream. This is the robust way to avoid GZIP issues. | COMMENT |
| MEDIUM | …bones/src/main/java/com/dragonbones/DragonBonesView.kt | 317 | // This robust, single-instance effect handles the command queue processing. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | app/src/main/assets/templates/flutter/pubspec.yaml | 53 | # The following section is specific to Flutter packages. | COMMENT |
| MEDIUM | …/assets/templates/flutter/android/setup_android_env.sh | 1110 | ## This file is automatically generated by Android Studio. | COMMENT |
| MEDIUM | …src/main/assets/templates/android/setup_android_env.sh | 485 | ## This file is automatically generated by Android Studio. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | avator/dragonbones/cpp/opengl/OpenGLFactory.cpp | 25 | // In this implementation, textureAtlas is a pointer to a struct containing png data and size | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | app/src/main/assets/templates/flutter/pubspec.yaml | 57 | # included with your application, so that you can use the icons in | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/adb/execute_js.sh | 38 | # Check if file exists | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/adb/execute_js_dir.sh | 7 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/github/import_anthropic_skills.py | 1025 | CODE |