token efficiency: expose compactionModel in 9p cfg, fix test stubs
- Add compactionModel= to cfg read/write - Add CompactionModel/SetCompactionModel stubs to test stubCore - Fix NewSessionTree calls with missing invalidateModels arg
This commit is contained in:
parent
d8bd47c545
commit
60da0bbfde
19
main_test.go
19
main_test.go
|
|
@ -89,6 +89,8 @@ func (c *stubCore) WaitChange(ctx context.Context, _, _ string) (string, bool) {
|
|||
}
|
||||
func (c *stubCore) Close() { c.closed = true }
|
||||
func (c *stubCore) ToolCallCount() int64 { return 0 }
|
||||
func (c *stubCore) CompactionModel() string { return "" }
|
||||
func (c *stubCore) SetCompactionModel(string) {}
|
||||
func (c *stubCore) Bus() *pubsub.Bus {
|
||||
if c.bus_ == nil {
|
||||
c.bus_ = pubsub.NewBus()
|
||||
|
|
@ -174,6 +176,7 @@ func newTestSessionFileStore(t *testing.T, sess *session.Session) (*fs.Tree, *st
|
|||
func() {},
|
||||
func(id string) error { return nil },
|
||||
func(data []byte) error { return nil },
|
||||
func() {},
|
||||
)
|
||||
return sf, core
|
||||
}
|
||||
|
|
@ -181,7 +184,7 @@ func newTestSessionFileStore(t *testing.T, sess *session.Session) (*fs.Tree, *st
|
|||
func newTestSessionFileStoreWith(t *testing.T, sess *session.Session, kill func(), rename func(string) error, save func([]byte) error) *fs.Tree {
|
||||
t.Helper()
|
||||
sink := testSink()
|
||||
return session.NewSessionTree(sess, sink.NewLogger("test"), kill, rename, save)
|
||||
return session.NewSessionTree(sess, sink.NewLogger("test"), kill, rename, save, func() {})
|
||||
}
|
||||
// ===== session.Session =====
|
||||
|
||||
|
|
@ -399,7 +402,7 @@ func TestSessionFileStoreReadableContract(t *testing.T) {
|
|||
defer sess.Cancel()
|
||||
sink := testSink()
|
||||
_ = session.NewSessionTree(sess, sink.NewLogger("test"),
|
||||
func() {}, func(string) error { return nil }, func([]byte) error { return nil })
|
||||
func() {}, func(string) error { return nil }, func([]byte) error { return nil }, func() {})
|
||||
}
|
||||
|
||||
func TestSessionFileStoreList(t *testing.T) {
|
||||
|
|
@ -407,7 +410,7 @@ func TestSessionFileStoreList(t *testing.T) {
|
|||
defer sess.Cancel()
|
||||
sink := testSink()
|
||||
sf := session.NewSessionTree(sess, sink.NewLogger("test"),
|
||||
func() {}, func(string) error { return nil }, func([]byte) error { return nil })
|
||||
func() {}, func(string) error { return nil }, func([]byte) error { return nil }, func() {})
|
||||
|
||||
entries, err := sf.List()
|
||||
if err != nil {
|
||||
|
|
@ -424,7 +427,7 @@ func TestSessionFileStoreStatChat(t *testing.T) {
|
|||
sess.AppendLog([]byte("hello"))
|
||||
sink := testSink()
|
||||
sf := session.NewSessionTree(sess, sink.NewLogger("test"),
|
||||
func() {}, func(string) error { return nil }, func([]byte) error { return nil })
|
||||
func() {}, func(string) error { return nil }, func([]byte) error { return nil }, func() {})
|
||||
|
||||
fi, err := sf.Stat("chat")
|
||||
if err != nil {
|
||||
|
|
@ -441,7 +444,7 @@ func TestSessionFileStoreGetChat(t *testing.T) {
|
|||
sess.AppendLog([]byte("hello"))
|
||||
sink := testSink()
|
||||
sf := session.NewSessionTree(sess, sink.NewLogger("test"),
|
||||
func() {}, func(string) error { return nil }, func([]byte) error { return nil })
|
||||
func() {}, func(string) error { return nil }, func([]byte) error { return nil }, func() {})
|
||||
|
||||
data := testStoreRead(t, sf, "chat")
|
||||
if string(data) != "hello" {
|
||||
|
|
@ -454,7 +457,7 @@ func TestSessionFileStoreGetContent(t *testing.T) {
|
|||
defer sess.Cancel()
|
||||
sink := testSink()
|
||||
sf := session.NewSessionTree(sess, sink.NewLogger("test"),
|
||||
func() {}, func(string) error { return nil }, func([]byte) error { return nil })
|
||||
func() {}, func(string) error { return nil }, func([]byte) error { return nil }, func() {})
|
||||
|
||||
for _, name := range []string{"cfg", "offset", "usage", "ctxsz", "models", "systemprompt"} {
|
||||
if _, err := sf.Open(name); err != nil {
|
||||
|
|
@ -468,7 +471,7 @@ func TestSessionFileStorePutCwd(t *testing.T) {
|
|||
defer sess.Cancel()
|
||||
sink := testSink()
|
||||
sf := session.NewSessionTree(sess, sink.NewLogger("test"),
|
||||
func() {}, func(string) error { return nil }, func([]byte) error { return nil })
|
||||
func() {}, func(string) error { return nil }, func([]byte) error { return nil }, func() {})
|
||||
|
||||
testStoreWrite(t, sf, "cfg", []byte("cwd=/new/path"))
|
||||
core := sess.Core.(*stubCore)
|
||||
|
|
@ -482,7 +485,7 @@ func TestSessionFileStorePutEmpty(t *testing.T) {
|
|||
defer sess.Cancel()
|
||||
sink := testSink()
|
||||
sf := session.NewSessionTree(sess, sink.NewLogger("test"),
|
||||
func() {}, func(string) error { return nil }, func([]byte) error { return nil })
|
||||
func() {}, func(string) error { return nil }, func([]byte) error { return nil }, func() {})
|
||||
|
||||
// Empty write is a no-op
|
||||
e, err := sf.Open("cfg")
|
||||
|
|
|
|||
|
|
@ -338,6 +338,7 @@ func (h *sessionHelper) cfgContent() string {
|
|||
} else {
|
||||
sb.WriteString("verbosity=\n")
|
||||
}
|
||||
fmt.Fprintf(&sb, "compactionModel=%s\n", h.sess.Core.CompactionModel())
|
||||
return sb.String()
|
||||
}
|
||||
|
||||
|
|
@ -496,6 +497,8 @@ func (h *sessionHelper) handleCfg(input string) error {
|
|||
case "verbosity":
|
||||
hasParams = true
|
||||
p.Verbosity = v
|
||||
case "compactionModel":
|
||||
h.sess.Core.SetCompactionModel(v)
|
||||
// state → read-only, silently ignored
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Reference in New Issue