Local-first AI agent workspace for coding, writing, design, research, and automation — one runtime for desktop GUI and TUI.
This report summarizes scanner evidence for KunAgent/Kun, a TypeScript project with 6,350 GitHub stars. SynthScan examined 2,125,126 lines of code across 12541 source files, recording 6344 pattern matches distributed across 16 syntactic categories. The legacy adjusted pattern signal is 3.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.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 6163 finding(s).
Are imports declared and package/API names verified? 160 finding(s).
Are wrappers, guards, and repeated structures necessary? 6133 finding(s).
Which changes need focused human review? 6344 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 6344 distinct pattern matches across 16 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 | kun/tests/history-commit-integration.test.ts | 12 | function blockFirstConditionalRewrite(store: InMemorySessionStore): ConditionalRewriteGate { | CODE |
| LOW | kun/tests/review-service.test.ts | 51 | function inspectingUntilFinalModel( | CODE |
| LOW | kun/tests/loop-test-harness.ts | 195 | function withValidTerminalResponse(model: ModelClient): ModelClient { | CODE |
| LOW | kun/tests/history-commit-coordinator.test.ts | 22 | async function expectStaleRewriteToConflict(store: SessionStore): Promise<void> { | CODE |
| LOW | kun/tests/graph-scheduler-test-harness.ts | 137 | export async function cleanupSchedulerHarnesses(): Promise<void> { | CODE |
| LOW | kun/tests/loop-transcript-harness.ts | 344 | function isVolatileTranscriptField(field: string): boolean { | CODE |
| LOW | kun/tests/loop-transcript-harness.ts | 353 | function createTranscriptNormalizationState(): TranscriptNormalizationState { | CODE |
| LOW | kun/tests/loop-transcript-harness.ts | 386 | function normalizeGeneratedInputIdentifier( | CODE |
| LOW | …ests/server-cases/graph-runtime-terminal-live.cases.ts | 294 | async function expectNoCancelledTransition( | CODE |
| LOW | …erver-cases/graph-runtime-terminal-settlement.cases.ts | 294 | async function expectNoCancelledTransition( | CODE |
| LOW | kun/tests/support/runtime-factory-fixtures.ts | 83 | export async function writeConfigurationExtension(root: string): Promise<void> { | CODE |
| LOW | kun/tests/support/runtime-factory-fixtures.ts | 120 | export async function writeConfigurationFixtureRunner(root: string): Promise<string> { | CODE |
| LOW | kun/tests/support/extension-host-fixtures.ts | 244 | export async function writeHandshakeMismatchRunner( | CODE |
| LOW | kun/tests/support/extension-host-fixtures.ts | 294 | async function buildBuiltinRunnerUncached(): Promise<string> { | CODE |
| LOW | kun/tests/support/thread-store-doctor-fixtures.ts | 76 | export async function expectDoctorSchemaMismatch(root: string): Promise<void> { | CODE |
| LOW | kun/tests/support/thread-store-doctor-fixtures.ts | 126 | export function createCanonicalSqliteSchema( | CODE |
| LOW | kun/tests/helpers/offline-agent-sdk-harness.ts | 23 | export function offlineAgentProfileConfig(providerIds: Array<string | undefined>) { | CODE |
| LOW | kun/tests/adapter-cases/builtin-tools-4.cases.ts | 130 | function createBackgroundBashLocalTool( | CODE |
| LOW | kun/tests/adapter-cases/builtin-tools-3.cases.ts | 135 | function createBackgroundBashLocalTool( | CODE |
| LOW | kun/tests/adapter-cases/builtin-tools-2.cases.ts | 135 | function createBackgroundBashLocalTool( | CODE |
| LOW | …tests/adapter-cases/image-gen-codex-catalog.fixture.ts | 11 | export function isCodexModelCatalogRequest(url: string | URL): boolean { | CODE |
| LOW | …tests/adapter-cases/image-gen-codex-catalog.fixture.ts | 15 | export function codexModelCatalogResponse( | CODE |
| LOW | kun/tests/adapter-cases/builtin-tools-1.cases.ts | 135 | function createBackgroundBashLocalTool( | CODE |
| LOW | kun/src/benchmark/item-index-pagination.ts | 27 | export async function runItemIndexPaginationBenchmark( | CODE |
| LOW | kun/src/benchmark/replay-benchmark-report.ts | 47 | export function parseReplayComparisonPolicy(input: unknown): ReplayComparisonPolicy { | CODE |
| LOW | kun/src/benchmark/replay-benchmark-report.ts | 189 | export function assertReplayReportsComparable( | CODE |
| LOW | kun/src/benchmark/replay-benchmark-report.ts | 242 | export function replayComparisonThresholdsForModel( | CODE |
| LOW | kun/src/benchmark/replay-benchmark-report.ts | 252 | export function groupReplayRunPairsByCurrentModel( | CODE |
| LOW | kun/src/benchmark/replay-benchmark-report.ts | 285 | export function replaySuiteDefinitionHash(suite: ReplaySuite, tasks: ReplayTask[]): string { | CODE |
| LOW | kun/src/benchmark/replay-benchmark-report.ts | 302 | export function canonicalizeReplayDefinition(value: unknown): unknown { | CODE |
| LOW | kun/src/benchmark/replay-benchmark-report.ts | 338 | export function formatReplayReportMarkdown(report: ReplayReport): string { | CODE |
| LOW | kun/src/benchmark/replay-benchmark-quality.ts | 133 | export function replayExpectationFailures( | CODE |
| LOW | kun/src/benchmark/replay-benchmark-quality.ts | 482 | export function formatSignedOptionalPercent(value: number | null): string { | CODE |
| LOW | kun/src/benchmark/manager-lease-renewal.ts | 38 | export async function runManagerLeaseRenewalBenchmark( | CODE |
| LOW | kun/src/instructions/instruction-import.ts | 552 | async function assertSafeWorkspaceTarget(target: string, workspace: string): Promise<void> { | CODE |
| LOW | kun/src/instructions/instruction-runtime.ts | 237 | async function assertSafeWorkspaceInstructionPath(path: string, workspaceRoot: string): Promise<void> { | CODE |
| LOW | kun/src/memory/memory-distillation-evaluation.ts | 13 | export function evaluateMemoryDistillation( | CODE |
| LOW | kun/src/memory/memory-distillation-evaluation.ts | 51 | export function formatMemoryDistillationEvaluation( | CODE |
| LOW | …n/src/memory/memory-feedback-tiebreaker-calibration.ts | 32 | export function deriveMemoryFeedbackTiebreakerBoundaries(gaps: readonly number[]): Array<{ | CODE |
| LOW | …n/src/memory/memory-feedback-tiebreaker-calibration.ts | 48 | export function buildMemoryFeedbackTiebreakerCandidates( | CODE |
| LOW | …n/src/memory/memory-feedback-tiebreaker-calibration.ts | 80 | export function compareMemoryFeedbackTiebreakerItems( | CODE |
| LOW | …n/src/memory/semantic-memory-evaluation-v2-workflow.ts | 239 | function assertCandidateMatchesConfiguration( | CODE |
| LOW | kun/src/memory/memory-feedback-store.ts | 462 | export function sanitizeMemoryFeedbackReason(value: string): string { | CODE |
| LOW | kun/src/memory/memory-store.ts | 515 | export function effectiveMemoryConfidence(record: MemoryRecord, _nowMs?: number, _halfLifeMs?: number): number { | CODE |
| LOW | kun/src/memory/memory-store.ts | 526 | function assertDirectiveConstraints(record: MemoryRecord): void { | CODE |
| LOW | kun/src/memory/memory-distillation-coordinator.ts | 466 | export function sanitizeMemoryDistillationDiagnostic(error: unknown): string { | CODE |
| LOW | kun/src/memory/memory-feedback-tiebreaker-plan.ts | 12 | export function createMemoryFeedbackTiebreakerDecisionPlan(input: { | CODE |
| LOW | kun/src/memory/memory-feedback-tiebreaker-gates.ts | 8 | export function evaluateMemoryFeedbackTiebreakerGates( | CODE |
| LOW | kun/src/memory/memory-context-format.ts | 6 | export function formatMemoryReferenceBlock( | CODE |
| LOW | kun/src/memory/memory-feedback-evaluation-workflow.ts | 52 | export function runMemoryFeedbackEvaluationWorkflow(input: { | CODE |
| LOW | kun/src/memory/memory-feedback-evaluation-workflow.ts | 159 | function pairedBootstrapLowerBounds( | CODE |
| LOW | kun/src/memory/memory-feedback-fixtures.ts | 51 | export async function loadMemoryFeedbackFixtures( | CODE |
| LOW | kun/src/memory/memory-feedback-fixtures.ts | 70 | function validateFixtureReferences(fixture: z.infer<typeof FixtureFile>): void { | CODE |
| LOW | kun/src/memory/memory-feedback-tiebreaker-metrics.ts | 47 | export function scoreMemoryFeedbackTiebreakerCases(input: { | CODE |
| LOW | kun/src/memory/memory-feedback-tiebreaker-evaluator.ts | 31 | export function evaluateMemoryFeedbackTiebreakerCase(input: { | CODE |
| LOW | kun/src/memory/memory-feedback-evaluation.ts | 85 | export function evaluateMemoryFeedbackCandidate( | CODE |
| LOW | kun/src/memory/semantic-memory-evaluation-decision.ts | 30 | export function semanticMemoryLockedCandidateMetadata( | CODE |
| LOW | kun/src/memory/semantic-memory-evaluation-decision.ts | 48 | export function assertSemanticMemoryCandidateMatchesLock( | CODE |
| LOW | kun/src/memory/semantic-memory-evaluation-decision.ts | 61 | export function evaluateSemanticMemoryDecision(input: { | CODE |
| LOW | kun/src/memory/memory-longitudinal-evaluation.ts | 30 | export async function runMemoryLongitudinalReplay(runtime: MemoryReplayRuntime, paths: MemoryReplayPaths, | CODE |
| 6052 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …tests/server-cases/extension-public-workbench.cases.ts | 370 | const workspaceContext = fixture.manager.activate.mock.calls.at(-1)?.[2]?.workspaceContext | CODE |
| CRITICAL | kun/src/graph/graph-supervisor-review-service.ts | 72 | `Acceptance criteria:\n${input.node.node.completion.acceptanceCriteria.map((item) => `- ${item}`).join('\n')}` | CODE |
| CRITICAL | kun/src/server/routes/extension-public-providers.ts | 374 | const declaration = selected.selected.manifest.contributes.modelProviders.find( | CODE |
| CRITICAL | kun/src/server/routes/extension-public-workbench.ts | 216 | if (!selected.selected.manifest.contributes.settings.some(({ id }) => id === localId)) { | CODE |
| CRITICAL | kun/src/server/routes/extension-public-workbench.ts | 246 | if (!selected.selected.manifest.contributes.settings.some(({ id }) => id === parsed.localId)) { | CODE |
| CRITICAL | kun/src/cli/gui-settings-bridge-catalog.ts | 201 | defaultModel: parsed.data.agents.kun.model.trim(), | CODE |
| CRITICAL | kun/src/cli/gui-settings-bridge-catalog.ts | 202 | defaultProviderId: parsed.data.agents.kun.providerId.trim(), | CODE |
| CRITICAL | kun/src/workbench-bridge/harnesses.test.ts | 119 | expect(h.detector.status.mock.calls.every(([id]) => id === 'kun')).toBe(true) | CODE |
| CRITICAL | kun/src/workbench-bridge/harnesses.test.ts | 157 | expect(new Set(h.detector.status.mock.calls.map(([id]) => id))).toEqual(new Set(['codex', 'opencode'])) | CODE |
| CRITICAL | kun/src/rooms/room-peer-runner.ts | 192 | const member = updates.topic.value.roomSnapshot.members.find((entry) => entry.id === updates.member.value.memberId)! | CODE |
| CRITICAL | src/renderer/src/write/tiptap/math-edit.ts | 173 | this.editor.schema.nodes.blockMath.create({ latex: '' }), | CODE |
| CRITICAL | src/renderer/src/write/tiptap/math-edit.ts | 174 | this.editor.schema.nodes.paragraph.create() | CODE |
| CRITICAL | …erer/src/design/motion/canvas-motion-mutations.test.ts | 235 | const xTrack = result.motion.timelines.frame.tracks.find((track) => track.property === 'x') | CODE |
| CRITICAL | …erer/src/design/motion/canvas-motion-mutations.test.ts | 257 | const track = result.motion.timelines.frame.tracks.find((candidate) => candidate.id === trackId) | CODE |
| CRITICAL | …rc/store/chat-store-maintenance-design-history.test.ts | 317 | expect(harness.provider.deleteThread.mock.calls.map(([id]) => id).sort()).toEqual([ | CODE |
| CRITICAL | src/main/runtime-sse-ipc.test.ts | 542 | const batch = mockEvent.sender.send.mock.calls.find((call: any) => call[0] === 'runtime:sse-event')?.[1] | CODE |
| CRITICAL | src/main/runtime-sse-ipc.test.ts | 598 | const batch = mockEvent.sender.send.mock.calls.find((call: any) => call[0] === 'runtime:sse-event')?.[1] | CODE |
| CRITICAL | src/main/startup-failure-window.test.ts | 95 | const value = electron.window.loadURL.mock.calls.at(-1)?.[0] | CODE |
| CRITICAL | src/main/mobile-link/relay-resume.test.ts | 145 | expect(f.relay.enable.mock.calls.map((call) => call[0])).toEqual([true, true, false]) | CODE |
| CRITICAL | src/main/mobile-link/recovery.test.ts | 43 | expect(f.deps.reconnect.mock.calls.map(([code]) => code)).toEqual(['NETWORK_CHANGED', 'HOST_RESUMED']) | CODE |
| CRITICAL | …n/ipc/register-extension-ipc-handlers.accounts.test.ts | 301 | const binding = state.protectedActions.performAfterProtectedDecision.mock.calls.at(-1)?.[0] | CODE |
| CRITICAL | src/main/ipc/app-ipc-handler-utils.ts | 190 | ...(settings.write.paperMode.search.semanticScholarApiKey.trim() | CODE |
| CRITICAL | src/main/ipc/app-ipc-handler-utils.ts | 193 | ...(settings.write.paperMode.search.coreApiKey.trim() | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …rc/harness/additional-native-agent-credentials.test.ts | 47 | { type: 'api', key: 'mimocode-oauth-dummy-key' }, { type: 'api_key', key: 'wrong-dialect' }, { model: 'model' }]) | CODE |
| LOW | kun/src/harness/additional-native-agent-credentials.ts | 180 | token(value.key) && value.key !== 'mimocode-oauth-dummy-key' | CODE |
| LOW | kun/src/prompt/design-authoring-rules.ts | 88 | '- Content realism: use plausible domain-specific labels, data, names, prices, dates, and empty-state copy; no lorem i | CODE |
| LOW | kun/src/knowledge/knowledge-office-extractor.test.ts | 73 | await writeFile(path, 'placeholder') | CODE |
| LOW | kun/src/gmail/google-client.test.ts | 108 | await expect(client.list('subject:nothing', 5, 'fake-token')).resolves.toEqual({ messages: [], hasMore: false }) | CODE |
| LOW | …services/extension-credential-store-inspection.test.ts | 66 | await store.set('cred_token', { accessToken: 'fake-token' }) | CODE |
| LOW | …vices/model-connection-registry-snapshot-cache.test.ts | 31 | let snapshot = await registry.connect({ ...connection, id: 'first', expectedRevision: 0, credential: 'fake-key' }) | CODE |
| LOW | …vices/model-connection-registry-snapshot-cache.test.ts | 32 | snapshot = await registry.connect({ ...connection, id: 'second', expectedRevision: snapshot.revision, credential: 'fak | CODE |
| LOW | …vices/model-connection-registry-snapshot-cache.test.ts | 54 | await registry.connect({ ...connection, id: 'third', expectedRevision: revision, credential: 'fake-key' }) | CODE |
| LOW | …ervices/model-connection-registry-health-batch.test.ts | 34 | credential: 'fake-key', customHeaders: { 'X-Test': 'fake-header' } }) | CODE |
| LOW | …ervices/model-connection-registry-health-batch.test.ts | 57 | const connected = await registry.connect({ ...connection, id: 'key', expectedRevision: 0, credential: 'fake-key' }) | CODE |
| LOW | …/services/paper-search/paper-search-connectors.test.ts | 58 | authors: ['Jane Doe', 'Consortium X'], | CODE |
| LOW | …sions/kun-video-editor/tests/generation-engine.test.ts | 87 | expect(result).not.toHaveProperty('placeholder') | CODE |
| LOW | …sions/kun-video-editor/tests/generation-engine.test.ts | 113 | expect(created.record).toMatchObject({ state: 'placeholder', attempt: 1, placeholder: { state: 'pending' } }) | CODE |
| LOW | …sions/kun-video-editor/tests/generation-engine.test.ts | 114 | expect(persistence.snapshot?.records[0]?.state).toBe('placeholder') | CODE |
| LOW | …sions/kun-video-editor/tests/generation-engine.test.ts | 220 | expect(retried).toMatchObject({ state: 'placeholder', attempt: 2, placeholder: { state: 'pending' } }) | CODE |
| LOW | …sions/kun-video-editor/tests/generation-panel.test.tsx | 226 | state: 'placeholder', | CODE |
| LOW | …ensions/kun-video-editor/tests/generation-host.test.ts | 47 | expect(JSON.stringify(persisted)).toContain('"state":"placeholder"') | CODE |
| LOW | …ensions/kun-video-editor/tests/generation-host.test.ts | 211 | record.state = 'placeholder' | CODE |
| LOW | …ensions/kun-video-editor/tests/generation-host.test.ts | 221 | record.state = 'placeholder' | CODE |
| LOW | …nsions/kun-video-editor/src/host/generation-service.ts | 370 | if (!['placeholder', 'queued', 'running', 'cancelling'].includes(record.state)) { | CODE |
| LOW | …nsions/kun-video-editor/src/host/generation-service.ts | 401 | if (!['placeholder', 'queued', 'running', 'cancelling'].includes(record.state)) continue | CODE |
| LOW | …nsions/kun-video-editor/src/host/generation-service.ts | 427 | if (record.state !== 'placeholder') { | CODE |
| LOW⚡ | …nsions/kun-video-editor/src/host/generation-service.ts | 444 | if (current.state !== 'placeholder') throw new Error('Only a placeholder may resume a prepared generation job. | CODE |
| LOW⚡ | …nsions/kun-video-editor/src/host/generation-service.ts | 454 | if (current.state === 'placeholder' || (current.state === 'queued' && snapshot.state === 'running')) { | CODE |
| LOW⚡ | …nsions/kun-video-editor/src/host/generation-service.ts | 463 | if (current.state === 'placeholder') { | CODE |
| LOW | …ons/kun-video-editor/src/webview/model-intelligence.ts | 337 | state: 'placeholder' | 'queued' | 'running' | 'cancelling' | 'ready' | 'failed' | 'cancelled' | 'interrupted' | CODE |
| LOW | …ons/kun-video-editor/src/webview/controller-effects.ts | 319 | .filter(({ state: recordState }) => ['placeholder', 'queued', 'running', 'cancelling'].includes(recordState)) | CODE |
| LOW | …eo-editor/src/webview/controller-generation-support.ts | 252 | !['placeholder', 'queued', 'running', 'cancelling', 'ready', 'failed', 'cancelled', 'interrupted'].includes(String(v | CODE |
| LOW | …eo-editor/src/webview/controller-generation-support.ts | 342 | kind: placeholder.kind as GenerationRecordProjection['placeholder']['kind'], | CODE |
| LOW | …eo-editor/src/webview/controller-generation-support.ts | 343 | state: placeholder.state as GenerationRecordProjection['placeholder']['state'] | CODE |
| LOW | …ions/kun-video-editor/src/webview/generation-panel.tsx | 39 | state: 'placeholder' | 'queued' | 'running' | 'cancelling' | 'ready' | 'failed' | 'cancelled' | 'interrupted' | CODE |
| LOW | …ions/kun-video-editor/src/webview/generation-panel.tsx | 387 | {['placeholder', 'queued', 'running'].includes(record.state) && ( | CODE |
| LOW | …ions/kun-video-editor/src/engine/generation-runtime.ts | 60 | export const ACTIVE_STATES = new Set<GenerationRecordState>(['placeholder', 'queued', 'running', 'cancelling']) | CODE |
| LOW | …ions/kun-video-editor/src/engine/generation-runtime.ts | 293 | state: 'placeholder', | CODE |
| LOW | …ions/kun-video-editor/src/engine/generation-runtime.ts | 338 | record.state = 'placeholder' | CODE |
| LOW | …ions/kun-video-editor/src/engine/generation-runtime.ts | 355 | if (!['placeholder', 'queued', 'running'].includes(record.state)) { | CODE |
| LOW | …ions/kun-video-editor/src/engine/generation-runtime.ts | 370 | if (record.state !== 'placeholder') throw validationError('Generation record is not awaiting job preparation') | CODE |
| LOW | …ions/kun-video-editor/src/engine/generation-runtime.ts | 502 | if (record.state !== 'placeholder') throw validationError('Generation record is not awaiting execution') | CODE |
| LOW | …s/kun-video-editor/src/engine/generation-validation.ts | 402 | 'schemaVersion', 'id', 'generation', 'owner', 'request', 'requestDigest', 'quote', 'authorization', 'placeholder', ' | CODE |
| LOW | …s/kun-video-editor/src/engine/generation-validation.ts | 432 | const state = oneOf(record.state, ['placeholder', 'queued', 'running', 'cancelling', 'ready', 'failed', 'cancelled', ' | CODE |
| LOW | …nsions/kun-video-editor/src/engine/generation-model.ts | 207 | | 'placeholder' | CODE |
| LOW | src/renderer/src/paper/pdf-citation-resolve.test.ts | 55 | { n: 2, title: 'B', authors: ['John Doe'], year: '2020' } | CODE |
| LOW | …/src/design/html-quality/runtime-script-dom-helpers.ts | 1 | export const DESIGN_RUNTIME_QUALITY_AUDIT_DOM_HELPERS = "')) return ''\n if (hash.startsWith('!')) hash = hash.slic | CODE |
| LOW | …src/design/html-quality/runtime-script-layout-rules.ts | 1 | export const DESIGN_RUNTIME_QUALITY_AUDIT_LAYOUT_RULES = " el.getAttribute('data-filter') || '',\n el.getAttri | CODE |
| LOW | …rc/design/html-quality/runtime-script-content-rules.ts | 1 | export const DESIGN_RUNTIME_QUALITY_AUDIT_CONTENT_RULES = " const closeBlocks = conversionCloseElements()\n | CODE |
| LOW | …renderer/src/design/html-quality/records-and-charts.ts | 255 | attributeValue(tag, 'placeholder') ?? '' | CODE |
| LOW | …rer/src/design/html-quality/runtime-script-preamble.ts | 1 | export const DESIGN_RUNTIME_QUALITY_AUDIT_SCRIPT_PREAMBLE = "(() => {\n const findings = []\n const push = (code, | CODE |
| LOW | src/renderer/src/design/html-quality/patterns.ts | 4 | /\b(lorem ipsum|placeholder|todo|tbd|sample data|example (card|title|user|company|product)|card title|feature [0-9]+|i | CODE |
| LOW | …/src/design/html-quality/controls-forms-and-dialogs.ts | 318 | ...attributeValues(inner, 'placeholder'), | CODE |
| LOW | …/src/design/html-quality/controls-forms-and-dialogs.ts | 358 | attributeValue(tag, 'placeholder') ?? '', | CODE |
| LOW | …src/design/canvas/design-system-template/foundation.ts | 283 | const label = componentShape('text', 'placeholder', { | CODE |
| LOW | …src/design/canvas/design-system-template/foundation.ts | 302 | slots: [{ path: 'placeholder', kind: 'text', label: 'Placeholder' }] | CODE |
| LOW | src/renderer/src/locales/ja/common/commands-sdd.json | 97 | "placeholder": "エージェントに聞いてみると…(Shift+Enter で改行)", | CODE |
| LOW | src/renderer/src/locales/ru/common/commands-sdd.json | 97 | "placeholder": "Спросите агента… (Shift+Enter — новая строка)", | CODE |
| LOW | src/renderer/src/locales/zh/common/agent-dispatch.json | 80 | "placeholder": "例如:\n- 前端界面和样式:Claude Code · opus\n- 代码审查、安全检查:Codex · gpt-6.1-codex\n- 批量小改动、跑测试:Kun · deepseek-fla | CODE |
| LOW | src/renderer/src/locales/zh/common/commands-sdd.json | 98 | "placeholder": "向智能体提问…(Shift+Enter 换行)", | CODE |
| LOW | src/renderer/src/locales/hi/common/commands-sdd.json | 97 | "placeholder": "एजेंट से पूछें... (Shift+Enter से नई लाइन)", | CODE |
| LOW | src/renderer/src/locales/ko/common/commands-sdd.json | 97 | "placeholder": "상담원에게 물어보세요... (Shift+Enter로 줄바꿈)", | CODE |
| LOW | src/renderer/src/locales/en/common/agent-dispatch.json | 80 | "placeholder": "For example:\n- UI and styling: Claude Code · opus\n- Code review and security checks: Codex · gpt-6 | CODE |
| 10 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | DESIGN.zh-CN.md | 461 | ### 9.4 Write-mode completion & RAG | COMMENT |
| MEDIUM | DESIGN.md | 461 | ### 9.4 Write-mode completion & RAG | COMMENT |
| MEDIUM | docs/WRITE_INLINE_EDIT_RAG.zh-CN.md | 1 | # 用 BM25 + 关键词 RAG 做 Work 文本编辑:一次探索和落地 | COMMENT |
| MEDIUM | docs/WRITE_INLINE_EDIT_RAG.zh-CN.md | 33 | ## RAG 在编辑里解决什么问题 | COMMENT |
| MEDIUM | docs/WRITE_RETRIEVAL_RAG.zh-CN.md | 1 | # Work 跨文本 BM25 + 关键词检索 RAG 技术说明 | COMMENT |
| MEDIUM | docs/WRITE_INLINE_COMPLETION_MODES.en.md | 196 | ## Relationship with RAG | COMMENT |
| MEDIUM | docs/WRITE_INLINE_COMPLETION_MODES.zh-CN.md | 192 | ## 与 RAG 的关系 | COMMENT |
| MEDIUM | docs/WRITE_INLINE_EDIT_RECENT_EDITS.zh-CN.md | 137 | ## 与 RAG 的关系 | COMMENT |
| MEDIUM | docs/WRITE_INLINE_EDIT_RAG.en.md | 1 | # Use BM25 + keyword RAG for Work text editing: an exploration and implementation | COMMENT |
| MEDIUM | docs/WRITE_INLINE_EDIT_RAG.en.md | 36 | ## What problems does RAG solve in editing? | COMMENT |
| MEDIUM | docs/WRITE_INLINE_EDIT_RECENT_EDITS.en.md | 140 | ## Relationship with RAG | COMMENT |
| MEDIUM | docs/WRITE_RETRIEVAL_RAG.en.md | 1 | # Work cross-text BM25 + keyword search RAG technical description | COMMENT |
| MEDIUM | …pec/changes/remediate-project-health-hotspots/tasks.md | 1 | ## 1. Baseline and ownership guardrails | COMMENT |
| MEDIUM | openspec/changes/modularize-kun-agent-loop/tasks.md | 1 | ## 1. Baseline and regression guardrails | COMMENT |
| MEDIUM | openspec/changes/build-kun-extension-platform/tasks.md | 66 | ## 8. Public SDKs, scaffolding, and examples | COMMENT |
| MEDIUM | …xtension-platform/specs/extension-host-runtime/spec.md | 58 | ### Requirement: Activation is lazy, serialized, and event driven | COMMENT |
| MEDIUM | src/renderer/src/plan/prepare-plan-build.test.ts | 14 | plan, content: '# Latest\nbody', orchestration: 'direct', graphEnabled: true, | CODE |
| MEDIUM | src/renderer/src/plan/prepare-plan-build.test.ts | 29 | plan, content: '# Graph', orchestration: 'graph', graphEnabled: true, | CODE |
| MEDIUM | src/renderer/src/plan/prepare-plan-build.test.ts | 41 | plan, content: '# Changed', orchestration: 'direct', graphEnabled: true, | CODE |
| MEDIUM | src/renderer/src/plan/prepare-plan-build.test.ts | 50 | const result = await preparePlanBuild({ plan, content: '# Plan', orchestration: 'direct', | CODE |
| MEDIUM | src/main/ipc/app-ipc-schemas.schedule-tasks.test.ts | 39 | // #1342: the read path fills sourcePlanId/sourceThreadId/orchestration (and | COMMENT |
| MEDIUM | …rvices/write-inline-completion-service.context.test.ts | 198 | '# RAG notes', | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | resources/ppt-toolchain/scripts/export_pptx.py | 14 | CODE | |
| LOW | resources/ppt-toolchain/scripts/export_pptx.py | 30 | CODE | |
| LOW | resources/ppt-toolchain/scripts/export_pptx.py | 30 | CODE | |
| LOW | resources/ppt-toolchain/scripts/export_pptx.py | 30 | CODE | |
| LOW | resources/ppt-toolchain/scripts/export_pptx.py | 30 | CODE | |
| LOW | resources/ppt-toolchain/scripts/export_pptx.py | 30 | CODE | |
| LOW | resources/ppt-toolchain/scripts/export_pptx.py | 30 | CODE | |
| LOW | resources/ppt-toolchain/scripts/export_pptx.py | 30 | CODE | |
| LOW | resources/ppt-toolchain/scripts/export_pptx.py | 30 | CODE | |
| LOW | resources/ppt-toolchain/scripts/export_pptx.py | 30 | CODE | |
| LOW | resources/ppt-toolchain/scripts/export_pptx.py | 30 | CODE | |
| LOW | resources/ppt-toolchain/scripts/export_pptx.py | 30 | CODE | |
| LOW | resources/ppt-toolchain/scripts/export_pptx.py | 30 | CODE | |
| LOW | resources/ppt-toolchain/scripts/export_pptx.py | 30 | CODE | |
| LOW | resources/ppt-toolchain/scripts/export_pptx.py | 30 | CODE | |
| LOW | resources/ppt-toolchain/scripts/export_pptx.py | 30 | CODE | |
| LOW | resources/ppt-toolchain/scripts/export_pptx.py | 30 | CODE | |
| LOW | resources/ppt-toolchain/scripts/export_pptx.py | 30 | CODE | |
| LOW | resources/ppt-toolchain/scripts/export_pptx.py | 30 | CODE | |
| LOW | resources/ppt-toolchain/scripts/export_pptx.py | 59 | CODE | |
| LOW | resources/ppt-toolchain/scripts/export_pptx.py | 59 | CODE | |
| LOW | resources/ppt-toolchain/scripts/export_pptx.py | 59 | CODE | |
| LOW | resources/ppt-toolchain/scripts/export_pptx.py | 59 | CODE | |
| LOW | resources/ppt-toolchain/scripts/export_pptx.py | 59 | CODE | |
| LOW | resources/ppt-toolchain/scripts/export_pptx.py | 59 | CODE | |
| LOW | resources/ppt-toolchain/scripts/export_pptx.py | 74 | CODE | |
| LOW | resources/ppt-toolchain/scripts/export_pptx.py | 74 | CODE | |
| LOW | resources/ppt-toolchain/scripts/export_pptx.py | 74 | CODE | |
| LOW | resources/ppt-toolchain/scripts/export_pptx.py | 74 | CODE | |
| LOW | …sources/ppt-toolchain/scripts/ppt_export_validation.py | 3 | CODE | |
| LOW | …ources/ppt-toolchain/scripts/ppt_export_environment.py | 14 | CODE | |
| LOW | …ources/ppt-toolchain/scripts/ppt_export_environment.py | 16 | CODE | |
| LOW | …ources/ppt-toolchain/scripts/ppt_export_environment.py | 17 | CODE | |
| LOW | …ources/ppt-toolchain/scripts/ppt_export_environment.py | 18 | CODE | |
| LOW | …ources/ppt-toolchain/scripts/ppt_export_environment.py | 19 | CODE | |
| LOW | …ources/ppt-toolchain/scripts/ppt_export_environment.py | 27 | CODE | |
| LOW | …ources/ppt-toolchain/scripts/ppt_export_environment.py | 30 | CODE | |
| LOW | …ources/ppt-toolchain/scripts/ppt_export_environment.py | 31 | CODE | |
| LOW | …ources/ppt-toolchain/scripts/ppt_export_environment.py | 32 | CODE | |
| LOW | …ources/ppt-toolchain/scripts/ppt_export_environment.py | 33 | CODE | |
| LOW | …ources/ppt-toolchain/scripts/ppt_export_environment.py | 35 | CODE | |
| LOW | …ources/ppt-toolchain/scripts/ppt_export_environment.py | 35 | CODE | |
| LOW | …ources/ppt-toolchain/scripts/ppt_export_environment.py | 36 | CODE | |
| LOW | resources/ppt-toolchain/scripts/export_images.py | 9 | CODE | |
| LOW | resources/ppt-toolchain/scripts/ppt_export_project.py | 3 | CODE | |
| LOW | benchmarks/agent-evals/src/kun_bench/harbor_agent.py | 1 | CODE | |
| LOW | benchmarks/agent-evals/src/kun_bench/config.py | 1 | CODE | |
| LOW | benchmarks/agent-evals/src/kun_bench/host.py | 1 | CODE | |
| LOW | benchmarks/agent-evals/src/kun_bench/__init__.py | 3 | CODE | |
| LOW | benchmarks/agent-evals/src/kun_bench/trajectory.py | 1 | CODE | |
| LOW | benchmarks/agent-evals/src/kun_bench/git_patch.py | 1 | CODE | |
| LOW | benchmarks/agent-evals/src/kun_bench/builder.py | 1 | CODE | |
| LOW | benchmarks/agent-evals/src/kun_bench/suites.py | 1 | CODE | |
| LOW | …nchmarks/agent-evals/src/kun_bench/swebench_runtime.py | 1 | CODE | |
| LOW | benchmarks/agent-evals/src/kun_bench/cli.py | 1 | CODE | |
| LOW | …chmarks/agent-evals/src/kun_bench/framework_support.py | 1 | CODE | |
| LOW | benchmarks/agent-evals/src/kun_bench/environment.py | 1 | CODE | |
| LOW | …chmarks/agent-evals/src/kun_bench/framework_results.py | 1 | CODE | |
| LOW | benchmarks/agent-evals/src/kun_bench/pier_agent.py | 1 | CODE | |
| LOW | benchmarks/agent-evals/src/kun_bench/artifacts.py | 1 | CODE | |
| 2 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | kun/src/quality/rules.ts | 142 | // ── slop: the unmistakable AI tells ─────────────────────────────────────── | COMMENT |
| MEDIUM | kun/src/quality/rules.ts | 329 | // ── quality: general craft ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | kun/src/quality/rules.ts | 513 | // ── drift: divergence from declared design context ───────────────────────── | COMMENT |
| MEDIUM | scripts/release.sh | 4 | # ============================================================================= | COMMENT |
| MEDIUM | scripts/release.sh | 15 | # ============================================================================= | COMMENT |
| MEDIUM | …mponents/design/canvas/properties-panel/primitives.tsx | 33 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …mponents/design/canvas/properties-panel/primitives.tsx | 35 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …mponents/design/canvas/properties-panel/primitives.tsx | 269 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …mponents/design/canvas/properties-panel/primitives.tsx | 271 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …mponents/design/canvas/properties-panel/primitives.tsx | 389 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …mponents/design/canvas/properties-panel/primitives.tsx | 391 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/renderer/src/sdd/pm-skill-frameworks.ts | 40 | // ── Discover ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/renderer/src/sdd/pm-skill-frameworks.ts | 108 | // ── Structure ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/renderer/src/sdd/pm-skill-frameworks.ts | 186 | // ── Risk ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/renderer/src/sdd/pm-skill-frameworks.ts | 253 | // ── Plan (injected into buildSddDraftToPlanPrompt; no button) ─────────────── | COMMENT |
| MEDIUM | src/renderer/src/sdd/pm-skill-frameworks.ts | 267 | // ── Verify (injected into buildSddVerifyPrompt; no button) ────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | src/main/terminal/terminal-shell-integration.ts | 52 | elif [[ "$char" == ";" ]]; then out+="\\\\x3b" | CODE |
| HIGH⚡ | src/main/terminal/terminal-shell-integration.ts | 53 | elif [[ "$char" == $'\\n' ]]; then out+="\\\\x0a" | CODE |
| HIGH⚡ | src/main/terminal/terminal-shell-integration.ts | 54 | elif [[ "$char" == $'\\e' || "$char" == $'\\a' ]]; then : | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | resources/ppt-toolchain/scripts/export_pptx.py | 332 | except OSError: | CODE |
| HIGH | …ources/ppt-toolchain/scripts/ppt_export_environment.py | 119 | except OSError: | CODE |
| HIGH | …ources/ppt-toolchain/scripts/ppt_export_environment.py | 295 | except ValueError: | CODE |
| HIGH | resources/ppt-toolchain/scripts/export_images.py | 363 | except OSError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | kun/src/server/routes/threads.ts | 121 | userInputGate?: UserInputGate, | COMMENT |
| LOW | kun/src/loop/context-compactor.ts | 101 | // e.g. the first turn after a restart) systematically under-counts and | COMMENT |
| LOW | scripts/release-mac.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/release-win.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/release.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | src/renderer/src/design/design-board-layout.test.ts | 101 | }) | COMMENT |
| LOW | src/renderer/src/components/mcp/mcp-config-form.ts | 1 | // Structured model + (de)serialization for the MCP server config edited in | COMMENT |
| LOW | src/renderer/src/store/chat-store-schedulers.ts | 1 | import type { ChatState, ChatStoreGet, ChatStoreSet } from './chat-store-types' | COMMENT |
| LOW | src/main/workflow-runtime-helpers.ts | 221 | // WorkflowRuntime | COMMENT |
| LOW | src/main/workflow-runtime.nodes.io-loop-custom.test.ts | 1 | // Per-node-type unit-test catalog for the workflow runtime. | COMMENT |
| LOW | src/main/workflow-runtime.nodes.test.ts | 1 | // Per-node-type unit-test catalog for the workflow runtime. | COMMENT |
| LOW | src/main/feishu-inbound-coordinator.ts | 341 | // Emoji type selection: Feishu / Lark's `im.v1.messageReaction.create` | COMMENT |
| LOW | src/main/feishu-inbound-coordinator.ts | 361 | } | COMMENT |
| LOW | src/main/workflow-runtime.nodes.control-data.test.ts | 1 | // Per-node-type unit-test catalog for the workflow runtime. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | package-lock.json | 23349 | "resolved": "https://registry.npmmirror.com/robust-predicates/-/robust-predicates-3.0.3.tgz", | CODE |
| MEDIUM | kun/src/cache/cache-regression.ts | 79 | // Median is robust to a single cold-start zero or one anomalous spike, so a | COMMENT |
| MEDIUM | kun/src/delegation/workspace-agents.ts | 30 | * credential-mode: native-login # optional harness credential path | COMMENT |
| MEDIUM | kun/src/delegation/workspace-agents.ts | 33 | * model: claude-sonnet-5 # optional harness model pin | COMMENT |
| MEDIUM | …kun-avatar/sources/generation-records-v2-material.json | 71 | "prompt": "Make only a careful local material correction to this existing transparent FOUR-column TWO-row sheet of | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | resources/ppt-toolchain/scripts/export_images.py | 60 | if (!target) return null; | CODE |
| HIGH | resources/ppt-toolchain/scripts/export_images.py | 69 | return active ? active.textContent.trim() : null; | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …unsdd/plan/sdd-d92369a0-df1f-4519-9913-affab396e710.md | 22 | ### Step 1: 修改容器布局方向 | COMMENT |
| LOW | …unsdd/plan/sdd-d92369a0-df1f-4519-9913-affab396e710.md | 33 | ### Step 2: 让两个按钮等宽 | COMMENT |
| LOW | …unsdd/plan/sdd-d92369a0-df1f-4519-9913-affab396e710.md | 46 | ### Step 3: 添加单元测试 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | resources/ppt-toolchain/scripts/export_pptx.py | 244 | CODE | |
| LOW | …sources/ppt-toolchain/scripts/ppt_export_validation.py | 81 | CODE | |
| LOW | resources/ppt-toolchain/scripts/ppt_export_project.py | 262 | CODE | |
| LOW | benchmarks/agent-evals/src/kun_bench/trajectory.py | 45 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/release-mac.sh | 6 | # Usage: | COMMENT |
| LOW | scripts/release-win.sh | 7 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | benchmarks/agent-evals/src/kun_bench/__init__.py | 5 | __all__ = ["HARNESS_VERSION"] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/renderer/src/data-migration/renderer-state-rpc.ts | 49 | async function handleRequest(request: DataMigrationRendererRequest): Promise<unknown> { | CODE |