naming: use explicit context names throughout

- Session field: Ctx → SessionCtx (clarifies what ctx this is)
- Session creation: ctx → sessionCtx, cancel → sessionCancel
- Daemon ctx passed as s.cfg.Ctx (unchanged — named in ManagerConfig)
- Fixed stale ctx reference in create.go Submit call
This commit is contained in:
Levi Neely 2026-07-29 22:35:11 +02:00
parent d17b5df7dc
commit e88e0a6f4c
6 changed files with 26 additions and 26 deletions

View File

@ -301,7 +301,7 @@ func (a *DBusAdapter) Submit(sessionID, prompt string) (bool, *dbus.Error) {
if sess == nil { if sess == nil {
return false, nil return false, nil
} }
go sess.Core.Agent().Submit(sess.Ctx, prompt) go sess.Core.Agent().Submit(sess.SessionCtx, prompt)
return true, nil return true, nil
} }
@ -393,7 +393,7 @@ func (a *DBusAdapter) SetConfig(sessionID, key, value string) (bool, *dbus.Error
} }
switch key { switch key {
case "model": case "model":
sess.Core.Agent().Submit(sess.Ctx, "/model "+value) sess.Core.Agent().Submit(sess.SessionCtx, "/model "+value)
case "cwd": case "cwd":
if err := sess.Core.SetCWD(value); err != nil { if err := sess.Core.SetCWD(value); err != nil {
return false, nil return false, nil
@ -652,7 +652,7 @@ func (a *DBusAdapter) Compact(sessionID string) (bool, *dbus.Error) {
if sess == nil { if sess == nil {
return false, nil return false, nil
} }
sess.Core.Agent().Submit(sess.Ctx, "/compact") sess.Core.Agent().Submit(sess.SessionCtx, "/compact")
return true, nil return true, nil
} }
@ -661,7 +661,7 @@ func (a *DBusAdapter) ClearContext(sessionID string) (bool, *dbus.Error) {
if sess == nil { if sess == nil {
return false, nil return false, nil
} }
sess.Core.Agent().Submit(sess.Ctx, "/clear") sess.Core.Agent().Submit(sess.SessionCtx, "/clear")
return true, nil return true, nil
} }

View File

@ -301,7 +301,7 @@ func TestSessionManagerDeleteAndKill(t *testing.T) {
t.Error("session should be gone after Delete") t.Error("session should be gone after Delete")
} }
// Verify core was closed by checking ctx is cancelled // Verify core was closed by checking ctx is cancelled
if sess.Ctx.Err() == nil { if sess.SessionCtx.Err() == nil {
t.Error("session ctx should be cancelled after Delete") t.Error("session ctx should be cancelled after Delete")
} }
if err := s.Tree().Delete("nope"); err == nil { if err := s.Tree().Delete("nope"); err == nil {
@ -328,7 +328,7 @@ func TestSessionManagerInterruptAll(t *testing.T) {
defer sess.Cancel() defer sess.Cancel()
// Submit in background to make it "running" // Submit in background to make it "running"
go sess.Core.Agent().Submit(sess.Ctx, "hello") go sess.Core.Agent().Submit(sess.SessionCtx, "hello")
time.Sleep(50 * time.Millisecond) // let it enter thinking state time.Sleep(50 * time.Millisecond) // let it enter thinking state
s.AddSession(sess) s.AddSession(sess)
@ -384,7 +384,7 @@ func TestSessionManagerRenameErrors(t *testing.T) {
} }
// running // running
sess := testBlockingSession("r") sess := testBlockingSession("r")
go sess.Core.Agent().Submit(sess.Ctx, "hello") go sess.Core.Agent().Submit(sess.SessionCtx, "hello")
time.Sleep(50 * time.Millisecond) time.Sleep(50 * time.Millisecond)
s.AddSession(sess) s.AddSession(sess)
if err := s.Tree().Rename("r", "r2"); err == nil { if err := s.Tree().Rename("r", "r2"); err == nil {
@ -625,7 +625,7 @@ func TestSessionFileStoreWriteBackendWhileRunning(t *testing.T) {
defer sess.Cancel() defer sess.Cancel()
// Make session running // Make session running
go sess.Core.Agent().Submit(sess.Ctx, "hello") go sess.Core.Agent().Submit(sess.SessionCtx, "hello")
time.Sleep(50 * time.Millisecond) time.Sleep(50 * time.Millisecond)
sf := newTestSessionFileStore(t, sess) sf := newTestSessionFileStore(t, sess)
@ -660,7 +660,7 @@ func TestSessionFileStoreWriteParamsWhileRunning(t *testing.T) {
sess := testBlockingSession("s1") sess := testBlockingSession("s1")
defer sess.Cancel() defer sess.Cancel()
go sess.Core.Agent().Submit(sess.Ctx, "hello") go sess.Core.Agent().Submit(sess.SessionCtx, "hello")
time.Sleep(50 * time.Millisecond) time.Sleep(50 * time.Millisecond)
sf := newTestSessionFileStore(t, sess) sf := newTestSessionFileStore(t, sess)
@ -676,7 +676,7 @@ func TestSessionFileStoreHandleCtl(t *testing.T) {
defer sess.Cancel() defer sess.Cancel()
// Make session running for interrupt test // Make session running for interrupt test
go sess.Core.Agent().Submit(sess.Ctx, "hello") go sess.Core.Agent().Submit(sess.SessionCtx, "hello")
time.Sleep(50 * time.Millisecond) time.Sleep(50 * time.Millisecond)
sf := newTestSessionFileStore(t, sess) sf := newTestSessionFileStore(t, sess)
@ -725,7 +725,7 @@ func TestSessionFileStoreBlockingRead(t *testing.T) {
return return
} }
// Use BlockingRead which invokes the Wait function // Use BlockingRead which invokes the Wait function
data, _, _ := e.BlockingRead(sess.Ctx, "") data, _, _ := e.BlockingRead(sess.SessionCtx, "")
done <- string(data) done <- string(data)
}() }()
@ -733,7 +733,7 @@ func TestSessionFileStoreBlockingRead(t *testing.T) {
time.Sleep(100 * time.Millisecond) time.Sleep(100 * time.Millisecond)
// Submit triggers state change: idle → thinking // Submit triggers state change: idle → thinking
go sess.Core.Agent().Submit(sess.Ctx, "trigger") go sess.Core.Agent().Submit(sess.SessionCtx, "trigger")
select { select {
case v := <-done: case v := <-done:
@ -1070,7 +1070,7 @@ func TestSessionInterrupt(t *testing.T) {
sess := testBlockingSession("s1") sess := testBlockingSession("s1")
defer sess.Cancel() defer sess.Cancel()
go sess.Core.Agent().Submit(sess.Ctx, "hello") go sess.Core.Agent().Submit(sess.SessionCtx, "hello")
time.Sleep(50 * time.Millisecond) time.Sleep(50 * time.Millisecond)
sess.Interrupt() sess.Interrupt()

View File

@ -228,8 +228,8 @@ func (s *Manager) CreateSession(args []string) (string, error) {
}) })
} }
ctx, cancel := context.WithCancel(s.cfg.Ctx) sessionCtx, sessionCancel := context.WithCancel(s.cfg.Ctx)
sess := NewSession(sessID, core, ctx, cancel) sess := NewSession(sessID, core, sessionCtx, sessionCancel)
sessPtr = sess sessPtr = sess
sess.remote = remoteTarget sess.remote = remoteTarget
@ -241,7 +241,7 @@ func (s *Manager) CreateSession(args []string) (string, error) {
s.mu.Unlock() s.mu.Unlock()
// HACK: Load the agent now that the session mount is active. // HACK: Load the agent now that the session mount is active.
core.Agent().Submit(ctx, "/agent "+agentName) core.Agent().Submit(sessionCtx, "/agent "+agentName)
s.cfg.Log.Info("new session %s (backend=%s model=%s agent=%s)", s.cfg.Log.Info("new session %s (backend=%s model=%s agent=%s)",
sessID, core.Agent().BackendName(), core.Agent().ModelName(), core.Agent().Name()) sessID, core.Agent().BackendName(), core.Agent().ModelName(), core.Agent().Name())

View File

@ -237,8 +237,8 @@ func (s *Manager) restoreSession(ps *agent.PersistedAgent) error {
}, },
}) })
ctx, cancel := context.WithCancel(s.cfg.Ctx) sessionCtx, sessionCancel := context.WithCancel(s.cfg.Ctx)
sess := NewSession(sessID, core, ctx, cancel) sess := NewSession(sessID, core, sessionCtx, sessionCancel)
sessPtr = sess sessPtr = sess
sess.uname = uname sess.uname = uname
sess.remote = remoteTarget sess.remote = remoteTarget

