github TypeScript re-analysis due

linnnn89/WinCode

github

WinCode is a Windows/.NET MCP assistant for background UI inspection and code intelligence. It reduces screenshot-driven computer-use overhead with structured controls, runtime states, and source evidence—supporting text-only LLMs without taking focus.

maintainer
linnnn89
licence
MIT
first seen
2026-09-11
last seen
2026-09-12
releases · 30d
0
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 16 tools
transport stdio · http counts 16 tools · 0 res · 0 prompts permission surface via README inference

tools

  • analyze_change_impact

    Estimate which code a change may affect. Return riskLevel: "UNKNOWN" and confidence: "UNCERTAIN" for ambiguous symbols, incomplete results or no references.

  • wincode_analyze_workspace

    Parse solution structure and declared .sln/.csproj project references.

  • wincode_diagnose_project

    Check installed SDKs, Git and the local Windows environment.

  • wincode_file_outline

    Read one file's observed line/byte counts and bounded local declarations with follow-up reads.

  • wincode_find_code_symbol

    Search symbols and report the provider and completeness of the results.

  • wincode_find_references

    Find references using a returned symbol location; optional Roslyn limit is 1–1000 (default 100, requires symbolLocation). Both providers accept maxOutputChars (2048–32768, default 8000) for the final

  • wincode_hello_world

    Read instance identity and known adapter state without spawning probes; use diagnose_project for active checks.

  • wincode_list_directory

    Browse a specific workspace directory with entry, depth and output limits.

  • wincode_plan_refactoring

    Suggest pre-edit checks and verification steps based on change impact.

  • wincode_prepare_context

    Return code excerpts with file paths and line ranges within a character-based output limit.

  • wincode_safe_move_to_trash

    Validate paths, move files to trash/ and record metadata. Cancellation before the move stops it; finalization preserves the actual completed/partial outcome even after a deadline.

  • wincode_search_text

    Search literal text within exclusive files/directories; return locations, bounded previews and follow-up reads.

  • wincode_ui_inspect

    Inspect UI control subtrees, interactive states, and optional numbered screenshots.

  • wincode_ui_list_windows

    Enumerate visible top-level windows with title/process filters and count limits.

  • wincode_ui_review

    Return explicit XAML/C# source candidates, lines, hashes and scoped next requests from one UI snapshot.

  • workspace_open

    Confirm or recover the fixed workspace and return a bounded summary; reject other roots.

skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 4f4f4f7 · analyzer v33 · 1w ago

skills & prompt files 1

code evidence vHEAD · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 192

filesystem 102

  • fs (weak) linnnn89-WinCode-4f4f4f7/scripts/benchmark-agent-efficiency.ts :1 import fs from 'node:fs/promises';
  • fs (weak) linnnn89-WinCode-4f4f4f7/scripts/build.mjs :2 import fs from 'node:fs/promises';
  • fs (weak) linnnn89-WinCode-4f4f4f7/scripts/check.mjs :1 import fs from 'node:fs/promises';
  • fs (weak) linnnn89-WinCode-4f4f4f7/scripts/delivery-manifest.mjs :1 import fs from 'node:fs/promises';
  • fs (weak) linnnn89-WinCode-4f4f4f7/scripts/lib/check-stage.mjs :1 import fs from 'node:fs/promises';
  • fs (weak) linnnn89-WinCode-4f4f4f7/scripts/lib/dotnet.mjs :1 import fs from 'node:fs';
  • fs (weak) linnnn89-WinCode-4f4f4f7/scripts/measure-runtime-baseline.mjs :3 import fs from 'node:fs/promises';
  • fs (weak) linnnn89-WinCode-4f4f4f7/scripts/owner-death/scenarios.mjs :2 import fs from 'node:fs/promises';
  • fs (weak) linnnn89-WinCode-4f4f4f7/scripts/publish-native.mjs :2 import fs from 'node:fs/promises';
  • fs (weak) linnnn89-WinCode-4f4f4f7/scripts/roslyn/design-time-prototypes.mjs :2 import fs from 'node:fs/promises';
  • fs (weak) linnnn89-WinCode-4f4f4f7/scripts/roslyn/gateway-lifecycle.mjs :2 import fs from 'node:fs/promises';
  • fs (weak) linnnn89-WinCode-4f4f4f7/scripts/roslyn/host-inputs.mjs :2 import fs from 'node:fs/promises';
