repowiserepowise
Sign in
andrewyng/openworker
OverviewDocsArchitectureKnowledge GraphFilesCode HealthSecurityRefactoring

People & History

CommitsContributorsDecisions
Chat
Stats
repowiserepowise
ExplorePricingDocs
Sign in
repowiseandrewyng/openworker
OP
OP

andrewyng / openworker

pythontypescriptmain5870585145.4K linessynced 1w ago

Code health

6.3out of 10Fair

This codebase scores 6.3 out of 10 for code health, which we rate fair. It also scores maintainability 6.6 and static performance 9.6 out of 10. The three are scored separately and never blended into one number. Risk is concentrated, as it usually is: 145 of 768 files are git hotspots, and they average 4.7 — which is where the fixes pay off most.

Full health report →
Documentation999pages29 with model-written prose, 970 built from the indexScore validation9/203.5× baselineTop-ranked files that did go on to need a bug fixDead code24exportsUnused exports that nothing in the graph reaches

Do next

4 things worth doing in the week to Sep 24, the last indexed commit, 4 of them now.

Now

  • Critical

    Clean up what this week's commits left: 32 serious findings in 13 files

    14 commits in the last 7 days added or worsened them, and they are still open. Start with coworker/engine.py, which has 3 critical.

    serious findings
    32
    critical
    11
    files
    13
    Large effort
  • High

    Start breaking up ProviderForm (CCN 65, 232 lines): first lift lines 452-462

    surfaces/gui/src/providers/ProviderSetup.tsx:452

    ProviderForm is long, branchy and widely depended on, and part of it is duplicated, so splitting it also removes a copy; 4 files import it, changed 14 times in 90 days.

    gain
    +0.9 health on this file(inferred)
    health recoverable
    +0.9(inferred)
    size
    CCN 65, 232 lines
    steps
    1 (1 mechanical)
    Small effort
  • High

    Start breaking up ConnectorGlance (CCN 117, 330 lines): first lift lines 159-187

    surfaces/gui/src/components/connectors/ConnectorGlance.tsx:159

    ConnectorGlance is long, and part of it is duplicated, so splitting it also removes a copy; 1 file imports it, changed 1 time in 90 days.

    gain
    +0.8 health on this file(inferred)
    health recoverable
    +0.8(inferred)
    size
    CCN 117, 330 lines, nests 3 deep
    steps
    1 (1 mechanical)
    Small effort
  • High

    Extract lines 396-411 of stream into a helper (+3 more steps)

    coworker/providers/openai_provider.py:396

    stream is complex and keeps changing, and part of it is duplicated, so splitting it also removes a copy; 10 files import it, changed 11 times in 90 days.

    gain
    +1.0 health on this file(inferred)
    health recoverable
    +1.0(inferred)
    size
    CCN 27, 90 lines, nests 5 deep
    steps
    4 (4 mechanical)
    Small effort

Improve what Repowise can see

  • Add a test coverage report

    Without one, Repowise cannot tell tested code from untested code, so every test-related action says “unknown”.

    line coverage
    Unknown, no report
    Small effort
Lines of code
145.4K
Files
768
Symbols
8,036
Modules
6
Languages
5

Recent activity

All commits →

Commits

  • de8ce3ddDocs: OpenShell sandboxes, a README tier and bullet, and the config example1w ago
  • 37a09360Sandbox lifetime: a dropped engine closes its sandbox; shutdown closes all; orphans reaped at start2w ago
  • 5ce2a18aPackaged app: the sidecar runs as the tool runner, and ships the runner sources2w ago
  • 7792a417Credential grants: the ssh wrapper lives in the copied home, so OpenShell carries it in2w ago
  • 48fecdf4Settings: a Sandbox page for the provider, the network allow list and shared credentials2w ago
  • f1d3711dSandbox: a failed creation removes its folder, so no copied credential is left behind2w ago

Decisions

  • Authorize attachment reads via actor-visible board-space itemproposed · 1w ago
  • Keep dictation unavailable in browser to avoid sending mic audioproposed · 1w ago
  • Prefer universal folder picker with desktop-native fallbackproposed · 1w ago
  • Never apply macOS overlay-titlebar layout on Windowsproposed · 1w ago
  • OS identifiers are injected by the shell with browser fallbackproposed · 1w ago
  • Keep Tauri bridge inert in browser buildsproposed · 1w ago
▸

Everything we found

3,444 open

Every detector's open count by area, each with its worst example. An inventory, not a to-do list: the actions above are the part worth doing.

  • worst item is critical severity. Code health2,360Untested hotspot · surfaces/gui/src/App.tsx21 findings · 10.0 deducted→
  • worst item is medium severity. Refactoring289load_settings+1.5 health, M effort · coworker/connectors/config.py→
  • worst item is medium severity. Decisions161coworker/server/manager.py16 awaiting review · 145 hotspots ungoverned→
  • worst item is medium severity. Ownership634surfaces/gui/e2e/fixtures.ts82% single-owner concentration, 57 commits in 90d→

Composition

Open the graph →
python 57%typescript 41%
rust 1%shell 0%javascript 0%

Explore this codebase

  • Docs999 pages across 6 modules→
  • ChatAsk this codebase a question and get an answer with its sources.→
  • Files768 files with per-file docs, health and history→
  • ArchitectureDependency graph, layers, and 17 entry points→
  • Code healthPer-file scores, 2,613 open findings, coverage and refactoring targets→
  • Knowledge graphEntities, communities, and the paths between them→
  • Change couplingFiles that keep changing together, mined from commit history→
  • CommitsChange-risk ranked history with agent provenance→
  • ContributorsBus factor, per-file maintainers, and the human/agent split→
  • StatsSize class, origin, lifetime churn, rhythm and records→
  • CostsWhat indexing this snapshot cost, by model and by run.→