Home

mweinbach / agent-coworker

publicmweinbach/agent-coworker
Overview Code History Branches Pull requestsIssuesInsights
main
HomeOverview Code PRsIssues

refactor: dead-code sweep (−7.4k lines, 44 files, 20 unused deps) (#135)

4 months ago

d1715b2
Authored
Max Weinbach5/28/2026, 7:46:23 PM
* refactor: remove dead code across harness, server, providers, and desktop

Swept the codebase with knip and removed confirmed-dead code in three
iterative passes, verifying each candidate with repo-wide ripgrep to catch
dynamic/string references that static analysis misses.

- Delete 44 unused files (35 unused shadcn UI components + 9 dead modules,
  incl. src/session/index barrel, src/runtime/openaiEventStream,
  src/plugins/skillBridge, desktop designTokens/react-ref/use-mobile/etc.)
- Remove ~150 unreferenced symbols and ~190 dead barrel re-exports
- Drop the `export` keyword from ~435 symbols used only within their own file
- Clean the stale openaiEventStream.ts reference from the package files manifest
  (package.json, biome.json, package-manifest test)

~7,300 lines removed. Intentionally kept 4 exports reached only via dynamic
import()/module load/test dynamic import.

Verified green: bun run typecheck, bun run docs:check, and
bun test --max-concurrency 1 (4147 pass, 0 fail, 4 pre-existing skips).

Co-authored-by: Cursor <cursoragent@cursor.com>

* chore: add knip dead-code guardrail

Add knip + knip.json scoped to dead-code categories (unused files, exports,
types, enum members) so `bun run knip` guards against dead-code regressions.
Dependency/unlisted/binary/duplicate checks are disabled to keep the gate
focused and false-positive-free (build-tooling deps, mobile expo imports, etc.).

Reports clean. The 4 exports reachable only via dynamic references are
annotated so static analysis can see them:
- createLegacySessionSnapshot, isTrustedSender: `@public` JSDoc tags
- ManagedSofficeRuntimeDiagnostic: converted the consumer's inline import()
  type to a static `import type` (also more readable)

Run with: bun run knip

Co-authored-by: Cursor <cursoragent@cursor.com>

* chore: remove unused desktop dependencies orphaned by dead-code sweep

Deleting the 35 unused shadcn UI components left their underlying libraries
with zero imports anywhere in the codebase. Removed 20 now-orphaned packages
from apps/desktop (verified each has no static/dynamic import via ripgrep;
confirmed surviving radix components use the `radix-ui` umbrella instead):

  @base-ui/react, @hookform/resolvers, @radix-ui/react-{checkbox,collapsible,
  dialog,select,slot,switch,tooltip}, date-fns, embla-carousel-react, input-otp,
  next-themes, react-day-picker, react-hook-form, react-resizable-panels,
  recharts, sonner, vaul, ai-elements

Kept build/packaging tooling that knip flags but is used outside TS imports:
@electron/notarize (electron-builder afterSign hook), tailwindcss (v4 CSS),
electron-rebuild (native packaging).

Verified: bun run typecheck, bun test (4147 pass, 0 fail).
Co-authored-by: Cursor <cursoragent@cursor.com>

* test: stabilize bash approval smoke

Apply Biome formatting and import cleanup from the dead-code sweep so the lint job is clean.

Stub the shell runner in the approveCommand unit test so the Windows smoke lane verifies approval ordering without depending on real shell process startup.

---------

Co-authored-by: Cursor <cursoragent@cursor.com>

Parent7d8302e

259 files changed
  • apps/desktop/electron/ipc/trustedSender.ts+2−1
  • apps/desktop/electron/ipc/types.ts+2−2
  • apps/desktop/electron/services/ipcSecurity.ts+2−5
  • apps/desktop/electron/services/menu.ts+1−1
  • apps/desktop/electron/services/mobileRelayTypes.ts+5−11
  • apps/desktop/electron/services/sidecar.ts+5−5
  • apps/desktop/electron/services/windowAppearancePaint.ts+2−2
apps/desktop/electron/services/windowChrome/platformChrome.ts
+1
−14
  • apps/desktop/package.json+0−20
  • apps/desktop/src/app/localStateCache.ts+0−11
  • apps/desktop/src/app/openaiCompatibleProviderOptions.ts+5−55
  • apps/desktop/src/app/persistedProviderState.ts+1−1
  • apps/desktop/src/app/providerUiState.ts+1−1
  • apps/desktop/src/app/store.actions/bootstrap.ts+1−1
  • apps/desktop/src/app/store.feedMapping.ts+1−1
  • apps/desktop/src/app/store.helpers.ts+2−22
  • apps/desktop/src/app/store.helpers/controlSocket.ts+1−1
  • apps/desktop/src/app/store.helpers/extensionEvents.ts+4−4
  • apps/desktop/src/app/store.helpers/jsonRpcSocket.ts+2−2
  • apps/desktop/src/app/store.helpers/runtimeState.ts+3−11
  • apps/desktop/src/app/store.helpers/threadEventReducer.ts+0−1
  • apps/desktop/src/app/store.helpers/threadEventReducer/handlers/shared.ts+1−1
  • apps/desktop/src/app/store.helpers/threadEventReducerContext.ts+0−10
  • apps/desktop/src/app/types.ts+17−43
  • apps/desktop/src/components/ai-elements/message.tsx+2−2
  • apps/desktop/src/components/ai-elements/prompt-input.tsx+3−3
  • apps/desktop/src/components/ai-elements/reasoning.tsx+0−119
  • apps/desktop/src/components/ai-elements/tool.tsx+0−3
  • apps/desktop/src/components/ui/accordion.tsx+0−62
  • apps/desktop/src/components/ui/alert-dialog.tsx+0−178
  • apps/desktop/src/components/ui/alert.tsx+0−60
  • apps/desktop/src/components/ui/aspect-ratio.tsx+0−9
  • apps/desktop/src/components/ui/avatar.tsx+0−94
  • apps/desktop/src/components/ui/badge.tsx+1−1
  • apps/desktop/src/components/ui/breadcrumb.tsx+0−102
  • apps/desktop/src/components/ui/button-group.tsx+0−77
  • apps/desktop/src/components/ui/calendar.tsx+0−177
  • apps/desktop/src/components/ui/card.tsx+1−21
  • apps/desktop/src/components/ui/carousel.tsx+0−229
  • apps/desktop/src/components/ui/chart.tsx+0−338
  • apps/desktop/src/components/ui/combobox.tsx+0−281
  • apps/desktop/src/components/ui/command.tsx+0−50
  • apps/desktop/src/components/ui/context-menu.tsx+0−224
  • apps/desktop/src/components/ui/direction.tsx+0−20
  • apps/desktop/src/components/ui/drawer.tsx+0−122
  • apps/desktop/src/components/ui/dropdown-menu.tsx+1−168
  • apps/desktop/src/components/ui/empty.tsx+0−94
  • apps/desktop/src/components/ui/field.tsx+0−235
  • apps/desktop/src/components/ui/form.tsx+0−149
  • apps/desktop/src/components/ui/hover-card.tsx+0−36
  • apps/desktop/src/components/ui/input-group.tsx+1−117
  • apps/desktop/src/components/ui/input-otp.tsx+0−70
  • apps/desktop/src/components/ui/item.tsx+0−171
  • apps/desktop/src/components/ui/kbd.tsx+0−28
  • apps/desktop/src/components/ui/menubar.tsx+0−252
  • apps/desktop/src/components/ui/native-select.tsx+1−11
  • apps/desktop/src/components/ui/navigation-menu.tsx+0−161
  • apps/desktop/src/components/ui/pagination.tsx+0−104
  • apps/desktop/src/components/ui/popover.tsx+1−37
  • apps/desktop/src/components/ui/radio-group.tsx+0−43
  • apps/desktop/src/components/ui/resizable.tsx+0−47
  • apps/desktop/src/components/ui/scroll-area.tsx+1−1
  • apps/desktop/src/components/ui/select.tsx+1−25
  • apps/desktop/src/components/ui/sheet.tsx+0−134
  • apps/desktop/src/components/ui/sidebar.tsx+0−691
  • apps/desktop/src/components/ui/skeleton.tsx+0−13
  • apps/desktop/src/components/ui/slider.tsx+0−56
  • apps/desktop/src/components/ui/sonner.tsx+0−40
  • apps/desktop/src/components/ui/table.tsx+0−92
  • apps/desktop/src/components/ui/tabs.tsx+1−48
  • apps/desktop/src/components/ui/toggle-group.tsx+0−81
  • apps/desktop/src/components/ui/toggle.tsx+0−46
  • apps/desktop/src/hooks/use-mobile.ts+0−19
  • apps/desktop/src/lib/agentSocket.ts+0−1
  • apps/desktop/src/lib/canvasMarkdown.ts+2−2
  • apps/desktop/src/lib/designTokens.ts+0−24
  • apps/desktop/src/lib/desktopApi.ts+5−14
  • apps/desktop/src/lib/desktopCommands.ts+0−37
  • apps/desktop/src/lib/desktopPlatform.ts+2−2
  • apps/desktop/src/lib/desktopSchemas.ts+2−2
  • apps/desktop/src/lib/nativeDisabled.ts+0−15
  • apps/desktop/src/lib/providerOrdering.ts+1−1
  • apps/desktop/src/lib/quickChatShortcut.ts+0−4
  • apps/desktop/src/lib/react-ref.ts+0−26
  • apps/desktop/src/lib/time.ts+1−18
  • apps/desktop/src/lib/version.ts+0−3
  • apps/desktop/src/lib/webWorkspaceState.ts+0−12
  • apps/desktop/src/ui/ChatView.tsx+0−2
  • apps/desktop/src/ui/chat/a2ui/A2uiRenderer.tsx+0−8
  • apps/desktop/src/ui/chat/activityGroups.ts+3−3
  • apps/desktop/src/ui/chat/chatLogic.ts+1−1
  • apps/desktop/src/ui/layout/useWindowDragHandle.ts+0−211
  • apps/desktop/src/ui/plugins/InstallPluginDialog.tsx+1−1
  • apps/desktop/src/ui/settings/SettingsChromeContext.tsx+0−8
  • apps/desktop/src/ui/settings/SettingsPrimitives.tsx+0−39
  • apps/desktop/src/ui/settings/pages/MemoryPage.tsx+1−1
  • apps/desktop/src/ui/settings/pages/RemoteAccessPage.tsx+1−1
  • apps/desktop/src/ui/settings/pages/mcpServerDraft.ts+1−1
  • apps/desktop/src/ui/settings/pages/mcpServerEditorState.ts+1−1
  • apps/desktop/src/ui/settings/pages/providersPageUtils.ts+6−6
  • apps/desktop/src/ui/sidebar/SidebarSectionFrame.tsx+1−1
  • apps/desktop/src/ui/skills/InstallSkillDialog.tsx+1−1
  • apps/desktop/src/ui/skills/utils.tsx+1−1
  • biome.json+0−2
  • bun.lock+111−108
  • knip.json+43−0
  • package.json+3−2
  • src/auth/oauth-server.ts+1−132
  • src/cli/repl/serverEventHandler.ts+1−1
  • src/cli/repl/streamFormatting.ts+0−33
  • src/client/jsonRpcSocket.ts+1−1
  • src/client/modelStream.ts+1−6
  • src/client/modelStreamReplay.ts+0−4
  • src/codexPrimaryRuntime.ts+0−3
  • src/codexPrimaryRuntime/index.ts+0−5
  • src/config.ts+1−76
  • src/experimental/a2ui/SurfaceManager.ts+0−2
  • src/experimental/a2ui/component.ts+1−1
  • src/experimental/a2ui/flags.ts+1−1
  • src/experimental/a2ui/functions.ts+3−9
  • src/experimental/a2ui/index.ts+5−66
  • src/experimental/a2ui/protocol.ts+3−7
  • src/experimental/a2ui/schema.ts+1−14
  • src/experimental/a2ui/sessionAdapter.ts+1−1
  • src/experimental/a2ui/surface.ts+0−4
  • src/experimental/openaiNativeConnectors/flags.ts+1−2
  • src/extensions/github.ts+3−23
  • src/extensions/source.ts+6−8
  • src/managedSofficeRuntime.ts+1−6
  • src/managedSofficeRuntime/index.ts+1−6
  • src/managedSofficeRuntime/instructions.ts+1−1
  • src/managedSofficeRuntime/paths.ts+2−2
  • src/managedSofficeRuntime/shims.ts+2−2
  • src/mcp/authStore.ts+0−4
  • src/mcp/configRegistry.ts+1−6
  • src/mcp/index.ts+1−4
  • src/mcp/oauthProvider.ts+1−1
  • src/migrateAgentConfig.ts+1−1
  • src/models/childModelRouting.ts+2−2
  • src/models/metadataTypes.ts+1−1
  • src/models/registry.ts+3−5
  • src/observability/modelCallSpan.ts+2−2
  • src/observability/runtime.ts+1−6
  • src/plugins/discovery.ts+1−1
  • src/plugins/index.ts+4−49
  • src/plugins/manifest.ts+3−3
  • src/plugins/marketplace.ts+1−1
  • src/plugins/mcp.ts+1−54
  • src/plugins/operations.ts+0−2
  • src/plugins/remoteMarketplace.ts+6−6
  • src/plugins/skillBridge.ts+0−84
  • src/plugins/sourceResolver.ts+3−4
  • src/providers/anthropic.ts+0−35
  • src/providers/antigravitySupport.ts+1−1
  • src/providers/authRegistry.ts+1−9
  • src/providers/bedrockShared.ts+4−32
  • src/providers/codex-cli.ts+0−6
  • src/providers/codexAppServerAuth.ts+1−1
  • src/providers/codexAppServerClient.ts+4−36
  • src/providers/codexAppServerResolver.ts+1−1
  • src/providers/fireworksShared.ts+0−10
  • src/providers/google.ts+0−21
  • src/providers/index.ts+1−25
  • src/providers/lmstudio/catalog.ts+1−1
  • src/providers/modelAdapter.ts+0−14
  • src/providers/openai.ts+0−26
  • src/providers/opencodeShared.ts+8−28
  • src/runtime/codexAppServer/config.ts+1−1
  • src/runtime/codexAppServer/serverRequests.ts+1−1
  • src/runtime/codexAppServer/turnInput.ts+3−3
  • src/runtime/codexAppServer/types.ts+2−2
  • src/runtime/googleInteractionsModel.ts+1−6
  • src/runtime/googleNative/index.ts+1−8
  • src/runtime/googleNative/messageToInput.ts+0−1
  • src/runtime/googleNativeInteractions.ts+0−5
  • src/runtime/openaiEventStream.ts+0−75
  • src/runtime/openaiNativeResponses.ts+3−3
  • src/runtime/openaiResponsesProjector.ts+3−5
  • src/runtime/openaiResponsesShared.ts+1−1
  • src/runtime/pi/index.ts+0−2
  • src/runtime/piMessageBridge.ts+1−1
  • src/runtime/piRuntime.ts+0−2
  • src/runtime/piRuntimeOptions.ts+1−32
  • src/server/agents/commandPolicy.ts+0−5
  • src/server/agents/reportParser.ts+1−1
  • src/server/agents/roles.ts+1−1
  • src/server/agents/types.ts+0−3
  • src/server/citationMetadata.ts+3−3
  • src/server/connectors/openaiNativeConnectors.ts+0−20
  • src/server/jsonrpc/projectorShared.ts+0−6
  • src/server/jsonrpc/routes/outcomes.ts+2−42
  • src/server/jsonrpc/routes/shared.ts+4−4
  • src/server/jsonrpc/routes/types.ts+4−5
  • src/server/jsonrpc/schema.agents.ts+5−5
  • src/server/jsonrpc/schema.core.ts+2−2
  • src/server/jsonrpc/schema.misc.ts+5−5
  • src/server/jsonrpc/schema.session.ts+11−11
  • src/server/jsonrpc/schema.shared.ts+0−2
  • src/server/jsonrpc/schema.ts+1−15
  • src/server/jsonrpc/schema.workspace.ts+2−2
  • src/server/modelStream.ts+0−6
  • src/server/presentationPreview.ts+1−1
  • src/server/projection/conversationProjection.ts+2−11
  • src/server/projection/conversationProjectionAssistant.ts+1−1
  • src/server/projection/conversationProjectionState.ts+2−2
  • src/server/projection/conversationProjectionTypes.ts+1−1
  • src/server/protocol.ts+3−9
  • src/server/research/types.ts+4−11
  • src/server/runtime/ConfigPatchStore.ts+3−3
  • src/server/runtime/SocketSendQueue.ts+2−2
  • src/server/session/AgentSessionSystemPrompt.ts+2−2
  • src/server/session/SessionContext.ts+2−2
  • src/server/session/SessionSnapshotProjector.ts+1−0
  • src/server/session/turnExecution/continuationPolicy.ts+2−4
  • src/server/session/turnExecution/partialTurnError.ts+0−5
  • src/server/session/turnExecution/runTurnInvocation.ts+2−2
  • src/server/session/turnExecution/steerCoordinator.ts+1−1
  • src/server/session/turnExecution/turnUsageAggregator.ts+1−1
  • src/server/sessionBackup/fileSystem.ts+1−1
  • src/server/sessionStore.ts+7−9
  • src/server/skillMutationRefresh.ts+1−1
  • src/server/startServer/types.ts+3−8
  • src/server/title/phiSilicaTitle.ts+0−6
  • src/server/title/shared.ts+1−1
  • src/server/transport/h3/pairing.ts+2−2
  • src/server/transport/h3/server.ts+1−1
  • src/server/wsProtocol/negotiation.ts+4−4
  • src/session/index.ts+0−28
  • src/session/sessionUsageSchema.ts+4−4
  • src/shared/agents.ts+8−8
  • src/shared/attachments.ts+2−2
  • src/shared/featureFlags.ts+2−6
  • src/shared/googleThinking.ts+2−9
  • src/shared/jsonrpcControlSchemas.ts+98−123
  • src/shared/openaiCompatibleOptions.ts+10−12
  • src/shared/openaiContinuation.ts+1−1
  • src/shared/openaiNativeConnectors.ts+2−2
  • src/shared/projectedItems.ts+2−2
  • src/shared/providerAuthMethods.ts+3−3
  • src/shared/providerContinuation.ts+3−9
  • src/shared/sessionSnapshot.ts+1−1
  • src/shared/spreadsheetPreview.ts+2−2
  • src/shared/toolOutputOverflow.ts+0−4
  • src/skills/manifest.ts+1−1
  • src/skills/operations.ts+0−16
  • src/store/connections.ts+1−1
  • src/tools/ask.ts+1−1
  • src/tools/codexBoundary.ts+1−1
  • src/tools/context.ts+0−2
  • src/tools/index.ts+2−6
  • src/tools/todoWrite.ts+1−1
  • src/turnSystemPrompt.ts+1−1
  • src/types.ts+12−20
  • src/utils/approval.ts+2−2
  • src/utils/atomicFile.ts+0−4
  • src/utils/oneOffChats.ts+2−2
  • src/utils/paths.ts+1−1
  • test/package-manifest.test.ts+0−1
  • test/tools/tools.bash.test.ts+5−0