show 28 more
  • fs (weak) linnnn89-WinCode-4f4f4f7/scripts/roslyn/host-semantics.mjs :2 import fs from 'node:fs/promises';
  • fs (weak) linnnn89-WinCode-4f4f4f7/scripts/sync-skill.mjs :1 import fs from 'node:fs/promises';
  • fs (weak) linnnn89-WinCode-4f4f4f7/scripts/test-mcp-client.ts :2 import fs from 'node:fs/promises';
  • fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-design-time-concurrency.mjs :3 import fs from 'node:fs/promises';
  • fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-error-contracts.ts :3 import fs from 'node:fs/promises';
  • fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-failure-recovery.ts :2 import fs from 'node:fs/promises';
  • fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-manual-release.ts :3 import fs from 'node:fs/promises';
  • fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-mixed-load.ts :2 import fs from 'node:fs/promises';
  • fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-multi-agent.mjs :3 import fs from 'node:fs/promises';
  • fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-owner-death.mjs :3 import fs from 'node:fs/promises';
  • fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-product-tasks.ts :2 import fs from 'node:fs/promises';
  • fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-repomix-real.ts :2 import fs from 'node:fs/promises';
  • fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-roslyn-gateway.mjs :9 import fs from 'node:fs/promises';
  • fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-roslyn-host.mjs :11 import fs from 'node:fs/promises';
  • fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-shared-cache.mjs :3 import fs from 'node:fs/promises';
  • fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-tavern-context.ts :2 import fs from 'node:fs/promises';
  • fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-tray-workflow.mjs :3 import fs from 'node:fs/promises';
  • fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-tray.mjs :3 import fs from 'node:fs/promises';
  • fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-ui-background.ts :2 import fs from 'node:fs/promises';
  • fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-ui-query.ts :3 import fs from 'node:fs/promises';
  • fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-ui-runtime.ts :2 import fs from 'node:fs/promises';
  • fs linnnn89-WinCode-4f4f4f7/src/Adapters/DesignTimeArtifacts.ts :1 import fs from 'node:fs/promises';
  • fs linnnn89-WinCode-4f4f4f7/src/Adapters/FlaUiAdapter.ts :4 import fs from 'node:fs';
  • fs linnnn89-WinCode-4f4f4f7/src/Adapters/RepomixAdapter.ts :3 import fs from 'node:fs/promises';
  • fs linnnn89-WinCode-4f4f4f7/src/Adapters/RoslynAdapter.ts :1 import fs from 'node:fs/promises';
  • fs linnnn89-WinCode-4f4f4f7/src/Core/Cache.ts :1 import fs from 'node:fs/promises';
  • fs linnnn89-WinCode-4f4f4f7/src/Core/Context.ts :6 import fs from 'node:fs/promises';
  • fs linnnn89-WinCode-4f4f4f7/src/Core/DotNetGraph.ts :2 import fs from 'node:fs/promises';

62 more not shown — this panel samples each group; the count above is the real total.

