• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

stacklok / codegate-ui / 13031292266

29 Jan 2025 12:27PM UTC coverage: 68.733% (+1.7%) from 67.071%
13031292266

Pull #220

github

web-flow
Merge 04fad425d into 25a531eba
Pull Request #220: feat(muxes): model overrides matcher

387 of 673 branches covered (57.5%)

Branch coverage included in aggregate %.

41 of 60 new or added lines in 8 files covered. (68.33%)

2 existing lines in 1 file now uncovered.

844 of 1118 relevant lines covered (75.49%)

63.88 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

88.24
/src/features/workspace/hooks/use-model-overrides-workspace.ts
1
import { MuxRule } from "@/api/generated";
2
import { create } from "zustand";
3
import { v4 as uuidv4 } from "uuid";
4

5
export type OverrideRule = Omit<MuxRule, "matcher_type"> & {
6
  id: string;
7
};
8

9
type State = {
10
  removeOverride: (index: number) => void;
11
  resetOverrides: () => void;
12
  addOverride: () => void;
13
  setOverrides: (overrides: OverrideRule[]) => void;
14
  setOverrideItem: (
15
    idToChange: string,
16
    {
17
      model,
18
      matcher,
19
    }: {
20
      matcher?: string;
21
      model?: string;
22
    },
23
  ) => void;
24
  overrides: OverrideRule[];
25
};
26

27
export const useModelOverridesWorkspace = create<State>((set, get) => ({
4✔
28
  overrides: [
29
    {
30
      id: uuidv4(),
31
      provider: "anthropic",
32
      model: "claude-3.5",
33
      matcher: "",
34
    },
35
    {
36
      id: uuidv4(),
37
      provider: "anthropic",
38
      model: "claude-3.7",
39
      matcher: "hello",
40
    },
41
  ],
42
  addOverride: () => {
43
    const { overrides } = get();
1✔
44
    set({
1✔
45
      overrides: [
46
        ...overrides,
47
        { id: uuidv4(), matcher: "", model: "", provider: "" },
48
      ],
49
    });
50
  },
51
  resetOverrides: () => {
NEW
52
    set({
×
53
      overrides: [{ id: uuidv4(), matcher: "", model: "", provider: "" }],
54
    });
55
  },
56
  removeOverride: (overrideIndex: number) => {
57
    const { overrides } = get();
1✔
58
    set({
1✔
59
      overrides: overrides.filter((_, index) => index !== overrideIndex),
3✔
60
    });
61
  },
62
  setOverrides: (overrides: OverrideRule[]) => {
NEW
63
    set({ overrides });
×
64
  },
65
  setOverrideItem: (idToChange, { model, matcher }) => {
66
    const { overrides } = get();
11✔
67

68
    set({
11✔
69
      overrides: overrides.map((item) =>
70
        item.id === idToChange
27✔
71
          ? {
72
              ...item,
73
              model: model ?? item.model,
20✔
74
              matcher: matcher ?? item.matcher,
13✔
75
            }
76
          : item,
77
      ),
78
    });
79
  },
80
}));
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc