Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

ui-sdk: 71 internal entry names have no consumer outside the package

Open Beginner friendly
#2,534 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
76/100
Issue type
Refactor
Clarity
Clearly specified
Activity status
Active
Tech stack
bun, typescript

Research direction

Start with packages/ui-sdk/src/internal.ts and packages/ui-sdk/src/internal-client.ts, then check each listed name against the repository search command in the issue. Remove only the re-exports with no importer outside ui-sdk and regenerate api-report/ui-sdk.txt; keep symbols that ui-sdk code or tests use in their source modules. Run the listed typecheck, package tests, and API surface test; done when all remaining internal exports have external importers and the report omits the 71 names.

Written by the indexing model from the issue text.

Description

agent-ready area: ui-sdk priority: p3 type: chore
Context

@schlessera/brain-ui-sdk/internal (packages/ui-sdk/src/internal.ts, 96 lines, 227 names) exists only so first-party packages in the same product group can share code (docs/decisions/public-export-boundary.md; the 2026-10-09 ruling on #1345). At dcf5341aa, 68 of those 227 names have no importer outside ui-sdk. ui-sdk's own tests import these symbols from their source modules (for example packages/ui-sdk/tests/outward-actions.test.ts:2 imports classifyOutwardCall and outwardTarget from ../src/server/outward-actions), so the re-exports serve nobody. They still add rows to api-report/ui-sdk.txt and to the dist-types check, and they make ./internal look like a wider dependency surface than it is.

Three more names in ./internal/client (packages/ui-sdk/src/internal-client.ts) have no importer outside ui-sdk either: isShareTargetRequest, ShareTargetError, LinkEdit.

How the list was produced: take every name listed under export "./internal" in api-report/ui-sdk.txt, then run, for each name,

git grep -lw -- "$NAME" -- packages tests scripts website template evals experiments \
  ':!packages/ui-sdk/**' ':!api-report/**' ':!**/*.md'

and keep the names with no hit. A whole-word match anywhere, including a relative import from another package's tests, counts as a use, so the list errs towards keeping names.

The 68 names

ARCHIVING_UPDATE_REASON, brainGitSync, BUILTIN_OUTWARD_MCP_DESCRIPTORS, classifyOutwardCall, createWorkerStartupView, DEFAULT_MAINTENANCE_TEMP_BUDGET_BYTES, DEFAULT_MAINTENANCE_TEMP_BYTES, DEFAULT_OUTPUT_STAGING_BYTES, DEFAULT_WORKER_STATE_BYTES, describeLimitHits, EgressProxyOptions, InferenceRelayOptions, linkedTurnTempPaths, MaintenanceEnvelope, MaintenanceResult, MAINTENANCE_TEMP_BUDGET_ENV, MAINTENANCE_TEMP_BYTES_ENV, MaintenanceWorker, MAX_INFERENCE_REQUEST_BYTES, NativeBrainDeltaCandidate, NativeBrainDeltaError, NativeBrainRootIdentity, NativeFileVersion, OUTPUT_STAGING_BUDGET_ENV, OUTPUT_STAGING_BYTES_ENV, OutwardClassification, OutwardPlan, outwardTarget, PrepareWorkerSandboxOptions, probeMaintenanceWorker, PROMOTED_SCRATCH_DIR, PROMOTION_FILE_MAX_BYTES, PROMOTION_TURN_MAX_BYTES, PROMOTION_TURN_MAX_FILES, purgeTurnTemp, ReplayReceipt, resolveOutputStagingLimits, RestrictedEnvelope, SessionPromptFacts, STALE_NATIVE_WRITE, TURN_TEMP_BUDGET_ENV, TURN_TEMP_BYTES_ENV, turnTempFullMessage, turnTempPath, TurnTempPromoterOptions, TurnTempPurgeResult, TurnTempSpace, turnTempUsage, TURN_TEMP_WARN_RATIO, validWorkerStateBytes, VisibleOutwardAction, WorkerArea, WorkerAreaName, WORKER_AREAS, WorkerCommandRule, WORKER_EGRESS_SOCKET, WorkerHome, WorkerHostProbeOptions, WORKER_INFERENCE_DIR, WorkerLimitHit, WORKER_LIMITS_ENV, WorkerMount, WorkerOutputStorage, WorkerOutwardRule, WorkerProfile, WORKER_STATE_BUDGET_ENV, WorkerStateConfigError, WORKER_STATE_PAGE

This is narrower than #1401, which deletes whole ./internal entry points nobody imports. ui-sdk's ./internal entry stays: ui-server and both backends use the other 159 names.

Scope
  • Remove the 68 names from packages/ui-sdk/src/internal.ts, and the three from internal-client.ts. Each symbol stays exported from its source module if ui-sdk code or tests still import it there.
  • Regenerate api-report/ui-sdk.txt.
Out of scope
  • Deleting the underlying functions, constants or types; many are used inside ui-sdk.
  • Names moved by #1372 (loadedSdkIdentity, VERSION_PROBE_TIMEOUT_MS).
  • Public entries (., ./server, ./client, ./protocol).
  • Other packages' ./internal entries (#1401).
Acceptance criteria
  • Running the command above over every name still exported from ./internal and ./internal/client finds at least one importer outside ui-sdk for each (script output attached to the PR).
  • api-report/ui-sdk.txt no longer lists the 71 removed names under ./internal or ./internal/client.
  • bun run typecheck, bun run test and tests/api-surface.test.ts pass.
Verification
bun run typecheck
bun run test packages/ui-sdk packages/ui-server packages/ui-backend-claude packages/ui-backend-pi
bun run test tests/api-surface.test.ts
Contract impact

None. Internal entries carry no compatibility promise (docs/decisions/public-export-boundary.md).

Found by a repository review on 2026-10-22.

Dominant language
TypeScript
Stars
1
Forks
0
Avg merge
5h 38m
Merged PRs (30d)
960

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from schlessera/brain-kit

All issues in schlessera/brain-kit

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.