shell / exec 48

  • shell (weak) linnnn89-WinCode-4f4f4f7/scripts/benchmark-agent-efficiency.ts :5 import { execFileSync } from 'node:child_process';
  • shell (weak) linnnn89-WinCode-4f4f4f7/scripts/build.mjs :4 import { spawnSync } from 'node:child_process';
  • shell (weak) linnnn89-WinCode-4f4f4f7/scripts/delivery-manifest.mjs :4 import { spawnSync } from 'node:child_process';
  • shell (weak) linnnn89-WinCode-4f4f4f7/scripts/lib/check-stage.mjs :3 import { spawnSync } from 'node:child_process';
  • shell (weak) linnnn89-WinCode-4f4f4f7/scripts/lib/dotnet.mjs :3 import { spawnSync } from 'node:child_process';
  • shell (weak) linnnn89-WinCode-4f4f4f7/scripts/lib/owned-processes.mjs :2 import { spawnSync } from 'node:child_process';
  • shell (weak) linnnn89-WinCode-4f4f4f7/scripts/measure-runtime-baseline.mjs :6 import { spawnSync } from 'node:child_process';
  • shell (weak) linnnn89-WinCode-4f4f4f7/scripts/owner-death/scenarios.mjs :5 import { spawn } from 'node:child_process';
  • shell (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-design-time-concurrency.mjs :6 import { spawn } from 'node:child_process';
  • shell (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-manual-release.ts :6 import { spawnSync } from 'node:child_process';
  • shell (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-mixed-load.ts :4 import cp from 'node:child_process';
  • shell (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-multi-agent.mjs :7 import { spawn } from 'node:child_process';
show 28 more
  • shell (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-product-tasks.ts :5 import { spawnSync } from 'node:child_process';
  • shell (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-repomix-real.ts :4 import cp from 'node:child_process';
  • shell (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-roslyn-host.mjs :13 import { spawn, spawnSync } from 'node:child_process';
  • shell (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-tray-workflow.mjs :5 import { spawn, spawnSync } from 'node:child_process';
  • shell (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-tray.mjs :6 import { spawn, execFileSync } from 'node:child_process';
  • shell (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-ui-background.ts :5 import { spawn } from 'node:child_process';
  • shell (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-ui-query.ts :5 import { spawn } from 'node:child_process';
  • shell linnnn89-WinCode-4f4f4f7/src/Adapters/FlaUiAdapter.ts :1 import { spawn, ChildProcess } from 'node:child_process';
  • shell linnnn89-WinCode-4f4f4f7/src/Adapters/RepomixAdapter.ts :2 import { spawn, ChildProcess } from 'node:child_process';
  • shell linnnn89-WinCode-4f4f4f7/src/Adapters/RoslynHostClient.ts :1 import { spawn, type ChildProcessWithoutNullStreams } from 'node:child_process';
  • shell linnnn89-WinCode-4f4f4f7/src/CompositeTools/ProjectDiagnostics.ts :1 import { execFile } from 'node:child_process';
  • shell linnnn89-WinCode-4f4f4f7/src/Core/GitClient.ts :3 import { execFile } from 'node:child_process';
  • shell linnnn89-WinCode-4f4f4f7/src/Core/ResourceManager.ts :1 import { ChildProcess, execFile } from 'node:child_process';
  • shell linnnn89-WinCode-4f4f4f7/src/Gateway/TrayClient.ts :2 import { execFile } from 'node:child_process';
  • shell (weak) linnnn89-WinCode-4f4f4f7/tests/architecture-safety.test.ts :5 import { execFileSync } from 'node:child_process';
  • shell (weak) linnnn89-WinCode-4f4f4f7/tests/cache-budgets.test.ts :6 import { exec } from 'node:child_process';
  • shell (weak) linnnn89-WinCode-4f4f4f7/tests/evidence-confidence.test.ts :6 import { exec } from 'node:child_process';
  • shell (weak) linnnn89-WinCode-4f4f4f7/tests/fixed-workspace.test.ts :6 import { spawnSync } from 'node:child_process';
  • shell (weak) linnnn89-WinCode-4f4f4f7/tests/flaui-adapter.test.ts :3 import { spawn, ChildProcess } from 'node:child_process';
  • shell (weak) linnnn89-WinCode-4f4f4f7/tests/gateway-exit.test.ts :6 import { spawn, type ChildProcessWithoutNullStreams } from 'node:child_process';
  • shell (weak) linnnn89-WinCode-4f4f4f7/tests/lifecycle-cancellation.test.ts :6 import cp from 'node:child_process';
  • shell (weak) linnnn89-WinCode-4f4f4f7/tests/owner-process-guard.test.ts :4 import { spawn, execFile, type ChildProcessWithoutNullStreams } from 'node:child_process';
  • shell (weak) linnnn89-WinCode-4f4f4f7/tests/process-failures.test.ts :7 import { execFile } from 'node:child_process';
  • shell (weak) linnnn89-WinCode-4f4f4f7/tests/repomix-disabled.test.ts :3 import childProcess from 'node:child_process';
  • shell (weak) linnnn89-WinCode-4f4f4f7/tests/request-concurrency.test.ts :6 import { exec } from 'node:child_process';
  • shell (weak) linnnn89-WinCode-4f4f4f7/tests/resource-cleanup.test.ts :6 import { exec } from 'node:child_process';
  • shell (weak) linnnn89-WinCode-4f4f4f7/tests/resource-identity.test.ts :3 import cp from 'node:child_process';
  • shell (weak) linnnn89-WinCode-4f4f4f7/tests/runtime-cache-regressions.test.ts :6 import { execFileSync, fork, type ChildProcess } from 'node:child_process';

8 more not shown — this panel samples each group; the count above is the real total.

network 4

  • net (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-multi-agent.mjs :5 import net from 'node:net';
  • net (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-tray.mjs :7 import net from 'node:net';
  • net linnnn89-WinCode-4f4f4f7/src/Gateway/TrayClient.ts :1 import net from 'node:net';
  • net (weak) linnnn89-WinCode-4f4f4f7/tests/tray-client.test.ts :3 import net from 'node:net';

declared dependencies 9

  • @modelcontextprotocol/client@2.0.0
  • @modelcontextprotocol/server@2.0.0
  • @types/node@^22.13.9
  • tsx@^4.19.3
  • typescript@^5.8.2
  • Microsoft.CodeAnalysis.CSharp.Workspaces@5.9.0
  • Microsoft.CodeAnalysis.Workspaces.MSBuild@5.9.0
  • Microsoft.Build.Locator@1.11.2
  • Microsoft.Build.Framework@17.11.48

obfuscation 1

  • dynamic require()/import() linnnn89-WinCode-4f4f4f7/scripts/measure-runtime-baseline.mjs :31 const { ToolRouter } = await import(${moduleUrl('Core/ToolRouter')});