Ekko Studio is a local-first AI workspace for multi-agent chat, coding, and visual workflows, available on desktop and the web.
This report summarizes scanner evidence for EKKOLearnAI/ekko-studio, a TypeScript project with 11,358 GitHub stars. SynthScan examined 661,495 lines of code across 2442 source files, recording 2349 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 4.9 (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.
Can maintainers explain intent, assumptions, and trade-offs? 1866 finding(s).
Are imports declared and package/API names verified? 137 finding(s).
Are wrappers, guards, and repeated structures necessary? 2151 finding(s).
Which changes need focused human review? 2349 finding(s).
Run additional scans to build a history of the legacy pattern signal. Score changes are not a measure of AI adoption or code quality.
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 2349 distinct pattern matches across 14 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/desktop/packaged-webui.test.ts | 106 | function createCompiledLinuxNodePty(appOutDir: string): void { | CODE |
| LOW | tests/desktop/runtime-paths.test.ts | 82 | function createRuntimeWithoutManifest(root: string) { | CODE |
| LOW | tests/server/agent-bridge-profile-env.test.ts | 140 | async def fake_create_subprocess_exec(*args, **kwargs): | CODE |
| LOW | tests/server/agent-bridge-profile-env.test.ts | 144 | async def fake_create_subprocess_shell(*args, **kwargs): | CODE |
| LOW⚡ | tests/server/agent-bridge-profile-env.test.ts | 644 | def reset_current_session_key(token): | CODE |
| LOW⚡ | tests/server/agent-bridge-profile-env.test.ts | 646 | def unregister_gateway_notify(session_key): | CODE |
| LOW | tests/server/workflow-manager.test.ts | 16 | function restoreEnvironmentVariable(name: string, value: string | undefined): void { | CODE |
| LOW | tests/server/health-controller.test.ts | 82 | async function loadHealthControllerWithoutInjectedVersion(options: Omit<LoadHealthControllerOptions, 'injectedVersion'> | CODE |
| LOW | tests/server/health-controller.test.ts | 86 | async function loadHealthControllerWithInjectedVersion(version: string) { | CODE |
| LOW | tests/server/outbound-relay-client.test.ts | 139 | function startHermesPrimaryMockRun(socket: any, runId = 'run-primary'): string { | CODE |
| LOW | tests/server/group-chat-member-sync.test.ts | 46 | function createRoomSummaryServiceMock(): Pick<GroupRoomSummaryService, 'getState'> { | CODE |
| LOW | tests/server/group-chat-workspace-diff.test.ts | 82 | function expectWorkspaceChangeDeleted(changeId: string) { | CODE |
| LOW | tests/server/write-gate-service.test.ts | 19 | async function configureFakeApprovalRuntime(lines: string[]) { | CODE |
| LOW | tests/server/agent-bridge-provider-credentials.test.ts | 165 | def resolve_minimax_oauth_runtime_credentials(): | CODE |
| LOW | tests/server/hermes-web-ui-mcp.test.ts | 30 | function expectProviderSafeToolNames(serverName: string, tools: Array<{ name: string }>) { | CODE |
| LOW | tests/server/group-chat-test-helpers.ts | 84 | export async function createTestGroupChatServer(options: { authEnabled?: boolean } = {}): Promise<{ | CODE |
| LOW | tests/server/studio-mcp-autoinject.test.ts | 49 | function createStableLauncherAlias(targetLauncher: string): string { | CODE |
| LOW | tests/server/system-info.test.ts | 8 | async function loadSystemInfoWithInjectedVersion(version?: string) { | CODE |
| LOW | tests/server/agent-bridge-python-concurrency.test.ts | 51 | def register_task_env_overrides(task_id, overrides): | CODE |
| LOW⚡ | tests/server/agent-bridge-python-concurrency.test.ts | 95 | def reset_current_session_key(token): | CODE |
| LOW⚡ | tests/server/agent-bridge-python-concurrency.test.ts | 104 | def unregister_gateway_notify(session_key): | CODE |
| LOW | tests/server/agent-bridge-python-concurrency.test.ts | 2465 | def _shutdown_all_mcp_servers(self): | CODE |
| LOW | tests/server/claude-code-proxy-thinking-compat.test.ts | 54 | function successfulEventStreamResponse(text = 'continued'): Response { | CODE |
| LOW | tests/server/claude-code-proxy-thinking-compat.test.ts | 65 | function encryptedContentEventStreamResponse(): Response { | CODE |
| LOW | tests/server/model-visibility-controller.test.ts | 169 | function sourceAwareProviderModels( | CODE |
| LOW | tests/server/group-chat-agent-relay-manager.test.ts | 13 | function createRejectedRelaySocket(message: string) { | CODE |
| LOW | tests/server/group-chat-agent-relay-manager.test.ts | 109 | async function restorePersistedConnection(errorMessage: string, legacy = false) { | CODE |
| LOW | tests/server/coding-agent-module-harness.test.ts | 11 | const source = 'export function prepareZcodeScopedRuntime() {}' | CODE |
| LOW | tests/server/helpers/windows-shell-executable.ts | 83 | export function materializeShellExecutable(scriptPath: string): string { | CODE |
| LOW | tests/ekko-agent/recovery.test.ts | 397 | function inactiveRecoveryDirective() { | CODE |
| LOW | tests/ekko-agent/runtime.test.ts | 67 | function emptyStreamingWithCreateFallback(response: ModelResponse): ModelClient { | CODE |
| LOW | tests/e2e/workflow-ui.spec.ts | 5 | async function selectWorkflowScheduleFrequency(page: Page, modal: Locator, frequency: string) { | CODE |
| LOW | tests/e2e/workflow-ui.spec.ts | 10 | async function selectWorkflowScheduleField(page: Page, modal: Locator, testId: string, value: string) { | CODE |
| LOW | tests/e2e/new-chat-helpers.ts | 23 | export async function expectNewChatEffectsMoving(page: Page) { | CODE |
| LOW | tests/client/markdown-rendering.test.ts | 23 | function trustedDesktopBrowserBridge() { | CODE |
| LOW | tests/client/display-settings.test.ts | 103 | function mountDesktopDisplaySettings() { | CODE |
| LOW | tests/client/workflow-import-confirmation.test.ts | 13 | view.indexOf('async function confirmPendingWorkflowImport()'), | CODE |
| LOW | tests/client/use-speech-tts.test.ts | 37 | function installSpeechSynthesisMock() { | CODE |
| LOW⚡ | tests/client/chat-panel-session-actions.test.ts | 47 | expect(source).toContain('function handleActiveSessionMenuSelect(key: string)') | CODE |
| LOW⚡ | tests/client/chat-panel-session-actions.test.ts | 55 | expect(source).toContain('function handleActiveSessionMenuKeydown(event: KeyboardEvent)') | CODE |
| LOW⚡ | tests/client/chat-panel-session-actions.test.ts | 56 | expect(source).toContain('function focusAdjacentToActiveSessionMenuTrigger(backwards: boolean)') | CODE |
| LOW | tests/client/group-chat-panel-workspace-source.test.ts | 60 | source.indexOf('async function handleCancelQueuedExecution('), | CODE |
| LOW | tests/client/i18n-coverage.test.ts | 73 | function collectLiteralTranslationKeys(): string[] { | CODE |
| LOW | tests/client/stt-settings-ui.test.ts | 548 | async function importVoiceSettingsComponent() { | CODE |
| LOW | scripts/workflow-live-acceptance.ts | 17 | function productionWorkflowSnapshot(path: string): Record<string, { count: number; sha256: string } | { missing: true }> | CODE |
| LOW | packages/desktop/src/main/runtime-version.ts | 8 | export function hermesAgentVersionFromRuntimeTag(tag?: string | null): string | null { | CODE |
| LOW | packages/desktop/src/main/runtime-version.ts | 15 | export function runtimeManifestMatchesHermesAgentVersion( | CODE |
| LOW | packages/desktop/src/main/runtime-version.ts | 26 | export function compareHermesAgentVersions(left?: string | null, right?: string | null): number | null { | CODE |
| LOW | packages/desktop/src/main/group-chat-agent-popup.ts | 5 | export function isGroupChatAgentLinkPopup(url: string, frameName: string): boolean { | CODE |
| LOW | packages/desktop/src/main/group-chat-agent-popup.ts | 19 | export function groupChatAgentLinkPopupResponse( | CODE |
| LOW | packages/desktop/src/main/hermes-cli-invocation.ts | 6 | export function resolveDesktopHermesCliInvocation( | CODE |
| LOW | packages/desktop/src/main/updater-source.ts | 32 | export function resolveDesktopUpdateSource(metadata: unknown): DesktopUpdateSource { | CODE |
| LOW | packages/desktop/src/main/screenshot-windows.ts | 31 | export async function prepareScreenshotImageEditor(): Promise<ScreenshotOverlayWindow[]> { | CODE |
| LOW | packages/desktop/src/main/screenshot-windows.ts | 53 | export async function prepareScreenshotOverlays(displays = screen.getAllDisplays()): Promise<ScreenshotOverlayWindow[]> | CODE |
| LOW | packages/desktop/src/main/screenshot-windows.ts | 93 | export function disposeScreenshotOverlays() { | CODE |
| LOW | …kages/desktop/src/main/hermes-environment-selection.ts | 227 | function environmentRootFromPython(python: string | undefined): string | undefined { | CODE |
| LOW | …kages/desktop/src/main/hermes-environment-selection.ts | 235 | export function resolveDesktopHermesInstallationEnvironment( | CODE |
| LOW | …kages/desktop/src/main/hermes-environment-selection.ts | 337 | function managedRuntimePreflightError(runtime: DesktopManagedHermesRuntime): string { | CODE |
| LOW | …kages/desktop/src/main/hermes-environment-selection.ts | 344 | function missingManagedRuntimeAgentFiles(runtime: DesktopManagedHermesRuntime): string[] { | CODE |
| LOW | …kages/desktop/src/main/hermes-environment-selection.ts | 365 | export async function resolveDesktopHermesSelection( | CODE |
| 1742 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/server/mcp-controller.test.ts | 3 | // ── Mocks ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/server/mcp-controller.test.ts | 28 | // ── Helpers ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/server/mcp-controller.test.ts | 84 | // ── Tests ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/server/bridge-mcp-action.test.ts | 3 | // ── Mocks ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/server/bridge-mcp-action.test.ts | 16 | // ── Tests ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/server/context-engine.test.ts | 13 | // ─── Helpers ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/server/context-engine.test.ts | 38 | // ─── SummaryCache ───────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/server/context-engine.test.ts | 91 | // ─── Prompts ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/server/context-engine.test.ts | 182 | // ─── ContextEngine.buildContext ──────────────────────────────── | COMMENT |
| MEDIUM | …ckages/server/src/modules/studio/sockets/group-chat.ts | 58 | // ─── Types ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/server/src/modules/studio/sockets/group-chat.ts | 1006 | // ─── Rooms ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/server/src/modules/studio/sockets/group-chat.ts | 1775 | // ─── Messages ───────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/server/src/modules/studio/sockets/group-chat.ts | 2605 | // ─── Room Agents ────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/server/src/modules/studio/sockets/group-chat.ts | 2787 | // ─── Rolling Room Summary ─────────────────────────────── | COMMENT |
| MEDIUM | …ckages/server/src/modules/studio/sockets/group-chat.ts | 3069 | // ─── Room Members ────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/server/src/modules/studio/sockets/group-chat.ts | 3177 | // ─── ChatRoom (in-memory, for online members) ───────────────── | COMMENT |
| MEDIUM | …ckages/server/src/modules/studio/sockets/group-chat.ts | 3247 | // ─── GroupChat Server ──────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/server/src/modules/studio/sockets/group-chat.ts | 4040 | // ─── Restore Agents ───────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/server/src/modules/studio/sockets/group-chat.ts | 4100 | // ─── Auth ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/server/src/modules/studio/sockets/group-chat.ts | 4135 | // ─── Connection ───────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/server/src/modules/studio/sockets/group-chat.ts | 4192 | // ─── Handlers ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/server/src/modules/studio/sockets/group-chat.ts | 5872 | // ─── Helpers ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | …rc/modules/studio/services/group-chat/agent-clients.ts | 46 | // ─── Types ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …rc/modules/studio/services/group-chat/agent-clients.ts | 351 | // ─── Agent Client (single connection) ───────────────────────── | COMMENT |
| MEDIUM | …rc/modules/studio/services/group-chat/agent-clients.ts | 981 | // ─── Hermes Agent Bridge Integration ─────────────────────── | COMMENT |
| MEDIUM | …rc/modules/studio/services/group-chat/agent-clients.ts | 2245 | // ─── AgentClients (roomId -> agents) ────────────────────────── | COMMENT |
| MEDIUM | …src/modules/studio/services/group-chat/agent-prompt.ts | 1 | // ─── Agent Identity Instructions ──────────────────────────── | COMMENT |
| MEDIUM | …src/modules/studio/services/group-chat/agent-prompt.ts | 123 | // ─── Summarization Prompts ───────────────────────────────── | COMMENT |
| MEDIUM | …server/src/modules/studio/services/group-chat/types.ts | 3 | // ─── Message Types ────────────────────────────────────────── | COMMENT |
| MEDIUM | …server/src/modules/studio/services/group-chat/types.ts | 20 | // ─── Compression Config ──────────────────────────────────── | COMMENT |
| MEDIUM | …server/src/modules/studio/services/group-chat/types.ts | 43 | // ─── Compression Output ──────────────────────────────────── | COMMENT |
| MEDIUM⚡ | …server/src/modules/studio/services/group-chat/types.ts | 59 | // ─── Context Snapshot (persisted in SQLite) ──────────────── | COMMENT |
| MEDIUM⚡ | …server/src/modules/studio/services/group-chat/types.ts | 69 | // ─── Summary Cache ────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | …server/src/modules/studio/services/group-chat/types.ts | 78 | // ─── Dependency Injection ────────────────────────────────── | COMMENT |
| MEDIUM | …server/src/modules/studio/services/group-chat/types.ts | 108 | // ─── Build Context Input ─────────────────────────────────── | COMMENT |
| MEDIUM | …tudio/services/group-chat/context-engine/compressor.ts | 150 | // ── Path A: Snapshot exists — incremental ──────────── | COMMENT |
| MEDIUM | …tudio/services/group-chat/context-engine/compressor.ts | 294 | // ── Path B: No snapshot — full context ─────────────── | COMMENT |
| MEDIUM | …tudio/services/group-chat/context-engine/compressor.ts | 444 | // ─── Private ───────────────────────────────────────────── | COMMENT |
| MEDIUM | …rc/modules/studio/services/context-compressor/index.ts | 42 | // ─── Types ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | …rc/modules/studio/services/context-compressor/index.ts | 122 | // ─── Token counting ───────────────────────────────────── | COMMENT |
| MEDIUM | …rc/modules/studio/services/context-compressor/index.ts | 260 | // ─── Prompts ──────────────────────────────────────────── | COMMENT |
| MEDIUM | …rc/modules/studio/services/context-compressor/index.ts | 385 | // ─── Pre-cleaning ─────────────────────────────────────── | COMMENT |
| MEDIUM | …rc/modules/studio/services/context-compressor/index.ts | 525 | // ─── LLM Summarization ────────────────────────────────── | COMMENT |
| MEDIUM | …rc/modules/studio/services/context-compressor/index.ts | 724 | // ─── Main Compressor ──────────────────────────────────── | COMMENT |
| MEDIUM | packages/server/src/modules/hermes/sockets/terminal.ts | 18 | // ─── Session types ────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/server/src/modules/hermes/sockets/terminal.ts | 34 | // ─── Helpers ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/server/src/modules/hermes/sockets/terminal.ts | 71 | // ─── WebSocket server setup ───────────────────────────────────── | COMMENT |
| MEDIUM | packages/server/src/modules/hermes/sockets/terminal.ts | 128 | // ─── PTY output → WebSocket ────────────────────────────────── | COMMENT |
| MEDIUM | packages/server/src/modules/hermes/sockets/terminal.ts | 160 | // ─── Message handler ──────────────────────────────────────── | COMMENT |
| MEDIUM | packages/server/src/modules/hermes/sockets/terminal.ts | 268 | // ─── Cleanup ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/server/src/modules/hermes/sockets/terminal.ts | 285 | // ─── Auto-create first session ────────────────────────────── | COMMENT |
| MEDIUM | …es/server/src/modules/hermes/services/bridge/client.ts | 804 | // ───── MCP Management ───── | COMMENT |
| MEDIUM | …modules/hermes/services/bridge/python/bridge_broker.py | 449 | # ───── MCP Management ───── | COMMENT |
| MEDIUM⚡ | …modules/hermes/services/bridge/python/bridge_server.py | 325 | # ───── MCP Management (forwarded from broker) ───── | COMMENT |
| MEDIUM⚡ | …modules/hermes/services/bridge/python/bridge_server.py | 331 | # ───── MCP Management Methods (for BridgeServer worker process) ───── | COMMENT |
| MEDIUM | …modules/hermes/services/bridge/python/bridge_server.py | 443 | # ───── MCP sub-handlers ───── | COMMENT |
| MEDIUM | …ages/server/src/modules/hermes/services/runtime/cli.ts | 553 | // ─── Profile management ────────────────────────────────────── | COMMENT |
| MEDIUM | …server/src/modules/hermes/services/terminal/runtime.ts | 47 | // ─── Shell detection ──────────────────────────────────────────── | COMMENT |
| MEDIUM | …r/src/modules/hermes/services/kanban/kanban-service.ts | 30 | // ─── Types ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …r/src/modules/hermes/services/kanban/kanban-service.ts | 187 | // ─── CLI wrappers ─────────────────────────────────────────────── | COMMENT |
| 64 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/server/agent-bridge-profile-env.test.ts | 87 | print(json.dumps({ | CODE |
| HIGH | tests/server/agent-bridge-profile-env.test.ts | 208 | print(json.dumps({ | CODE |
| HIGH | tests/server/agent-bridge-profile-env.test.ts | 285 | print(json.dumps({ | CODE |
| HIGH | tests/server/agent-bridge-profile-env.test.ts | 337 | print(json.dumps({ | CODE |
| HIGH | tests/server/agent-bridge-profile-env.test.ts | 380 | print(json.dumps({ | CODE |
| HIGH | tests/server/agent-bridge-profile-env.test.ts | 425 | print(json.dumps({ | CODE |
| HIGH | tests/server/agent-bridge-profile-env.test.ts | 493 | return None | CODE |
| HIGH | tests/server/agent-bridge-profile-env.test.ts | 506 | print(json.dumps({ | CODE |
| HIGH | tests/server/agent-bridge-profile-env.test.ts | 573 | return None | CODE |
| HIGH | tests/server/agent-bridge-profile-env.test.ts | 591 | print(json.dumps({ | CODE |
| HIGH⚡ | tests/server/agent-bridge-profile-env.test.ts | 641 | return None | CODE |
| HIGH | tests/server/agent-bridge-profile-env.test.ts | 681 | return None | CODE |
| HIGH | tests/server/agent-bridge-profile-env.test.ts | 698 | print(json.dumps({ | CODE |
| HIGH | tests/server/agent-bridge-profile-env.test.ts | 749 | print(json.dumps({ | CODE |
| HIGH | tests/server/agent-bridge-usage-hook.test.ts | 200 | print(json.dumps({"callback_count": len(manager._hooks["post_api_request"]), "events": run.events})) | CODE |
| HIGH | tests/server/agent-bridge-usage-hook.test.ts | 237 | print(json.dumps({"rows": db.rows, "pending": getattr(agent, "_hermes_bridge_prepersisted_user_pending", None)})) | CODE |
| HIGH | tests/server/agent-bridge-usage-hook.test.ts | 253 | print(json.dumps({"rows": db.rows, "pending": getattr(agent, "_hermes_bridge_prepersisted_user_pending", None)})) | CODE |
| HIGH | tests/server/agent-bridge-mcp-imports.test.ts | 81 | print(json.dumps({"listed": listed["ok"], "reloaded": reloaded, | CODE |
| HIGH | tests/server/agent-bridge-mcp-tools-filter.test.ts | 46 | print(json.dumps(server._handle_mcp_action("mcp_list", {}, "default"))) | CODE |
| HIGH | tests/server/agent-bridge-mcp-tools-filter.test.ts | 131 | print(json.dumps({ | CODE |
| HIGH | tests/server/agent-bridge-reasoning-effort.test.ts | 139 | print(json.dumps({ | CODE |
| HIGH | tests/server/agent-bridge-reasoning-effort.test.ts | 162 | print(json.dumps({ | CODE |
| HIGH | tests/server/agent-bridge-reasoning-effort.test.ts | 178 | print(json.dumps(legacy)) | CODE |
| HIGH | tests/server/agent-bridge-reasoning-effort.test.ts | 194 | print(json.dumps({"caught": caught})) | CODE |
| HIGH | tests/server/agent-bridge-reasoning-effort.test.ts | 226 | print(json.dumps({ | CODE |
| HIGH | tests/server/agent-bridge-provider-credentials.test.ts | 81 | print(json.dumps({ | CODE |
| HIGH | tests/server/agent-bridge-provider-credentials.test.ts | 132 | print(json.dumps({"response": response, "calls": calls})) | CODE |
| HIGH | tests/server/agent-bridge-provider-credentials.test.ts | 188 | print(json.dumps({"response": response, "calls": calls})) | CODE |
| HIGH | tests/server/agent-bridge-mcp-instance.test.ts | 62 | print('ok') | CODE |
| HIGH | tests/server/agent-bridge-mcp-instance.test.ts | 73 | print('ok') | CODE |
| HIGH | tests/server/agent-bridge-mcp-instance.test.ts | 124 | print('ok') | CODE |
| HIGH | tests/server/agent-bridge-bootstrap.test.ts | 46 | print(json.dumps({'starts': len(marker.read_text().splitlines()), | CODE |
| HIGH⚡ | tests/server/agent-bridge-bootstrap.test.ts | 146 | print(json.dumps({'bootstrapped_before_ready': ready_after_bootstrap, | STRING |
| HIGH⚡ | tests/server/agent-bridge-bootstrap.test.ts | 150 | print((root / 'stderr.log').read_text(), file=sys.stderr) | STRING |
| HIGH | tests/server/agent-bridge-bootstrap.test.ts | 193 | print(json.dumps(result)) | STRING |
| HIGH | tests/server/agent-bridge-worker-endpoint.test.ts | 60 | print(json.dumps({"endpoint": endpoint, "port": port})) | CODE |
| HIGH | tests/server/agent-bridge-worker-endpoint.test.ts | 104 | print(json.dumps({"endpoint": endpoint, "port": port})) | CODE |
| HIGH | tests/server/agent-bridge-worker-endpoint.test.ts | 147 | print(json.dumps({"endpoint": endpoint})) | CODE |
| HIGH | tests/server/agent-bridge-worker-endpoint.test.ts | 188 | print(json.dumps({"endpoint": endpoint})) | CODE |
| HIGH | tests/server/hermes-plugins-runtime.test.ts | 27 | return None | CODE |
| HIGH⚡ | tests/server/agent-bridge-python-concurrency.test.ts | 114 | elif request_id in waiters: | CODE |
| HIGH | tests/server/agent-bridge-python-concurrency.test.ts | 241 | return True | CODE |
| HIGH | tests/server/agent-bridge-python-concurrency.test.ts | 243 | return False | CODE |
| HIGH | tests/server/agent-bridge-python-concurrency.test.ts | 2287 | return None | CODE |
| HIGH | tests/server/agent-bridge-python-concurrency.test.ts | 2498 | return None | CODE |
| HIGH | tests/server/agent-bridge-yaml.test.ts | 72 | print(json.dumps({'read': read, 'saved': saved, 'fallback': fallback, | CODE |
| HIGH | tests/server/agent-bridge-learn-command.test.ts | 88 | print(json.dumps(pool.dispatch_command("session-1", "/learn from docs", "default"))) | CODE |
| HIGH | tests/server/agent-bridge-learn-command.test.ts | 108 | print(json.dumps(pool.dispatch_command("session-1", "/learn from docs", "default"))) | CODE |
| HIGH | tests/server/agent-bridge-fallback-providers.test.ts | 85 | print(json.dumps({"fallback_model": session.agent.kwargs.get("fallback_model")})) | CODE |
| HIGH | …r/src/modules/hermes/services/write-gate/write-gate.ts | 81 | elif subsystem == "skills": | CODE |
| HIGH⚡ | …r/src/modules/hermes/services/write-gate/write-gate.ts | 129 | elif action_name == "delete": | CODE |
| HIGH⚡ | …r/src/modules/hermes/services/write-gate/write-gate.ts | 150 | elif action_name == "patch": | CODE |
| HIGH⚡ | …r/src/modules/hermes/services/write-gate/write-gate.ts | 160 | elif action_name == "write_file": | CODE |
| HIGH⚡ | …r/src/modules/hermes/services/write-gate/write-gate.ts | 162 | elif action_name == "remove_file": | CODE |
| HIGH | …r/src/modules/hermes/services/write-gate/write-gate.ts | 199 | elif action in {"approve", "reject"}: | CODE |
| HIGH | …r/src/modules/hermes/services/write-gate/write-gate.ts | 218 | print(json.dumps(result, ensure_ascii=False)) | CODE |
| HIGH | …/server/src/modules/hermes/services/plugins/plugins.ts | 90 | print(json.dumps({ | CODE |
| HIGH | …/server/src/modules/hermes/services/plugins/plugins.ts | 156 | return None | CODE |
| HIGH⚡ | …/server/src/modules/hermes/services/plugins/plugins.ts | 239 | elif manifest.kind == "exclusive": | CODE |
| HIGH⚡ | …/server/src/modules/hermes/services/plugins/plugins.ts | 242 | elif manifest.kind == "model-provider": | CODE |
| 3 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …ules/hermes/services/bridge/python/bridge_transport.py | 257 | except OSError: | CODE |
| HIGH | …ules/hermes/services/bridge/python/bridge_transport.py | 360 | except OSError: | CODE |
| HIGH | …ules/hermes/services/bridge/python/bridge_transport.py | 138 | except Exception: | CODE |
| HIGH | …ules/hermes/services/bridge/python/bridge_transport.py | 166 | except OSError: | CODE |
| HIGH | …modules/hermes/services/bridge/python/bridge_broker.py | 483 | except OSError: | CODE |
| HIGH | …modules/hermes/services/bridge/python/bridge_broker.py | 532 | except Exception: | CODE |
| HIGH | …modules/hermes/services/bridge/python/bridge_broker.py | 381 | except Exception: | CODE |
| HIGH | …modules/hermes/services/bridge/python/bridge_broker.py | 421 | except Exception: | CODE |
| HIGH | …modules/hermes/services/bridge/python/bridge_broker.py | 441 | except Exception: | CODE |
| HIGH | …modules/hermes/services/bridge/python/bridge_broker.py | 539 | except OSError: | CODE |
| HIGH | …odules/hermes/services/bridge/python/bridge_runtime.py | 83 | except Exception: | CODE |
| HIGH | …odules/hermes/services/bridge/python/bridge_runtime.py | 105 | except Exception: | CODE |
| HIGH | …odules/hermes/services/bridge/python/bridge_runtime.py | 243 | except Exception: | CODE |
| HIGH | …odules/hermes/services/bridge/python/bridge_runtime.py | 471 | except Exception: | CODE |
| HIGH | …odules/hermes/services/bridge/python/bridge_runtime.py | 537 | except Exception: | CODE |
| HIGH | …odules/hermes/services/bridge/python/bridge_runtime.py | 739 | except Exception: | CODE |
| HIGH | …odules/hermes/services/bridge/python/bridge_runtime.py | 772 | except Exception: | CODE |
| HIGH | …odules/hermes/services/bridge/python/bridge_runtime.py | 801 | except Exception: | CODE |
| HIGH | …odules/hermes/services/bridge/python/bridge_runtime.py | 963 | except ValueError: | CODE |
| HIGH | …odules/hermes/services/bridge/python/bridge_runtime.py | 218 | except Exception: | CODE |
| HIGH | …odules/hermes/services/bridge/python/bridge_runtime.py | 225 | except Exception: | CODE |
| HIGH | …odules/hermes/services/bridge/python/bridge_runtime.py | 765 | except Exception: | CODE |
| HIGH | …odules/hermes/services/bridge/python/bridge_runtime.py | 850 | except Exception: | CODE |
| HIGH | …modules/hermes/services/bridge/python/bridge_server.py | 483 | except Exception: | CODE |
| HIGH | …modules/hermes/services/bridge/python/bridge_server.py | 511 | except Exception: | CODE |
| HIGH | …modules/hermes/services/bridge/python/bridge_server.py | 796 | except OSError: | CODE |
| HIGH | …modules/hermes/services/bridge/python/bridge_server.py | 788 | except OSError: | CODE |
| HIGH | …c/modules/hermes/services/bridge/python/bridge_pool.py | 76 | except Exception: | CODE |
| HIGH | …c/modules/hermes/services/bridge/python/bridge_pool.py | 64 | except Exception: | CODE |
| HIGH | …c/modules/hermes/services/bridge/python/bridge_pool.py | 1666 | except Exception: | CODE |
| HIGH | …c/modules/hermes/services/bridge/python/bridge_pool.py | 2431 | except queue.Full: | CODE |
| HIGH | …c/modules/hermes/services/bridge/python/bridge_pool.py | 2935 | except Exception: | CODE |
| HIGH | …c/modules/hermes/services/bridge/python/bridge_pool.py | 2943 | except Exception: | CODE |
| HIGH | …c/modules/hermes/services/bridge/python/bridge_pool.py | 283 | except Exception: | CODE |
| HIGH | …c/modules/hermes/services/bridge/python/bridge_pool.py | 388 | except Exception: | CODE |
| HIGH | …c/modules/hermes/services/bridge/python/bridge_pool.py | 2271 | except queue.Full: | CODE |
| HIGH | …c/modules/hermes/services/bridge/python/bridge_pool.py | 2279 | except Exception: | CODE |
| HIGH | …c/modules/hermes/services/bridge/python/bridge_pool.py | 2891 | except Exception: | CODE |
| HIGH | …c/modules/hermes/services/bridge/python/bridge_pool.py | 2924 | except Exception: | CODE |
| HIGH | …c/modules/hermes/services/bridge/python/bridge_pool.py | 2964 | except Exception: | CODE |
| HIGH | …c/modules/hermes/services/bridge/python/bridge_pool.py | 1917 | except Exception: | CODE |
| HIGH | …c/modules/hermes/services/bridge/python/bridge_pool.py | 2092 | except AttributeError: | CODE |
| HIGH | …c/modules/hermes/services/bridge/python/bridge_pool.py | 2394 | except queue.Full: | CODE |
| HIGH | …c/modules/hermes/services/bridge/python/bridge_pool.py | 2567 | except ImportError: | CODE |
| HIGH | …c/modules/hermes/services/bridge/python/bridge_pool.py | 1957 | except Exception: | CODE |
| HIGH | …c/modules/hermes/services/bridge/python/bridge_pool.py | 2024 | except Exception: | CODE |
| HIGH | …c/modules/hermes/services/bridge/python/bridge_pool.py | 2107 | except Exception: | CODE |
| HIGH | …c/modules/hermes/services/bridge/python/bridge_pool.py | 2114 | except Exception: | CODE |
| HIGH | …c/modules/hermes/services/bridge/python/bridge_pool.py | 2058 | except Exception: | CODE |
| HIGH | packages/ekko-agent/skills/xlsx/scripts/csv_to_xlsx.py | 43 | except ValueError: | CODE |
| HIGH | packages/ekko-agent/skills/xlsx/scripts/csv_to_xlsx.py | 48 | except ValueError: | CODE |
| HIGH | packages/ekko-agent/skills/xlsx/scripts/xlsx_edit.py | 66 | except ValueError: | CODE |
| HIGH | packages/ekko-agent/skills/xlsx/scripts/xlsx_edit.py | 71 | except ValueError: | CODE |
| HIGH | packages/ekko-agent/skills/pdf/scripts/pdf_stamp.py | 51 | except Exception: | CODE |
| HIGH | packages/ekko-agent/skills/pdf/scripts/pdf_stamp.py | 80 | except Exception: | CODE |
| HIGH | packages/ekko-agent/skills/pdf/scripts/_raster.py | 19 | except ImportError: | CODE |
| HIGH | packages/ekko-agent/skills/pdf/scripts/pdf_make_form.py | 40 | except Exception: | CODE |
| HIGH | packages/ekko-agent/skills/pdf/scripts/pdf_split.py | 33 | except Exception: | CODE |
| HIGH | packages/ekko-agent/skills/pdf/scripts/pdf_meta.py | 28 | except Exception: | CODE |
| HIGH | …ckages/ekko-agent/skills/pdf/scripts/pdf_page_image.py | 43 | except Exception: | CODE |
| 7 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/server/agent-bridge-bootstrap.test.ts | 148 | except Exception: | STRING |
| LOW⚡ | …r/src/modules/hermes/services/write-gate/write-gate.ts | 123 | except Exception: | CODE |
| LOW⚡ | …r/src/modules/hermes/services/write-gate/write-gate.ts | 135 | except Exception: | CODE |
| LOW⚡ | …r/src/modules/hermes/services/write-gate/write-gate.ts | 145 | except Exception: | CODE |
| LOW | …/server/src/modules/hermes/services/plugins/plugins.ts | 89 | except Exception as exc: | CODE |
| LOW | …/server/src/modules/hermes/services/plugins/plugins.ts | 105 | except Exception as exc: | CODE |
| LOW | …/server/src/modules/hermes/services/plugins/plugins.ts | 128 | except Exception as exc: | CODE |
| LOW | …/server/src/modules/hermes/services/plugins/plugins.ts | 148 | except Exception as exc: | CODE |
| MEDIUM | …/server/src/modules/hermes/services/plugins/plugins.ts | 102 | def safe_scan(label, fn): | CODE |
| MEDIUM | …/server/src/modules/hermes/services/plugins/plugins.ts | 114 | def read_manifest_list(plugin_path, *keys): | CODE |
| LOW | …ules/hermes/services/bridge/python/bridge_transport.py | 138 | except Exception: | CODE |
| LOW | …ules/hermes/services/bridge/python/bridge_transport.py | 154 | except Exception as exc: | CODE |
| LOW | …ules/hermes/services/bridge/python/bridge_transport.py | 293 | except Exception: | CODE |
| LOW | …ules/hermes/services/bridge/python/bridge_transport.py | 338 | except Exception as exc: | CODE |
| LOW | …modules/hermes/services/bridge/python/bridge_broker.py | 291 | except Exception: | CODE |
| LOW | …modules/hermes/services/bridge/python/bridge_broker.py | 381 | except Exception: | CODE |
| LOW | …modules/hermes/services/bridge/python/bridge_broker.py | 421 | except Exception: | CODE |
| LOW | …modules/hermes/services/bridge/python/bridge_broker.py | 441 | except Exception: | CODE |
| LOW | …modules/hermes/services/bridge/python/bridge_broker.py | 471 | except Exception as exc: | CODE |
| LOW | …modules/hermes/services/bridge/python/bridge_broker.py | 478 | except Exception as exc: | CODE |
| LOW | …modules/hermes/services/bridge/python/bridge_broker.py | 526 | except Exception as exc: | CODE |
| LOW | …modules/hermes/services/bridge/python/bridge_broker.py | 532 | except Exception: | CODE |
| LOW⚡ | …odules/hermes/services/bridge/python/bridge_runtime.py | 83 | except Exception: | CODE |
| LOW⚡ | …odules/hermes/services/bridge/python/bridge_runtime.py | 92 | except Exception: | CODE |
| LOW⚡ | …odules/hermes/services/bridge/python/bridge_runtime.py | 99 | except Exception: | CODE |
| LOW⚡ | …odules/hermes/services/bridge/python/bridge_runtime.py | 105 | except Exception: | CODE |
| LOW⚡ | …odules/hermes/services/bridge/python/bridge_runtime.py | 218 | except Exception: | CODE |
| LOW⚡ | …odules/hermes/services/bridge/python/bridge_runtime.py | 225 | except Exception: | CODE |
| LOW⚡ | …odules/hermes/services/bridge/python/bridge_runtime.py | 558 | except Exception: | CODE |
| LOW⚡ | …odules/hermes/services/bridge/python/bridge_runtime.py | 566 | except Exception: | CODE |
| LOW⚡ | …odules/hermes/services/bridge/python/bridge_runtime.py | 576 | except Exception: | CODE |
| LOW⚡ | …odules/hermes/services/bridge/python/bridge_runtime.py | 725 | except Exception: | CODE |
| LOW⚡ | …odules/hermes/services/bridge/python/bridge_runtime.py | 739 | except Exception: | CODE |
| LOW⚡ | …odules/hermes/services/bridge/python/bridge_runtime.py | 765 | except Exception: | CODE |
| LOW⚡ | …odules/hermes/services/bridge/python/bridge_runtime.py | 772 | except Exception: | CODE |
| LOW⚡ | …odules/hermes/services/bridge/python/bridge_runtime.py | 850 | except Exception: | CODE |
| LOW⚡ | …odules/hermes/services/bridge/python/bridge_runtime.py | 855 | except Exception: | CODE |
| LOW | …odules/hermes/services/bridge/python/bridge_runtime.py | 167 | except Exception: | CODE |
| LOW | …odules/hermes/services/bridge/python/bridge_runtime.py | 243 | except Exception: | CODE |
| LOW | …odules/hermes/services/bridge/python/bridge_runtime.py | 383 | except Exception: | CODE |
| LOW | …odules/hermes/services/bridge/python/bridge_runtime.py | 459 | except Exception: | CODE |
| LOW | …odules/hermes/services/bridge/python/bridge_runtime.py | 471 | except Exception: | CODE |
| LOW | …odules/hermes/services/bridge/python/bridge_runtime.py | 525 | except Exception: | CODE |
| LOW | …odules/hermes/services/bridge/python/bridge_runtime.py | 537 | except Exception: | CODE |
| LOW | …odules/hermes/services/bridge/python/bridge_runtime.py | 801 | except Exception: | CODE |
| LOW | …odules/hermes/services/bridge/python/bridge_runtime.py | 871 | except Exception as exc: | CODE |
| LOW | …odules/hermes/services/bridge/python/bridge_runtime.py | 897 | except Exception as exc: | CODE |
| LOW | …odules/hermes/services/bridge/python/bridge_runtime.py | 929 | except Exception as exc: | CODE |
| LOW | …odules/hermes/services/bridge/python/bridge_runtime.py | 946 | except Exception: | CODE |
| MEDIUM | …modules/hermes/services/bridge/python/bridge_server.py | 366 | def _shutdown_all_mcp_servers(self) -> int: | CODE |
| LOW⚡ | …modules/hermes/services/bridge/python/bridge_server.py | 340 | except Exception: | CODE |
| LOW⚡ | …modules/hermes/services/bridge/python/bridge_server.py | 350 | except Exception as e: | CODE |
| LOW⚡ | …modules/hermes/services/bridge/python/bridge_server.py | 360 | except Exception as e: | CODE |
| LOW | …modules/hermes/services/bridge/python/bridge_server.py | 172 | except Exception as exc: | CODE |
| LOW | …modules/hermes/services/bridge/python/bridge_server.py | 483 | except Exception: | CODE |
| LOW | …modules/hermes/services/bridge/python/bridge_server.py | 511 | except Exception: | CODE |
| LOW | …modules/hermes/services/bridge/python/bridge_server.py | 564 | except Exception as e: | CODE |
| LOW | …modules/hermes/services/bridge/python/bridge_server.py | 638 | except Exception as e: | CODE |
| LOW | …modules/hermes/services/bridge/python/bridge_server.py | 685 | except Exception as e: | CODE |
| LOW | …modules/hermes/services/bridge/python/bridge_server.py | 773 | except Exception as exc: | CODE |
| 91 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | tests/desktop/screenshot-portal.test.ts | 70 | const calls = state.bus.call.mock.calls.map(([message]: any[]) => message.member) | CODE |
| CRITICAL | tests/desktop/screenshot-portal.test.ts | 129 | const handle = state.bus.call.mock.calls.find(([message]: any[]) => message.member === 'Screenshot')[0].body[1].hand | CODE |
| CRITICAL | tests/desktop/screenshot.test.ts | 103 | const init = overlay.webContents.send.mock.calls.find(([name]: string[]) => name === 'hermes-desktop:screenshot-over | CODE |
| CRITICAL | tests/desktop/screenshot.test.ts | 475 | const init = editor.webContents.send.mock.calls.find(([name]: string[]) => name === 'hermes-desktop:screenshot-overl | CODE |
| CRITICAL | tests/server/codex-compact.test.ts | 45 | const writes = child.stdin.write.mock.calls.map((call: any[]) => call[0]) | CODE |
| CRITICAL⚡ | tests/client/group-chat-store-baseline.test.ts | 1018 | expect(groupChatApiMock.socket.emit.mock.calls.filter(call => call[0] === 'typing')).toHaveLength(1) | CODE |
| CRITICAL⚡ | tests/client/group-chat-store-baseline.test.ts | 1022 | expect(groupChatApiMock.socket.emit.mock.calls.filter(call => call[0] === 'typing')).toHaveLength(1) | CODE |
| CRITICAL⚡ | tests/client/group-chat-store-baseline.test.ts | 1026 | expect(groupChatApiMock.socket.emit.mock.calls.filter(call => call[0] === 'typing')).toHaveLength(2) | CODE |
| CRITICAL⚡ | tests/client/group-chat-store-baseline.test.ts | 1029 | expect(groupChatApiMock.socket.emit.mock.calls.filter(call => call[0] === 'stop_typing')).toHaveLength(1) | CODE |
| CRITICAL | tests/client/group-chat-store-baseline.test.ts | 1288 | expect(groupChatApiMock.socket.emit.mock.calls.filter(call => call[0] === 'approval.respond' || call[0] === 'clarify | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ules/hermes/services/bridge/python/bridge_transport.py | 1 | CODE | |
| LOW | …modules/hermes/services/bridge/python/hermes_bridge.py | 2 | CODE | |
| LOW | …modules/hermes/services/bridge/python/hermes_bridge.py | 5 | CODE | |
| LOW | …modules/hermes/services/bridge/python/hermes_bridge.py | 7 | CODE | |
| LOW | …modules/hermes/services/bridge/python/bridge_broker.py | 1 | CODE | |
| LOW | …odules/hermes/services/bridge/python/bridge_runtime.py | 1 | CODE | |
| LOW | …odules/hermes/services/bridge/python/bridge_runtime.py | 15 | CODE | |
| LOW | …modules/hermes/services/bridge/python/bridge_server.py | 1 | CODE | |
| LOW | …rc/modules/hermes/services/bridge/python/bridge_mcp.py | 2 | CODE | |
| LOW | …c/modules/hermes/services/bridge/python/bridge_pool.py | 1 | CODE | |
| LOW | …c/modules/hermes/services/bridge/python/bridge_pool.py | 5 | CODE | |
| LOW | …c/modules/hermes/services/bridge/python/bridge_pool.py | 17 | CODE | |
| LOW | …ckages/ekko-agent/skills/xlsx/tests/test_xlsx_skill.py | 6 | CODE | |
| LOW | packages/ekko-agent/skills/xlsx/scripts/xlsx_read.py | 28 | CODE | |
| LOW | packages/ekko-agent/skills/xlsx/scripts/xlsx_create.py | 62 | CODE | |
| LOW | packages/ekko-agent/skills/xlsx/scripts/xlsx_create.py | 75 | CODE | |
| LOW | packages/ekko-agent/skills/xlsx/scripts/csv_to_xlsx.py | 17 | CODE | |
| LOW | packages/ekko-agent/skills/xlsx/scripts/xlsx_edit.py | 42 | CODE | |
| LOW | …ges/ekko-agent/skills/xlsx/scripts/xlsx_restructure.py | 31 | CODE | |
| LOW | packages/ekko-agent/skills/xlsx/scripts/xlsx_recalc.py | 25 | CODE | |
| LOW | packages/ekko-agent/skills/xlsx/scripts/xlsx_to_csv.py | 13 | CODE | |
| LOW | packages/ekko-agent/skills/pdf/tests/test_pdf_skill.py | 2 | CODE | |
| LOW | packages/ekko-agent/skills/pdf/tests/test_pdf_skill.py | 283 | CODE | |
| LOW | packages/ekko-agent/skills/pdf/scripts/pdf_stamp.py | 15 | CODE | |
| LOW | packages/ekko-agent/skills/pdf/scripts/_raster.py | 5 | CODE | |
| LOW | packages/ekko-agent/skills/pdf/scripts/_raster.py | 17 | CODE | |
| LOW | packages/ekko-agent/skills/pdf/scripts/pdf_make_form.py | 29 | CODE | |
| LOW | packages/ekko-agent/skills/pdf/scripts/pdf_split.py | 3 | CODE | |
| LOW | packages/ekko-agent/skills/pdf/scripts/pdf_meta.py | 15 | CODE | |
| LOW | …ckages/ekko-agent/skills/pdf/scripts/pdf_page_image.py | 11 | CODE | |
| LOW | packages/ekko-agent/skills/pdf/scripts/pdf_read.py | 3 | CODE | |
| LOW | packages/ekko-agent/skills/pdf/scripts/pdf_fill_form.py | 12 | CODE | |
| LOW | …kages/ekko-agent/skills/pdf/scripts/pdf_form_layout.py | 24 | CODE | |
| LOW | packages/ekko-agent/skills/pdf/scripts/pdf_create.py | 19 | CODE | |
| LOW | packages/ekko-agent/skills/pdf/scripts/pdf_merge.py | 3 | CODE | |
| LOW | packages/ekko-agent/skills/pdf/scripts/pdf_secure.py | 7 | CODE | |
| LOW | packages/ekko-agent/skills/pdf/scripts/pdf_watermark.py | 3 | CODE | |
| LOW | …t/skills/ocr-and-documents/tests/test_ocr_documents.py | 2 | CODE | |
| LOW | …nt/skills/ocr-and-documents/scripts/extract_pymupdf.py | 3 | CODE | |
| LOW | …ent/skills/ocr-and-documents/scripts/extract_marker.py | 3 | CODE | |
| LOW | …ckages/ekko-agent/skills/docx/tests/test_docx_skill.py | 8 | CODE | |
| LOW | packages/ekko-agent/skills/docx/scripts/docx_read.py | 16 | CODE | |
| LOW | packages/ekko-agent/skills/docx/scripts/docx_common.py | 4 | CODE | |
| LOW | …ckages/ekko-agent/skills/docx/scripts/docx_template.py | 16 | CODE | |
| LOW | …ckages/ekko-agent/skills/docx/scripts/docx_validate.py | 22 | CODE | |
| LOW | packages/ekko-agent/skills/docx/scripts/docx_edit.py | 29 | CODE | |
| LOW | …ckages/ekko-agent/skills/docx/scripts/docx_comments.py | 21 | CODE | |
| LOW | …kages/ekko-agent/skills/docx/scripts/docx_revisions.py | 27 | CODE | |
| LOW | packages/ekko-agent/skills/docx/scripts/docx_create.py | 39 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ules/hermes/services/bridge/python/bridge_transport.py | 98 | CODE | |
| LOW | …ules/hermes/services/bridge/python/bridge_transport.py | 105 | CODE | |
| LOW | …modules/hermes/services/bridge/python/bridge_broker.py | 194 | CODE | |
| LOW | …modules/hermes/services/bridge/python/bridge_broker.py | 502 | CODE | |
| LOW | …odules/hermes/services/bridge/python/bridge_runtime.py | 48 | CODE | |
| LOW | …odules/hermes/services/bridge/python/bridge_runtime.py | 668 | CODE | |
| LOW | …odules/hermes/services/bridge/python/bridge_runtime.py | 828 | CODE | |
| LOW | …modules/hermes/services/bridge/python/bridge_server.py | 42 | CODE | |
| LOW | …modules/hermes/services/bridge/python/bridge_server.py | 465 | CODE | |
| LOW | …modules/hermes/services/bridge/python/bridge_server.py | 643 | CODE | |
| LOW | …modules/hermes/services/bridge/python/bridge_server.py | 748 | CODE | |
| LOW | …c/modules/hermes/services/bridge/python/bridge_pool.py | 293 | CODE | |
| LOW | …c/modules/hermes/services/bridge/python/bridge_pool.py | 391 | CODE | |
| LOW | …c/modules/hermes/services/bridge/python/bridge_pool.py | 1038 | CODE | |
| LOW | …c/modules/hermes/services/bridge/python/bridge_pool.py | 1113 | CODE | |
| LOW | …c/modules/hermes/services/bridge/python/bridge_pool.py | 1607 | CODE | |
| LOW | …c/modules/hermes/services/bridge/python/bridge_pool.py | 1856 | CODE | |
| LOW | …c/modules/hermes/services/bridge/python/bridge_pool.py | 2455 | CODE | |
| LOW | …c/modules/hermes/services/bridge/python/bridge_pool.py | 2909 | CODE | |
| LOW | …c/modules/hermes/services/bridge/python/bridge_pool.py | 334 | CODE | |
| LOW | packages/ekko-agent/skills/xlsx/scripts/xlsx_read.py | 69 | CODE | |
| LOW | packages/ekko-agent/skills/xlsx/scripts/xlsx_read.py | 87 | CODE | |
| LOW | packages/ekko-agent/skills/xlsx/scripts/xlsx_create.py | 172 | CODE | |
| LOW | packages/ekko-agent/skills/xlsx/scripts/xlsx_edit.py | 105 | CODE | |
| LOW | …ges/ekko-agent/skills/xlsx/scripts/xlsx_restructure.py | 191 | CODE | |
| LOW | packages/ekko-agent/skills/xlsx/scripts/xlsx_recalc.py | 36 | CODE | |
| LOW | packages/ekko-agent/skills/pdf/scripts/pdf_make_form.py | 52 | CODE | |
| LOW | packages/ekko-agent/skills/pdf/scripts/pdf_read.py | 37 | CODE | |
| LOW | packages/ekko-agent/skills/pdf/scripts/pdf_read.py | 57 | CODE | |
| LOW | …kages/ekko-agent/skills/pdf/scripts/pdf_form_layout.py | 69 | CODE | |
| LOW | packages/ekko-agent/skills/pdf/scripts/pdf_create.py | 34 | CODE | |
| LOW | …es/ekko-agent/skills/powerpoint/scripts/pptx_create.py | 90 | CODE | |
| LOW | …ages/ekko-agent/skills/powerpoint/scripts/pptx_edit.py | 85 | CODE | |
| LOW | …ages/ekko-agent/skills/powerpoint/scripts/pptx_edit.py | 113 | CODE | |
| LOW | …ages/ekko-agent/skills/powerpoint/scripts/pptx_edit.py | 147 | CODE | |
| LOW | …ages/ekko-agent/skills/powerpoint/scripts/pptx_edit.py | 293 | CODE | |
| LOW | …ages/ekko-agent/skills/powerpoint/scripts/pptx_edit.py | 313 | CODE | |
| LOW | …nt/skills/ocr-and-documents/scripts/extract_pymupdf.py | 99 | CODE | |
| LOW | packages/ekko-agent/skills/docx/scripts/docx_read.py | 65 | CODE | |
| LOW | packages/ekko-agent/skills/docx/scripts/docx_read.py | 84 | CODE | |
| LOW | packages/ekko-agent/skills/docx/scripts/docx_read.py | 97 | CODE | |
| LOW | packages/ekko-agent/skills/docx/scripts/docx_common.py | 7 | CODE | |
| LOW | …ckages/ekko-agent/skills/docx/scripts/docx_template.py | 30 | CODE | |
| LOW | packages/ekko-agent/skills/docx/scripts/docx_edit.py | 88 | CODE | |
| LOW | packages/ekko-agent/skills/docx/scripts/docx_edit.py | 165 | CODE | |
| LOW | …ckages/ekko-agent/skills/docx/scripts/docx_comments.py | 58 | CODE | |
| LOW | …ckages/ekko-agent/skills/docx/scripts/docx_comments.py | 204 | CODE | |
| LOW | packages/ekko-agent/skills/docx/scripts/docx_create.py | 95 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/e2e/cursor-management.spec.ts | 22 | await expect(editor.locator('textarea')).toHaveAttribute('placeholder', '~/.cursor/cli-config.json') | CODE |
| LOW | tests/e2e/workflow-ui.spec.ts | 424 | await expect(edgeDialog.getByTestId('workflow-edge-condition-value').locator('input')).toHaveAttribute('placeholder', | CODE |
| LOW | tests/e2e/jev-settings.spec.ts | 51 | await expect(panel.getByLabel(`JEV ${messages.jev.apiKey}`, { exact: true })).toHaveAttribute('placeholder', message | CODE |
| LOW | tests/client/skills-view.test.ts | 50 | props: ['value', 'placeholder', 'size', 'clearable'], | CODE |
| LOW | tests/client/fallback-providers-panel.test.ts | 16 | NInput: { props: ['value', 'placeholder', 'size', 'clearable'], template: '<input />' }, | CODE |
| LOW | tests/client/kanban-view.test.ts | 176 | template: '<input class="n-input-stub" :placeholder="placeholder" :value="value" @input="$emit(\'update:value\', $ev | CODE |
| LOW | tests/client/stt-settings-ui.test.ts | 347 | :placeholder="placeholder" | CODE |
| LOW | tests/client/stt-settings-ui.test.ts | 355 | :placeholder="placeholder" | CODE |
| LOW⚡ | tests/client/plugins-view.test.ts | 45 | props: ['value', 'placeholder'], | CODE |
| LOW⚡ | tests/client/plugins-view.test.ts | 47 | template: '<input :value="value" :placeholder="placeholder" @input="$emit(\'update:value\', $event.target.value)" /> | CODE |
| LOW⚡ | tests/client/plugins-view.test.ts | 50 | props: ['value', 'options', 'placeholder'], | CODE |
| LOW | …client/src/components/hermes/files/FileRenameModal.vue | 86 | :placeholder="placeholder" | CODE |
| LOW | …t/src/components/coding-agents/CodingAgentMcpPanel.vue | 457 | :placeholder="placeholder" | CODE |
| LOW | packages/client/src/views/ekko/McpView.vue | 367 | :placeholder="placeholder" | CODE |
| LOW | packages/client/src/views/hermes/McpManagerView.vue | 481 | :placeholder="placeholder" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/desktop/src/main/webui-server.ts | 701 | // the Python bridge starts in the background. Let the first chat/context | COMMENT |
| LOW | …erver/src/modules/studio/services/config/app-config.ts | 61 | // Web UI-only model display aliases. Keys are provider -> canonical model ID -> display label. | COMMENT |
| LOW | …rc/modules/studio/services/context-compressor/index.ts | 141 | // Bound for contiguous runs of any single pat_str class (letters, digits, | COMMENT |
| LOW | …modules/studio/services/webhooks/business-consumers.ts | 21 | // const original = event.type === 'chat.clarification.requested' ? 'clarify.requested' : event.type.slice(5) | COMMENT |
| LOW | packages/esp32-c3/v1/src/main.cpp | 1 | #include <Arduino.h> | COMMENT |
| LOW | packages/esp32-c3/v1/src/main.cpp | 21 | #define HERMES_MCU_FIRMWARE_VERSION "v1" | COMMENT |
| LOW | packages/esp32-c3/v1/src/main.cpp | 41 | #ifndef HERMES_PIN_I2S_DIN | COMMENT |
| LOW | packages/esp32-c3/v2/src/main.cpp | 1 | #include <Arduino.h> | COMMENT |
| LOW | packages/esp32-c3/v2/src/main.cpp | 21 | #define HERMES_MCU_FIRMWARE_VERSION "v2" | COMMENT |
| LOW | packages/esp32-c3/v2/src/main.cpp | 41 | #ifndef HERMES_PIN_I2S_DIN | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/harness/server-module-boundaries.md | 79 | session-agent-runtime.ts # injected Hermes/Coding adapters used by Studio session orchestration | CODE |
| MEDIUM | docs/harness/server-module-boundaries.md | 129 | sessions.ts # Studio session/history orchestration through injected Agent adapters | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …modules/hermes/services/bridge/python/hermes_bridge.py | 177 | def _set_path_env(agent_root: str | None, hermes_home: str | None) -> None: | CODE |
| LOW | …odules/hermes/services/bridge/python/bridge_runtime.py | 476 | def _set_path_env(agent_root: str | None = None, hermes_home: str | None = None) -> None: | CODE |
| LOW | …odules/hermes/services/bridge/python/bridge_runtime.py | 632 | def _set_worker_profile_env(profile: str | None) -> None: | CODE |
| LOW⚡ | …c/modules/hermes/services/bridge/python/bridge_pool.py | 252 | def _set_boundary_interrupt_flag(agent: Any) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | package-lock.json | 10799 | "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …c/modules/hermes/services/bridge/python/bridge_pool.py | 1749 | CODE | |
| LOW | …c/modules/hermes/services/bridge/python/bridge_pool.py | 1825 | CODE | |
| LOW | …c/modules/hermes/services/bridge/python/bridge_pool.py | 1856 | CODE |