Consider it done. The open-source AI agent that works out of the box · 想到,就能做到。开源、开箱即用的 AI Agent。
This report summarizes scanner evidence for makecindy/cindy, a TypeScript project with 2,996 GitHub stars. SynthScan examined 4,053,213 lines of code across 12509 source files, recording 13832 pattern matches distributed across 20 syntactic categories. The legacy adjusted pattern signal is 4.3 (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? 11860 finding(s).
Are imports declared and package/API names verified? 468 finding(s).
Are wrappers, guards, and repeated structures necessary? 12474 finding(s).
Which changes need focused human review? 13832 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 13832 distinct pattern matches across 20 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 | docs/client-log-upload-implementation-plan.md | 235 | export function escapeMainLogContinuationLines(msg: string): string; | CODE |
| LOW | …ign-previews/mobile-remote-task-suggestions/index.html | 1843 | function countHomeSuggestionSessions(home, searchResults) { | CODE |
| LOW | …ign-previews/mobile-remote-task-suggestions/index.html | 1860 | function remoteTaskSuggestionsMode({ | CODE |
| LOW | packages/plugin-protocol/src/memberUpload.ts | 69 | export function isPluginMemberUploadFailureCode( | CODE |
| LOW | packages/plugin-protocol/src/memberUpload.ts | 189 | export function parsePreparePluginMemberUploadRequest( | CODE |
| LOW | packages/plugin-protocol/src/memberUpload.ts | 211 | export function parseCommitPluginMemberUploadRequest( | CODE |
| LOW | packages/plugin-protocol/src/memberUpload.ts | 223 | export function parsePreparePluginMemberUploadResponse( | CODE |
| LOW | packages/plugin-protocol/src/memberUpload.ts | 252 | export function parseCommitPluginMemberUploadResponse( | CODE |
| LOW | packages/plugin-protocol/src/memberUpload.ts | 262 | function parsePluginMemberUploadStatusResponseAtPath( | CODE |
| LOW⚡ | packages/plugin-protocol/src/memberUpload.ts | 302 | export function parsePluginMemberUploadStatusResponse( | CODE |
| LOW⚡ | packages/plugin-protocol/src/memberUpload.ts | 308 | function parseMemberReleaseSummary(value: unknown, path: string): PluginMemberReleaseSummary { | CODE |
| LOW⚡ | packages/plugin-protocol/src/memberUpload.ts | 318 | export function parseListMyPluginMemberReleasesResponse( | CODE |
| LOW | packages/plugin-protocol/src/recommendations.ts | 14 | export function validateGhostRecommendations( | CODE |
| LOW | packages/plugin-protocol/src/recommendations.ts | 77 | export function localizeGhostRecommendation( | CODE |
| LOW | packages/plugin-protocol/src/manifest.ts | 228 | export function isGhostNodeMcpReservedMethod(method: string): boolean { | CODE |
| LOW | packages/plugin-protocol/src/manifest.ts | 414 | export function isValidGhostNetworkHostPattern(p: unknown): p is string { | CODE |
| LOW | packages/plugin-protocol/src/manifest.ts | 1004 | export function ghostManifestUsesOidcToken(manifest: GhostManifest): boolean { | CODE |
| LOW | packages/plugin-protocol/src/manifest.ts | 1060 | function compareNumericIdentifiers(left: string, right: string): -1 | 0 | 1 { | CODE |
| LOW | packages/plugin-protocol/src/manifest.ts | 1088 | export function isVersionlessCindyVersion(value: string): boolean { | CODE |
| LOW | packages/plugin-protocol/src/manifest.ts | 1148 | function isGhostManifestReservedRecordKey(value: string): boolean { | CODE |
| LOW | packages/plugin-protocol/src/manifest.ts | 1243 | function prepareGhostManifestForValidation( | CODE |
| LOW | packages/plugin-protocol/src/manifest.ts | 1309 | function dropEmptyLegacyCapabilitySlots( | CODE |
| LOW | packages/plugin-protocol/src/delivery.ts | 257 | function parseScopedOrganizationId( | CODE |
| LOW | packages/plugin-protocol/src/delivery.ts | 307 | function parseVisiblePluginSummary(value: unknown, index: number): VisiblePluginSummary { | CODE |
| LOW | packages/plugin-protocol/src/delivery.ts | 465 | export function parsePluginDownloadResponse(value: unknown): PluginDownloadResponse { | CODE |
| LOW | packages/auth-client/src/emailLoginDiscovery.ts | 54 | export async function discoverPersonalLoginOrganization( | CODE |
| LOW | packages/auth-client/src/sessionRealm.ts | 65 | export function serializeAuthSessionRecord( | CODE |
| LOW | packages/auth-client/src/sessionRealm.ts | 78 | export function parseAccountDeletionReceiptRecord( | CODE |
| LOW | packages/auth-client/src/sessionRealm.ts | 92 | export function serializeAccountDeletionReceiptRecord( | CODE |
| LOW | packages/auth-client/src/types.ts | 313 | export function captchaRequiredActionForVerificationKind( | CODE |
| LOW | packages/auth-client/src/accountMetadata.ts | 49 | export function storedAccountMetadataFromMembership( | CODE |
| LOW | packages/auth-client/src/accountMetadata.ts | 68 | export function reconcileSavedAccountMetadata( | CODE |
| LOW | packages/browser-control-runtime/src/runtime.ts | 238 | export function createBrowserControlRuntime( | CODE |
| LOW | packages/browser-control-runtime/src/proxy.ts | 71 | function parseAllowedProxyHostname(raw: string): string { | CODE |
| LOW | packages/browser-control-runtime/src/proxy.ts | 113 | function parseAllowedProxyHostnames(raw: unknown): readonly string[] | undefined { | CODE |
| LOW | packages/browser-control-runtime/src/proxy.ts | 255 | export function isBrowserProxyRequestUrlAllowed( | CODE |
| LOW | packages/browser-control-runtime/src/proxy.ts | 305 | export async function isBrowserProxyRequestUrlAllowedAsync( | CODE |
| LOW | packages/browser-control-runtime/src/proxy.ts | 378 | export function resetBrowserProxyDnsVerdictCache(): void { | CODE |
| LOW | packages/browser-control-runtime/src/unavailable.ts | 10 | export function createUnavailableBrowserRuntime( | CODE |
| LOW | …wser-control-runtime/src/shim/plugin-config-runtime.ts | 22 | export function resolveEffectiveEnableState(params: EffectiveEnableStateParams): { | CODE |
| LOW | …wser-control-runtime/src/shim/ssrf-runtime-internal.ts | 14 | export function registerManagedProxyBrowserCdpBypass(_url?: string): (() => void) | undefined { | CODE |
| LOW | …kages/browser-control-runtime/src/shim/ssrf-runtime.ts | 176 | export async function fetchSingleHopWithSsrFGuard( | CODE |
| LOW | …ages/browser-control-runtime/src/shim/media-runtime.ts | 38 | export function isImageProcessorUnavailableError(err: unknown): boolean { | CODE |
| LOW | …ges/browser-control-runtime/src/shim/plugin-runtime.ts | 11 | export function startLazyPluginServiceModule(): LazyPluginServiceHandle { | CODE |
| LOW | …wser-control-runtime/src/shim/agent-harness-runtime.ts | 25 | export function selectDefaultNodeFromList(): never { | CODE |
| LOW | …er-control-runtime/src/shim/runtime-config-snapshot.ts | 39 | export function getRuntimeConfigSourceSnapshot(): OpenClawConfig | null { | CODE |
| LOW | …ckages/browser-control-runtime/src/shim/runtime-env.ts | 33 | export function registerUnhandledRejectionHandler(handler: UnhandledRejectionHandler): () => void { | CODE |
| LOW | …es/browser-control-runtime/src/shim/gateway-runtime.ts | 73 | export function resolveNodeCommandAllowlist(): string[] { | CODE |
| LOW | …es/browser-control-runtime/src/shim/gateway-runtime.ts | 76 | export function respondUnavailableOnNodeInvokeError(): never { | CODE |
| LOW | …ges/browser-control-runtime/src/shim/_local/tmp-dir.ts | 40 | export function resolvePreferredOpenClawTmpDir( | CODE |
| LOW | …ages/browser-control-runtime/src/shim/_local/errors.ts | 16 | export function collectErrorGraphCandidates( | CODE |
| LOW | …/browser-control-runtime/src/shim/_local/text-utils.ts | 42 | function defaultBrowserRuntimeConfigDir(): string { | CODE |
| LOW | …/browser-control-runtime/src/shim/_local/text-utils.ts | 54 | export function resolveBrowserRuntimeConfigDir(): string { | CODE |
| LOW | …/browser-control-runtime/src/shim/_local/text-utils.ts | 60 | export function refreshBrowserRuntimeConfigDir(): void { | CODE |
| LOW | …s/browser-control-runtime/src/shim/_local/oom-score.ts | 68 | function shouldWrapChildForOomScore(options: OomWrapOptions | undefined): boolean { | CODE |
| LOW | …s/browser-control-runtime/src/shim/_local/oom-score.ts | 99 | export function prepareOomScoreAdjustedSpawn( | CODE |
| LOW | …s/browser-control-runtime/src/shim/_local/oom-score.ts | 119 | export function wrapArgvForChildOomScoreRaise( | CODE |
| LOW | …s/browser-control-runtime/src/shim/_local/oom-score.ts | 136 | export function hardenedEnvForChildOomWrap( | CODE |
| LOW | …/_generated/leaf/src/infra/net/undici-family-policy.ts | 12 | export function resolveUndiciAutoSelectFamily(): boolean | undefined { | CODE |
| LOW | …/_generated/leaf/src/infra/net/undici-family-policy.ts | 30 | export function createUndiciAutoSelectFamilyConnectOptions( | CODE |
| 10902 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …s/browser-control-runtime/src/shim/security-runtime.ts | 13 | // ── filesystem containment (real upstream fs-safe) ─────────────────────────── | COMMENT |
| MEDIUM | …s/browser-control-runtime/src/shim/security-runtime.ts | 30 | // ── SSRF / hostname policy (real upstream ssrf.ts) ─────────────────────────── | COMMENT |
| MEDIUM | …s/browser-control-runtime/src/shim/security-runtime.ts | 43 | // ── external content + secret compare (real upstream leaves) ───────────────── | COMMENT |
| MEDIUM | …es/browser-control-runtime/src/shim/gateway-runtime.ts | 60 | // ── dropped-path stubs (gateway server / node-host / CLI client) ───────────── | COMMENT |
| MEDIUM | packages/maker-remote-ssh/src/ConnectionPool.ts | 133 | // ── internals ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/maker-remote-ssh/src/RemoteHost.ts | 96 | // ── Remote TCP forwarding (OpenSSH `ssh -R` 等价物) ───────────────────────── | COMMENT |
| MEDIUM | packages/maker-remote-ssh/src/RemoteHost.ts | 482 | // ── channels (Phase B) ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/maker-remote-ssh/src/RemoteHost.ts | 635 | // ── remote TCP forwarding (ssh -R) ──────────────────────────────────────── | COMMENT |
| MEDIUM | packages/maker-remote-ssh/src/RemoteHost.ts | 1081 | // ── internals ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/maker-remote-ssh/src/bootstrap/installer.ts | 80 | // ── pi 专用安装(CDN/GitHub release tar.gz 整包,不经 bundled Node/npm)───────── | COMMENT |
| MEDIUM | packages/maker-remote-ssh/src/bootstrap/installer.ts | 482 | // ── Codex credential sync ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/maker-remote-ssh/src/bootstrap/installer.ts | 589 | // ── helpers ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/maker-remote-ssh/src/bootstrap/installer.ts | 633 | // ── line parsers ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ges/maker-remote-ssh/src/bootstrap/bootstrap-script.ts | 217 | # ── ensure bundled Node ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ges/maker-remote-ssh/src/bootstrap/bootstrap-script.ts | 310 | # ── verify existing agent install (idempotent re-run case) ───────────────── | COMMENT |
| MEDIUM | …ges/maker-remote-ssh/src/bootstrap/bootstrap-script.ts | 392 | # ── install agent ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …-remote-ssh/src/__tests__/pi-manager-installer.test.ts | 678 | // ── concurrency dedup ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | …s/maker-remote-ssh/src/__tests__/filteredAgent.test.ts | 26 | // ── helpers ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …s/maker-remote-ssh/src/__tests__/filteredAgent.test.ts | 67 | // ── fingerprint helpers ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …s/maker-remote-ssh/src/__tests__/filteredAgent.test.ts | 93 | // ── FilteredAgent.getIdentities ────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/device-link/src/remoteAgent.ts | 372 | // ─── 控制端解析被控端回包(对端可能是不同版本,按最小合同防御)─────────────── | COMMENT |
| MEDIUM | packages/device-link/src/client.ts | 193 | // ─── host 注入契约 ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/device-link/src/client.ts | 686 | // ─── 客户端实现 ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/device-link/src/client.ts | 814 | // ─── 生命周期 ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/device-link/src/client.ts | 1237 | // ─── 出站 API ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/device-link/src/client.ts | 1559 | // ─── 内部:请求配对 ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/device-link/src/client.ts | 1786 | // ─── 内部:连接管理 ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/device-link/src/client.ts | 2146 | // ─── 内部:入站分发 ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/device-link/src/protocol.ts | 75 | // ─── 错误码 ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | packages/device-link/src/protocol.ts | 120 | // ─── 连接层 payload ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | packages/device-link/src/protocol.ts | 122 | // ─── 隧道层 payload ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/device-link/src/protocol.ts | 235 | // ─── REST 管理面(GET /api/device-link/devices)──────────────────────────────── | COMMENT |
| MEDIUM | packages/anthropic-responses-bridge/src/types.ts | 11 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/anthropic-responses-bridge/src/types.ts | 13 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/anthropic-responses-bridge/src/types.ts | 70 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/anthropic-responses-bridge/src/types.ts | 72 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/anthropic-responses-bridge/src/types.ts | 136 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/anthropic-responses-bridge/src/types.ts | 138 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/anthropic-responses-bridge/src/translate-sse.ts | 314 | // ── message_start ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/anthropic-responses-bridge/src/translate-sse.ts | 362 | // ── output_item.added ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/anthropic-responses-bridge/src/translate-sse.ts | 405 | // ── output_text.delta ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/anthropic-responses-bridge/src/translate-sse.ts | 444 | // ── reasoning_summary_text.delta(可见思考文本)────────────────────────────── | COMMENT |
| MEDIUM | …ckages/anthropic-responses-bridge/src/translate-sse.ts | 485 | // ── function_call_arguments.delta ────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/anthropic-responses-bridge/src/translate-sse.ts | 502 | // ── output_item.done ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/anthropic-responses-bridge/src/translate-sse.ts | 573 | // ── response.completed / incomplete ──────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/anthropic-responses-bridge/src/translate-sse.ts | 634 | // ── 工具 ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/lizi-im/src/types.ts | 105 | // ── Inbound events ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/lizi-im/src/types.ts | 340 | // ── Outbound spec ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/lizi-im/src/channelIM.ts | 32 | // ── inbound subscriptions ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/lizi-im/src/channelIM.ts | 37 | // ── outbound ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/lizi-im/src/channelIM.ts | 63 | // ── optional capabilities ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/lizi-im/src/channelIM.ts | 74 | // ── status ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/lizi-im/src/feishu/wsClient.ts | 70 | // ── module state ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/lizi-im/src/feishu/wsClient.ts | 1025 | // ── SDK logger interceptor ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/lizi-im/src/feishu/wsClient.ts | 1079 | // ── start / stop ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/lizi-im/src/feishu/wsClient.ts | 1351 | // ── lifecycle announcement ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/lizi-im/src/feishu/wsClient.ts | 1383 | // ── inbound handlers ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/lizi-im/src/feishu/storage.ts | 85 | // ── owner (TOFU) ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | packages/lizi-im/src/feishu/storage.ts | 107 | // ── lifecycle announcement preference ──────────────────────────────────── | COMMENT |
| MEDIUM | packages/lizi-im/src/feishu/outbound.ts | 411 | // ── group lane reply anchors ────────────────────────────────────────────────── | COMMENT |
| 1415 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …s/claude-code/__tests__/translator-silent-stop.test.ts | 65 | return ctx.log.warn.mock.calls.some( | CODE |
| CRITICAL | …rc/agents/pi/__tests__/cindySubagentDelegation.test.ts | 234 | expect(f.ctx.ui.input.mock.calls.every(([, payload]) => JSON.parse(payload).action === 'delivery')).toBe(true); | CODE |
| CRITICAL⚡ | apps/desktop/src/renderer/features/bots/BotTodoList.tsx | 43 | list: () => window.electronAPI.localDb.bots.todos.list(botId), | CODE |
| CRITICAL⚡ | apps/desktop/src/renderer/features/bots/BotTodoList.tsx | 44 | update: (p) => window.electronAPI.localDb.bots.todos.update(botId, p), | CODE |
| CRITICAL⚡ | apps/desktop/src/renderer/features/bots/BotTodoList.tsx | 45 | act: (p) => window.electronAPI.localDb.bots.todos.act(botId, p), | CODE |
| CRITICAL | …omponents/settings/__tests__/CindyMakeSection.test.tsx | 353 | h.api.executeDesktopCommand.mock.calls.some( | CODE |
| CRITICAL | …omponents/settings/__tests__/CindyMakeSection.test.tsx | 987 | environment.api.executeDesktopCommand.mock.calls.some( | CODE |
| CRITICAL | …omponents/settings/__tests__/CindyMakeSection.test.tsx | 1534 | h.api.executeDesktopCommand.mock.calls.some(([, ctx]) => ctx.doctorAction === 'cancel'), | CODE |
| CRITICAL | …omponents/settings/__tests__/CindyMakeSection.test.tsx | 1549 | h.api.executeDesktopCommand.mock.calls.some(([, ctx]) => ctx.doctorAction === 'cancel'), | CODE |
| CRITICAL | …omponents/settings/__tests__/CindyMakeSection.test.tsx | 1589 | h.api.executeDesktopCommand.mock.calls.some(([, ctx]) => ctx.doctorAction === 'cancel'), | CODE |
| CRITICAL | …s/cindy-make/__tests__/CindyMakeSourceDetails.test.tsx | 92 | locales[locale].cindyMake.source.details.latest.behind_other.replace('{{count}}', '9'), | CODE |
| CRITICAL | …desktop/src/renderer/components/new-chat/ChatInput.tsx | 2405 | const node = view.state.schema.nodes.pastedTextChip.create({ text, display }); | CODE |
| CRITICAL | …c/renderer/voice-input/__tests__/pcm16kWorklet.test.ts | 128 | expect(processor.port.postMessage.mock.calls.map(([message]) => message.type)) | CODE |
| CRITICAL | …er/voice-input/__tests__/useVoiceInput.startup.test.ts | 195 | h.api.onEvent.mock.calls.at(-1) => frame)).toEqual(frames); | CODE |
| CRITICAL | …er/voice-input/__tests__/useVoiceInput.startup.test.ts | 379 | expect(h.api.appendAudio.mock.calls.map(([frame]) => frame)).toEqual([chunk(0), chunk(1)]); | CODE |
| CRITICAL | …er/voice-input/__tests__/useVoiceInput.startup.test.ts | 445 | expect(h.api.appendAudio.mock.calls.map(([frame]) => frame)).toEqual(frames); | CODE |
| CRITICAL | …er/voice-input/__tests__/useVoiceInput.startup.test.ts | 447 | expect(h.api.appendAudio.mock.invocationCallOrder.at(-1)).toBeLessThan( | CODE |
| CRITICAL | …ker-ipc/__tests__/pluginWorkerDirectoryWindows.test.ts | 27 | expect(f.fs.lstat.mock.calls.map(([p])=>p)).toEqual(['C:\\picked']); | CODE |
| CRITICAL | …ker-ipc/__tests__/pluginWorkerDirectoryWindows.test.ts | 54 | expect(f.fs.lstat.mock.calls.every(([p])=>p.startsWith('C:\\'))).toBe(true); | CODE |
| CRITICAL | …in/maker-ipc/__tests__/agent-input-coordinator.test.ts | 1492 | const call = mocks.logger.warn.mock.calls.at(-1); | CODE |
| CRITICAL | …in/maker-ipc/__tests__/agent-input-coordinator.test.ts | 13788 | const sentClientId = sent.h.onUiRetry.mock.calls.at(-1)?.[1] as string; | CODE |
| CRITICAL | …src/main/maker-ipc/__tests__/pluginWriteAccess.test.ts | 322 | expect(f.epoch.client.tx.mock.calls.map(call=>call[1]?.mode)).toEqual(['ask','auto','ask','ask']); | CODE |
| CRITICAL | …ktop/src/main/provider-group/__tests__/service.test.ts | 672 | const [first, second] = h.deps.sleep.mock.calls.map(([ms]) => ms); | CODE |
| CRITICAL | …ktop/src/main/provider-group/__tests__/service.test.ts | 694 | h.hooks.reconnecting.mock.invocationCallOrder.at(-1)!, | CODE |
| CRITICAL | …ktop/src/main/provider-group/__tests__/service.test.ts | 786 | expect(h.hooks.reconnecting.mock.calls.map(([attempt]) => attempt)).toEqual([3, 4, 5]); | CODE |
| CRITICAL | …ktop/src/main/provider-group/__tests__/service.test.ts | 798 | expect(h.hooks.reconnecting.mock.calls.map(([attempt]) => attempt)).toEqual([1, 2]); | CODE |
| CRITICAL | …p/src/main/skillhub/__tests__/registerIpcUsage.test.ts | 1281 | if (change === 'reload') event.sender.on.mock.calls.find(([name]) => name === 'did-start-navigation') => name === 'destroyed')![1](); | CODE |
| CRITICAL | …p/src/main/skillhub/__tests__/registerIpcUsage.test.ts | 1331 | event.sender.on.mock.calls.find(([name]) => name === 'did-start-navigation'); | CODE |
| CRITICAL | …p/src/main/skillhub/__tests__/registerIpcUsage.test.ts | 1360 | event.sender.on.mock.calls.find(([name]) => name === 'did-start-navigation'); | CODE |
| CRITICAL | …in/im/shared/__tests__/turnRunnerThreadRouting.test.ts | 820 | : mocks.slackIm.sendMarkdownText.mock.calls.map((call) => (call as unknown[])[1]); | CODE |
| CRITICAL | …in/im/shared/__tests__/turnRunnerThreadRouting.test.ts | 1229 | expect(mocks.slackIm.removeMessageReaction.mock.calls.some(([id]) => id === 'reply-stale')).toBe(false); | CODE |
| CRITICAL | …main/im/shared/__tests__/turnRunnerSendOutcome.test.ts | 3203 | mocks.feishuIm.sendText.mock.calls.some(([, text]) => String(text).includes('错误')), | CODE |
| CRITICAL | …main/im/shared/__tests__/turnRunnerSendOutcome.test.ts | 4244 | const fallbackSends = mocks.feishuIm.sendText.mock.calls.filter( | CODE |
| CRITICAL | …main/im/shared/__tests__/turnRunnerSendOutcome.test.ts | 4273 | const fallbackSends = mocks.feishuIm.sendText.mock.calls.filter( | CODE |
| CRITICAL | …c/main/remote-desktop-viewer/__tests__/windows.test.ts | 365 | win.webContents.send.mock.calls.filter( | CODE |
| CRITICAL | …ain/remote-desktop/__tests__/controlledOverlay.test.ts | 260 | expect(new Set(window.webContents.executeJavaScript.mock.calls.map(([code]) => code)).size).toBe( | CODE |
| CRITICAL | …/main/remote-desktop/__tests__/captureBoundary.test.ts | 934 | const command = h.owner.send.mock.calls.at(-1)[1]; | CODE |
| CRITICAL | …/main/remote-desktop/__tests__/captureBoundary.test.ts | 1078 | const command = h.owner.send.mock.calls.at(-1)[1]; | CODE |
| CRITICAL | …/main/remote-desktop/__tests__/captureBoundary.test.ts | 1107 | const command = h.owner.send.mock.calls.at(-1)[1]; | CODE |
| CRITICAL | …/main/remote-desktop/__tests__/captureBoundary.test.ts | 1128 | const command = h.owner.send.mock.calls.at(-1)[1]; | CODE |
| CRITICAL | …/main/remote-desktop/__tests__/captureBoundary.test.ts | 1156 | const command = h.owner.send.mock.calls.at(-1)[1]; | CODE |
| CRITICAL | …/main/remote-desktop/__tests__/captureBoundary.test.ts | 1174 | expect(h.owner.send.mock.calls.at(-1)[1]).toMatchObject({ | CODE |
| CRITICAL⚡ | …op/src/main/remote-desktop/__tests__/inputHost.test.ts | 388 | expect(JSON.parse(c.child.stdin.write.mock.calls.at(-1)![0])).toEqual([ | CODE |
| CRITICAL⚡ | …op/src/main/remote-desktop/__tests__/inputHost.test.ts | 393 | expect(JSON.parse(c.child.stdin.write.mock.calls.at(-1)![0])).toEqual([ | CODE |
| CRITICAL⚡ | …op/src/main/remote-desktop/__tests__/inputHost.test.ts | 398 | expect(JSON.parse(c.child.stdin.write.mock.calls.at(-1)![0])).toEqual([ | CODE |
| CRITICAL | …p/src/main/maker-host/__tests__/codexProxyHost.test.ts | 6818 | const line = String(mockState.logger.info.mock.calls.at(-1)?.[0] ?? ''); | CODE |
| CRITICAL | …p/src/main/maker-host/__tests__/codexProxyHost.test.ts | 6900 | const line = String(mockState.logger.info.mock.calls.at(-1)?.[0] ?? ''); | CODE |
| CRITICAL | …p/src/main/maker-host/__tests__/codexProxyHost.test.ts | 7937 | mockState.logger.debug.mock.calls.filter((call) => | CODE |
| CRITICAL | …ps/mobile/src/__tests__/useRemoteResourceList.test.tsx | 133 | const notify = h.link.onRemoteResourceChanged.mock.calls.at(-1)![0]; | CODE |
| CRITICAL | …ps/mobile/src/__tests__/useRemoteResourceList.test.tsx | 148 | const notify = h.link.onRemoteResourceChanged.mock.calls.at(-1)![0]; | CODE |
| CRITICAL | …le/src/__tests__/newSessionCreationPersistence.test.ts | 114 | h.bindings.maker.worktree.create.mockRejectedValueOnce(new Error('reply lost')); | CODE |
| CRITICAL | …le/src/__tests__/newSessionCreationPersistence.test.ts | 138 | h.bindings.maker.worktree.create.mockImplementationOnce(async () => { | CODE |
| CRITICAL | apps/mobile/src/__tests__/useBotGroupChat.test.tsx | 39 | const reads = () => h.link.invoke.mock.calls.filter((call) => call[1] === 'maker:remote-resources:get'); | CODE |
| CRITICAL | apps/mobile/src/__tests__/useBotGroupChat.test.tsx | 96 | const invokeCall = h.link.invoke.mock.calls.find((call) => call[1] === 'maker:remote-resources:invoke')!; | CODE |
| CRITICAL | apps/mobile/src/__tests__/durableOutbox.test.ts | 1057 | second.deps.enqueue.mock.calls.map(([r]) => r.item.clientId), | CODE |
| CRITICAL⚡ | …ile/src/__tests__/chatServerEndpointDiscovery.test.tsx | 78 | expect(h.auth.apiFetch.mock.calls.every(([, options]) => options.baseUrl === endpoint)).toBe(true); | CODE |
| CRITICAL⚡ | …ile/src/__tests__/chatServerEndpointDiscovery.test.tsx | 85 | const sent = h.auth.apiFetch.mock.calls.find(([path, options]) => path.endsWith('/messages') && options.method === 'PO | CODE |
| CRITICAL⚡ | …ile/src/__tests__/chatServerEndpointDiscovery.test.tsx | 94 | expect(h.auth.apiFetch.mock.calls.every(([, options]) => options.baseUrl === JSON.parse(texts[other]).chatApiBaseUrl)) | CODE |
| 14 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/design-rules/design-decision-log.md | 261 | git grep -o 'rounded-\[8px\]' -- apps/desktop/src/renderer/components/new-chat/PermissionPrompt.tsx | wc -l | COMMENT |
| LOW | packages/browser-control-runtime/src/proxy.ts | 321 | const now = deps.now ?? Date.now; | COMMENT |
| LOW | packages/browser-control-runtime/src/proxy.ts | 341 | // ordinary public hostnames resolve into 198.18.0.0/15; without it this gate | COMMENT |
| LOW | …generated/extension/src/browser/screenshot-annotate.ts | 1 | /* eslint-disable */ | COMMENT |
| LOW | …ed/extension/src/browser/pw-tools-core.interactions.ts | 401 | // slow interactions, silently bypassing the SSRF guard. | COMMENT |
| LOW | …ed/extension/src/browser/pw-tools-core.interactions.ts | 581 | } | COMMENT |
| LOW | …ed/extension/src/browser/pw-tools-core.interactions.ts | 641 | const timer = setTimeout(resolve, POPUP_CHAIN_CLOSE_BUDGET_MS); | COMMENT |
| LOW | …ed/extension/src/browser/pw-tools-core.interactions.ts | 841 | // close was ISSUED, and quarantine is bookkeeping that never closes a | COMMENT |
| LOW | packages/maker-remote-ssh/src/bootstrap/installer.ts | 321 | // 一并删除 —— python daemon 已退役, 目录惰性无进程读取, uninstall 清干净 | COMMENT |
| LOW | …maker-remote-ssh/src/bootstrap/pi-manager-installer.ts | 261 | // 用 bundled node 内联脚本 net.connect 做真正的 connect 语义。 | COMMENT |
| LOW | …maker-remote-ssh/src/bootstrap/pi-manager-installer.ts | 441 | // **不 unlink**(保持 pidfile/socket 原位, 下次 ensure 的 fast-path 会 | COMMENT |
| LOW | …ges/maker-remote-ssh/src/bootstrap/bootstrap-script.ts | 301 | COMMENT | |
| LOW | …ges/maker-remote-ssh/src/bootstrap/bootstrap-script.ts | 421 | emit "INSTALL_LOG previous install left placeholder native CLI ($_LINK_TARGET); wiping node_modules/@anthropic-a | COMMENT |
| LOW | packages/voice-input-core/src/VoiceInputController.ts | 61 | // raw audio duration. Counting raw duration meant a silent thinking pause | COMMENT |
| LOW | packages/voice-input-core/src/VoiceInputController.ts | 121 | private pendingStableResolvers: Array<(text: string | undefined) => void> = []; | COMMENT |
| LOW | packages/voice-input-core/src/VoiceInputController.ts | 261 | // Deliberately placed after the LAST provider await in this method, so it | COMMENT |
| LOW | packages/voice-input-core/src/DictationRefiner.ts | 61 | // translation": reflowing a dictation into a bulleted/Markdown list adds lots | COMMENT |
| LOW | packages/voice-input-core/src/DictationRefiner.ts | 261 | // | COMMENT |
| LOW | packages/embedding-client/src/client.ts | 461 | ); | COMMENT |
| LOW | packages/embedding-client/src/client.ts | 501 | // 组装后再校验一次"整批自洽" —— 上面那次只看了**新取回的**那部分。 | COMMENT |
| LOW | packages/device-link/src/allowlist.ts | 221 | // CHANNEL_NOT_ALLOWED,控制端按 capabilities.thinkingToggle 隐藏入口。 | COMMENT |
| LOW | packages/device-link/src/allowlist.ts | 241 | // 草稿**在该 vendor 的完整选择(model/effort/fast/permission/source),1:1 seed 控制端草稿。 | COMMENT |
| LOW | packages/device-link/src/allowlist.ts | 261 | // GET 只读 main 内存镜像;APPLY 只更新该 repo 的 future-session 偏好,不执行 git/fs。 | COMMENT |
| LOW | packages/device-link/src/allowlist.ts | 301 | // Read-only visible history and recoverable work ranges; same session authorization as list. | COMMENT |
| LOW | packages/device-link/src/allowlist.ts | 321 | 'local-db:sessions:patch-meta', | COMMENT |
| LOW | packages/device-link/src/allowlist.ts | 341 | DL_UNSUBSCRIBE_CHANNEL, | COMMENT |
| LOW | packages/device-link/src/allowlist.ts | 441 | // 输入框推荐提示词:在被控端读取会话素材并使用被控端模型凭证生成。 | COMMENT |
| LOW | packages/device-link/src/allowlist.ts | 481 | 'maker:agent:status', | COMMENT |
| LOW | packages/device-link/src/allowlist.ts | 501 | // CHANNEL_NOT_ALLOWED 供控制端探测降级。 | COMMENT |
| LOW | packages/device-link/src/allowlist.ts | 541 | 'maker:list-agent-skills', | COMMENT |
| LOW | packages/device-link/src/allowlist.ts | 561 | // remoteControlEnabled 显式 opt-in,控制端本就能在 workingDir 跑 agent(可执行任意命令), | COMMENT |
| LOW | packages/device-link/src/allowlist.ts | 581 | // **不放行任何写 op**(stage / discard / commit / push 不在被控端 handler 实现)。 | COMMENT |
| LOW | packages/device-link/src/allowlist.ts | 601 | 'learn:get-proposal-diff', | COMMENT |
| LOW | packages/device-link/src/allowlist.ts | 701 | // 注:maker:auth:state-changed 曾在此 —— 但发射点不 tap、控制端也不消费(被控端 agent 鉴权 | COMMENT |
| LOW | packages/device-link/src/allowlist.ts | 721 | // headers 观察器按 (5h,7d,status) 签名去抖、端点刷新 180s 节流,只有数值变化才 | COMMENT |
| LOW | packages/device-link/src/allowlist.ts | 801 | // 被控端 worktree:create 含 git worktree add(--no-checkout)+ 白名单文件选择性 | COMMENT |
| LOW | packages/device-link/src/topics.ts | 181 | // 被控端「当前 New Maker 草稿」全量变更:账号 / 全局级(无 sessionId),并入 `sessions` topic | COMMENT |
| LOW | packages/device-link/src/client.ts | 3041 | this.assertWebSocketCapacity(this.measureReliableFrames(frames)); | COMMENT |
| LOW | packages/device-link/src/client.ts | 4161 | if ( | COMMENT |
| LOW | packages/device-link/src/client.ts | 4181 | // | COMMENT |
| LOW | packages/lizi-im/src/feishu/wsClient.ts | 1901 | // bubble) the client shows over the chat. Returning toast immediately here | COMMENT |
| LOW | packages/lizi-im/src/telegram/streamingText.ts | 481 | // Hermes-style close: always mint a fresh final message. If a process | COMMENT |
| LOW | packages/lizi-im/src/telegram/streamingText.ts | 541 | await this.deps.uploadImages(this.messageIdValue, allImageRefs, { | COMMENT |
| LOW | packages/model-providers/src/classification.ts | 81 | } | COMMENT |
| LOW | packages/model-providers/src/classification.ts | 201 | * 关键字判定必须同时认「裸 id」与「去前缀后的尾部」,只剥一层的话嵌套命名空间仍会 | COMMENT |
| LOW | packages/model-providers/src/classification.ts | 221 | // 只返回分类标签,不回传 id,小写化不影响展示 / 请求用的原始 id。 | COMMENT |
| LOW | packages/model-providers/src/classification.ts | 261 | // 列出的语义类型之一,落 other 保留原始 id/mode(2026-07 review:走 {id,name} 极简 | COMMENT |
| LOW | packages/model-providers/src/classification.ts | 281 | // 会漏网落进 gpt/china,被 isChatEligible 误判为可聊天(2026-07 review)。 | COMMENT |
| LOW | …ckages/maker-scheduler/src/__tests__/scheduler.test.ts | 1241 | // should be next 09:00, NOT old 00:10:30 and NOT now+10min | COMMENT |
| LOW | packages/maker-scheduler/src/engine/scheduler.ts | 321 | private lastTickAt = 0; | COMMENT |
| LOW | packages/maker-scheduler/src/engine/scheduler.ts | 1001 | }); | COMMENT |
| LOW | packages/maker-scheduler/src/engine/scheduler.ts | 1381 | // 但保留 key(storage patch 按 hasOwnProperty 判定,key 在且 undefined = 双列清 NULL)。 | COMMENT |
| LOW | packages/maker-scheduler/src/engine/scheduler.ts | 1441 | } | COMMENT |
| LOW | packages/maker-scheduler/src/engine/scheduler.ts | 2561 | // (用户显式配置,ScriptScheduleRunner 第一方执行)。 | COMMENT |
| LOW | packages/maker-scheduler/src/engine/scheduler.ts | 2661 | // failed。controller 还在 = runner 确实没动静,继续强制收口。 | COMMENT |
| LOW | packages/maker-scheduler/src/engine/cron.ts | 201 | // Convert wall-clock (y,mo,d,h,mi) in tz back to epoch ms. | COMMENT |
| LOW | packages/file-browser-core/src/scanner.ts | 101 | // absolute and verify the resolved path starts with workdir + sep. | COMMENT |
| LOW | …ckages/file-browser-core/src/search/RipgrepSearcher.ts | 121 | COMMENT | |
| LOW | …ckages/file-browser-core/src/__tests__/scanner.test.ts | 101 | describe('file-browser scanner path boundaries', () => { | COMMENT |
| LOW | packages/maker-shared/src/agentTask.ts | 221 | * 不应传入此函数,否则会将非子任务结果误判为失败。 | COMMENT |
| 715 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/design-previews/login-all-hifi/index.html | 522 | function textSlotHtml({ cls = '', text, top, tone = 'placeholder', align = 'center' }){ | CODE |
| LOW | docs/design-previews/login-all-hifi/index.html | 767 | const hint = ctx.ssoRequired ? textSlotHtml({ cls: 'lp-sso-required-hint', text: t('ssoRequired'), top: 380, tone: ' | CODE |
| LOW | docs/design-previews/login-all-hifi/index.html | 797 | ? textSlotHtml({ cls: 'lp-binding-sent', text: t('codeSentTo', { identifier: S.ctx.contact }), tone: 'placeholde | CODE |
| LOW | docs/design-previews/login-all-hifi/index.html | 798 | : textSlotHtml({ cls: 'lp-binding-sent', text: S.ctx.contact, tone: 'placeholder' })) + | CODE |
| LOW⚡ | packages/auth-client/src/__tests__/client.test.ts | 218 | await expect(client(fetch).discover("user@example.com")).resolves.toEqual([ | CODE |
| LOW⚡ | packages/auth-client/src/__tests__/client.test.ts | 228 | client(fetch).discover("user@example.com"), | CODE |
| LOW⚡ | packages/auth-client/src/__tests__/client.test.ts | 238 | await client(fetch).requestCode("email", "user@example.com"); | CODE |
| LOW⚡ | packages/auth-client/src/__tests__/client.test.ts | 242 | expect(bare).toEqual({ email: "user@example.com", locale: "zh-CN" }); | CODE |
| LOW⚡ | packages/auth-client/src/__tests__/client.test.ts | 243 | await client(fetch).requestCode("email", "user@example.com", { | CODE |
| LOW⚡ | packages/auth-client/src/__tests__/client.test.ts | 250 | email: "user@example.com", | CODE |
| LOW | packages/auth-client/src/__tests__/client.test.ts | 415 | email: "user@example.com", | CODE |
| LOW | packages/auth-client/src/__tests__/client.test.ts | 433 | email: "user@example.com", | CODE |
| LOW⚡ | …/auth-client/src/__tests__/emailLoginDiscovery.test.ts | 109 | email: "user@example.com", | CODE |
| LOW⚡ | …/auth-client/src/__tests__/emailLoginDiscovery.test.ts | 113 | expect(discoverPersonal).toHaveBeenCalledWith("user@example.com"); | CODE |
| LOW⚡ | …/auth-client/src/__tests__/emailLoginDiscovery.test.ts | 117 | const result = await discoverEmailLogin("user@example.com", { | CODE |
| LOW⚡ | …/auth-client/src/__tests__/emailLoginDiscovery.test.ts | 125 | email: "user@example.com", | CODE |
| LOW | …/auth-client/src/__tests__/emailLoginDiscovery.test.ts | 140 | discoverEmailLogin("user@example.com", { | CODE |
| LOW | …/auth-client/src/__tests__/emailLoginDiscovery.test.ts | 172 | const result = await discoverEmailLogin("user@example.com", { | CODE |
| LOW | …/auth-client/src/__tests__/emailLoginDiscovery.test.ts | 192 | email: "user@example.com", | CODE |
| LOW | …/auth-client/src/__tests__/emailLoginDiscovery.test.ts | 205 | email: "user@example.com", | CODE |
| LOW | …e/src/_generated/leaf/src/security/external-content.ts | 337 | * sender: "user@example.com", | COMMENT |
| LOW | …-input-core/src/__tests__/VoiceInputController.test.ts | 937 | segmentIds: ['placeholder'], | CODE |
| LOW | …kages/maker-shared/src/__tests__/messageSearch.test.ts | 137 | oldString: 'placeholder', | CODE |
| LOW | packages/wechat-ilink/src/__tests__/protocol.test.ts | 203 | token: "fake-token", | CODE |
| LOW | packages/wechat-ilink/src/__tests__/protocol.test.ts | 267 | Authorization: "Bearer fake-token", | CODE |
| LOW | packages/wechat-ilink/src/__tests__/protocol.test.ts | 278 | token: "fake-token", | CODE |
| LOW | packages/wechat-ilink/src/__tests__/protocol.test.ts | 309 | token: "fake-token", | CODE |
| LOW | packages/wechat-ilink/src/__tests__/protocol.test.ts | 350 | token: "fake-token", | CODE |
| LOW | packages/wechat-ilink/src/__tests__/protocol.test.ts | 445 | token: "fake-token", | CODE |
| LOW | packages/wechat-ilink/src/__tests__/protocol.test.ts | 462 | token: "fake-token", | CODE |
| LOW | packages/wechat-ilink/src/__tests__/protocol.test.ts | 481 | token: "fake-token", | CODE |
| LOW | packages/wechat-ilink/src/__tests__/protocol.test.ts | 493 | token: "fake-token", | CODE |
| LOW | packages/wechat-ilink/src/__tests__/protocol.test.ts | 505 | token: "fake-token", | CODE |
| LOW | …kages/wechat-ilink/src/__tests__/authorization.test.ts | 16 | bot_token: "fake-token", | CODE |
| LOW | …kages/wechat-ilink/src/__tests__/authorization.test.ts | 43 | token: "fake-token", | CODE |
| LOW | …kages/wechat-ilink/src/__tests__/authorization.test.ts | 60 | bot_token: "fake-token-2", | CODE |
| LOW | …kages/wechat-ilink/src/__tests__/authorization.test.ts | 69 | localTokens: async () => ["old-fake-token"], | CODE |
| LOW | …kages/wechat-ilink/src/__tests__/authorization.test.ts | 89 | requestBodies.filter((body) => body.includes("old-fake-token")), | CODE |
| LOW | packages/lizi-mcps/src/browser/browserMcpServer.test.ts | 365 | for (const field of ['css', 'role', 'name', 'text', 'label', 'placeholder', 'testId']) { | CODE |
| LOW | …ckages/maker-core/src/contacts/__tests__/store.test.ts | 53 | { platform: 'email', value: 'neo@example.org', label: '云岚早期' }, | CODE |
| LOW | …es/maker-core/src/agents/pi/rpc-client.startup.test.ts | 16 | args: ['-e', `process.stderr.write('Error: Failed to load extension "placeholder"\\n'); | CODE |
| LOW | …es/maker-core/src/agents/pi/rpc-client.startup.test.ts | 24 | 'Error: Failed to load extension "placeholder"\nHint: Start without extensions using "pi -ne".', | CODE |
| LOW | packages/maker-core/src/agents/pi/rpc-client.test.ts | 256 | 'Failed to load extension "placeholder"\nHint: Start without extensions using "pi -ne".', | CODE |
| LOW | packages/maker-core/src/agents/pi/rpc-client.test.ts | 258 | child.stderr.emit('data', Buffer.from('Error: Failed to load extension "placeholder"\n')); | CODE |
| LOW | …ker-core/src/agents/pi/__tests__/pi-mcp-client.test.ts | 20 | const client = new context.Client({ name: 'cindy', url: 'http://127.0.0.1/mcp' }, 'fake-token'); | CODE |
| LOW | …re/src/agents/pi/__tests__/cindySubagentRunner.test.ts | 426 | process.stdout.write(JSON.stringify({ type: 'extension_ui_request', id, method: ${JSON.stringify(approvalMethod) | CODE |
| LOW | …ative/remote-desktop/linux-credentials/test_interop.py | 20 | host = Host("/unused", lambda *_: key, lambda: {"name": "fake-user", "recordID": "fake-record"}, state, unlock) | CODE |
| LOW | apps/desktop/src/renderer/features/bots/BotsSidebar.tsx | 429 | : subtitle ? subtitle.kind === 'placeholder' ? t('bots.list.startChat') : subtitle.text | CODE |
| LOW | apps/desktop/src/renderer/features/bots/BotsSidebar.tsx | 480 | : subtitle.kind === 'placeholder' | CODE |
| LOW | …s/desktop/src/renderer/features/bots/botListDisplay.ts | 55 | export type BotListSubtitleKind = 'message' | 'description' | 'placeholder'; | CODE |
| LOW | …s/desktop/src/renderer/features/bots/botListDisplay.ts | 59 | /** Empty for 'placeholder' — the caller supplies the localized prompt. */ | COMMENT |
| LOW | …s/desktop/src/renderer/features/bots/botListDisplay.ts | 76 | return { kind: 'placeholder', text: '' }; | CODE |
| LOW | …erer/features/bots/__tests__/BotGroupChatView.test.tsx | 1072 | expect(screen.getByRole('textbox').getAttribute('placeholder')).toBe( | CODE |
| LOW | …erer/features/bots/__tests__/BotGroupChatView.test.tsx | 1197 | expect(screen.getByRole('textbox').getAttribute('placeholder')).toBe( | CODE |
| LOW | …erer/features/bots/__tests__/BotGroupChatView.test.tsx | 1305 | expect(screen.getByRole('textbox').getAttribute('placeholder')).toBe('bots.groupChat.composer.placeholder'); | CODE |
| LOW | …erer/features/bots/__tests__/BotGroupChatView.test.tsx | 1350 | expect(input.getAttribute('placeholder')).toBe('bots.groupChat.composer.placeholderDivision'); | CODE |
| LOW | …erer/features/bots/__tests__/BotGroupChatView.test.tsx | 1394 | expect(input.getAttribute('placeholder')).toBe('bots.groupChat.composer.placeholderPlanRunning:咪咪'); | CODE |
| LOW | …enderer/features/bots/__tests__/botListDisplay.test.ts | 51 | kind: 'placeholder', | CODE |
| LOW | …enderer/features/bots/__tests__/botListDisplay.test.ts | 54 | expect(botListSubtitle({})).toEqual({ kind: 'placeholder', text: '' }); | CODE |
| LOW | …s/__tests__/CustomProviderDialogAccessibility.test.tsx | 822 | expect(apiKey.getAttribute('placeholder')).toBe( | CODE |
| 283 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | packages/maker-remote-ssh/src/bootstrap/installer.ts | 145 | elif command -v wget >/dev/null 2>&1; then | CODE |
| HIGH | packages/maker-remote-ssh/src/bootstrap/installer.ts | 153 | elif command -v sha256sum >/dev/null 2>&1; then | CODE |
| HIGH | …ges/maker-remote-ssh/src/bootstrap/bootstrap-script.ts | 88 | elif command -v wget >/dev/null 2>&1; then DL="wget" | CODE |
| HIGH | …ges/maker-remote-ssh/src/bootstrap/bootstrap-script.ts | 258 | elif command -v wget >/dev/null 2>&1; then DL="wget" | CODE |
| HIGH | …ges/maker-remote-ssh/src/bootstrap/bootstrap-script.ts | 460 | elif [ "$AGENT_KIND" = "codex" ]; then | CODE |
| HIGH | …r/features/scheduler/components/ScheduleFormDialog.tsx | 65 | print(json.dumps({ | CODE |
| HIGH | apps/desktop/src/main/remote-ssh/index.ts | 2156 | elif [ -e "$p" ]; then | CODE |
| HIGH | apps/desktop/src/main/remote-ssh/index.ts | 2271 | elif [ -d "$entry" ]; then | CODE |
| HIGH | …p/src/main/remote-desktop/__tests__/macosInput.test.ts | 87 | print("sealed"); exit(0) | CODE |
| HIGH | …p/src/main/remote-desktop/__tests__/macosInput.test.ts | 93 | print("authenticated") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …maker-remote-ssh/src/bootstrap/pi-manager-installer.ts | 136 | // Step 1: probe — make sure node is there. If not, abort (require bootstrap first). | COMMENT |
| LOW⚡ | …maker-remote-ssh/src/bootstrap/pi-manager-installer.ts | 145 | // Step 2: upload pi-manager.mjs. | COMMENT |
| LOW | …maker-remote-ssh/src/bootstrap/pi-manager-installer.ts | 179 | // Step 3: verify (re-probe). | COMMENT |
| LOW⚡ | …maker-remote-ssh/src/bootstrap/cc-manager-installer.ts | 139 | // Step 1: probe — make sure node is there. If not, abort (require bootstrap first). | COMMENT |
| LOW⚡ | …maker-remote-ssh/src/bootstrap/cc-manager-installer.ts | 148 | // Step 2: upload cc-mgr.mjs. | COMMENT |
| LOW | …maker-remote-ssh/src/bootstrap/cc-manager-installer.ts | 161 | // Step 3: optional proxy upload. | COMMENT |
| LOW | …maker-remote-ssh/src/bootstrap/cc-manager-installer.ts | 176 | // Step 4: verify (re-probe). | COMMENT |
| LOW⚡ | packages/github-client/src/client.ts | 1496 | // Step 1: current head | COMMENT |
| LOW⚡ | packages/github-client/src/client.ts | 1499 | // Step 2: base tree sha —— 从 head commit 拿 tree.sha | COMMENT |
| LOW⚡ | packages/github-client/src/client.ts | 1505 | // Step 3: 构造 tree entries;base64 走 blob upload,utf-8 走内联 content。 | COMMENT |
| LOW | packages/github-client/src/client.ts | 1535 | // Step 6: ref update(fast-forward only,不 force) | COMMENT |
| LOW⚡ | …op/src/renderer/components/ui/toast/ToastContainer.tsx | 63 | // Step 1: 清除所有残留的 FLIP transform,确保测量的是自然布局位置 | COMMENT |
| LOW⚡ | …op/src/renderer/components/ui/toast/ToastContainer.tsx | 69 | // Step 2: 测量每个元素的自然布局位置(无 transform 偏移) | COMMENT |
| LOW⚡ | …op/src/renderer/components/ui/toast/ToastContainer.tsx | 76 | // Step 3: 对非退场的元素做 FLIP(退场的 toast 原地淡出,不参与位移动画) | COMMENT |
| LOW | …op/src/renderer/components/ui/toast/ToastContainer.tsx | 100 | // Step 4: 存储自然布局位置(不含 transform),供下次 FLIP 比较 | COMMENT |
| LOW⚡ | …er/__tests__/composerDraftAttachmentsRoundTrip.test.ts | 51 | // Step 1: save prev draft (if there was one and it's not the same session). | COMMENT |
| LOW⚡ | …er/__tests__/composerDraftAttachmentsRoundTrip.test.ts | 60 | // Step 2: restore new session's attachments. b1e9827 守卫:首挂 (prevId === undefined) | COMMENT |
| LOW | apps/desktop/src/main/updateService.ts | 2538 | // Step 1: prefer manifest (so we don't relaunch into a stale intermediate version). | COMMENT |
| LOW | apps/desktop/src/main/updateService.ts | 2593 | // Step 2: local patch may already match latest → skip download. | COMMENT |
| LOW | apps/desktop/src/main/updateService.ts | 2630 | // Step 3: download (re-using the manifest we already have). Route through | COMMENT |
| LOW⚡ | apps/desktop/src/main/localDb/backup.ts | 269 | // Step 1: .bak.clean 优先 | COMMENT |
| LOW⚡ | apps/desktop/src/main/localDb/backup.ts | 277 | // Step 2: 回落到最新 .bak.{ISO}(从最新到最旧逐个尝试) | COMMENT |
| LOW⚡ | apps/desktop/src/main/remote-ssh/cc-manager-install.ts | 712 | // Step 2: invalidate in-memory caches so ensureCcManagerInstalledOrInstall | COMMENT |
| LOW⚡ | apps/desktop/src/main/remote-ssh/cc-manager-install.ts | 717 | // Step 3: re-run full install pipeline with forceReinstall=true. Without | COMMENT |
| LOW⚡ | apps/desktop/src/main/remote-ssh/cc-manager-install.ts | 725 | // Step 4: clear pending banner state (broadcasts available=null so UI | COMMENT |
| LOW | apps/desktop/src/main/remote-ssh/cc-manager-install.ts | 500 | // Step 1: ensure bundled node + claude-code shim. Piggy-back on | COMMENT |
| LOW | apps/desktop/src/main/remote-ssh/cc-manager-install.ts | 557 | // Step 2: upload cc-mgr.mjs bundle. Re-resolve in case dev/packaged layout | COMMENT |
| LOW | apps/desktop/src/main/remote-ssh/cc-manager-install.ts | 698 | // Step 1: kill existing daemon via pidfile (cmdline-verified) + clean sock/pid. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …maker-remote-ssh/src/bootstrap/pi-manager-installer.ts | 136 | // Step 1: probe — make sure node is there. If not, abort (require bootstrap first). | COMMENT |
| LOW⚡ | …maker-remote-ssh/src/bootstrap/pi-manager-installer.ts | 145 | // Step 2: upload pi-manager.mjs. | COMMENT |
| LOW | …maker-remote-ssh/src/bootstrap/pi-manager-installer.ts | 179 | // Step 3: verify (re-probe). | COMMENT |
| LOW⚡ | …maker-remote-ssh/src/bootstrap/cc-manager-installer.ts | 139 | // Step 1: probe — make sure node is there. If not, abort (require bootstrap first). | COMMENT |
| LOW⚡ | …maker-remote-ssh/src/bootstrap/cc-manager-installer.ts | 148 | // Step 2: upload cc-mgr.mjs. | COMMENT |
| LOW | …maker-remote-ssh/src/bootstrap/cc-manager-installer.ts | 161 | // Step 3: optional proxy upload. | COMMENT |
| LOW | …maker-remote-ssh/src/bootstrap/cc-manager-installer.ts | 176 | // Step 4: verify (re-probe). | COMMENT |
| LOW⚡ | packages/github-client/src/client.ts | 1496 | // Step 1: current head | COMMENT |
| LOW⚡ | packages/github-client/src/client.ts | 1499 | // Step 2: base tree sha —— 从 head commit 拿 tree.sha | COMMENT |
| LOW⚡ | packages/github-client/src/client.ts | 1505 | // Step 3: 构造 tree entries;base64 走 blob upload,utf-8 走内联 content。 | COMMENT |
| LOW | packages/github-client/src/client.ts | 1535 | // Step 6: ref update(fast-forward only,不 force) | COMMENT |
| LOW⚡ | …op/src/renderer/components/ui/toast/ToastContainer.tsx | 63 | // Step 1: 清除所有残留的 FLIP transform,确保测量的是自然布局位置 | COMMENT |
| LOW⚡ | …op/src/renderer/components/ui/toast/ToastContainer.tsx | 69 | // Step 2: 测量每个元素的自然布局位置(无 transform 偏移) | COMMENT |
| LOW⚡ | …op/src/renderer/components/ui/toast/ToastContainer.tsx | 76 | // Step 3: 对非退场的元素做 FLIP(退场的 toast 原地淡出,不参与位移动画) | COMMENT |
| LOW | …op/src/renderer/components/ui/toast/ToastContainer.tsx | 100 | // Step 4: 存储自然布局位置(不含 transform),供下次 FLIP 比较 | COMMENT |
| LOW⚡ | …er/__tests__/composerDraftAttachmentsRoundTrip.test.ts | 51 | // Step 1: save prev draft (if there was one and it's not the same session). | COMMENT |
| LOW⚡ | …er/__tests__/composerDraftAttachmentsRoundTrip.test.ts | 60 | // Step 2: restore new session's attachments. b1e9827 守卫:首挂 (prevId === undefined) | COMMENT |
| LOW | apps/desktop/src/main/updateService.ts | 2538 | // Step 1: prefer manifest (so we don't relaunch into a stale intermediate version). | COMMENT |
| LOW | apps/desktop/src/main/updateService.ts | 2593 | // Step 2: local patch may already match latest → skip download. | COMMENT |
| LOW | apps/desktop/src/main/updateService.ts | 2630 | // Step 3: download (re-using the manifest we already have). Route through | COMMENT |
| LOW⚡ | apps/desktop/src/main/localDb/backup.ts | 277 | // Step 2: 回落到最新 .bak.{ISO}(从最新到最旧逐个尝试) | COMMENT |
| LOW⚡ | apps/desktop/src/main/remote-ssh/cc-manager-install.ts | 712 | // Step 2: invalidate in-memory caches so ensureCcManagerInstalledOrInstall | COMMENT |
| LOW⚡ | apps/desktop/src/main/remote-ssh/cc-manager-install.ts | 717 | // Step 3: re-run full install pipeline with forceReinstall=true. Without | COMMENT |
| LOW⚡ | apps/desktop/src/main/remote-ssh/cc-manager-install.ts | 725 | // Step 4: clear pending banner state (broadcasts available=null so UI | COMMENT |
| LOW | apps/desktop/src/main/remote-ssh/cc-manager-install.ts | 500 | // Step 1: ensure bundled node + claude-code shim. Piggy-back on | COMMENT |
| LOW | apps/desktop/src/main/remote-ssh/cc-manager-install.ts | 557 | // Step 2: upload cc-mgr.mjs bundle. Re-resolve in case dev/packaged layout | COMMENT |
| LOW | apps/desktop/src/main/remote-ssh/cc-manager-install.ts | 698 | // Step 1: kill existing daemon via pidfile (cmdline-verified) + clean sock/pid. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …e/remote-desktop/linux-credentials/test_credentials.py | 15 | CODE | |
| LOW | …e/remote-desktop/linux-credentials/test_credentials.py | 15 | CODE | |
| LOW | …ive/remote-desktop/linux-credentials/platform_linux.py | 17 | CODE | |
| LOW | …ls/cindy-skill-creator/scripts/_vendor/yaml/scanner.py | 30 | CODE | |
| LOW | …indy-skill-creator/scripts/_vendor/yaml/constructor.py | 11 | CODE | |
| LOW | …indy-skill-creator/scripts/_vendor/yaml/constructor.py | 12 | CODE | |
| LOW | …s/cindy-skill-creator/scripts/_vendor/yaml/composer.py | 5 | CODE | |
| LOW | …s/cindy-skill-creator/scripts/_vendor/yaml/composer.py | 6 | CODE | |
| LOW | …s/cindy-skill-creator/scripts/_vendor/yaml/__init__.py | 2 | CODE | |
| LOW | …s/cindy-skill-creator/scripts/_vendor/yaml/__init__.py | 4 | CODE | |
| LOW | …s/cindy-skill-creator/scripts/_vendor/yaml/__init__.py | 5 | CODE | |
| LOW | …s/cindy-skill-creator/scripts/_vendor/yaml/__init__.py | 6 | CODE | |
| LOW | …s/cindy-skill-creator/scripts/_vendor/yaml/__init__.py | 8 | CODE | |
| LOW | …s/cindy-skill-creator/scripts/_vendor/yaml/__init__.py | 9 | CODE | |
| LOW | …s/cindy-skill-creator/scripts/_vendor/yaml/__init__.py | 13 | CODE | |
| LOW | …indy-skill-creator/scripts/_vendor/yaml/representer.py | 5 | CODE | |
| LOW | …indy-skill-creator/scripts/_vendor/yaml/representer.py | 6 | CODE | |
| LOW | …lls/cindy-skill-creator/scripts/_vendor/yaml/dumper.py | 4 | CODE | |
| LOW | …lls/cindy-skill-creator/scripts/_vendor/yaml/dumper.py | 5 | CODE | |
| LOW | …lls/cindy-skill-creator/scripts/_vendor/yaml/dumper.py | 6 | CODE | |
| LOW | …lls/cindy-skill-creator/scripts/_vendor/yaml/dumper.py | 7 | CODE | |
| LOW | …ills/cindy-skill-creator/scripts/_vendor/yaml/cyaml.py | 9 | CODE | |
| LOW | …ills/cindy-skill-creator/scripts/_vendor/yaml/cyaml.py | 11 | CODE | |
| LOW | …ills/cindy-skill-creator/scripts/_vendor/yaml/cyaml.py | 12 | CODE | |
| LOW | …ills/cindy-skill-creator/scripts/_vendor/yaml/cyaml.py | 14 | CODE | |
| LOW | …lls/cindy-skill-creator/scripts/_vendor/yaml/parser.py | 65 | CODE | |
| LOW | …lls/cindy-skill-creator/scripts/_vendor/yaml/parser.py | 66 | CODE | |
| LOW | …lls/cindy-skill-creator/scripts/_vendor/yaml/parser.py | 67 | CODE | |
| LOW | …lls/cindy-skill-creator/scripts/_vendor/yaml/loader.py | 4 | CODE | |
| LOW | …lls/cindy-skill-creator/scripts/_vendor/yaml/loader.py | 5 | CODE | |
| LOW | …lls/cindy-skill-creator/scripts/_vendor/yaml/loader.py | 6 | CODE | |
| LOW | …lls/cindy-skill-creator/scripts/_vendor/yaml/loader.py | 7 | CODE | |
| LOW | …lls/cindy-skill-creator/scripts/_vendor/yaml/loader.py | 8 | CODE | |
| LOW | …lls/cindy-skill-creator/scripts/_vendor/yaml/loader.py | 9 | CODE | |
| LOW | …s/cindy-skill-creator/scripts/_vendor/yaml/resolver.py | 4 | CODE | |
| LOW | …s/cindy-skill-creator/scripts/_vendor/yaml/resolver.py | 5 | CODE | |
| LOW | …cindy-skill-creator/scripts/_vendor/yaml/serializer.py | 5 | CODE | |
| LOW | …cindy-skill-creator/scripts/_vendor/yaml/serializer.py | 6 | CODE | |
| LOW | …ls/cindy-skill-creator/scripts/_vendor/yaml/emitter.py | 12 | CODE | |
| LOW | …ktop/src/main/scheduler-host/python-client/protocol.py | 4 | CODE | |
| LOW | …/src/main/scheduler-host/python-client/maker_client.py | 4 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …/desktop/native/remote-desktop/linux-viewer-display.py | 133 | CODE | |
| LOW | …ive/remote-desktop/linux-capture/cursor.integration.py | 32 | CODE | |
| LOW | …esktop/native/remote-desktop/linux-credentials/host.py | 43 | CODE | |
| LOW | …ive/remote-desktop/linux-credentials/platform_linux.py | 166 | CODE | |
| LOW | …ive/remote-desktop/linux-credentials/platform_linux.py | 191 | CODE | |
| LOW | …ystem-skills/cindy-skill-creator/scripts/init_skill.py | 130 | CODE | |
| LOW | …m-skills/cindy-skill-creator/scripts/quick_validate.py | 18 | CODE | |
| LOW | …tem-skills/cindy-skill-creator/scripts/_frontmatter.py | 107 | CODE | |
| LOW | …ls/cindy-skill-creator/scripts/_vendor/yaml/scanner.py | 935 | CODE | |
| LOW | …ls/cindy-skill-creator/scripts/_vendor/yaml/scanner.py | 976 | CODE | |
| LOW | …ls/cindy-skill-creator/scripts/_vendor/yaml/scanner.py | 1052 | CODE | |
| LOW | …ls/cindy-skill-creator/scripts/_vendor/yaml/scanner.py | 1185 | CODE | |
| LOW | …ls/cindy-skill-creator/scripts/_vendor/yaml/scanner.py | 1228 | CODE | |
| LOW | …ls/cindy-skill-creator/scripts/_vendor/yaml/scanner.py | 1311 | CODE | |
| LOW | …indy-skill-creator/scripts/_vendor/yaml/constructor.py | 67 | CODE | |
| LOW | …indy-skill-creator/scripts/_vendor/yaml/constructor.py | 180 | CODE | |
| LOW | …indy-skill-creator/scripts/_vendor/yaml/constructor.py | 237 | CODE | |
| LOW | …indy-skill-creator/scripts/_vendor/yaml/constructor.py | 270 | CODE | |
| LOW | …indy-skill-creator/scripts/_vendor/yaml/constructor.py | 595 | CODE | |
| LOW | …indy-skill-creator/scripts/_vendor/yaml/representer.py | 33 | CODE | |
| LOW | …indy-skill-creator/scripts/_vendor/yaml/representer.py | 171 | CODE | |
| LOW | …lls/cindy-skill-creator/scripts/_vendor/yaml/parser.py | 217 | CODE | |
| LOW | …lls/cindy-skill-creator/scripts/_vendor/yaml/parser.py | 273 | CODE | |
| LOW | …lls/cindy-skill-creator/scripts/_vendor/yaml/reader.py | 149 | CODE | |
| LOW | …s/cindy-skill-creator/scripts/_vendor/yaml/resolver.py | 38 | CODE | |
| LOW | …s/cindy-skill-creator/scripts/_vendor/yaml/resolver.py | 91 | CODE | |
| LOW | …cindy-skill-creator/scripts/_vendor/yaml/serializer.py | 60 | CODE | |
| LOW | …cindy-skill-creator/scripts/_vendor/yaml/serializer.py | 78 | CODE | |
| LOW | …ls/cindy-skill-creator/scripts/_vendor/yaml/emitter.py | 133 | CODE | |
| LOW | …ls/cindy-skill-creator/scripts/_vendor/yaml/emitter.py | 232 | CODE | |
| LOW | …ls/cindy-skill-creator/scripts/_vendor/yaml/emitter.py | 515 | CODE | |
| LOW | …ls/cindy-skill-creator/scripts/_vendor/yaml/emitter.py | 626 | CODE | |
| LOW | …ls/cindy-skill-creator/scripts/_vendor/yaml/emitter.py | 854 | CODE | |
| LOW | …ls/cindy-skill-creator/scripts/_vendor/yaml/emitter.py | 926 | CODE | |
| LOW | …ls/cindy-skill-creator/scripts/_vendor/yaml/emitter.py | 991 | CODE | |
| LOW | …ls/cindy-skill-creator/scripts/_vendor/yaml/emitter.py | 1045 | CODE | |
| LOW | …ls/cindy-skill-creator/scripts/_vendor/yaml/emitter.py | 1080 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/legal/notices/sbom/desktop-win.spdx.json | 18388 | "downloadLocation": "https://github.com/mourner/robust-predicates", | CODE |
| MEDIUM | docs/legal/notices/sbom/desktop-macos.spdx.json | 13529 | "downloadLocation": "https://github.com/mourner/robust-predicates", | CODE |
| MEDIUM | docs/legal/notices/sbom/desktop-linux.spdx.json | 13509 | "downloadLocation": "https://github.com/mourner/robust-predicates", | CODE |
| MEDIUM | packages/maker-remote-ssh/src/bootstrap/installer.ts | 505 | // logged-in users get a seamless start; thereafter the two are independent. | COMMENT |
| MEDIUM | packages/file-browser-core/src/__tests__/ignore.test.ts | 71 | // robust across platforms. | COMMENT |
| MEDIUM | …/desktop/src/renderer/__tests__/fileChipCursor.test.ts | 56 | // anchor the slice on that handler so the assertion is robust to other | COMMENT |
| MEDIUM | …/desktop/src/renderer/hooks/useSessionRunningStatus.ts | 269 | // 状态判断更 robust。存量 pending 若存在(理论上不会:起新 turn 就清了),覆盖掉。 | COMMENT |
| MEDIUM | apps/desktop/src/shared/botTemplatePreset.ts | 22 | '# 不应该做的事\n不虚构事实,不把不确定判断说成结论,不用 Bot、Session、Worker、MCP、harness 等内部词汇向用户解释工作。', | CODE |
| MEDIUM | apps/mobile/e2e/maestro/login_mock_no_clear.yaml | 4 | # 离线确定性来自仓内既有的登录 scenario harness:Metro 以 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …/desktop/native/remote-desktop/linux-viewer-display.py | 39 | except Exception: | CODE |
| LOW | …/desktop/native/remote-desktop/linux-viewer-display.py | 157 | except Exception: | CODE |
| LOW | …/desktop/native/remote-desktop/linux-viewer-display.py | 174 | except Exception: | CODE |
| LOW | …esktop/native/remote-desktop/linux-credentials/host.py | 156 | except Exception: | CODE |
| LOW | …ative/remote-desktop/linux-credentials/test_interop.py | 26 | except Exception: | CODE |
| LOW | …ive/remote-desktop/linux-credentials/platform_linux.py | 116 | except Exception: | CODE |
| MEDIUM | …ive/remote-desktop/linux-credentials/platform_linux.py | 112 | def lock_state(): | CODE |
| LOW | …esktop/native/remote-desktop/linux-credentials/main.py | 56 | except Exception as error: | CODE |
| LOW | …ystem-skills/cindy-skill-creator/scripts/init_skill.py | 214 | except Exception as e: | CODE |
| LOW | …ystem-skills/cindy-skill-creator/scripts/init_skill.py | 218 | except Exception as cleanup_error: | CODE |
| MEDIUM | apps/mobile/plugins/with-incoming-share-files.js | 40 | ' do {\n try IncomingShareSlot.write(encoded, group: appGroupId)\n return true\n } catch {\n | CODE |
| MEDIUM⚡ | apps/mobile/plugins/with-incoming-share-files.js | 54 | ' guard let userDefaults = UserDefaults(suiteName: appGroupId) else {\n print("Error: Expo-sharing could not | CODE |
| MEDIUM⚡ | apps/mobile/plugins/with-incoming-share-files.js | 59 | ' print("Error: Expo-sharing has failed to serialize shared data to JSON")', | CODE |
| MEDIUM⚡ | apps/mobile/plugins/with-incoming-share-files.js | 60 | ' print("Error: Expo-sharing has failed to serialize shared data to JSON")\n return false', | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | packages/model-compat/src/cindy/proxy/transform.ts | 991 | // 下标) —— 即"同 id exchange"边界。依据 agentic loop 串行:下一个 exchange | COMMENT |
| MEDIUM | apps/desktop/forge.config.ts | 2121 | // Stable-parent scaffold publish/cleanup runs in a utility process; | COMMENT |
| MEDIUM | apps/desktop/src/main/hook-control/turnObserver.ts | 225 | // 在长 agentic turn 里看到"正在干什么", 而不是盯着 👀 表情干等。 | COMMENT |
| MEDIUM | …top/src/main/cindy-brain/forgeScaffoldWorkerProcess.ts | 167 | // cleaned up so it doesn't block the next scaffold attempt. | COMMENT |
| MEDIUM | …top/src/main/cindy-brain/forgeScaffoldWorkerProcess.ts | 182 | // Cleanup is best-effort; the next scaffold attempt will also | COMMENT |
| MEDIUM | apps/desktop/src/main/cindy-brain/forge.ts | 878 | // icon_source 是打包期 overlay:源码仍保留 scaffold 占位图,只有用户 | COMMENT |
| MEDIUM | apps/desktop/src/main/im/shared/turnRunner.ts | 2475 | // 长 agentic turn 里看到"正在干什么", 而不是盯占位符干等结果。 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ls/cindy-skill-creator/scripts/_vendor/yaml/scanner.py | 27 | __all__ = ['Scanner', 'ScannerError'] | CODE |
| LOW | …ills/cindy-skill-creator/scripts/_vendor/yaml/error.py | 2 | __all__ = ['Mark', 'YAMLError', 'MarkedYAMLError'] | CODE |
| LOW | …indy-skill-creator/scripts/_vendor/yaml/constructor.py | 2 | __all__ = [ | CODE |
| LOW | …s/cindy-skill-creator/scripts/_vendor/yaml/composer.py | 2 | __all__ = ['Composer', 'ComposerError'] | CODE |
| LOW | …indy-skill-creator/scripts/_vendor/yaml/representer.py | 2 | __all__ = ['BaseRepresenter', 'SafeRepresenter', 'Representer', | CODE |
| LOW | …lls/cindy-skill-creator/scripts/_vendor/yaml/dumper.py | 2 | __all__ = ['BaseDumper', 'SafeDumper', 'Dumper'] | CODE |
| LOW | …ills/cindy-skill-creator/scripts/_vendor/yaml/cyaml.py | 2 | __all__ = [ | CODE |
| LOW | …lls/cindy-skill-creator/scripts/_vendor/yaml/parser.py | 62 | __all__ = ['Parser', 'ParserError'] | CODE |
| LOW | …lls/cindy-skill-creator/scripts/_vendor/yaml/reader.py | 18 | __all__ = ['Reader', 'ReaderError'] | CODE |
| LOW | …lls/cindy-skill-creator/scripts/_vendor/yaml/loader.py | 2 | __all__ = ['BaseLoader', 'FullLoader', 'SafeLoader', 'Loader', 'UnsafeLoader'] | CODE |
| LOW | …s/cindy-skill-creator/scripts/_vendor/yaml/resolver.py | 2 | __all__ = ['BaseResolver', 'Resolver'] | CODE |
| LOW | …cindy-skill-creator/scripts/_vendor/yaml/serializer.py | 2 | __all__ = ['Serializer', 'SerializerError'] | CODE |
| LOW | …ls/cindy-skill-creator/scripts/_vendor/yaml/emitter.py | 9 | __all__ = ['Emitter', 'EmitterError'] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …/desktop/native/remote-desktop/linux-viewer-display.py | 161 | except BrokenPipeError: | CODE |
| HIGH | …indy-skill-creator/scripts/_vendor/yaml/representer.py | 114 | except TypeError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …s/cindy-skill-creator/scripts/_vendor/yaml/__init__.py | 178 | CODE | |
| LOW | …s/cindy-skill-creator/scripts/_vendor/yaml/__init__.py | 215 | CODE | |
| LOW | …lls/cindy-skill-creator/scripts/_vendor/yaml/dumper.py | 11 | CODE | |
| LOW | …lls/cindy-skill-creator/scripts/_vendor/yaml/dumper.py | 29 | CODE | |
| LOW | …lls/cindy-skill-creator/scripts/_vendor/yaml/dumper.py | 47 | CODE | |
| LOW | …ills/cindy-skill-creator/scripts/_vendor/yaml/cyaml.py | 53 | CODE | |
| LOW | …ills/cindy-skill-creator/scripts/_vendor/yaml/cyaml.py | 70 | CODE | |
| LOW | …ills/cindy-skill-creator/scripts/_vendor/yaml/cyaml.py | 87 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ystem-skills/cindy-skill-creator/scripts/init_skill.py | 186 | # Check if directory already exists | COMMENT |
| LOW | …ls/cindy-skill-creator/scripts/_vendor/yaml/scanner.py | 114 | # Check if the next token is one of the given types. | COMMENT |
| LOW | …ls/cindy-skill-creator/scripts/_vendor/yaml/scanner.py | 300 | # Check if a simple key is required at the current position. | COMMENT |
| LOW | …ls/cindy-skill-creator/scripts/_vendor/yaml/scanner.py | 350 | # Check if we need to increase indentation. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …ystem-skills/cindy-skill-creator/scripts/init_skill.py | 165 | Initialize a new skill directory with template SKILL.md. Args: skill_name: Name of the skill p | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …lls/cindy-skill-creator/scripts/_vendor/yaml/reader.py | 1 | # This module contains abstractions for the input stream. You don't have to | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/voice-input-core/src/DictationRefiner.ts | 81 | * {@link DictationRefinerOptions.systemPrompt} (don't forget to bump | COMMENT |