View File

@ -16,7 +16,7 @@ type Session struct {
id string id string
uname string // immutable user principal (numeric UID), set at creation uname string // immutable user principal (numeric UID), set at creation
Core *session.Session Core *session.Session
Ctx context.Context SessionCtx context.Context
cancel context.CancelFunc cancel context.CancelFunc
log []byte log []byte
logVers uint32 logVers uint32
@ -32,7 +32,7 @@ type Session struct {
} }
func NewSession(id string, core *session.Session, ctx context.Context, cancel context.CancelFunc) *Session { func NewSession(id string, core *session.Session, ctx context.Context, cancel context.CancelFunc) *Session {
sess := &Session{id: id, Core: core, Ctx: ctx, cancel: cancel} sess := &Session{id: id, Core: core, SessionCtx: ctx, cancel: cancel}
sess.startEventLog() sess.startEventLog()
return sess return sess
} }

View File

@ -203,7 +203,7 @@ func (h *sessionHelper) fileSpec(name string, mode os.FileMode) fs.FileSpec {
h.sess.prevPrompt = []byte(input) h.sess.prevPrompt = []byte(input)
h.sess.mu.Unlock() h.sess.mu.Unlock()
go func() { go func() {
h.sess.Core.Agent().Submit(h.sess.Ctx, input) h.sess.Core.Agent().Submit(h.sess.SessionCtx, input)
h.sess.EnsureTrailingNewline() h.sess.EnsureTrailingNewline()
}() }()
return nil return nil
@ -273,7 +273,7 @@ func (h *sessionHelper) fileSpec(name string, mode os.FileMode) fs.FileSpec {
fs.Wait = func(connCtx context.Context, base string) ([]byte, string, error) { fs.Wait = func(connCtx context.Context, base string) ([]byte, string, error) {
ctx, cancel := context.WithCancel(connCtx) ctx, cancel := context.WithCancel(connCtx)
defer cancel() defer cancel()
context.AfterFunc(h.sess.Ctx, cancel) context.AfterFunc(h.sess.SessionCtx, cancel)
if base == "" { if base == "" {
base = h.sess.Core.Agent().State() base = h.sess.Core.Agent().State()
} }
@ -486,7 +486,7 @@ func (h *sessionHelper) handleCfg(input string) error {
if h.sess.Core.Agent().IsRunning() { if h.sess.Core.Agent().IsRunning() {
return fmt.Errorf("cannot switch %s while agent is running", k) return fmt.Errorf("cannot switch %s while agent is running", k)
} }
h.sess.Core.Agent().Submit(h.sess.Ctx, "/agent "+v) h.sess.Core.Agent().Submit(h.sess.SessionCtx, "/agent "+v)
case "backend", "model": case "backend", "model":
if v == "" { if v == "" {
continue continue
@ -616,10 +616,10 @@ func (h *sessionHelper) handleCfg(input string) error {
} }
// Apply backend/model after agent= so manual overrides win. // Apply backend/model after agent= so manual overrides win.
if deferredBackend != "" { if deferredBackend != "" {
h.sess.Core.Agent().Submit(h.sess.Ctx, "/backend "+deferredBackend) h.sess.Core.Agent().Submit(h.sess.SessionCtx, "/backend "+deferredBackend)
} }
if deferredModel != "" { if deferredModel != "" {
h.sess.Core.Agent().Submit(h.sess.Ctx, "/model "+deferredModel) h.sess.Core.Agent().Submit(h.sess.SessionCtx, "/model "+deferredModel)
} }
if hasParams { if hasParams {
if h.sess.Core.Agent().IsRunning() { if h.sess.Core.Agent().IsRunning() {
@ -680,7 +680,7 @@ func (h *sessionHelper) handleCtl(input string) error {
"agents", "agent", "sessions", "cwd", "skills", "agents", "agent", "sessions", "cwd", "skills",
"tools", "context", "usage", "cost", "history", "tools", "context", "usage", "cost", "history",
"irw", "help": "irw", "help":
h.sess.Core.Agent().Submit(h.sess.Ctx, "/"+input) h.sess.Core.Agent().Submit(h.sess.SessionCtx, "/"+input)
default: default:
return fmt.Errorf("unknown ctl command: %s", cmd[0]) return fmt.Errorf("unknown ctl command: %s", cmd[0])
} }