Skip to content

Conversation

@peremajoral
Copy link

Summary

Fixes the fatal error: TypeError: undefined is not an object (evaluating 'local.agent.current().name')

Root Cause

When the agents list is empty or the stored agent name doesn't match any available agent, local.agent.current() returns undefined. The code then crashes when accessing .name on undefined.

Affected locations:

  • packages/opencode/src/cli/cmd/tui/context/local.tsx - Source of the issue
  • packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx - 6 consumer locations
  • packages/opencode/src/cli/cmd/tui/component/dialog-agent.tsx - 1 consumer location

Changes

local.tsx

  • Line 41: agents()[0].nameagents()[0]?.name ?? "" for safe initialization
  • Line 57: Removed non-null assertion ! from current() return
  • Line 74: Added null check before setting agent store
  • Lines 181-185, 230, 256, 275, 370: Added null guards before accessing agent.current()

prompt/index.tsx

  • Added optional chaining with "build" fallback at all 6 locations:
    • Shell handler (line 537)
    • Command handler (line 558)
    • Prompt handler (line 574)
    • Highlight memo (line 694)
    • Spinner definition (line 705)
    • JSX display (line 936)

dialog-agent.tsx

  • Added optional chaining with empty string fallback

Testing

The fix adds defensive null checks that gracefully handle edge cases without changing normal behavior when agents are properly loaded.

When the agents list is empty or the stored agent name doesn't match any
available agent, local.agent.current() returns undefined. Accessing .name
on undefined causes TypeError: undefined is not an object.

Changes:
- local.tsx: Add optional chaining and null guards throughout
- prompt/index.tsx: Add optional chaining with build fallback
- dialog-agent.tsx: Add optional chaining with empty string fallback

Fixes: opentui: fatal: undefined is not an object
@github-actions
Copy link
Contributor

Thanks for your contribution!

This PR doesn't have a linked issue. All PRs must reference an existing issue.

Please:

  1. Open an issue describing the bug/feature (if one doesn't exist)
  2. Add Fixes #<number> or Closes #<number> to this PR description

See CONTRIBUTING.md for details.

@github-actions
Copy link
Contributor

The following comment was made by an LLM, it may be inaccurate:

No duplicate PRs found

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant