Skip to content

opentui: fatal: undefined is not an object (evaluating 'session().parentID') #6964

Description

@sureshsankaran

Description

When attempting to fork a new session from a past interaction, OpenCode TUI throws a fatal error.

Error

Error: undefined is not an object (evaluating 'session().parentID')
    at <anonymous> (/Users/suressan/github_manager/repos/opencode/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx:82:17)
    at runComputation (/Users/suressan/github_manager/repos/opencode/node_modules/solid-js/dist/solid.js:695:22)
    at updateComputation (/Users/suressan/github_manager/repos/opencode/node_modules/solid-js/dist/solid.js:677:3)
    at runTop (/Users/suressan/github_manager/repos/opencode/node_modules/solid-js/dist/solid.js:784:7)
    at runQueue (/Users/suressan/github_manager/repos/opencode/node_modules/solid-js/dist/solid.js:855:42)
    at completeUpdates (/Users/suressan/github_manager/repos/opencode/node_modules/solid-js/dist/solid.js:811:84)
    at runUpdates (/Users/suressan/github_manager/repos/opencode/node_modules/solid-js/dist/solid.js:801:5)
    at setStore (/Users/suressan/github_manager/repos/opencode/node_modules/solid-js/store/dist/store.js:210:5)
    at navigate (/Users/suressan/github_manager/repos/opencode/packages/opencode/src/cli/cmd/tui/routes/session/context/route.tsx:18:9)
    at <anonymous> (/Users/suressan/github_manager/repos/opencode/packages/opencode/src/cli/cmd/tui/routes/session/dialog-message.tsx:83:15)
    at processTicksAndRejections (native)

Steps to Reproduce

  1. Open an existing session from history
  2. Attempt to fork the session to create a new one
  3. Fatal error occurs

Root Cause Analysis

Line 119 in routes/session/index.tsx uses session().parentID without null-checking:

if (session().parentID) return sync.data.permission[route.sessionID] ?? []

Other lines in the same file correctly use optional chaining: session()?.parentID

The session object is undefined when the forked/parent session data hasn't loaded into the sync store yet.

Suggested Fix

// Line 119: Change from:
if (session().parentID) return sync.data.permission[route.sessionID] ?? []
// To:
if (session()?.parentID) return sync.data.permission[route.sessionID] ?? []

Environment

  • OpenCode version: local (built from source)
  • Platform: macOS (darwin)

Metadata

Metadata

Assignees

Labels

opentuiThis relates to changes in v1.0, now that opencode uses opentui

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions