chore: make main knip-clean
pnpm knip on main (56bb75804) reported 39 unused exports. This makes it clean again, with no behaviour change: every symbol below is still used in its own file, except the three deleted types, which nothing used at all.
Each finding names the PR that last changed that symbol's uses, which is where it went unused, or, for the oldest two, where it was last touched.
Export dropped (used only in its own file)
| Symbol | File | From |
|---|---|---|
RUNTIME_CHOICE_REFUSAL | packages/features/src/agent-runtime-models.ts | #4317 |
browserLiveTargetSchema | packages/features/src/browser-live-acts.ts | #4323 |
codingAgentMessageAnswerViewSchema | packages/features/src/coding-agent-view.ts | #4429 |
codingAgentTranscriptPageSchema | packages/features/src/coding-agent-view.ts | #4404 |
codingAgentInboxAnswerViewSchema | packages/features/src/coding-agent-view.ts | #3306 |
inboxAskSchema | packages/features/src/inbox-wire.ts | #3232 |
ChatGptSave, ChatGptSignInRequest | packages/credentials/src/chatgpt-sign-in.ts | #4243 |
ATTACH_FILES | packages/panel/src/tasks/attach-files-button.tsx | #4291 |
CLOUD_BROWSER_RECONNECT, CLOUD_BROWSER_VIEWPORT_EVERY, CloudBrowserPhase | packages/panel/src/tasks/cloud-browser-live.ts | #4323 |
CLAUDE_PLAN_REFUSAL | packages/panel/src/tasks/coding-agent-model.ts | #4385 |
TURN_READ | packages/panel/src/tasks/coding-agent-model.ts | #4340 |
attachedAnswers | packages/panel/src/tasks/inbox-model.ts | #4301 |
CLAUDE_PLAN_LABEL_WORDS | packages/panel/src/tasks/plan-label-model.ts | #4385 |
windowTranscriptOlder | packages/panel/src/tasks/use-agent-transcript.ts | #4404 |
PanelSpanName, PanelSpanAttribute | packages/panel/src/panel-spans.ts | #4389 |
MessageBringer | packages/panel/src/tasks/agent-tab.tsx | #4465 |
PLAN_AGENT_WRITER_POLICY | packages/service/src/agents/agent-reach.ts | #4331 |
nativeCoderInstructions | packages/service/src/agents/coder-host/native-agent-sessions.ts | #4313 |
ISSUING, UNCONFIGURED, LINEAR_TOOLS | packages/service/src/testing/integration-mcp-fake.ts | #4294 |
ConnectionRefusal | packages/service/src/integrations/connection-door.ts | #4294 |
RunningPage | packages/service/src/agents/vercel-sandbox-api.ts | #4292 |
HeardCall | packages/service/src/testing/native-relay-fake.ts | #4331 |
PendingStatus | packages/ui/src/tasks-model.ts | #4420 |
HeardTail | packages/voice/src/transcript-model.ts | #4300 |
HELD_BYTES | packages/host/src/transcript-held.ts | #4486 |
TRANSCRIPT_LOADING_LABEL, ComposerSkeleton | packages/panel/src/tasks/agent-tab-skeleton.tsx | #4497 |
CLOUD_BROWSER_CURSOR_IDLE | packages/panel/src/tasks/cloud-browser-cursor.tsx | #4399 |
Deleted (unused anywhere)
| Symbol | File | From |
|---|---|---|
BrowserLivePortInbound | packages/features/src/browser-live-acts.ts | #4323 |
ProviderKeyForAgentsRequest | packages/features/src/provider-key-wire.ts | #4334 |
Re-export dropped from a package index (consumers import the module directly)
| Symbol | Index | From |
|---|---|---|
HostTerminalPort, TerminalActsDependencies | packages/host/src/act-port/index.ts | #4360 |
TypedRowWrite | packages/voice/src/live-session/index.ts | #4307 |
The other files sharing a name (UNCONFIGURED in two tests, HeardCall and TypedRowWrite in @luke/voice and @luke/database) declare their own symbols and never import these. None is reached through a dynamic import or a package entry, so knip.json doesn't change.
PayerOption (packages/panel/src/tasks/payer-model.ts, from #4334) was on the list too, but main has since deleted that file. Merging main in settled it, and pnpm knip stayed clean after the merge.
A second merge of main settled three more: #4399 now imports AgentBrowserTabCursor and TaskBrowserTabsLiveAnswer, so those keep their exports, and it removed CLOUD_BROWSER_TABS_EVERY itself. The four symbols from #4486, #4497 and #4399 were new findings after that merge.
Checks: pnpm knip passes on this branch. Running pnpm check:affected here, every @luke/features test passed (389 of 389), but vitest timed out starting its fork workers because the sandbox was short on resources, so CI is the gate for the rest. After the second merge, tsc --noEmit passes for features, panel, host, service, voice, credentials and ui.
Made with Luke