@stigmer/react 0.2.3 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/composer/ComposerToolbar.d.ts +5 -1
- package/composer/ComposerToolbar.d.ts.map +1 -1
- package/composer/ComposerToolbar.js +6 -3
- package/composer/ComposerToolbar.js.map +1 -1
- package/composer/SessionComposer.d.ts +17 -1
- package/composer/SessionComposer.d.ts.map +1 -1
- package/composer/SessionComposer.js +10 -3
- package/composer/SessionComposer.js.map +1 -1
- package/execution/MessageEntry.d.ts +3 -1
- package/execution/MessageEntry.d.ts.map +1 -1
- package/execution/MessageEntry.js +30 -1
- package/execution/MessageEntry.js.map +1 -1
- package/index.d.ts +3 -3
- package/index.d.ts.map +1 -1
- package/index.js +2 -2
- package/index.js.map +1 -1
- package/models/HarnessSelector.d.ts +41 -0
- package/models/HarnessSelector.d.ts.map +1 -0
- package/models/HarnessSelector.js +74 -0
- package/models/HarnessSelector.js.map +1 -0
- package/models/ModelSelector.d.ts +26 -16
- package/models/ModelSelector.d.ts.map +1 -1
- package/models/ModelSelector.js +128 -48
- package/models/ModelSelector.js.map +1 -1
- package/models/__tests__/HarnessSelector.test.d.ts +2 -0
- package/models/__tests__/HarnessSelector.test.d.ts.map +1 -0
- package/models/__tests__/HarnessSelector.test.js +160 -0
- package/models/__tests__/HarnessSelector.test.js.map +1 -0
- package/models/__tests__/harness.test.d.ts +2 -0
- package/models/__tests__/harness.test.d.ts.map +1 -0
- package/models/__tests__/harness.test.js +50 -0
- package/models/__tests__/harness.test.js.map +1 -0
- package/models/__tests__/useModelRegistry.test.d.ts +2 -0
- package/models/__tests__/useModelRegistry.test.d.ts.map +1 -0
- package/models/__tests__/useModelRegistry.test.js +148 -0
- package/models/__tests__/useModelRegistry.test.js.map +1 -0
- package/models/harness.d.ts +21 -0
- package/models/harness.d.ts.map +1 -0
- package/models/harness.js +34 -0
- package/models/harness.js.map +1 -0
- package/models/index.d.ts +7 -2
- package/models/index.d.ts.map +1 -1
- package/models/index.js +3 -1
- package/models/index.js.map +1 -1
- package/models/registry.d.ts +53 -13
- package/models/registry.d.ts.map +1 -1
- package/models/registry.js +51 -40
- package/models/registry.js.map +1 -1
- package/models/useModelRegistry.d.ts +39 -19
- package/models/useModelRegistry.d.ts.map +1 -1
- package/models/useModelRegistry.js +45 -23
- package/models/useModelRegistry.js.map +1 -1
- package/package.json +4 -4
- package/runner/RunnerListPanel.js +2 -1
- package/runner/RunnerListPanel.js.map +1 -1
- package/runner/__tests__/phase.test.js +6 -2
- package/runner/__tests__/phase.test.js.map +1 -1
- package/runner/phase.d.ts +9 -7
- package/runner/phase.d.ts.map +1 -1
- package/runner/phase.js +18 -12
- package/runner/phase.js.map +1 -1
- package/session/__tests__/useCreateSession.test.d.ts +2 -0
- package/session/__tests__/useCreateSession.test.d.ts.map +1 -0
- package/session/__tests__/useCreateSession.test.js +232 -0
- package/session/__tests__/useCreateSession.test.js.map +1 -0
- package/session/__tests__/useNewSessionFlow.test.d.ts +2 -0
- package/session/__tests__/useNewSessionFlow.test.d.ts.map +1 -0
- package/session/__tests__/useNewSessionFlow.test.js +199 -0
- package/session/__tests__/useNewSessionFlow.test.js.map +1 -0
- package/session/__tests__/useSessionConversation.test.js +37 -0
- package/session/__tests__/useSessionConversation.test.js.map +1 -1
- package/session/index.d.ts +1 -1
- package/session/index.d.ts.map +1 -1
- package/session/useCreateSession.d.ts +8 -0
- package/session/useCreateSession.d.ts.map +1 -1
- package/session/useCreateSession.js +2 -0
- package/session/useCreateSession.js.map +1 -1
- package/session/useNewSessionFlow.d.ts +6 -1
- package/session/useNewSessionFlow.d.ts.map +1 -1
- package/session/useNewSessionFlow.js +34 -8
- package/session/useNewSessionFlow.js.map +1 -1
- package/session/usePersistedModel.d.ts +16 -1
- package/session/usePersistedModel.d.ts.map +1 -1
- package/session/usePersistedModel.js +15 -6
- package/session/usePersistedModel.js.map +1 -1
- package/session/useSessionConversation.d.ts.map +1 -1
- package/session/useSessionConversation.js +6 -1
- package/session/useSessionConversation.js.map +1 -1
- package/session/useSessionPageFlow.d.ts +11 -0
- package/session/useSessionPageFlow.d.ts.map +1 -1
- package/session/useSessionPageFlow.js +11 -2
- package/session/useSessionPageFlow.js.map +1 -1
- package/src/composer/ComposerToolbar.tsx +24 -1
- package/src/composer/SessionComposer.tsx +35 -1
- package/src/execution/MessageEntry.tsx +134 -1
- package/src/index.ts +15 -1
- package/src/models/HarnessSelector.tsx +130 -0
- package/src/models/ModelSelector.tsx +285 -81
- package/src/models/__tests__/HarnessSelector.test.tsx +190 -0
- package/src/models/__tests__/harness.test.ts +66 -0
- package/src/models/__tests__/useModelRegistry.test.tsx +209 -0
- package/src/models/harness.ts +45 -0
- package/src/models/index.ts +7 -2
- package/src/models/registry.ts +122 -50
- package/src/models/useModelRegistry.ts +74 -24
- package/src/runner/RunnerListPanel.tsx +13 -5
- package/src/runner/__tests__/phase.test.ts +6 -2
- package/src/runner/phase.ts +18 -12
- package/src/session/__tests__/useCreateSession.test.tsx +296 -0
- package/src/session/__tests__/useNewSessionFlow.test.tsx +258 -0
- package/src/session/__tests__/useSessionConversation.test.tsx +53 -0
- package/src/session/index.ts +1 -1
- package/src/session/useCreateSession.ts +9 -0
- package/src/session/useNewSessionFlow.ts +46 -9
- package/src/session/usePersistedModel.ts +30 -6
- package/src/session/useSessionConversation.ts +6 -1
- package/src/session/useSessionPageFlow.ts +26 -2
- package/styles.css +1 -1
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { Harness } from "@stigmer/protos/ai/stigmer/agentic/session/v1/enum_pb";
|
|
3
|
+
import { toProtoHarness, fromProtoHarness, DEFAULT_HARNESS, HARNESS_LABELS, } from "../harness";
|
|
4
|
+
describe("harness constants", () => {
|
|
5
|
+
it("defaults to native harness", () => {
|
|
6
|
+
expect(DEFAULT_HARNESS).toBe("native");
|
|
7
|
+
});
|
|
8
|
+
it("provides user-facing labels for both options", () => {
|
|
9
|
+
expect(HARNESS_LABELS.native).toBe("Stigmer");
|
|
10
|
+
expect(HARNESS_LABELS.cursor).toBe("Cursor");
|
|
11
|
+
});
|
|
12
|
+
it("covers every HarnessOption in HARNESS_LABELS", () => {
|
|
13
|
+
const options = ["native", "cursor"];
|
|
14
|
+
for (const opt of options) {
|
|
15
|
+
expect(HARNESS_LABELS[opt]).toBeDefined();
|
|
16
|
+
expect(typeof HARNESS_LABELS[opt]).toBe("string");
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
describe("toProtoHarness", () => {
|
|
21
|
+
it("maps native to Harness.NATIVE", () => {
|
|
22
|
+
expect(toProtoHarness("native")).toBe(Harness.NATIVE);
|
|
23
|
+
});
|
|
24
|
+
it("maps cursor to Harness.CURSOR", () => {
|
|
25
|
+
expect(toProtoHarness("cursor")).toBe(Harness.CURSOR);
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
describe("fromProtoHarness", () => {
|
|
29
|
+
it("maps Harness.NATIVE to native", () => {
|
|
30
|
+
expect(fromProtoHarness(Harness.NATIVE)).toBe("native");
|
|
31
|
+
});
|
|
32
|
+
it("maps Harness.CURSOR to cursor", () => {
|
|
33
|
+
expect(fromProtoHarness(Harness.CURSOR)).toBe("cursor");
|
|
34
|
+
});
|
|
35
|
+
it("maps Harness.UNSPECIFIED to native (safe default)", () => {
|
|
36
|
+
expect(fromProtoHarness(Harness.UNSPECIFIED)).toBe("native");
|
|
37
|
+
});
|
|
38
|
+
it("maps unknown numeric values to native (safe default)", () => {
|
|
39
|
+
expect(fromProtoHarness(999)).toBe("native");
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
describe("round-trip conversion", () => {
|
|
43
|
+
it("native survives toProto -> fromProto", () => {
|
|
44
|
+
expect(fromProtoHarness(toProtoHarness("native"))).toBe("native");
|
|
45
|
+
});
|
|
46
|
+
it("cursor survives toProto -> fromProto", () => {
|
|
47
|
+
expect(fromProtoHarness(toProtoHarness("cursor"))).toBe("cursor");
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=harness.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness.test.js","sourceRoot":"","sources":["../../../src/models/__tests__/harness.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useModelRegistry.test.d.ts","sourceRoot":"","sources":["../../../src/models/__tests__/useModelRegistry.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { renderHook } from "@testing-library/react";
|
|
3
|
+
import { useModelRegistry } from "../useModelRegistry";
|
|
4
|
+
import { MODEL_REGISTRY, DEFAULT_MODEL_ID, DEFAULT_CURSOR_MODEL_ID, DISABLED_PROVIDERS, modelKey, } from "../registry";
|
|
5
|
+
describe("useModelRegistry", () => {
|
|
6
|
+
describe("unified mode (no harness)", () => {
|
|
7
|
+
it("excludes DISABLED_PROVIDERS from models", () => {
|
|
8
|
+
const { result } = renderHook(() => useModelRegistry());
|
|
9
|
+
for (const model of result.current.models) {
|
|
10
|
+
expect(DISABLED_PROVIDERS.has(model.provider)).toBe(false);
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
it("includes models from both native and cursor harnesses", () => {
|
|
14
|
+
const { result } = renderHook(() => useModelRegistry());
|
|
15
|
+
const harnesses = new Set(result.current.models.map((m) => m.harness));
|
|
16
|
+
expect(harnesses.has("native")).toBe(true);
|
|
17
|
+
expect(harnesses.has("cursor")).toBe(true);
|
|
18
|
+
});
|
|
19
|
+
it("includes all non-disabled models from MODEL_REGISTRY", () => {
|
|
20
|
+
const { result } = renderHook(() => useModelRegistry());
|
|
21
|
+
const expected = MODEL_REGISTRY.filter((m) => !DISABLED_PROVIDERS.has(m.provider));
|
|
22
|
+
expect(result.current.models).toHaveLength(expected.length);
|
|
23
|
+
});
|
|
24
|
+
it("resolves defaultModel to DEFAULT_MODEL_ID", () => {
|
|
25
|
+
const { result } = renderHook(() => useModelRegistry());
|
|
26
|
+
expect(result.current.defaultModel.modelId).toBe(DEFAULT_MODEL_ID);
|
|
27
|
+
});
|
|
28
|
+
it("groups models by provider in byProvider map", () => {
|
|
29
|
+
const { result } = renderHook(() => useModelRegistry());
|
|
30
|
+
for (const [provider, models] of result.current.byProvider) {
|
|
31
|
+
for (const m of models) {
|
|
32
|
+
expect(m.provider).toBe(provider);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
it("returns providers matching byProvider keys in order", () => {
|
|
37
|
+
const { result } = renderHook(() => useModelRegistry());
|
|
38
|
+
const fromMap = Array.from(result.current.byProvider.keys());
|
|
39
|
+
expect(result.current.providers).toEqual(fromMap);
|
|
40
|
+
});
|
|
41
|
+
it("looks up enabled models by getModel", () => {
|
|
42
|
+
const { result } = renderHook(() => useModelRegistry());
|
|
43
|
+
const model = result.current.getModel(DEFAULT_MODEL_ID);
|
|
44
|
+
expect(model).toBeDefined();
|
|
45
|
+
expect(model.modelId).toBe(DEFAULT_MODEL_ID);
|
|
46
|
+
});
|
|
47
|
+
it("returns undefined for disabled provider models via getModel", () => {
|
|
48
|
+
const { result } = renderHook(() => useModelRegistry());
|
|
49
|
+
const disabledModel = MODEL_REGISTRY.find((m) => DISABLED_PROVIDERS.has(m.provider));
|
|
50
|
+
if (disabledModel) {
|
|
51
|
+
expect(result.current.getModel(disabledModel.modelId)).toBeUndefined();
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
it("returns undefined for unknown model IDs via getModel", () => {
|
|
55
|
+
const { result } = renderHook(() => useModelRegistry());
|
|
56
|
+
expect(result.current.getModel("nonexistent-model")).toBeUndefined();
|
|
57
|
+
});
|
|
58
|
+
it("returns featured models subset", () => {
|
|
59
|
+
const { result } = renderHook(() => useModelRegistry());
|
|
60
|
+
expect(result.current.featured.length).toBeGreaterThan(0);
|
|
61
|
+
for (const model of result.current.featured) {
|
|
62
|
+
expect(model.featured).toBe(true);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
it("featured models are a subset of all models", () => {
|
|
66
|
+
const { result } = renderHook(() => useModelRegistry());
|
|
67
|
+
const allKeys = new Set(result.current.models.map((m) => modelKey(m.harness, m.modelId)));
|
|
68
|
+
for (const model of result.current.featured) {
|
|
69
|
+
expect(allKeys.has(modelKey(model.harness, model.modelId))).toBe(true);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
it("resolves models by compound key via getByKey", () => {
|
|
73
|
+
const { result } = renderHook(() => useModelRegistry());
|
|
74
|
+
const key = modelKey("native", DEFAULT_MODEL_ID);
|
|
75
|
+
const model = result.current.getByKey(key);
|
|
76
|
+
expect(model).toBeDefined();
|
|
77
|
+
expect(model.modelId).toBe(DEFAULT_MODEL_ID);
|
|
78
|
+
expect(model.harness).toBe("native");
|
|
79
|
+
});
|
|
80
|
+
it("resolves cursor models by compound key via getByKey", () => {
|
|
81
|
+
const { result } = renderHook(() => useModelRegistry());
|
|
82
|
+
const key = modelKey("cursor", DEFAULT_CURSOR_MODEL_ID);
|
|
83
|
+
const model = result.current.getByKey(key);
|
|
84
|
+
expect(model).toBeDefined();
|
|
85
|
+
expect(model.modelId).toBe(DEFAULT_CURSOR_MODEL_ID);
|
|
86
|
+
expect(model.harness).toBe("cursor");
|
|
87
|
+
});
|
|
88
|
+
it("returns undefined for unknown compound keys via getByKey", () => {
|
|
89
|
+
const { result } = renderHook(() => useModelRegistry());
|
|
90
|
+
expect(result.current.getByKey("native/nonexistent")).toBeUndefined();
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
describe("native harness (explicit)", () => {
|
|
94
|
+
it("shows only native-harness models", () => {
|
|
95
|
+
const { result } = renderHook(() => useModelRegistry({ harness: "native" }));
|
|
96
|
+
for (const model of result.current.models) {
|
|
97
|
+
expect(model.harness).toBe("native");
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
it("excludes cursor-harness models", () => {
|
|
101
|
+
const { result } = renderHook(() => useModelRegistry({ harness: "native" }));
|
|
102
|
+
const cursorModels = result.current.models.filter((m) => m.harness === "cursor");
|
|
103
|
+
expect(cursorModels).toHaveLength(0);
|
|
104
|
+
});
|
|
105
|
+
it("resolves defaultModel to DEFAULT_MODEL_ID", () => {
|
|
106
|
+
const { result } = renderHook(() => useModelRegistry({ harness: "native" }));
|
|
107
|
+
expect(result.current.defaultModel.modelId).toBe(DEFAULT_MODEL_ID);
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
describe("cursor harness", () => {
|
|
111
|
+
it("shows only cursor-harness models", () => {
|
|
112
|
+
const { result } = renderHook(() => useModelRegistry({ harness: "cursor" }));
|
|
113
|
+
for (const model of result.current.models) {
|
|
114
|
+
expect(model.harness).toBe("cursor");
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
it("includes cursor-harness models from multiple providers", () => {
|
|
118
|
+
const { result } = renderHook(() => useModelRegistry({ harness: "cursor" }));
|
|
119
|
+
const providers = new Set(result.current.models.map((m) => m.provider));
|
|
120
|
+
expect(providers.size).toBeGreaterThan(1);
|
|
121
|
+
});
|
|
122
|
+
it("includes all cursor-harness models from MODEL_REGISTRY", () => {
|
|
123
|
+
const { result } = renderHook(() => useModelRegistry({ harness: "cursor" }));
|
|
124
|
+
const cursorModels = MODEL_REGISTRY.filter((m) => m.harness === "cursor");
|
|
125
|
+
expect(result.current.models).toHaveLength(cursorModels.length);
|
|
126
|
+
});
|
|
127
|
+
it("resolves defaultModel to DEFAULT_CURSOR_MODEL_ID", () => {
|
|
128
|
+
const { result } = renderHook(() => useModelRegistry({ harness: "cursor" }));
|
|
129
|
+
expect(result.current.defaultModel.modelId).toBe(DEFAULT_CURSOR_MODEL_ID);
|
|
130
|
+
});
|
|
131
|
+
it("looks up cursor models via getModel", () => {
|
|
132
|
+
const { result } = renderHook(() => useModelRegistry({ harness: "cursor" }));
|
|
133
|
+
expect(result.current.getModel(DEFAULT_CURSOR_MODEL_ID)).toBeDefined();
|
|
134
|
+
});
|
|
135
|
+
it("cannot look up native-only models via getModel", () => {
|
|
136
|
+
const { result } = renderHook(() => useModelRegistry({ harness: "cursor" }));
|
|
137
|
+
expect(result.current.getModel(DEFAULT_MODEL_ID)).toBeUndefined();
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
describe("defaultModel fallback", () => {
|
|
141
|
+
it("falls back to the first enabled model when default ID is missing", () => {
|
|
142
|
+
const { result } = renderHook(() => useModelRegistry());
|
|
143
|
+
expect(result.current.defaultModel).toBeDefined();
|
|
144
|
+
expect(result.current.models).toContain(result.current.defaultModel);
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
//# sourceMappingURL=useModelRegistry.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useModelRegistry.test.js","sourceRoot":"","sources":["../../../src/models/__tests__/useModelRegistry.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Harness } from "@stigmer/protos/ai/stigmer/agentic/session/v1/enum_pb";
|
|
2
|
+
/**
|
|
3
|
+
* String literal alias for the proto {@link Harness} enum.
|
|
4
|
+
*
|
|
5
|
+
* Used on component props and hook options so platform builders
|
|
6
|
+
* do not need to import proto enums to use the SDK.
|
|
7
|
+
*/
|
|
8
|
+
export type HarnessOption = "native" | "cursor";
|
|
9
|
+
/** User-facing labels for each harness option. */
|
|
10
|
+
export declare const HARNESS_LABELS: Readonly<Record<HarnessOption, string>>;
|
|
11
|
+
/** Platform default — resolves to the native engine. */
|
|
12
|
+
export declare const DEFAULT_HARNESS: HarnessOption;
|
|
13
|
+
/** Convert a {@link HarnessOption} string to the proto {@link Harness} enum. */
|
|
14
|
+
export declare function toProtoHarness(h: HarnessOption): Harness;
|
|
15
|
+
/**
|
|
16
|
+
* Convert a proto {@link Harness} enum to a {@link HarnessOption} string.
|
|
17
|
+
*
|
|
18
|
+
* `UNSPECIFIED` and any unknown values map to `"native"`.
|
|
19
|
+
*/
|
|
20
|
+
export declare function fromProtoHarness(h: Harness): HarnessOption;
|
|
21
|
+
//# sourceMappingURL=harness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness.d.ts","sourceRoot":"","sources":["../../src/models/harness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uDAAuD,CAAC;AAEhF;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEhD,kDAAkD;AAClD,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAGlE,CAAC;AAEF,wDAAwD;AACxD,eAAO,MAAM,eAAe,EAAE,aAAwB,CAAC;AAEvD,gFAAgF;AAChF,wBAAgB,cAAc,CAAC,CAAC,EAAE,aAAa,GAAG,OAAO,CAQxD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,aAAa,CAS1D"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Harness } from "@stigmer/protos/ai/stigmer/agentic/session/v1/enum_pb";
|
|
2
|
+
/** User-facing labels for each harness option. */
|
|
3
|
+
export const HARNESS_LABELS = {
|
|
4
|
+
native: "Stigmer",
|
|
5
|
+
cursor: "Cursor",
|
|
6
|
+
};
|
|
7
|
+
/** Platform default — resolves to the native engine. */
|
|
8
|
+
export const DEFAULT_HARNESS = "native";
|
|
9
|
+
/** Convert a {@link HarnessOption} string to the proto {@link Harness} enum. */
|
|
10
|
+
export function toProtoHarness(h) {
|
|
11
|
+
switch (h) {
|
|
12
|
+
case "cursor":
|
|
13
|
+
return Harness.CURSOR;
|
|
14
|
+
case "native":
|
|
15
|
+
default:
|
|
16
|
+
return Harness.NATIVE;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Convert a proto {@link Harness} enum to a {@link HarnessOption} string.
|
|
21
|
+
*
|
|
22
|
+
* `UNSPECIFIED` and any unknown values map to `"native"`.
|
|
23
|
+
*/
|
|
24
|
+
export function fromProtoHarness(h) {
|
|
25
|
+
switch (h) {
|
|
26
|
+
case Harness.CURSOR:
|
|
27
|
+
return "cursor";
|
|
28
|
+
case Harness.NATIVE:
|
|
29
|
+
case Harness.UNSPECIFIED:
|
|
30
|
+
default:
|
|
31
|
+
return "native";
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=harness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness.js","sourceRoot":"","sources":["../../src/models/harness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uDAAuD,CAAC;AAUhF,kDAAkD;AAClD,MAAM,CAAC,MAAM,cAAc,GAA4C;IACrE,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,QAAQ;CACjB,CAAC;AAEF,wDAAwD;AACxD,MAAM,CAAC,MAAM,eAAe,GAAkB,QAAQ,CAAC;AAEvD,gFAAgF;AAChF,MAAM,UAAU,cAAc,CAAC,CAAgB;IAC7C,QAAQ,CAAC,EAAE,CAAC;QACV,KAAK,QAAQ;YACX,OAAO,OAAO,CAAC,MAAM,CAAC;QACxB,KAAK,QAAQ,CAAC;QACd;YACE,OAAO,OAAO,CAAC,MAAM,CAAC;IAC1B,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,CAAU;IACzC,QAAQ,CAAC,EAAE,CAAC;QACV,KAAK,OAAO,CAAC,MAAM;YACjB,OAAO,QAAQ,CAAC;QAClB,KAAK,OAAO,CAAC,MAAM,CAAC;QACpB,KAAK,OAAO,CAAC,WAAW,CAAC;QACzB;YACE,OAAO,QAAQ,CAAC;IACpB,CAAC;AACH,CAAC"}
|
package/models/index.d.ts
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
export { MODEL_REGISTRY, DEFAULT_MODEL_ID, DISABLED_PROVIDERS } from "./registry";
|
|
1
|
+
export { MODEL_REGISTRY, DEFAULT_MODEL_ID, DEFAULT_CURSOR_MODEL_ID, DISABLED_PROVIDERS, modelKey, parseModelKey } from "./registry";
|
|
2
|
+
export type { ParsedModelKey } from "./registry";
|
|
2
3
|
export type { ModelInfo, Provider, CostTier } from "./registry";
|
|
3
4
|
export { useModelRegistry } from "./useModelRegistry";
|
|
4
|
-
export type { UseModelRegistryReturn } from "./useModelRegistry";
|
|
5
|
+
export type { UseModelRegistryReturn, UseModelRegistryOptions } from "./useModelRegistry";
|
|
5
6
|
export { ModelSelector } from "./ModelSelector";
|
|
6
7
|
export type { ModelSelectorProps } from "./ModelSelector";
|
|
8
|
+
export { HarnessSelector } from "./HarnessSelector";
|
|
9
|
+
export type { HarnessSelectorProps } from "./HarnessSelector";
|
|
10
|
+
export { DEFAULT_HARNESS, HARNESS_LABELS, toProtoHarness, fromProtoHarness } from "./harness";
|
|
11
|
+
export type { HarnessOption } from "./harness";
|
|
7
12
|
//# sourceMappingURL=index.d.ts.map
|
package/models/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACpI,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC9F,YAAY,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC"}
|
package/models/index.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
export { MODEL_REGISTRY, DEFAULT_MODEL_ID, DISABLED_PROVIDERS } from "./registry";
|
|
1
|
+
export { MODEL_REGISTRY, DEFAULT_MODEL_ID, DEFAULT_CURSOR_MODEL_ID, DISABLED_PROVIDERS, modelKey, parseModelKey } from "./registry";
|
|
2
2
|
export { useModelRegistry } from "./useModelRegistry";
|
|
3
3
|
export { ModelSelector } from "./ModelSelector";
|
|
4
|
+
export { HarnessSelector } from "./HarnessSelector";
|
|
5
|
+
export { DEFAULT_HARNESS, HARNESS_LABELS, toProtoHarness, fromProtoHarness } from "./harness";
|
|
4
6
|
//# sourceMappingURL=index.js.map
|
package/models/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGpI,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC"}
|
package/models/registry.d.ts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Model registry — UI-relevant metadata for all platform-supported LLM models.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Reads from the unified JSON registry at backend/libs/model-registry.json,
|
|
5
|
+
* which is the single source of truth for model IDs, display names, pricing,
|
|
6
|
+
* and cost tiers across all harnesses and runtimes.
|
|
6
7
|
*
|
|
7
|
-
*
|
|
8
|
-
* with a dynamic query; when that happens consumers will only need to
|
|
9
|
-
* swap from the static constant to a fetched result — the shape stays
|
|
10
|
-
* the same.
|
|
8
|
+
* Update it with: @update-model-registry
|
|
11
9
|
*/
|
|
10
|
+
import type { HarnessOption } from "./harness";
|
|
12
11
|
/**
|
|
13
12
|
* Pricing bracket for a model.
|
|
14
13
|
*
|
|
@@ -19,10 +18,11 @@
|
|
|
19
18
|
export type CostTier = "economy" | "standard" | "premium";
|
|
20
19
|
/**
|
|
21
20
|
* LLM provider identifier. Each provider maps to a distinct inference
|
|
22
|
-
* backend
|
|
23
|
-
*
|
|
21
|
+
* backend (or intermediary, in the case of Cursor-served third-party
|
|
22
|
+
* models). The {@link MODEL_REGISTRY} uses this for grouping in the
|
|
23
|
+
* "Show All" expanded view.
|
|
24
24
|
*/
|
|
25
|
-
export type Provider = "anthropic" | "openai" | "ollama";
|
|
25
|
+
export type Provider = "anthropic" | "openai" | "google" | "xai" | "cursor" | "moonshot" | "ollama";
|
|
26
26
|
/**
|
|
27
27
|
* Providers whose models should be hidden from the UI.
|
|
28
28
|
*
|
|
@@ -49,19 +49,59 @@ export interface ModelInfo {
|
|
|
49
49
|
readonly modelId: string;
|
|
50
50
|
/** LLM provider that serves this model. */
|
|
51
51
|
readonly provider: Provider;
|
|
52
|
-
/** Human-readable name shown in the
|
|
52
|
+
/** Human-readable name shown in the model picker. */
|
|
53
53
|
readonly displayName: string;
|
|
54
54
|
/** Pricing bracket used for cost-tier indicators in the UI. */
|
|
55
55
|
readonly costTier: CostTier;
|
|
56
|
+
/** Which execution engine serves this model. */
|
|
57
|
+
readonly harness: HarnessOption;
|
|
58
|
+
/**
|
|
59
|
+
* When `true`, appears in the curated default list (the short view
|
|
60
|
+
* before "Show All Models" is expanded or search is used).
|
|
61
|
+
*/
|
|
62
|
+
readonly featured: boolean;
|
|
56
63
|
}
|
|
57
64
|
/**
|
|
58
|
-
*
|
|
65
|
+
* Per-model cost entry for programmatic access to pricing data.
|
|
66
|
+
* Re-exported for consumers that need dollar-level pricing beyond the
|
|
67
|
+
* coarse `CostTier` label.
|
|
68
|
+
*/
|
|
69
|
+
export interface ModelCostEntry {
|
|
70
|
+
readonly modelId: string;
|
|
71
|
+
readonly inputPricePerMillion: number;
|
|
72
|
+
readonly outputPricePerMillion: number;
|
|
73
|
+
readonly cacheWritePricePerMillion: number;
|
|
74
|
+
readonly cacheReadPricePerMillion: number;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Build a compound key that uniquely identifies a model across harnesses.
|
|
78
|
+
*
|
|
79
|
+
* The same underlying model name (e.g. `claude-4.6-sonnet`) can exist in
|
|
80
|
+
* both native and cursor harnesses. The compound key disambiguates.
|
|
81
|
+
*/
|
|
82
|
+
export declare function modelKey(harness: HarnessOption, modelId: string): string;
|
|
83
|
+
/** Parsed result of a compound `harness/modelId` key. */
|
|
84
|
+
export interface ParsedModelKey {
|
|
85
|
+
/** Harness portion of the compound key. */
|
|
86
|
+
harness: HarnessOption;
|
|
87
|
+
/** Model ID portion of the compound key. */
|
|
88
|
+
modelId: string;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Parse a compound key back into its `(harness, modelId)` parts.
|
|
92
|
+
* Returns `undefined` for malformed keys.
|
|
93
|
+
*/
|
|
94
|
+
export declare function parseModelKey(key: string): ParsedModelKey | undefined;
|
|
95
|
+
/**
|
|
96
|
+
* Static catalog of all platform-supported LLM models, loaded from the
|
|
97
|
+
* unified JSON registry.
|
|
59
98
|
*
|
|
60
|
-
* Each entry carries the metadata needed for model selection UI.
|
|
61
99
|
* {@link useModelRegistry} filters out disabled providers and provides
|
|
62
100
|
* lookup helpers on top of this list.
|
|
63
101
|
*/
|
|
64
102
|
export declare const MODEL_REGISTRY: readonly ModelInfo[];
|
|
65
|
-
/** Model ID used when no user preference is set. */
|
|
103
|
+
/** Model ID used when no user preference is set (native harness). */
|
|
66
104
|
export declare const DEFAULT_MODEL_ID = "claude-sonnet-4.5";
|
|
105
|
+
/** Model ID used when the Cursor harness is selected and no user preference is set. */
|
|
106
|
+
export declare const DEFAULT_CURSOR_MODEL_ID = "default";
|
|
67
107
|
//# sourceMappingURL=registry.d.ts.map
|
package/models/registry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/models/registry.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/models/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG/C;;;;;;GAMG;AACH,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;AAE1D;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAChB,WAAW,GACX,QAAQ,GACR,QAAQ,GACR,KAAK,GACL,QAAQ,GACR,UAAU,GACV,QAAQ,CAAC;AAEb;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,QAAQ,CAEnD,CAAC;AAEH;;;;;;;;;;GAUG;AACH,MAAM,WAAW,SAAS;IACxB,gFAAgF;IAChF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,2CAA2C;IAC3C,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,qDAAqD;IACrD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,+DAA+D;IAC/D,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,gDAAgD;IAChD,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;CAC3C;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAExE;AAED,yDAAyD;AACzD,MAAM,WAAW,cAAc;IAC7B,2CAA2C;IAC3C,OAAO,EAAE,aAAa,CAAC;IACvB,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAMrE;AAmCD;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,SAAS,EAW1C,CAAC;AAEN,qEAAqE;AACrE,eAAO,MAAM,gBAAgB,sBAAsB,CAAC;AAEpD,uFAAuF;AACvF,eAAO,MAAM,uBAAuB,YAAY,CAAC"}
|
package/models/registry.js
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Model registry — UI-relevant metadata for all platform-supported LLM models.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Reads from the unified JSON registry at backend/libs/model-registry.json,
|
|
5
|
+
* which is the single source of truth for model IDs, display names, pricing,
|
|
6
|
+
* and cost tiers across all harnesses and runtimes.
|
|
6
7
|
*
|
|
7
|
-
*
|
|
8
|
-
* with a dynamic query; when that happens consumers will only need to
|
|
9
|
-
* swap from the static constant to a fetched result — the shape stays
|
|
10
|
-
* the same.
|
|
8
|
+
* Update it with: @update-model-registry
|
|
11
9
|
*/
|
|
10
|
+
import registryData from "../../data/model-registry.json";
|
|
12
11
|
/**
|
|
13
12
|
* Providers whose models should be hidden from the UI.
|
|
14
13
|
*
|
|
@@ -19,46 +18,58 @@
|
|
|
19
18
|
* To re-enable a provider, simply remove it from this set.
|
|
20
19
|
*/
|
|
21
20
|
export const DISABLED_PROVIDERS = new Set([
|
|
22
|
-
"openai",
|
|
23
21
|
"ollama",
|
|
24
22
|
]);
|
|
25
23
|
/**
|
|
26
|
-
*
|
|
24
|
+
* Build a compound key that uniquely identifies a model across harnesses.
|
|
25
|
+
*
|
|
26
|
+
* The same underlying model name (e.g. `claude-4.6-sonnet`) can exist in
|
|
27
|
+
* both native and cursor harnesses. The compound key disambiguates.
|
|
28
|
+
*/
|
|
29
|
+
export function modelKey(harness, modelId) {
|
|
30
|
+
return `${harness}/${modelId}`;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Parse a compound key back into its `(harness, modelId)` parts.
|
|
34
|
+
* Returns `undefined` for malformed keys.
|
|
35
|
+
*/
|
|
36
|
+
export function parseModelKey(key) {
|
|
37
|
+
const idx = key.indexOf("/");
|
|
38
|
+
if (idx < 1)
|
|
39
|
+
return undefined;
|
|
40
|
+
const harness = key.slice(0, idx);
|
|
41
|
+
if (harness !== "native" && harness !== "cursor")
|
|
42
|
+
return undefined;
|
|
43
|
+
return { harness, modelId: key.slice(idx + 1) };
|
|
44
|
+
}
|
|
45
|
+
const VALID_COST_TIERS = new Set(["economy", "standard", "premium"]);
|
|
46
|
+
const VALID_HARNESSES = new Set(["native", "cursor"]);
|
|
47
|
+
function isModelEntry(entry) {
|
|
48
|
+
return (typeof entry.id === "string" &&
|
|
49
|
+
typeof entry.displayName === "string" &&
|
|
50
|
+
typeof entry.provider === "string" &&
|
|
51
|
+
typeof entry.harness === "string" && VALID_HARNESSES.has(entry.harness) &&
|
|
52
|
+
typeof entry.costTier === "string" && VALID_COST_TIERS.has(entry.costTier));
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Static catalog of all platform-supported LLM models, loaded from the
|
|
56
|
+
* unified JSON registry.
|
|
27
57
|
*
|
|
28
|
-
* Each entry carries the metadata needed for model selection UI.
|
|
29
58
|
* {@link useModelRegistry} filters out disabled providers and provides
|
|
30
59
|
* lookup helpers on top of this list.
|
|
31
60
|
*/
|
|
32
|
-
export const MODEL_REGISTRY =
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
{ modelId: "claude-sonnet-3.5", provider: "anthropic", displayName: "Claude Sonnet 3.5", costTier: "standard" },
|
|
44
|
-
{ modelId: "claude-haiku-3.5", provider: "anthropic", displayName: "Claude Haiku 3.5", costTier: "economy" },
|
|
45
|
-
// ── OpenAI ────────────────────────────────────────────────────────
|
|
46
|
-
{ modelId: "gpt-4", provider: "openai", displayName: "GPT-4", costTier: "premium" },
|
|
47
|
-
{ modelId: "gpt-4-turbo", provider: "openai", displayName: "GPT-4 Turbo", costTier: "standard" },
|
|
48
|
-
{ modelId: "gpt-4o", provider: "openai", displayName: "GPT-4o", costTier: "standard" },
|
|
49
|
-
{ modelId: "gpt-4o-mini", provider: "openai", displayName: "GPT-4o Mini", costTier: "economy" },
|
|
50
|
-
{ modelId: "gpt-3.5-turbo", provider: "openai", displayName: "GPT-3.5 Turbo", costTier: "economy" },
|
|
51
|
-
{ modelId: "o1", provider: "openai", displayName: "o1", costTier: "premium" },
|
|
52
|
-
{ modelId: "o1-mini", provider: "openai", displayName: "o1 Mini", costTier: "standard" },
|
|
53
|
-
// ── Ollama (local, no cost) ───────────────────────────────────────
|
|
54
|
-
{ modelId: "qwen2.5-coder:7b", provider: "ollama", displayName: "Qwen 2.5 Coder 7B", costTier: "economy" },
|
|
55
|
-
{ modelId: "qwen2.5-coder:14b", provider: "ollama", displayName: "Qwen 2.5 Coder 14B", costTier: "economy" },
|
|
56
|
-
{ modelId: "codellama:7b", provider: "ollama", displayName: "Code Llama 7B", costTier: "economy" },
|
|
57
|
-
{ modelId: "codellama:13b", provider: "ollama", displayName: "Code Llama 13B", costTier: "economy" },
|
|
58
|
-
{ modelId: "deepseek-coder-v2:16b", provider: "ollama", displayName: "DeepSeek Coder V2 16B", costTier: "economy" },
|
|
59
|
-
{ modelId: "llama3.2:3b", provider: "ollama", displayName: "Llama 3.2 3B", costTier: "economy" },
|
|
60
|
-
{ modelId: "mistral:7b", provider: "ollama", displayName: "Mistral 7B", costTier: "economy" },
|
|
61
|
-
];
|
|
62
|
-
/** Model ID used when no user preference is set. */
|
|
61
|
+
export const MODEL_REGISTRY = registryData.models
|
|
62
|
+
.filter(isModelEntry)
|
|
63
|
+
.map((m) => ({
|
|
64
|
+
modelId: m.id,
|
|
65
|
+
provider: m.provider,
|
|
66
|
+
displayName: m.displayName,
|
|
67
|
+
costTier: m.costTier,
|
|
68
|
+
harness: m.harness,
|
|
69
|
+
featured: m.featured ?? false,
|
|
70
|
+
}));
|
|
71
|
+
/** Model ID used when no user preference is set (native harness). */
|
|
63
72
|
export const DEFAULT_MODEL_ID = "claude-sonnet-4.5";
|
|
73
|
+
/** Model ID used when the Cursor harness is selected and no user preference is set. */
|
|
74
|
+
export const DEFAULT_CURSOR_MODEL_ID = "default";
|
|
64
75
|
//# sourceMappingURL=registry.js.map
|
package/models/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/models/registry.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/models/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,YAAY,MAAM,gCAAgC,CAAC;AA0B1D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAA0B,IAAI,GAAG,CAAC;IAC/D,QAAQ;CACT,CAAC,CAAC;AA4CH;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAsB,EAAE,OAAe;IAC9D,OAAO,GAAG,OAAO,IAAI,OAAO,EAAE,CAAC;AACjC,CAAC;AAUD;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAC9B,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAClC,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IACnE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;AAClD,CAAC;AAsBD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;AACrE,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEtD,SAAS,YAAY,CAAC,KAAwB;IAC5C,OAAO,CACL,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ;QAC5B,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ;QACrC,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ;QAClC,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;QACvE,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAC3E,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GACzB,YAAY,CAAC,MACd;KACE,MAAM,CAAC,YAAY,CAAC;KACpB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,OAAO,EAAE,CAAC,CAAC,EAAE;IACb,QAAQ,EAAE,CAAC,CAAC,QAAoB;IAChC,WAAW,EAAE,CAAC,CAAC,WAAW;IAC1B,QAAQ,EAAE,CAAC,CAAC,QAAoB;IAChC,OAAO,EAAE,CAAC,CAAC,OAAwB;IACnC,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,KAAK;CAC9B,CAAC,CAAC,CAAC;AAEN,qEAAqE;AACrE,MAAM,CAAC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAEpD,uFAAuF;AACvF,MAAM,CAAC,MAAM,uBAAuB,GAAG,SAAS,CAAC"}
|