"OpenSpace: The Quality-First Skill Hub for AI Agents" -- https://open-space.cloud/
This report presents the forensic synthetic code analysis of HKUDS/OpenSpace, a Python project with 6,734 GitHub stars. SynthScan v2.0 examined 134,455 lines of code across 568 source files, recording 2196 pattern matches distributed across 22 syntactic categories. The overall adjusted score of 24.0 places this repository in the Moderate AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 2196 distinct pattern matches across 22 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | openspace/mcp_server.py | 775 | # Step 1: Register the skill (idempotent) | COMMENT |
| LOW⚡ | openspace/mcp_server.py | 783 | # Step 2: Load record + content | COMMENT |
| LOW⚡ | openspace/mcp_server.py | 793 | # Step 3: Run FIX evolution | COMMENT |
| LOW | openspace/mcp_server.py | 819 | # Step 4: Write .upload_meta.json | COMMENT |
| LOW⚡ | openspace/grounding/backends/web/session.py | 203 | # Step 1: Deep research | STRING |
| LOW⚡ | openspace/grounding/backends/web/session.py | 214 | # Step 2: Use LLMClient to generate summary and distill key points | STRING |
| LOW⚡ | openspace/grounding/backends/gui/anthropic_client.py | 123 | # Step 1: LLM coordinates (display_size) -> Physical pixels (screen_size) | COMMENT |
| LOW⚡ | openspace/grounding/backends/gui/anthropic_client.py | 124 | # Step 2: Physical pixels -> PyAutoGUI logical pixels (pyautogui_size) | COMMENT |
| LOW⚡ | openspace/grounding/backends/gui/tool.py | 165 | # Step 2: Plan next action using LLM | STRING |
| LOW | openspace/grounding/backends/gui/tool.py | 153 | # Step 1: Observe current state | STRING |
| LOW | openspace/grounding/backends/gui/tool.py | 230 | # Step 3: Execute the planned action | STRING |
| LOW⚡ | openspace/cloud/client.py | 321 | # Step 1: Stage | COMMENT |
| LOW⚡ | openspace/cloud/client.py | 326 | # Step 2: Content diff | COMMENT |
| LOW⚡ | openspace/cloud/client.py | 329 | # Step 3: Create record | COMMENT |
| LOW⚡ | showcase/my-daily-monitor/server/routes/office.ts | 174 | // Step 1: Get access token | COMMENT |
| LOW⚡ | showcase/my-daily-monitor/server/routes/office.ts | 177 | // Step 2: Fetch recent documents | COMMENT |
| LOW⚡ | …wcase/my-daily-monitor/src/components/InsightsPanel.ts | 421 | // Step 1: Select relevant tools | COMMENT |
| LOW⚡ | …wcase/my-daily-monitor/src/components/InsightsPanel.ts | 428 | // Step 2: Execute selected tools in parallel | COMMENT |
| LOW | …wcase/my-daily-monitor/src/components/InsightsPanel.ts | 463 | // Step 3: Call LLM | COMMENT |
| LOW⚡ | showcase/skills/idempotent-file-replace/SKILL.md | 117 | # Step 1: read | STRING |
| LOW⚡ | showcase/skills/idempotent-file-replace/SKILL.md | 120 | # Step 2: compare | STRING |
| LOW⚡ | showcase/skills/idempotent-file-replace/SKILL.md | 125 | # Step 3: write | STRING |
| LOW | …wcase/skills/large-file-write-via-temp-script/SKILL.md | 35 | # Step 1: Write the helper script to /tmp | COMMENT |
| LOW | …wcase/skills/large-file-write-via-temp-script/SKILL.md | 52 | # Step 2: Execute the helper | STRING |
| LOW | …wcase/skills/large-file-write-via-temp-script/SKILL.md | 67 | # Step 1: Base64-encode your content (done once, outside the target system) | COMMENT |
| LOW | …wcase/skills/large-file-write-via-temp-script/SKILL.md | 70 | # Step 2: Embed the base64 blob in the helper script | COMMENT |
| LOW | showcase/skills/skill-template-generator/SKILL.md | 70 | ## Step 1: Determine Skill Category | COMMENT |
| LOW | showcase/skills/skill-template-generator/SKILL.md | 85 | ## Step 2: Write the Description | COMMENT |
| LOW | showcase/skills/skill-template-generator/SKILL.md | 101 | ## Step 3: Write Actionable Instructions | COMMENT |
| LOW | showcase/skills/skill-template-generator/SKILL.md | 136 | ## Step 4: Add Dependency Hints | COMMENT |
| LOW | showcase/skills/skill-template-generator/SKILL.md | 151 | ## Step 5: Validate the Skill | COMMENT |
| LOW | showcase/skills/codebase-pattern-analyzer/SKILL.md | 16 | ## Step 1: Map the Directory Structure | COMMENT |
| LOW | showcase/skills/codebase-pattern-analyzer/SKILL.md | 37 | ## Step 2: Identify the Component Pattern | COMMENT |
| LOW | showcase/skills/codebase-pattern-analyzer/SKILL.md | 64 | ## Step 3: Identify the Service Layer Pattern | COMMENT |
| LOW | showcase/skills/codebase-pattern-analyzer/SKILL.md | 91 | ## Step 4: Identify the API Proxy Pattern | COMMENT |
| LOW | showcase/skills/codebase-pattern-analyzer/SKILL.md | 110 | ## Step 5: Identify the Styling System | COMMENT |
| LOW | showcase/skills/codebase-pattern-analyzer/SKILL.md | 125 | ## Step 6: Identify the Scheduling / Refresh Pattern | COMMENT |
| LOW | showcase/skills/codebase-pattern-analyzer/SKILL.md | 139 | ## Step 7: Synthesize Into Pattern Descriptions | COMMENT |
| LOW⚡ | showcase/skills/list-and-count-directories/SKILL.md | 19 | ### Step 1: Get Directory Contents | COMMENT |
| LOW⚡ | showcase/skills/list-and-count-directories/SKILL.md | 27 | ### Step 2: Identify Directories | COMMENT |
| LOW⚡ | showcase/skills/list-and-count-directories/SKILL.md | 35 | ### Step 3: Exclude Hidden and System Entries | COMMENT |
| LOW⚡ | showcase/skills/list-and-count-directories/SKILL.md | 43 | ### Step 4: Create Enumerated List | COMMENT |
| LOW | showcase/skills/list-and-count-directories/SKILL.md | 54 | ### Step 5: Provide Total Count | COMMENT |
| LOW | …pval_bench/skills/ffmpeg-encoder-check-4855c0/SKILL.md | 14 | ### Step 1: Probe Available Encoders | COMMENT |
| LOW | …pval_bench/skills/ffmpeg-encoder-check-4855c0/SKILL.md | 24 | ### Step 2: Choose Encoder Based on Availability | COMMENT |
| LOW | …pval_bench/skills/ffmpeg-encoder-check-4855c0/SKILL.md | 36 | ### Step 3: Verify Before Execution | COMMENT |
| LOW⚡ | gdpval_bench/skills/code-exec-fallback/SKILL.md | 22 | ### Step 1: Write the Python Script | COMMENT |
| LOW⚡ | gdpval_bench/skills/code-exec-fallback/SKILL.md | 30 | ### Step 2: Execute via Shell | COMMENT |
| LOW⚡ | gdpval_bench/skills/code-exec-fallback/SKILL.md | 38 | ### Step 3: Handle Output | COMMENT |
| LOW | …l_bench/skills/sandbox-fallback-python-e5d7ae/SKILL.md | 43 | # Step 1: Write the script to a temporary file | STRING |
| LOW | …l_bench/skills/sandbox-fallback-python-e5d7ae/SKILL.md | 54 | # Step 2: Execute the script | STRING |
| LOW | …pval_bench/skills/pandoc-pdf-error-resolution/SKILL.md | 19 | ### Step 1: Verify Pandoc Installation | COMMENT |
| LOW | …pval_bench/skills/pandoc-pdf-error-resolution/SKILL.md | 29 | ### Step 2: Check Available PDF Engines | COMMENT |
| LOW | …pval_bench/skills/pandoc-pdf-error-resolution/SKILL.md | 47 | ### Step 3: Attempt Conversion with Explicit Engine | COMMENT |
| LOW | …pval_bench/skills/pandoc-pdf-error-resolution/SKILL.md | 61 | ### Step 4: Capture Full stderr Output | COMMENT |
| LOW | …pval_bench/skills/pandoc-pdf-error-resolution/SKILL.md | 74 | ### Step 5: Install Missing Dependencies (if needed) | COMMENT |
| LOW | …pval_bench/skills/pandoc-pdf-error-resolution/SKILL.md | 89 | ### Step 6: Fallback Strategies | COMMENT |
| LOW⚡ | …pval_bench/skills/pandoc-pdf-error-resolution/SKILL.md | 110 | # Step 1: Verify pandoc | COMMENT |
| LOW⚡ | …pval_bench/skills/pandoc-pdf-error-resolution/SKILL.md | 114 | # Step 2: Check engines | COMMENT |
| LOW⚡ | …pval_bench/skills/pandoc-pdf-error-resolution/SKILL.md | 124 | # Step 3: Try conversion with xelatex | COMMENT |
| 812 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | openspace/tool_layer.py | 290 | except Exception as e: | CODE |
| LOW | openspace/tool_layer.py | 298 | except Exception as e: | CODE |
| LOW | openspace/tool_layer.py | 415 | except Exception: | CODE |
| LOW | openspace/tool_layer.py | 451 | except Exception: | CODE |
| LOW | openspace/tool_layer.py | 502 | except Exception as e: | CODE |
| LOW | openspace/tool_layer.py | 558 | except Exception as e: | CODE |
| LOW | openspace/tool_layer.py | 587 | except Exception: | CODE |
| LOW | openspace/tool_layer.py | 593 | except Exception as e: | CODE |
| LOW | openspace/tool_layer.py | 726 | except Exception as e: | CODE |
| LOW | openspace/tool_layer.py | 852 | except Exception as e: | CODE |
| LOW | openspace/tool_layer.py | 900 | except Exception as e: | CODE |
| LOW | openspace/tool_layer.py | 910 | except Exception as e: | CODE |
| LOW⚡ | openspace/tool_layer.py | 933 | except Exception as e: | CODE |
| LOW⚡ | openspace/tool_layer.py | 940 | except Exception as e: | CODE |
| LOW⚡ | openspace/tool_layer.py | 949 | except Exception as e: | CODE |
| LOW | openspace/__main__.py | 102 | except Exception as e: | CODE |
| LOW | openspace/__main__.py | 324 | except Exception: | CODE |
| LOW | openspace/__main__.py | 327 | except Exception as e: | CODE |
| LOW | openspace/__main__.py | 338 | except Exception: | CODE |
| LOW | openspace/__main__.py | 426 | except Exception as e: | CODE |
| LOW | openspace/__main__.py | 530 | except Exception as e: | CODE |
| LOW | openspace/mcp_server.py | 235 | except Exception as e: | CODE |
| LOW | openspace/mcp_server.py | 291 | except Exception as e: | CODE |
| LOW | openspace/mcp_server.py | 329 | except Exception as e: | CODE |
| LOW | openspace/mcp_server.py | 417 | except Exception as e: | CODE |
| LOW | openspace/mcp_server.py | 424 | except Exception as e: | CODE |
| LOW | openspace/mcp_server.py | 619 | except Exception as e: | CODE |
| LOW | openspace/mcp_server.py | 709 | except Exception as imp_err: | CODE |
| LOW | openspace/mcp_server.py | 722 | except Exception as e: | CODE |
| LOW | openspace/mcp_server.py | 840 | except Exception as e: | CODE |
| LOW | openspace/mcp_server.py | 911 | except Exception as e: | CODE |
| LOW | openspace/platforms/config.py | 35 | except Exception as e: | CODE |
| LOW | openspace/platforms/config.py | 54 | except Exception as e: | CODE |
| LOW | openspace/platforms/recording.py | 85 | except Exception as e: | CODE |
| LOW | openspace/platforms/recording.py | 108 | except Exception as e: | CODE |
| LOW | openspace/platforms/recording.py | 119 | except Exception as e: | CODE |
| LOW | openspace/platforms/recording.py | 165 | except Exception: | CODE |
| LOW | openspace/platforms/recording.py | 189 | except Exception as e: | CODE |
| LOW | openspace/platforms/system_info.py | 86 | except Exception as e: | CODE |
| LOW | openspace/platforms/system_info.py | 114 | except Exception as e: | CODE |
| LOW | openspace/platforms/system_info.py | 141 | except Exception as e: | CODE |
| LOW | openspace/platforms/screenshot.py | 113 | except Exception as e: | CODE |
| LOW | openspace/platforms/screenshot.py | 128 | except Exception as e: | CODE |
| LOW | openspace/platforms/screenshot.py | 156 | except Exception as e: | CODE |
| LOW | openspace/platforms/screenshot.py | 230 | except Exception as e: | CODE |
| LOW | openspace/llm/client.py | 282 | except Exception as e: | CODE |
| LOW | openspace/llm/client.py | 572 | except Exception as e: | CODE |
| LOW | openspace/llm/client.py | 757 | except Exception as e: | CODE |
| LOW | openspace/llm/client.py | 820 | except Exception as e: | CODE |
| LOW | openspace/llm/client.py | 822 | except Exception as e: | CODE |
| LOW | openspace/grounding/core/search_tools.py | 65 | except Exception as exc: | CODE |
| LOW | openspace/grounding/core/search_tools.py | 147 | except Exception as exc: | CODE |
| LOW | openspace/grounding/core/search_tools.py | 191 | except Exception as exc: | CODE |
| LOW | openspace/grounding/core/search_tools.py | 285 | except Exception as exc: | CODE |
| LOW | openspace/grounding/core/search_tools.py | 307 | except Exception as exc: | CODE |
| LOW | openspace/grounding/core/search_tools.py | 369 | except Exception as exc: | CODE |
| LOW | openspace/grounding/core/search_tools.py | 379 | except Exception as exc: | CODE |
| LOW | openspace/grounding/core/search_tools.py | 605 | except Exception as exc: | CODE |
| LOW | openspace/grounding/core/search_tools.py | 769 | except Exception as exc: | CODE |
| LOW | openspace/grounding/core/search_tools.py | 783 | except Exception: | CODE |
| 481 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | …/grounding/backends/shell/transport/local_connector.py | 30 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …/grounding/backends/shell/transport/local_connector.py | 32 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …/grounding/backends/shell/transport/local_connector.py | 222 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | …/grounding/backends/shell/transport/local_connector.py | 224 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | …/grounding/backends/shell/transport/local_connector.py | 233 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | …/grounding/backends/shell/transport/local_connector.py | 235 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | …/grounding/backends/shell/transport/local_connector.py | 351 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | …/grounding/backends/shell/transport/local_connector.py | 353 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | …/grounding/backends/shell/transport/local_connector.py | 487 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | …/grounding/backends/shell/transport/local_connector.py | 489 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | …ce/grounding/backends/mcp/transport/connectors/http.py | 512 | # ===================== | COMMENT |
| MEDIUM⚡ | …ce/grounding/backends/mcp/transport/connectors/http.py | 514 | # ===================== | COMMENT |
| MEDIUM | …ce/grounding/backends/mcp/transport/connectors/http.py | 376 | # ===================== | COMMENT |
| MEDIUM | …ce/grounding/backends/mcp/transport/connectors/http.py | 378 | # ===================== | COMMENT |
| MEDIUM⚡ | …ce/grounding/backends/gui/transport/local_connector.py | 72 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | …ce/grounding/backends/gui/transport/local_connector.py | 74 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | …ce/grounding/backends/gui/transport/local_connector.py | 83 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | …ce/grounding/backends/gui/transport/local_connector.py | 85 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | …ce/grounding/backends/gui/transport/local_connector.py | 122 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | …ce/grounding/backends/gui/transport/local_connector.py | 124 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | …ce/grounding/backends/gui/transport/local_connector.py | 167 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | …ce/grounding/backends/gui/transport/local_connector.py | 169 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | …ce/grounding/backends/gui/transport/local_connector.py | 183 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | …ce/grounding/backends/gui/transport/local_connector.py | 185 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | …ce/grounding/backends/gui/transport/local_connector.py | 345 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | …ce/grounding/backends/gui/transport/local_connector.py | 347 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | showcase/skills/panel-component-aggregator/SKILL.md | 206 | // ── Public API ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | showcase/skills/panel-component-aggregator/SKILL.md | 267 | // ── Protected helpers ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | showcase/skills/panel-component-aggregator/SKILL.md | 292 | // ── Private helpers ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …case/skills/panel-component-colocated-helpers/SKILL.md | 359 | // ── Co-located helpers ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …case/skills/panel-component-colocated-helpers/SKILL.md | 386 | // ── Panel class ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | …case/skills/panel-component-with-push-sidebar/SKILL.md | 316 | // ── Types ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | …case/skills/panel-component-with-push-sidebar/SKILL.md | 324 | // ── DOM node cache ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | …case/skills/panel-component-with-push-sidebar/SKILL.md | 333 | // ── Singleton state ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | …case/skills/panel-component-with-push-sidebar/SKILL.md | 339 | // ── CSS injection ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …case/skills/panel-component-with-push-sidebar/SKILL.md | 355 | // ── Builder ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …case/skills/panel-component-with-push-sidebar/SKILL.md | 387 | // ── Updater ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …case/skills/panel-component-with-push-sidebar/SKILL.md | 442 | // ── Helpers ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …case/skills/panel-component-with-push-sidebar/SKILL.md | 456 | // ── CSS ─────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …case/skills/panel-component-with-push-sidebar/SKILL.md | 483 | // ── Builder ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …case/skills/panel-component-with-push-sidebar/SKILL.md | 509 | // ── Updater ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | showcase/skills/panel-breaker-backoff/SKILL.md | 107 | // ── Public API ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | showcase/skills/panel-breaker-backoff/SKILL.md | 142 | // ── Protected helpers ──────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | gdpval_bench/run_benchmark.py | 166 | # ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | gdpval_bench/run_benchmark.py | 168 | # ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | gdpval_bench/run_benchmark.py | 718 | # ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | gdpval_bench/run_benchmark.py | 720 | # ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | gdpval_bench/run_benchmark.py | 98 | # ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | gdpval_bench/run_benchmark.py | 100 | # ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | gdpval_bench/run_benchmark.py | 128 | # ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | gdpval_bench/run_benchmark.py | 130 | # ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | gdpval_bench/run_benchmark.py | 188 | # ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | gdpval_bench/run_benchmark.py | 190 | # ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | gdpval_bench/run_benchmark.py | 376 | # ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | gdpval_bench/run_benchmark.py | 378 | # ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | gdpval_bench/run_benchmark.py | 404 | # ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | gdpval_bench/run_benchmark.py | 406 | # ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | gdpval_bench/run_benchmark.py | 563 | # ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | gdpval_bench/run_benchmark.py | 565 | # ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | gdpval_bench/run_benchmark.py | 609 | # ═══════════════════════════════════════════════════════════════════ | COMMENT |
| 33 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | openspace/__init__.py | 5 | CODE | |
| LOW | openspace/__init__.py | 5 | CODE | |
| LOW | openspace/__init__.py | 6 | CODE | |
| LOW | openspace/__init__.py | 7 | CODE | |
| LOW | openspace/__init__.py | 8 | CODE | |
| LOW | openspace/tool_layer.py | 1 | CODE | |
| LOW | openspace/dashboard_server.py | 1 | CODE | |
| LOW | openspace/mcp_server.py | 18 | CODE | |
| LOW | openspace/platforms/__init__.py | 1 | CODE | |
| LOW | openspace/platforms/__init__.py | 1 | CODE | |
| LOW | openspace/platforms/__init__.py | 1 | CODE | |
| LOW | openspace/platforms/__init__.py | 2 | CODE | |
| LOW | openspace/platforms/__init__.py | 2 | CODE | |
| LOW | openspace/platforms/__init__.py | 3 | CODE | |
| LOW | openspace/platforms/__init__.py | 3 | CODE | |
| LOW | openspace/platforms/__init__.py | 4 | CODE | |
| LOW | openspace/platforms/__init__.py | 4 | CODE | |
| LOW | openspace/llm/__init__.py | 1 | CODE | |
| LOW | openspace/grounding/core/search_tools.py | 20 | CODE | |
| LOW | …nspace/grounding/core/transport/connectors/__init__.py | 1 | CODE | |
| LOW | …nspace/grounding/core/transport/connectors/__init__.py | 2 | CODE | |
| LOW | openspace/grounding/core/transport/connectors/base.py | 10 | CODE | |
| LOW | openspace/grounding/core/transport/connectors/base.py | 12 | CODE | |
| LOW | …ace/grounding/core/transport/task_managers/__init__.py | 1 | CODE | |
| LOW | …ace/grounding/core/transport/task_managers/__init__.py | 2 | CODE | |
| LOW | …ace/grounding/core/transport/task_managers/__init__.py | 3 | CODE | |
| LOW | …ace/grounding/core/transport/task_managers/__init__.py | 4 | CODE | |
| LOW | …ace/grounding/core/transport/task_managers/__init__.py | 5 | CODE | |
| LOW | …enspace/grounding/core/transport/task_managers/noop.py | 7 | CODE | |
| LOW | openspace/grounding/core/quality/__init__.py | 1 | CODE | |
| LOW | openspace/grounding/core/quality/__init__.py | 1 | CODE | |
| LOW | openspace/grounding/core/quality/__init__.py | 1 | CODE | |
| LOW | openspace/grounding/core/quality/__init__.py | 2 | CODE | |
| LOW | openspace/grounding/core/quality/__init__.py | 3 | CODE | |
| LOW | openspace/grounding/core/quality/manager.py | 23 | CODE | |
| LOW | openspace/grounding/core/quality/manager.py | 24 | CODE | |
| LOW | openspace/grounding/core/quality/manager.py | 25 | CODE | |
| LOW | openspace/grounding/core/security/__init__.py | 1 | CODE | |
| LOW | openspace/grounding/core/security/__init__.py | 1 | CODE | |
| LOW | openspace/grounding/core/security/__init__.py | 2 | CODE | |
| LOW | openspace/grounding/core/security/__init__.py | 2 | CODE | |
| LOW | openspace/grounding/core/security/e2b_sandbox.py | 8 | CODE | |
| LOW | openspace/grounding/core/security/e2b_sandbox.py | 8 | CODE | |
| LOW | openspace/grounding/core/system/__init__.py | 1 | CODE | |
| LOW | openspace/grounding/core/system/__init__.py | 2 | CODE | |
| LOW | openspace/grounding/core/tool/__init__.py | 1 | CODE | |
| LOW | openspace/grounding/core/tool/__init__.py | 2 | CODE | |
| LOW | openspace/grounding/core/tool/__init__.py | 3 | CODE | |
| LOW | openspace/grounding/core/tool/base.py | 18 | CODE | |
| LOW | openspace/grounding/backends/shell/__init__.py | 1 | CODE | |
| LOW | openspace/grounding/backends/shell/__init__.py | 2 | CODE | |
| LOW | openspace/grounding/backends/shell/__init__.py | 3 | CODE | |
| LOW | openspace/grounding/backends/shell/__init__.py | 4 | CODE | |
| LOW | …/grounding/backends/shell/transport/local_connector.py | 22 | CODE | |
| LOW | …nspace/grounding/backends/shell/transport/connector.py | 5 | CODE | |
| LOW | openspace/grounding/backends/web/__init__.py | 1 | CODE | |
| LOW | openspace/grounding/backends/web/__init__.py | 2 | CODE | |
| LOW | openspace/grounding/backends/mcp/__init__.py | 14 | CODE | |
| LOW | openspace/grounding/backends/mcp/__init__.py | 15 | CODE | |
| LOW | openspace/grounding/backends/mcp/__init__.py | 16 | CODE | |
| 134 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | openspace/tool_layer.py | 689 | async def _select_and_inject_skills( | CODE |
| LOW | openspace/dashboard_server.py | 582 | def _build_workflow_artifacts(workflow_dir: Path, workflow_id: str, metadata: Dict[str, Any]) -> Dict[str, Any]: | CODE |
| LOW | openspace/mcp_server.py | 207 | def _get_local_skill_registry(): | CODE |
| LOW | openspace/mcp_server.py | 335 | async def _auto_register_skill_dirs(skill_dirs: List[str]) -> int: | CODE |
| LOW | openspace/llm/client.py | 95 | def _prepare_tools_for_llmclient( | CODE |
| LOW | openspace/llm/client.py | 168 | def _infer_backend_from_tool_name(tool_name: str) -> Optional[str]: | CODE |
| LOW | openspace/llm/client.py | 189 | def _resolve_tool_call_target( | CODE |
| LOW | openspace/llm/client.py | 290 | async def _tool_result_to_message_async( | CODE |
| LOW | openspace/llm/client.py | 441 | def _merge_consecutive_system_messages(messages: List[Dict]) -> List[Dict]: | CODE |
| LOW | openspace/llm/client.py | 470 | def _rewrite_nonleading_system_messages_for_minimax( | CODE |
| LOW | openspace/llm/client.py | 503 | def _normalize_messages_for_model(cls, messages: List[Dict], model: str) -> List[Dict]: | CODE |
| LOW | openspace/llm/client.py | 514 | def _serialize_response_field(value): | CODE |
| LOW | openspace/grounding/core/search_tools.py | 864 | async def _llm_filter_with_planning( | CODE |
| LOW | openspace/grounding/core/search_tools.py | 1083 | def get_embedding_cache_stats(self) -> Dict[str, Any]: | CODE |
| LOW | openspace/grounding/core/search_tools.py | 1103 | def get_last_search_debug_info(self) -> Optional[Dict[str, Any]]: | CODE |
| LOW | openspace/grounding/core/grounding_client.py | 59 | def _register_providers_from_config(self) -> None: | CODE |
| LOW | openspace/grounding/core/grounding_client.py | 102 | def _register_system_provider(self) -> None: | CODE |
| LOW⚡ | openspace/grounding/core/grounding_client.py | 622 | def get_last_search_debug_info(self) -> Optional[Dict[str, Any]]: | CODE |
| LOW⚡ | openspace/grounding/core/grounding_client.py | 632 | async def get_tools_with_auto_search( | CODE |
| LOW | openspace/grounding/core/transport/connectors/base.py | 83 | async def _cleanup_on_connect_failure(self) -> None: | CODE |
| LOW | openspace/grounding/core/quality/manager.py | 93 | def _compute_description_hash(self, tool: "BaseTool") -> str: | CODE |
| LOW | openspace/grounding/core/quality/manager.py | 119 | def get_or_create_record_by_key(self, tool_key: str) -> ToolQualityRecord: | CODE |
| LOW | openspace/grounding/core/quality/manager.py | 696 | def _generate_recommendations( | CODE |
| LOW | openspace/grounding/core/quality/manager.py | 730 | def compute_adaptive_quality_weight(self) -> float: | CODE |
| LOW | openspace/grounding/core/quality/manager.py | 761 | def should_reevaluate_description(self, tool: "BaseTool") -> bool: | CODE |
| LOW | openspace/grounding/core/tool/base.py | 286 | async def _record_to_quality_manager( | CODE |
| LOW | openspace/grounding/backends/shell/session.py | 581 | async def _execute_code_from_response(self, response: str): | CODE |
| LOW | …enspace/grounding/backends/shell/productivity_tools.py | 44 | def _set_global_state_for_productivity(data_path: str, current_date: str) -> None: | CODE |
| LOW | …enspace/grounding/backends/shell/productivity_tools.py | 424 | def is_productivity_available() -> bool: | CODE |
| LOW⚡ | …/grounding/backends/shell/transport/local_connector.py | 34 | def _get_conda_activation_prefix(conda_env: str | None) -> str: | CODE |
| LOW | …/grounding/backends/shell/transport/local_connector.py | 131 | async def _kill_windows_process_tree(proc: asyncio.subprocess.Process, pid: int) -> bool: | CODE |
| LOW | openspace/grounding/backends/mcp/config.py | 29 | async def create_connector_from_config( | CODE |
| LOW | openspace/grounding/backends/mcp/installer.py | 564 | async def _ensure_dependencies_impl( | CODE |
| LOW | openspace/grounding/backends/mcp/tool_converter.py | 149 | def convert_mcp_tool_to_base_tool( | CODE |
| LOW | …grounding/backends/mcp/transport/connectors/sandbox.py | 226 | async def _cleanup_on_connect_failure(self) -> None: | CODE |
| LOW | …ce/grounding/backends/mcp/transport/connectors/http.py | 33 | def _build_sse_candidate_urls(base_url: str) -> list[str]: | CODE |
| LOW | …ce/grounding/backends/mcp/transport/connectors/http.py | 481 | def _parse_resources_from_json(self, resources_data: List[Dict]) -> List[Resource]: | CODE |
| LOW | …ce/grounding/backends/mcp/transport/connectors/base.py | 60 | async def _get_streams_from_connection(self): | CODE |
| LOW | …ce/grounding/backends/mcp/transport/connectors/base.py | 113 | async def _cleanup_on_connect_failure(self) -> None: | CODE |
| LOW | …ounding/backends/mcp/transport/connectors/websocket.py | 60 | async def _get_streams_from_connection(self): | CODE |
| LOW | …ounding/backends/mcp/transport/connectors/websocket.py | 145 | async def _cleanup_on_connect_failure(self) -> None: | CODE |
| LOW | …rounding/backends/mcp/transport/task_managers/stdio.py | 323 | def _suppress_mcp_json_errors(self): | CODE |
| LOW | openspace/grounding/backends/gui/anthropic_utils.py | 134 | def maybe_filter_to_n_most_recent_images( | CODE |
| LOW | openspace/grounding/backends/gui/tool.py | 576 | async def _record_intermediate_step( | CODE |
| LOW | openspace/grounding/backends/gui/tool.py | 123 | async def _execute_task_with_planning( | STRING |
| LOW⚡ | …ce/grounding/backends/gui/transport/local_connector.py | 66 | def _get_accessibility_helper(self): | CODE |
| LOW⚡ | …ce/grounding/backends/gui/transport/local_connector.py | 127 | def _fix_pyautogui_less_than_bug(command: str) -> str: | CODE |
| LOW | openspace/grounding/backends/gui/transport/connector.py | 110 | def _fix_pyautogui_less_than_bug(command: str) -> str: | CODE |
| LOW | openspace/skill_engine/patch.py | 41 | def _normalize_skill_frontmatter(skill_dir: Path) -> None: | CODE |
| LOW | openspace/skill_engine/patch.py | 889 | def _apply_search_replace_to_file( | CODE |
| LOW | openspace/skill_engine/store.py | 269 | def _migrate_add_evolution_processed_at(self) -> None: | CODE |
| LOW | openspace/skill_engine/store.py | 830 | def load_evolution_candidates( | CODE |
| LOW | openspace/skill_engine/registry.py | 666 | def _build_skill_selection_prompt( | CODE |
| LOW | openspace/skill_engine/registry.py | 707 | def _parse_skill_selection_response(content: str) -> tuple[List[str], str]: | CODE |
| LOW | openspace/skill_engine/conversation_formatter.py | 87 | def _collect_iteration_segments( | CODE |
| LOW | openspace/skill_engine/conversation_formatter.py | 313 | def _extract_embedded_summary(content: str) -> Optional[str]: | CODE |
| LOW | openspace/skill_engine/analyzer.py | 275 | async def _record_tool_quality_feedback( | CODE |
| LOW | openspace/skill_engine/analyzer.py | 475 | def _load_skill_contents_from_disk( | CODE |
| LOW | openspace/skill_engine/fuzzy_match.py | 177 | def whitespace_normalized_replacer(content: str, find: str) -> Replacer: | CODE |
| LOW | openspace/skill_engine/fuzzy_match.py | 211 | def indentation_flexible_replacer(content: str, find: str) -> Replacer: | CODE |
| 91 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | openspace/tool_layer.py | 303 | CODE | |
| LOW | openspace/tool_layer.py | 787 | CODE | |
| LOW | openspace/tool_layer.py | 856 | CODE | |
| LOW | openspace/mcp_server.py | 531 | CODE | |
| LOW | openspace/mcp_server.py | 625 | CODE | |
| LOW | openspace/platforms/recording.py | 47 | CODE | |
| LOW | openspace/platforms/recording.py | 89 | CODE | |
| LOW | openspace/llm/client.py | 95 | CODE | |
| LOW | openspace/llm/client.py | 542 | CODE | |
| LOW | openspace/llm/client.py | 619 | CODE | |
| LOW | openspace/grounding/core/search_tools.py | 465 | CODE | |
| LOW | openspace/grounding/core/search_tools.py | 649 | CODE | |
| LOW | openspace/grounding/core/search_tools.py | 864 | CODE | |
| LOW | openspace/grounding/core/types.py | 98 | CODE | |
| LOW | openspace/grounding/core/grounding_client.py | 350 | CODE | |
| LOW | openspace/grounding/core/grounding_client.py | 745 | CODE | |
| LOW | …ce/grounding/core/transport/task_managers/async_ctx.py | 32 | CODE | |
| LOW | …ce/grounding/core/transport/task_managers/async_ctx.py | 69 | CODE | |
| LOW | openspace/grounding/core/quality/manager.py | 294 | CODE | |
| LOW | openspace/grounding/core/quality/manager.py | 399 | CODE | |
| LOW | openspace/grounding/core/tool/remote_tool.py | 31 | CODE | |
| LOW | openspace/grounding/backends/__init__.py | 3 | CODE | |
| LOW | openspace/grounding/backends/shell/provider.py | 22 | CODE | |
| LOW | openspace/grounding/backends/shell/session.py | 360 | CODE | |
| LOW | openspace/grounding/backends/shell/session.py | 420 | CODE | |
| LOW | …enspace/grounding/backends/shell/productivity_tools.py | 147 | CODE | |
| LOW | openspace/grounding/backends/mcp/config.py | 29 | CODE | |
| LOW | openspace/grounding/backends/mcp/provider.py | 200 | CODE | |
| LOW | openspace/grounding/backends/mcp/provider.py | 330 | CODE | |
| LOW | openspace/grounding/backends/mcp/installer.py | 117 | CODE | |
| LOW | openspace/grounding/backends/mcp/installer.py | 368 | CODE | |
| LOW | openspace/grounding/backends/mcp/installer.py | 513 | CODE | |
| LOW | openspace/grounding/backends/mcp/tool_converter.py | 54 | CODE | |
| LOW | …grounding/backends/mcp/transport/connectors/sandbox.py | 98 | CODE | |
| LOW | …ce/grounding/backends/mcp/transport/connectors/http.py | 140 | CODE | |
| LOW | …ce/grounding/backends/mcp/transport/connectors/http.py | 603 | CODE | |
| LOW | …ounding/backends/mcp/transport/connectors/websocket.py | 78 | CODE | |
| LOW | …ackends/mcp/transport/task_managers/streamable_http.py | 21 | CODE | |
| LOW | …ackends/mcp/transport/task_managers/streamable_http.py | 26 | CODE | |
| LOW | …rounding/backends/mcp/transport/task_managers/stdio.py | 64 | CODE | |
| LOW | openspace/grounding/backends/gui/session.py | 50 | CODE | |
| LOW | openspace/grounding/backends/gui/anthropic_utils.py | 134 | CODE | |
| LOW | openspace/grounding/backends/gui/anthropic_utils.py | 188 | CODE | |
| LOW | openspace/grounding/backends/gui/anthropic_client.py | 177 | CODE | |
| LOW | openspace/grounding/backends/gui/anthropic_client.py | 442 | CODE | |
| LOW | openspace/grounding/backends/gui/tool.py | 674 | CODE | |
| LOW | openspace/grounding/backends/gui/transport/actions.py | 149 | CODE | |
| LOW | openspace/config/loader.py | 62 | CODE | |
| LOW | openspace/skill_engine/patch.py | 126 | CODE | |
| LOW | openspace/skill_engine/patch.py | 181 | CODE | |
| LOW | openspace/skill_engine/patch.py | 281 | CODE | |
| LOW | openspace/skill_engine/patch.py | 582 | CODE | |
| LOW | openspace/skill_engine/patch.py | 626 | CODE | |
| LOW | openspace/skill_engine/patch.py | 773 | CODE | |
| LOW | openspace/skill_engine/patch.py | 830 | CODE | |
| LOW | openspace/skill_engine/store.py | 343 | CODE | |
| LOW | openspace/skill_engine/store.py | 603 | CODE | |
| LOW | openspace/skill_engine/store.py | 1110 | CODE | |
| LOW | openspace/skill_engine/skill_utils.py | 254 | CODE | |
| LOW | openspace/skill_engine/registry.py | 120 | CODE | |
| 77 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …nspace/local_server/platform_adapters/macos_adapter.py | 0 | get list of all running applications returns: application list | STRING |
| HIGH | …nspace/local_server/platform_adapters/linux_adapter.py | 0 | get list of all running applications returns: application list | STRING |
| HIGH | …pace/local_server/platform_adapters/windows_adapter.py | 0 | get list of all running applications returns: application list | STRING |
| HIGH | …nspace/local_server/platform_adapters/macos_adapter.py | 0 | set desktop wallpaper (gnome) args: image_path: image path returns: result dictionary | STRING |
| HIGH | …pace/local_server/platform_adapters/windows_adapter.py | 0 | set desktop wallpaper (gnome) args: image_path: image path returns: result dictionary | STRING |
| HIGH | …nspace/local_server/platform_adapters/linux_adapter.py | 0 | set desktop wallpaper (gnome) args: image_path: image path returns: result dictionary | STRING |
| HIGH | showcase/skills/write-special-chars-heredoc/SKILL.md | 0 | export function greet(name: string): string { const msg = `hello, ${name}! it's a great day.`; console.log(`greeting: ${ | STRING |
| HIGH | showcase/skills/write-special-chars-readback/SKILL.md | 0 | export function greet(name: string): string { const msg = `hello, ${name}! it's a great day.`; console.log(`greeting: ${ | STRING |
| HIGH | showcase/skills/write-special-chars-ts-check/SKILL.md | 0 | export function greet(name: string): string { const msg = `hello, ${name}! it's a great day.`; console.log(`greeting: ${ | STRING |
| HIGH | showcase/skills/write-special-chars-heredoc/SKILL.md | 0 | import react from 'react'; const app = () => ( <div classname={`container`}> <h1>it's working!</h1> </div> ); export def | STRING |
| HIGH | showcase/skills/write-special-chars-readback/SKILL.md | 0 | import react from 'react'; const app = () => ( <div classname={`container`}> <h1>it's working!</h1> </div> ); export def | STRING |
| HIGH | showcase/skills/write-special-chars-ts-check/SKILL.md | 0 | import react from 'react'; const app = () => ( <div classname={`container`}> <h1>it's working!</h1> </div> ); export def | STRING |
| HIGH | showcase/skills/write-special-chars-heredoc/SKILL.md | 0 | export const format = (val: number) => `value: ${val.tofixed(2)}`; | STRING |
| HIGH | showcase/skills/write-special-chars-readback/SKILL.md | 0 | export const format = (val: number) => `value: ${val.tofixed(2)}`; | STRING |
| HIGH | showcase/skills/write-special-chars-ts-check/SKILL.md | 0 | export const format = (val: number) => `value: ${val.tofixed(2)}`; | STRING |
| HIGH | …_bench/skills/audio-track-production-enhanced/SKILL.md | 0 | calculate beat-aligned transition points for song sections. | STRING |
| HIGH | gdpval_bench/skills/audio-track-production/SKILL.md | 0 | calculate beat-aligned transition points for song sections. | STRING |
| HIGH | …ills/audio-track-production-enhanced-enhanced/SKILL.md | 0 | calculate beat-aligned transition points for song sections. | STRING |
| HIGH | …dio-track-production-enhanced-enhanced-b8f537/SKILL.md | 0 | calculate beat-aligned transition points for song sections. | STRING |
| HIGH | …o-track-production-enhanced-enhanced-enhanced/SKILL.md | 0 | calculate beat-aligned transition points for song sections. | STRING |
| HIGH | …_bench/skills/audio-track-production-enhanced/SKILL.md | 0 | generate drum stem with rhythm patterns aligned to sections. | STRING |
| HIGH | …ills/audio-track-production-enhanced-enhanced/SKILL.md | 0 | generate drum stem with rhythm patterns aligned to sections. | STRING |
| HIGH | …dio-track-production-enhanced-enhanced-b8f537/SKILL.md | 0 | generate drum stem with rhythm patterns aligned to sections. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | openspace/grounding/core/grounding_client.py | 647 | Intelligent tool retrieval: automatically decides whether to return all tools or trigger search. | STRING |
| HIGH | openspace/grounding/core/grounding_client.py | 756 | Universal tool invocation method. Supports multiple calling patterns: 1. Using BaseToo | STRING |
| HIGH | …enspace/grounding/core/transport/task_managers/base.py | 59 | Start the connection manager and establish a connection. Args: timeout: Optional timeout in seconds | STRING |
| HIGH | openspace/grounding/core/security/e2b_sandbox.py | 188 | Get the host URL for a specific port. Args: port: The port number to get the host for | STRING |
| HIGH | …nspace/grounding/backends/shell/transport/connector.py | 42 | Execute HTTP request and retry Args: name: RPC method name payload: Re | STRING |
| HIGH | …nspace/grounding/backends/shell/transport/connector.py | 105 | Execute Python script on remote server Args: code: Python code string | STRING |
| HIGH | …nspace/grounding/backends/shell/transport/connector.py | 154 | Execute Bash script on remote server Args: script: Bash script content (can be mul | STRING |
| HIGH | openspace/grounding/backends/mcp/config.py | 41 | Create a connector based on server configuration. Args: server_config: The server configuration section | STRING |
| HIGH | openspace/grounding/backends/mcp/provider.py | 120 | Create a new MCP session for a specific server. Args: session_config: Must contain 'server' | STRING |
| HIGH | openspace/grounding/backends/mcp/client.py | 197 | Create a session for the specified server with retry logic. Args: server_name: The name of the serv | STRING |
| HIGH | openspace/grounding/backends/mcp/client.py | 325 | Get an existing session. Args: server_name: The name of the server to get the session for. | STRING |
| HIGH | openspace/grounding/backends/mcp/installer.py | 545 | Ensure the dependencies of the MCP server are installed. This method checks if the dependencies are ins | STRING |
| HIGH | …ce/grounding/backends/mcp/transport/connectors/base.py | 241 | Call an MCP tool with automatic reconnection handling and retry logic. Args: name: The name of the | STRING |
| HIGH | openspace/grounding/backends/gui/tool.py | 536 | Direct action execution (bypass LLM planning). Args: action_type: Action type from | STRING |
| HIGH | openspace/grounding/backends/gui/transport/actions.py | 150 | Build pyautogui command from action type and parameters. Args: action_type: Type of action (e.g., | STRING |
| HIGH | openspace/grounding/backends/gui/transport/connector.py | 54 | Execute operation with retry logic. Args: operation_name: Name of operation for lo | STRING |
| HIGH | openspace/grounding/backends/gui/transport/connector.py | 256 | Execute a desktop action. This is the main method for action space execution. Args: | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | openspace/platforms/recording.py | 63 | # Check if error is due to recording already in progress | COMMENT |
| LOW | openspace/llm/client.py | 382 | # Check if parameter is in the tool's schema | COMMENT |
| LOW | openspace/llm/client.py | 576 | # Check if it's a retryable error | COMMENT |
| LOW | openspace/grounding/core/grounding_client.py | 119 | # Check if quality tracking is enabled in config | COMMENT |
| LOW | openspace/grounding/core/grounding_client.py | 875 | # Check if session really exists - cached tools have session_name but session may not be running | COMMENT |
| LOW | …ce/grounding/core/transport/task_managers/async_ctx.py | 41 | # Check if this is a benign ExceptionGroup/TaskGroup error | COMMENT |
| LOW | …ce/grounding/core/transport/task_managers/async_ctx.py | 88 | # Check if it's a benign error | COMMENT |
| LOW | …enspace/grounding/core/transport/task_managers/base.py | 101 | # Check if this is a benign TaskGroup race condition | COMMENT |
| LOW | …enspace/grounding/core/transport/task_managers/base.py | 187 | # Check if this is a benign TaskGroup race condition | COMMENT |
| LOW | openspace/grounding/core/quality/manager.py | 318 | # Check if description changed | COMMENT |
| LOW | openspace/grounding/core/tool/base.py | 85 | # Check if _arun is overridden (not from BaseTool) | COMMENT |
| LOW | openspace/grounding/core/tool/base.py | 252 | # Check if tool has disabled outer recording (e.g., GUI agent with intermediate steps) | COMMENT |
| LOW | openspace/grounding/backends/mcp/provider.py | 139 | # Check if session already exists | COMMENT |
| LOW | openspace/grounding/backends/mcp/provider.py | 179 | # Check if session exists | COMMENT |
| LOW | openspace/grounding/backends/mcp/client.py | 210 | # Check if session already exists | COMMENT |
| LOW | openspace/grounding/backends/mcp/client.py | 359 | # Check if the session exists | COMMENT |
| LOW | openspace/grounding/backends/mcp/installer.py | 297 | # Check if uvx tool exists in the standard uv tools directory | COMMENT |
| LOW | openspace/grounding/backends/mcp/installer.py | 472 | # Check if it's a permission error | COMMENT |
| LOW | openspace/grounding/backends/mcp/installer.py | 588 | # Check if this server has already failed installation | COMMENT |
| LOW | openspace/grounding/backends/mcp/installer.py | 609 | # Check if the command is available | COMMENT |
| LOW | openspace/grounding/backends/mcp/installer.py | 619 | # Check if the package is installed | COMMENT |
| LOW | …ce/grounding/backends/mcp/transport/connectors/base.py | 203 | # Check if we have a client session | COMMENT |
| LOW | …ce/grounding/backends/mcp/transport/connectors/base.py | 208 | # Check if connection manager task is still running (if applicable) | COMMENT |
| LOW | …ce/grounding/backends/mcp/transport/connectors/base.py | 269 | # Check if the error might be due to connection loss | COMMENT |
| LOW | …ounding/backends/mcp/transport/connectors/websocket.py | 88 | # Check if this is a response to a pending request | COMMENT |
| LOW | …rounding/backends/mcp/transport/task_managers/stdio.py | 117 | # Check if we've collected enough to determine if it's harmless | COMMENT |
| LOW | …rounding/backends/mcp/transport/task_managers/stdio.py | 129 | # Check if this is the error line (last line of regular traceback) | COMMENT |
| LOW | …rounding/backends/mcp/transport/task_managers/stdio.py | 133 | # Check if this is a harmless cleanup error | COMMENT |
| LOW | …rounding/backends/mcp/transport/task_managers/stdio.py | 170 | # Check if this is a harmless log line | COMMENT |
| LOW | …rounding/backends/mcp/transport/task_managers/stdio.py | 196 | # Check if any pattern matches and it's related to shutdown | COMMENT |
| LOW | openspace/grounding/backends/gui/session.py | 74 | # Check if API key is available | COMMENT |
| LOW⚡ | openspace/grounding/backends/gui/tool.py | 610 | # Check if recording is active | COMMENT |
| LOW⚡ | openspace/grounding/backends/gui/tool.py | 620 | # Check if recorder is initialized | COMMENT |
| LOW⚡ | openspace/grounding/backends/gui/tool.py | 172 | # Check if task is complete | STRING |
| LOW | openspace/grounding/backends/gui/tool.py | 196 | # Check if task failed | STRING |
| LOW | openspace/grounding/backends/gui/tool.py | 219 | # Check if action is WAIT (screenshot observation, continue to next step) | STRING |
| LOW | openspace/grounding/backends/gui/tool.py | 298 | # Check if using Anthropic client | STRING |
| LOW | openspace/grounding/backends/gui/transport/connector.py | 153 | # Check if content contains '<' | COMMENT |
| LOW | openspace/config/loader.py | 82 | # Check if mcpServers already provided in merged custom configs | COMMENT |
| LOW | openspace/skill_engine/conversation_formatter.py | 152 | # Check if result contains a self-generated summary | COMMENT |
| LOW | openspace/recording/utils.py | 12 | # Check if file exists first | COMMENT |
| LOW | openspace/agents/grounding_agent.py | 407 | # Increment step | COMMENT |
| LOW | openspace/agents/grounding_agent.py | 676 | # Check if instruction mentions specific filenames | COMMENT |
| LOW | openspace/agents/grounding_agent.py | 726 | # Check if this is an iteration feedback message with guidance | COMMENT |
| LOW | openspace/utils/logging.py | 130 | # Check if configuration is needed to avoid recursive calls. | COMMENT |
| LOW | openspace/utils/telemetry/telemetry.py | 197 | # Check if version file exists | COMMENT |
| LOW | openspace/local_server/run.sh | 11 | # Check if dependencies are installed | COMMENT |
| LOW⚡ | openspace/local_server/main.py | 833 | # Check if platform adapter supports recording | COMMENT |
| LOW⚡ | openspace/local_server/main.py | 840 | # Check if recording is already in progress | COMMENT |
| LOW | openspace/local_server/main.py | 448 | # Check if conda activation command is empty (conda not found) | COMMENT |
| LOW | openspace/local_server/main.py | 884 | # Check if recording is in progress | COMMENT |
| LOW | openspace/local_server/main.py | 912 | # Check if recording file exists | COMMENT |
| LOW | …nspace/local_server/platform_adapters/macos_adapter.py | 445 | # Check if libx264 encoder is available | STRING |
| LOW | …nspace/local_server/platform_adapters/macos_adapter.py | 506 | # Check if process exited early | STRING |
| LOW | …nspace/local_server/platform_adapters/macos_adapter.py | 517 | # Check if it's a device error | STRING |
| LOW | openspace/cloud/client.py | 399 | # Check if already exists locally | COMMENT |
| LOW | openspace/prompts/grounding_agent_prompts.py | 234 | # Check if this is a benchmark scenario: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | openspace/__init__.py | 12 | __all__ = [ | CODE |
| LOW | openspace/platforms/__init__.py | 6 | __all__ = [ | CODE |
| LOW | openspace/grounding/core/search_tools.py | 324 | def _set_embedding(self, tool: BaseTool, embedding: np.ndarray) -> None: | CODE |
| LOW | …nspace/grounding/core/transport/connectors/__init__.py | 4 | __all__ = [ | CODE |
| LOW | …ace/grounding/core/transport/task_managers/__init__.py | 7 | __all__ = [ | CODE |
| LOW | openspace/grounding/core/quality/__init__.py | 14 | def set_quality_manager(manager: "ToolQualityManager") -> None: | CODE |
| LOW | openspace/grounding/core/quality/__init__.py | 20 | __all__ = [ | CODE |
| LOW | openspace/grounding/core/security/__init__.py | 12 | __all__ = [ | CODE |
| LOW | openspace/grounding/core/security/policies.py | 51 | def set_global_policy(self, policy: SecurityPolicy) -> None: | CODE |
| LOW | openspace/grounding/core/security/policies.py | 54 | def set_backend_policy(self, backend_type: BackendType, policy: SecurityPolicy) -> None: | CODE |
| LOW | openspace/grounding/core/system/__init__.py | 4 | __all__ = [ | CODE |
| LOW | openspace/grounding/core/tool/__init__.py | 5 | __all__ = ["BaseTool", "LocalTool", "RemoteTool"] | CODE |
| LOW | openspace/grounding/backends/__init__.py | 31 | __all__ = [ | CODE |
| LOW | openspace/grounding/backends/shell/__init__.py | 6 | __all__ = [ | CODE |
| LOW | …enspace/grounding/backends/shell/productivity_tools.py | 44 | def _set_global_state_for_productivity(data_path: str, current_date: str) -> None: | CODE |
| LOW | openspace/grounding/backends/web/__init__.py | 4 | __all__ = [ | CODE |
| LOW | openspace/grounding/backends/mcp/__init__.py | 28 | __all__ = [ | CODE |
| LOW | openspace/grounding/backends/mcp/installer.py | 694 | def set_global_installer(installer: MCPInstallerManager) -> None: | CODE |
| LOW | …rounding/backends/mcp/transport/connectors/__init__.py | 14 | __all__ = [ | CODE |
| LOW | …nding/backends/mcp/transport/task_managers/__init__.py | 13 | __all__ = [ | CODE |
| LOW | openspace/grounding/backends/gui/__init__.py | 13 | __all__ = [ | CODE |
| LOW | openspace/config/constants.py | 15 | __all__ = [ | CODE |
| LOW | openspace/config/__init__.py | 7 | __all__ = [ | CODE |
| LOW | openspace/config/utils.py | 30 | __all__ = ["get_config_value", "load_json_file", "save_json_file"] | CODE |
| LOW | openspace/config/loader.py | 169 | __all__ = [ | CODE |
| LOW | openspace/config/grounding.py | 301 | __all__ = [ | CODE |
| LOW | openspace/skill_engine/registry.py | 197 | def update_skill(self, old_skill_id: str, new_meta: SkillMeta) -> None: | CODE |
| LOW | openspace/skill_engine/fuzzy_match.py | 21 | __all__ = [ | CODE |
| LOW | openspace/skill_engine/__init__.py | 3 | __all__ = [ | CODE |
| LOW | openspace/skill_engine/evolver.py | 214 | def set_available_tools(self, tools: List["BaseTool"]) -> None: | CODE |
| LOW | openspace/recording/__init__.py | 11 | __all__ = [ | CODE |
| LOW⚡ | openspace/recording/video.py | 88 | __all__ = ['VideoRecorder'] | CODE |
| LOW | openspace/recording/manager.py | 1140 | __all__ = [ | CODE |
| LOW | openspace/agents/__init__.py | 4 | __all__ = [ | CODE |
| LOW | openspace/agents/grounding_agent.py | 126 | def set_skill_registry(self, registry: Optional["SkillRegistry"]) -> None: | CODE |
| LOW | openspace/utils/logging.py | 237 | def set_level(cls, level: str) -> None: | CODE |
| LOW | openspace/utils/logging.py | 254 | def set_debug(cls, debug_level: int = 2) -> None: | CODE |
| LOW | openspace/utils/logging.py | 306 | def _update_level(cls, level: int) -> None: | CODE |
| LOW | openspace/utils/telemetry/telemetry.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | openspace/local_server/__init__.py | 3 | __all__ = ["app", "run_server"] | CODE |
| LOW | openspace/local_server/utils/__init__.py | 4 | __all__ = ["AccessibilityHelper", "ScreenshotHelper"] | CODE |
| LOW | openspace/local_server/utils/screenshot.py | 8 | logger = logging.getLogger(__name__) | CODE |
| LOW | openspace/local_server/platform_adapters/__init__.py | 36 | __all__ = ["PlatformAdapter", "get_platform_adapter", "ADAPTER_AVAILABLE"] | CODE |
| LOW | openspace/cloud/__init__.py | 26 | __all__ = [ | CODE |
| LOW | openspace/prompts/__init__.py | 4 | __all__ = ["GroundingAgentPrompts", "SkillEnginePrompts"] | CODE |
| LOW | openspace/communication/__init__.py | 14 | __all__ = [ | CODE |
| LOW | openspace/communication/adapters/__init__.py | 5 | __all__ = [ | CODE |
| LOW | openspace/communication/adapters/base.py | 27 | def set_message_handler(self, handler: MessageHandler) -> None: | CODE |
| LOW | openspace/host_detection/__init__.py | 85 | __all__ = [ | CODE |
| LOW⚡ | gdpval_bench/task_loader.py | 39 | logger = logging.getLogger(__name__) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | openspace/mcp_server.py | 775 | # Step 1: Register the skill (idempotent) | COMMENT |
| LOW⚡ | openspace/mcp_server.py | 783 | # Step 2: Load record + content | COMMENT |
| LOW⚡ | openspace/mcp_server.py | 793 | # Step 3: Run FIX evolution | COMMENT |
| LOW | openspace/mcp_server.py | 819 | # Step 4: Write .upload_meta.json | COMMENT |
| LOW⚡ | openspace/grounding/backends/web/session.py | 203 | # Step 1: Deep research | STRING |
| LOW⚡ | openspace/grounding/backends/web/session.py | 214 | # Step 2: Use LLMClient to generate summary and distill key points | STRING |
| LOW⚡ | openspace/grounding/backends/gui/anthropic_client.py | 123 | # Step 1: LLM coordinates (display_size) -> Physical pixels (screen_size) | COMMENT |
| LOW⚡ | openspace/grounding/backends/gui/anthropic_client.py | 124 | # Step 2: Physical pixels -> PyAutoGUI logical pixels (pyautogui_size) | COMMENT |
| LOW⚡ | openspace/grounding/backends/gui/tool.py | 165 | # Step 2: Plan next action using LLM | STRING |
| LOW | openspace/grounding/backends/gui/tool.py | 153 | # Step 1: Observe current state | STRING |
| LOW | openspace/grounding/backends/gui/tool.py | 230 | # Step 3: Execute the planned action | STRING |
| LOW⚡ | openspace/cloud/client.py | 321 | # Step 1: Stage | COMMENT |
| LOW⚡ | openspace/cloud/client.py | 326 | # Step 2: Content diff | COMMENT |
| LOW⚡ | openspace/cloud/client.py | 329 | # Step 3: Create record | COMMENT |
| LOW⚡ | showcase/my-daily-monitor/server/routes/office.ts | 174 | // Step 1: Get access token | COMMENT |
| LOW⚡ | showcase/my-daily-monitor/server/routes/office.ts | 177 | // Step 2: Fetch recent documents | COMMENT |
| LOW⚡ | …wcase/my-daily-monitor/src/components/InsightsPanel.ts | 421 | // Step 1: Select relevant tools | COMMENT |
| LOW⚡ | …wcase/my-daily-monitor/src/components/InsightsPanel.ts | 428 | // Step 2: Execute selected tools in parallel | COMMENT |
| LOW | …wcase/my-daily-monitor/src/components/InsightsPanel.ts | 463 | // Step 3: Call LLM | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …enspace/grounding/core/transport/task_managers/base.py | 77 | # Create a task to establish and maintain the connection | COMMENT |
| MEDIUM | openspace/grounding/backends/mcp/client.py | 246 | # Create the session with proper initialization parameters | COMMENT |
| MEDIUM | …grounding/backends/mcp/transport/connectors/sandbox.py | 60 | # Create a placeholder connection manager (will be set up in connect()) | COMMENT |
| MEDIUM | …grounding/backends/mcp/transport/connectors/sandbox.py | 192 | # Create the SSE connection URL | COMMENT |
| MEDIUM | …ce/grounding/backends/mcp/transport/connectors/http.py | 82 | # Create a placeholder connection manager (will be set up later in connect()) | COMMENT |
| MEDIUM | …ce/grounding/backends/mcp/transport/connectors/base.py | 82 | # Create the client session | COMMENT |
| MEDIUM | …ounding/backends/mcp/transport/connectors/websocket.py | 174 | # Create a request ID | COMMENT |
| MEDIUM | …ounding/backends/mcp/transport/connectors/websocket.py | 177 | # Create a future to receive the response | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …/grounding/backends/shell/transport/local_connector.py | 87 | f' conda activate {conda_env} 2>/dev/null || true\n' | CODE |
| HIGH | openspace/local_server/main.py | 142 | conda activate {conda_env} 2>/dev/null || true | CODE |
| HIGH | gdpval_bench/task_loader.py | 135 | " 1. pip install datasets && python -m gdpval_bench (auto-downloads from HuggingFace)\n" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | openspace/llm/client.py | 402 | CODE | |
| LOW | openspace/grounding/core/search_tools.py | 574 | CODE | |
| LOW | openspace/grounding/core/grounding_client.py | 549 | CODE | |
| LOW | openspace/grounding/core/grounding_client.py | 632 | CODE | |
| LOW | openspace/grounding/backends/mcp/config.py | 29 | CODE | |
| LOW | openspace/grounding/backends/mcp/client.py | 29 | CODE | |
| LOW | …ce/grounding/backends/mcp/transport/connectors/base.py | 329 | CODE | |
| LOW | …ce/grounding/backends/mcp/transport/connectors/base.py | 351 | CODE | |
| LOW | …ounding/backends/mcp/transport/connectors/websocket.py | 229 | CODE | |
| LOW | openspace/grounding/backends/gui/anthropic_client.py | 57 | CODE | |
| LOW | openspace/recording/manager.py | 19 | CODE | |
| LOW | openspace/agents/grounding_agent.py | 31 | CODE | |
| LOW | openspace/utils/logging.py | 146 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | openspace/grounding/core/quality/manager.py | 438 | # Extract and validate scores with robust error handling | COMMENT |
| MEDIUM | openspace/grounding/backends/shell/session.py | 385 | # Use comprehensive info from server | COMMENT |
| MEDIUM | openspace/utils/telemetry/telemetry.py | 261 | """Track comprehensive agent execution""" | STRING |
| MEDIUM | openspace/prompts/grounding_agent_prompts.py | 205 | return f"""Based on the complete conversation history above (including all {iterations} iteration summaries and | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL⚡ | openspace/grounding/backends/web/session.py | 206 | completion = await self._session.web_connector.client.chat.completions.create( | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | README.md | 495 | │ │ │ ├── search_tools.py # Smart Tool RAG (BM25 + embedding + LLM) | CODE |
| MEDIUM | README_CN.md | 495 | │ │ │ ├── search_tools.py # 智能工具 RAG(BM25 + embedding + LLM) | CODE |
| MEDIUM | openspace/skill_engine/evolver.py | 1368 | # content so the LLM doesn't hallucinate what's on disk. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | requirements.txt | 21 | # pyobjc-framework-quartz>=12.0; sys_platform == 'darwin' | COMMENT |
| LOW | openspace/skill_engine/patch.py | 441 | # Format: | COMMENT |
| LOW | openspace/local_server/requirements.txt | 1 | # Local server dependencies (cross-platform) | COMMENT |
| LOW | gdpval_bench/__init__.py | 1 | # GDPVal Benchmark for OpenSpace | COMMENT |
| LOW | gdpval_bench/requirements-eval.txt | 1 | # Optional: install for ClawWork-aligned evaluation (LLMEvaluator from livebench). | COMMENT |
| LOW | gdpval_bench/skills/ssl-proxy-debug-workflow/SKILL.md | 161 | # 1. Check federal aggregators | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …wcase/my-daily-monitor/src/components/InsightsPanel.ts | 77 | print("/tmp/agent-output/report.pptx") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | showcase/skills/finnhub-stock-api/SKILL.md | 12 | - **Auth**: Query param `token=YOUR_API_KEY` | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | showcase/skills/personal-monitor-domain/SKILL.md | 295 | dailyBriefing?: string; // AI-generated summary | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | openspace/mcp_server.py | 531 | async def execute_task( | CODE |