@patze/code-cli 0.42.0 → 0.43.0
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/CHANGELOG.md +55 -0
- package/VERSION +1 -1
- package/dist/cli/commands/runs-format.d.ts.map +1 -1
- package/dist/cli/commands/runs-format.js +3 -2
- package/dist/cli/commands/runs-format.js.map +1 -1
- package/dist/cli/commands/runs.d.ts.map +1 -1
- package/dist/cli/commands/runs.js +2 -1
- package/dist/cli/commands/runs.js.map +1 -1
- package/dist/cli/interactive/composer-session-chrome.d.ts.map +1 -1
- package/dist/cli/interactive/composer-session-chrome.js +1 -0
- package/dist/cli/interactive/composer-session-chrome.js.map +1 -1
- package/dist/cli/interactive/header.d.ts +1 -0
- package/dist/cli/interactive/header.d.ts.map +1 -1
- package/dist/cli/interactive/header.js +2 -0
- package/dist/cli/interactive/header.js.map +1 -1
- package/dist/cli/interactive/model-command.d.ts +1 -0
- package/dist/cli/interactive/model-command.d.ts.map +1 -1
- package/dist/cli/interactive/model-command.js +6 -13
- package/dist/cli/interactive/model-command.js.map +1 -1
- package/dist/cli/interactive/model-picker-panel.d.ts +40 -0
- package/dist/cli/interactive/model-picker-panel.d.ts.map +1 -0
- package/dist/cli/interactive/model-picker-panel.js +170 -0
- package/dist/cli/interactive/model-picker-panel.js.map +1 -0
- package/dist/cli/interactive/model-selection-apply.d.ts +6 -0
- package/dist/cli/interactive/model-selection-apply.d.ts.map +1 -0
- package/dist/cli/interactive/model-selection-apply.js +15 -0
- package/dist/cli/interactive/model-selection-apply.js.map +1 -0
- package/dist/cli/interactive/model-selector.d.ts +13 -0
- package/dist/cli/interactive/model-selector.d.ts.map +1 -0
- package/dist/cli/interactive/model-selector.js +55 -0
- package/dist/cli/interactive/model-selector.js.map +1 -0
- package/dist/cli/interactive/model-tty-picker.d.ts +18 -0
- package/dist/cli/interactive/model-tty-picker.d.ts.map +1 -0
- package/dist/cli/interactive/model-tty-picker.js +230 -0
- package/dist/cli/interactive/model-tty-picker.js.map +1 -0
- package/dist/cli/interactive/permissions-keys.d.ts +8 -0
- package/dist/cli/interactive/permissions-keys.d.ts.map +1 -1
- package/dist/cli/interactive/permissions-keys.js +28 -0
- package/dist/cli/interactive/permissions-keys.js.map +1 -1
- package/dist/cli/interactive/run-replay.d.ts.map +1 -1
- package/dist/cli/interactive/run-replay.js +2 -1
- package/dist/cli/interactive/run-replay.js.map +1 -1
- package/dist/cli/interactive/session-controller.d.ts.map +1 -1
- package/dist/cli/interactive/session-controller.js +3 -0
- package/dist/cli/interactive/session-controller.js.map +1 -1
- package/dist/cli/interactive/session-hints.js +1 -1
- package/dist/cli/interactive/session-hints.js.map +1 -1
- package/dist/cli/interactive/session-store.d.ts +1 -0
- package/dist/cli/interactive/session-store.d.ts.map +1 -1
- package/dist/cli/interactive/session-store.js +2 -0
- package/dist/cli/interactive/session-store.js.map +1 -1
- package/dist/cli/interactive/session.d.ts +6 -0
- package/dist/cli/interactive/session.d.ts.map +1 -1
- package/dist/cli/interactive/session.js +22 -1
- package/dist/cli/interactive/session.js.map +1 -1
- package/dist/cli/interactive/slash-dispatch.d.ts +2 -0
- package/dist/cli/interactive/slash-dispatch.d.ts.map +1 -1
- package/dist/cli/interactive/slash-dispatch.js +17 -5
- package/dist/cli/interactive/slash-dispatch.js.map +1 -1
- package/dist/cli/interactive/slash-registry.d.ts.map +1 -1
- package/dist/cli/interactive/slash-registry.js +4 -1
- package/dist/cli/interactive/slash-registry.js.map +1 -1
- package/dist/cli/interactive/tty-arrow-selector.d.ts +17 -0
- package/dist/cli/interactive/tty-arrow-selector.d.ts.map +1 -0
- package/dist/cli/interactive/tty-arrow-selector.js +110 -0
- package/dist/cli/interactive/tty-arrow-selector.js.map +1 -0
- package/dist/config/model-preferences.d.ts +2 -0
- package/dist/config/model-preferences.d.ts.map +1 -1
- package/dist/config/model-preferences.js +14 -4
- package/dist/config/model-preferences.js.map +1 -1
- package/dist/config/model-reasoning.d.ts +15 -0
- package/dist/config/model-reasoning.d.ts.map +1 -0
- package/dist/config/model-reasoning.js +132 -0
- package/dist/config/model-reasoning.js.map +1 -0
- package/dist/config/models.d.ts +10 -0
- package/dist/config/models.d.ts.map +1 -1
- package/dist/config/models.js +133 -31
- package/dist/config/models.js.map +1 -1
- package/opentui/src/App.tsx +11 -9
- package/package.json +1 -1
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { isPatzeDefaultModel, normalizeModelId } from "./models.js";
|
|
2
|
+
const OPENAI_FRONTIER_REASONING = [
|
|
3
|
+
{
|
|
4
|
+
id: "low",
|
|
5
|
+
label: "Low",
|
|
6
|
+
description: "Fast responses with lighter reasoning",
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
id: "medium",
|
|
10
|
+
label: "Medium",
|
|
11
|
+
description: "Balances speed and reasoning depth for everyday tasks",
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
id: "high",
|
|
15
|
+
label: "High",
|
|
16
|
+
description: "Greater reasoning depth for complex problems",
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
id: "xhigh",
|
|
20
|
+
label: "Extra high",
|
|
21
|
+
description: "Extra high reasoning depth for complex problems",
|
|
22
|
+
},
|
|
23
|
+
];
|
|
24
|
+
const OPENAI_MINI_REASONING = [
|
|
25
|
+
{
|
|
26
|
+
id: "low",
|
|
27
|
+
label: "Low",
|
|
28
|
+
description: "Fast responses with lighter reasoning",
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
id: "medium",
|
|
32
|
+
label: "Medium",
|
|
33
|
+
description: "Balances speed and cost for simpler coding tasks",
|
|
34
|
+
},
|
|
35
|
+
];
|
|
36
|
+
const ANTHROPIC_OPUS_REASONING = [
|
|
37
|
+
{
|
|
38
|
+
id: "low",
|
|
39
|
+
label: "Low",
|
|
40
|
+
description: "Faster responses with lighter reasoning depth",
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
id: "medium",
|
|
44
|
+
label: "Medium",
|
|
45
|
+
description: "Balanced reasoning for everyday coding work",
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
id: "high",
|
|
49
|
+
label: "High",
|
|
50
|
+
description: "Deeper reasoning for complex problems",
|
|
51
|
+
},
|
|
52
|
+
];
|
|
53
|
+
export function getReasoningLevelsForModelId(modelId) {
|
|
54
|
+
const normalized = (normalizeModelId(modelId) ?? modelId).toLowerCase();
|
|
55
|
+
if (isPatzeDefaultModel(normalized)) {
|
|
56
|
+
return [];
|
|
57
|
+
}
|
|
58
|
+
if (normalized.startsWith("gpt-5.4-mini")) {
|
|
59
|
+
return [...OPENAI_MINI_REASONING];
|
|
60
|
+
}
|
|
61
|
+
if (normalized.startsWith("gpt-5")) {
|
|
62
|
+
return [...OPENAI_FRONTIER_REASONING];
|
|
63
|
+
}
|
|
64
|
+
if (normalized.includes("claude-opus")) {
|
|
65
|
+
return [...ANTHROPIC_OPUS_REASONING];
|
|
66
|
+
}
|
|
67
|
+
return [];
|
|
68
|
+
}
|
|
69
|
+
export function modelSupportsReasoningPicker(modelId) {
|
|
70
|
+
return getReasoningLevelsForModelId(modelId).length > 1;
|
|
71
|
+
}
|
|
72
|
+
export function getDefaultReasoningLevel(modelId) {
|
|
73
|
+
const normalized = (normalizeModelId(modelId) ?? modelId).toLowerCase();
|
|
74
|
+
if (normalized.includes("-thinking-high")) {
|
|
75
|
+
return "high";
|
|
76
|
+
}
|
|
77
|
+
if (normalized.includes("-thinking-low")) {
|
|
78
|
+
return "low";
|
|
79
|
+
}
|
|
80
|
+
return "medium";
|
|
81
|
+
}
|
|
82
|
+
export function reasoningLevelToThinking(level) {
|
|
83
|
+
switch (level) {
|
|
84
|
+
case "low":
|
|
85
|
+
return false;
|
|
86
|
+
case "high":
|
|
87
|
+
case "xhigh":
|
|
88
|
+
return true;
|
|
89
|
+
case "medium":
|
|
90
|
+
default:
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
export function thinkingToReasoningLevel(thinking) {
|
|
95
|
+
if (thinking === true) {
|
|
96
|
+
return "high";
|
|
97
|
+
}
|
|
98
|
+
if (thinking === false) {
|
|
99
|
+
return "low";
|
|
100
|
+
}
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
export function formatReasoningLevelShort(level) {
|
|
104
|
+
switch (level) {
|
|
105
|
+
case "low":
|
|
106
|
+
return "low";
|
|
107
|
+
case "medium":
|
|
108
|
+
return "medium";
|
|
109
|
+
case "high":
|
|
110
|
+
return "high";
|
|
111
|
+
case "xhigh":
|
|
112
|
+
return "extra high";
|
|
113
|
+
default:
|
|
114
|
+
return level;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
export function resolveWireModelId(catalogId, level) {
|
|
118
|
+
const normalized = normalizeModelId(catalogId) ?? catalogId;
|
|
119
|
+
const effort = level ?? getDefaultReasoningLevel(normalized);
|
|
120
|
+
if (!normalized.includes("claude-opus") || !normalized.includes("-thinking-")) {
|
|
121
|
+
return normalized;
|
|
122
|
+
}
|
|
123
|
+
const wireEffort = effort === "xhigh" ? "high" : effort === "low" ? "low" : effort === "high" ? "high" : "medium";
|
|
124
|
+
return normalized.replace(/-thinking-(?:low|medium|high)$/, `-thinking-${wireEffort}`);
|
|
125
|
+
}
|
|
126
|
+
export function normalizeReasoningLevel(value) {
|
|
127
|
+
if (value === "low" || value === "medium" || value === "high" || value === "xhigh") {
|
|
128
|
+
return value;
|
|
129
|
+
}
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=model-reasoning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-reasoning.js","sourceRoot":"","sources":["../../src/config/model-reasoning.ts"],"names":[],"mappings":"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"}
|
package/dist/config/models.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import type { ModelPreferences } from "./model-preferences.js";
|
|
2
|
+
/** Wire id sent to Cursor/backend — never shown in user-facing UI. */
|
|
2
3
|
export declare const DEFAULT_PATZE_MODEL = "composer-2.5-fast";
|
|
4
|
+
/** Primary user-facing brand for the default agent model. */
|
|
5
|
+
export declare const PATZE_DEFAULT_DISPLAY_NAME = "Patze";
|
|
3
6
|
export type PatzeModelCatalogEntry = {
|
|
4
7
|
id: string;
|
|
5
8
|
displayName: string;
|
|
@@ -9,7 +12,13 @@ export type PatzeModelCatalogEntry = {
|
|
|
9
12
|
export declare const PATZE_MODEL_CATALOG: readonly PatzeModelCatalogEntry[];
|
|
10
13
|
/** Models aligned with server PATZE_CODE_CURSOR_MODEL_FALLBACKS + cookbook defaults. */
|
|
11
14
|
export declare const PATZE_SUPPORTED_MODELS: readonly string[];
|
|
15
|
+
export declare function isPatzeDefaultModel(value: string | null | undefined): boolean;
|
|
12
16
|
export declare function formatModelDisplayName(modelId: string): string;
|
|
17
|
+
/** Resolved config model for `patze config` and other ops surfaces. */
|
|
18
|
+
export declare function formatConfigModelLabel(configModel: string | null | undefined): string;
|
|
19
|
+
export declare function formatAgentModelLabel(modelId: string | null | undefined): string;
|
|
20
|
+
/** Collapse Patze-default wire ids and aliases to one catalog row in pickers. */
|
|
21
|
+
export declare function dedupeModelIds(modelIds: readonly string[]): string[];
|
|
13
22
|
export declare function getModelCatalogEntry(modelId: string): PatzeModelCatalogEntry | null;
|
|
14
23
|
export declare function normalizeModelId(value: string | null | undefined): string | null;
|
|
15
24
|
export declare function isSupportedModelId(value: string): boolean;
|
|
@@ -17,5 +26,6 @@ export declare function resolveEffectiveModel(input: {
|
|
|
17
26
|
sessionOverride?: string | null;
|
|
18
27
|
configModel?: string | null;
|
|
19
28
|
}): string;
|
|
29
|
+
export declare function formatModelCatalogLabel(entry: PatzeModelCatalogEntry): string;
|
|
20
30
|
export declare function formatModelPickerLines(current: string, prefs?: ModelPreferences): string[];
|
|
21
31
|
//# sourceMappingURL=models.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/config/models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAE9D,eAAO,MAAM,mBAAmB,sBAAsB,CAAA;AAEtD,MAAM,MAAM,sBAAsB,GAAG;IACnC,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,mEAAmE;
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/config/models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAE9D,sEAAsE;AACtE,eAAO,MAAM,mBAAmB,sBAAsB,CAAA;AAEtD,6DAA6D;AAC7D,eAAO,MAAM,0BAA0B,UAAU,CAAA;AAEjD,MAAM,MAAM,sBAAsB,GAAG;IACnC,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,mEAAmE;AAGnE,eAAO,MAAM,mBAAmB,EAAE,SAAS,sBAAsB,EA0BvD,CAAA;AAEV,wFAAwF;AACxF,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAEnD,CAAA;AAmDD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAS7E;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAmB9D;AAED,uEAAuE;AACvE,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAKrF;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAMhF;AAED,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAsBpE;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,sBAAsB,GAAG,IAAI,CAUnF;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAYhF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAMzD;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B,GAAG,MAAM,CAcT;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAE7E;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,gBAAgB,GAAG,MAAM,EAAE,CA0B1F"}
|
package/dist/config/models.js
CHANGED
|
@@ -1,45 +1,139 @@
|
|
|
1
|
+
/** Wire id sent to Cursor/backend — never shown in user-facing UI. */
|
|
1
2
|
export const DEFAULT_PATZE_MODEL = "composer-2.5-fast";
|
|
3
|
+
/** Primary user-facing brand for the default agent model. */
|
|
4
|
+
export const PATZE_DEFAULT_DISPLAY_NAME = "Patze";
|
|
2
5
|
/** User-facing model catalog (wire ids stay Cursor/OpenAI ids). */
|
|
6
|
+
// Display rule: ONLY `composer-2.5-fast` (and its fast aliases) → Patze.
|
|
7
|
+
// Composer tiers (`composer-2.5`, `composer-2`) are not offered in the CLI catalog.
|
|
3
8
|
export const PATZE_MODEL_CATALOG = [
|
|
4
9
|
{
|
|
5
|
-
id:
|
|
6
|
-
displayName:
|
|
7
|
-
description: "Default agent
|
|
10
|
+
id: DEFAULT_PATZE_MODEL,
|
|
11
|
+
displayName: PATZE_DEFAULT_DISPLAY_NAME,
|
|
12
|
+
description: "Default Patze agent for everyday coding",
|
|
8
13
|
},
|
|
9
14
|
{
|
|
10
|
-
id: "
|
|
11
|
-
displayName: "
|
|
12
|
-
description: "
|
|
15
|
+
id: "gpt-5.5",
|
|
16
|
+
displayName: "GPT-5.5",
|
|
17
|
+
description: "Frontier model for complex coding, research, and real-world work",
|
|
13
18
|
},
|
|
14
19
|
{
|
|
15
|
-
id: "
|
|
16
|
-
displayName: "
|
|
17
|
-
description: "
|
|
20
|
+
id: "gpt-5.4",
|
|
21
|
+
displayName: "GPT-5.4",
|
|
22
|
+
description: "Strong model for everyday coding",
|
|
18
23
|
},
|
|
19
24
|
{
|
|
20
25
|
id: "gpt-5.4-mini",
|
|
21
26
|
displayName: "GPT-5.4 mini",
|
|
22
|
-
description: "
|
|
27
|
+
description: "Small, fast, and cost-efficient model for simpler coding tasks",
|
|
23
28
|
},
|
|
24
29
|
{
|
|
25
|
-
id: "
|
|
26
|
-
displayName: "
|
|
27
|
-
description: "
|
|
30
|
+
id: "claude-opus-4-7-thinking-medium",
|
|
31
|
+
displayName: "Opus 4.7",
|
|
32
|
+
description: "Top-tier reasoning for complex problems and careful edits",
|
|
28
33
|
},
|
|
29
34
|
];
|
|
30
35
|
/** Models aligned with server PATZE_CODE_CURSOR_MODEL_FALLBACKS + cookbook defaults. */
|
|
31
36
|
export const PATZE_SUPPORTED_MODELS = PATZE_MODEL_CATALOG.map((entry) => entry.id);
|
|
32
37
|
const MODEL_ALIASES = {
|
|
33
|
-
patze:
|
|
34
|
-
"patze-fast":
|
|
38
|
+
patze: DEFAULT_PATZE_MODEL,
|
|
39
|
+
"patze-fast": DEFAULT_PATZE_MODEL,
|
|
40
|
+
"composer 2.5 fast": DEFAULT_PATZE_MODEL,
|
|
41
|
+
"composer 2.5-fast": DEFAULT_PATZE_MODEL,
|
|
42
|
+
"composer-2.5 fast": DEFAULT_PATZE_MODEL,
|
|
43
|
+
"composer2.5fast": DEFAULT_PATZE_MODEL,
|
|
44
|
+
"gpt 5.5": "gpt-5.5",
|
|
45
|
+
"gpt5.5": "gpt-5.5",
|
|
46
|
+
"opus 4.7": "claude-opus-4-7-thinking-medium",
|
|
47
|
+
"claude opus 4.7": "claude-opus-4-7-thinking-medium",
|
|
48
|
+
"claude-4.7-opus": "claude-opus-4-7-thinking-medium",
|
|
35
49
|
};
|
|
50
|
+
function compactModelToken(value) {
|
|
51
|
+
return value.trim().toLowerCase().replace(/[^a-z0-9]/g, "");
|
|
52
|
+
}
|
|
53
|
+
function lookupModelAlias(value) {
|
|
54
|
+
const trimmed = value.trim().toLowerCase();
|
|
55
|
+
if (!trimmed) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
const direct = MODEL_ALIASES[trimmed];
|
|
59
|
+
if (direct) {
|
|
60
|
+
return direct;
|
|
61
|
+
}
|
|
62
|
+
const spaced = trimmed.replace(/\s+/g, " ");
|
|
63
|
+
const spacedAlias = MODEL_ALIASES[spaced];
|
|
64
|
+
if (spacedAlias) {
|
|
65
|
+
return spacedAlias;
|
|
66
|
+
}
|
|
67
|
+
const slug = trimmed.replace(/\s+/g, "-");
|
|
68
|
+
const slugAlias = MODEL_ALIASES[slug];
|
|
69
|
+
if (slugAlias) {
|
|
70
|
+
return slugAlias;
|
|
71
|
+
}
|
|
72
|
+
const compact = compactModelToken(trimmed);
|
|
73
|
+
if (compact === "composer25fast" || compact === "patze" || compact === "patzefast") {
|
|
74
|
+
return DEFAULT_PATZE_MODEL;
|
|
75
|
+
}
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
export function isPatzeDefaultModel(value) {
|
|
79
|
+
const resolved = normalizeModelId(value);
|
|
80
|
+
if (resolved?.toLowerCase() === DEFAULT_PATZE_MODEL) {
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
if (!value?.trim()) {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
return lookupModelAlias(value) === DEFAULT_PATZE_MODEL;
|
|
87
|
+
}
|
|
36
88
|
export function formatModelDisplayName(modelId) {
|
|
89
|
+
if (isPatzeDefaultModel(modelId)) {
|
|
90
|
+
return PATZE_DEFAULT_DISPLAY_NAME;
|
|
91
|
+
}
|
|
37
92
|
const normalized = normalizeModelId(modelId);
|
|
38
93
|
if (!normalized) {
|
|
39
|
-
return modelId.trim() ||
|
|
94
|
+
return modelId.trim() || PATZE_DEFAULT_DISPLAY_NAME;
|
|
40
95
|
}
|
|
41
96
|
const entry = PATZE_MODEL_CATALOG.find((candidate) => candidate.id.toLowerCase() === normalized.toLowerCase());
|
|
42
|
-
|
|
97
|
+
if (entry) {
|
|
98
|
+
return entry.displayName;
|
|
99
|
+
}
|
|
100
|
+
if (isPatzeDefaultModel(normalized)) {
|
|
101
|
+
return PATZE_DEFAULT_DISPLAY_NAME;
|
|
102
|
+
}
|
|
103
|
+
return normalized;
|
|
104
|
+
}
|
|
105
|
+
/** Resolved config model for `patze config` and other ops surfaces. */
|
|
106
|
+
export function formatConfigModelLabel(configModel) {
|
|
107
|
+
if (!configModel?.trim()) {
|
|
108
|
+
return `${PATZE_DEFAULT_DISPLAY_NAME} (default)`;
|
|
109
|
+
}
|
|
110
|
+
return formatModelDisplayName(configModel);
|
|
111
|
+
}
|
|
112
|
+
export function formatAgentModelLabel(modelId) {
|
|
113
|
+
const trimmed = modelId?.trim();
|
|
114
|
+
if (!trimmed) {
|
|
115
|
+
return "unknown";
|
|
116
|
+
}
|
|
117
|
+
return formatModelDisplayName(trimmed);
|
|
118
|
+
}
|
|
119
|
+
/** Collapse Patze-default wire ids and aliases to one catalog row in pickers. */
|
|
120
|
+
export function dedupeModelIds(modelIds) {
|
|
121
|
+
const seen = new Set();
|
|
122
|
+
const result = [];
|
|
123
|
+
for (const raw of modelIds) {
|
|
124
|
+
const normalized = normalizeModelId(raw);
|
|
125
|
+
const key = isPatzeDefaultModel(raw) || normalized?.toLowerCase() === DEFAULT_PATZE_MODEL
|
|
126
|
+
? DEFAULT_PATZE_MODEL
|
|
127
|
+
: (normalized ?? raw).toLowerCase();
|
|
128
|
+
if (seen.has(key)) {
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
seen.add(key);
|
|
132
|
+
result.push(isPatzeDefaultModel(raw) || normalized?.toLowerCase() === DEFAULT_PATZE_MODEL
|
|
133
|
+
? DEFAULT_PATZE_MODEL
|
|
134
|
+
: (normalized ?? raw));
|
|
135
|
+
}
|
|
136
|
+
return result;
|
|
43
137
|
}
|
|
44
138
|
export function getModelCatalogEntry(modelId) {
|
|
45
139
|
const normalized = normalizeModelId(modelId);
|
|
@@ -53,7 +147,7 @@ export function normalizeModelId(value) {
|
|
|
53
147
|
if (!trimmed) {
|
|
54
148
|
return null;
|
|
55
149
|
}
|
|
56
|
-
const alias =
|
|
150
|
+
const alias = lookupModelAlias(trimmed);
|
|
57
151
|
if (alias) {
|
|
58
152
|
return alias;
|
|
59
153
|
}
|
|
@@ -83,24 +177,32 @@ export function resolveEffectiveModel(input) {
|
|
|
83
177
|
}
|
|
84
178
|
return DEFAULT_PATZE_MODEL;
|
|
85
179
|
}
|
|
180
|
+
export function formatModelCatalogLabel(entry) {
|
|
181
|
+
return entry.displayName;
|
|
182
|
+
}
|
|
86
183
|
export function formatModelPickerLines(current, prefs) {
|
|
87
184
|
const currentId = normalizeModelId(current) ?? DEFAULT_PATZE_MODEL;
|
|
88
185
|
const currentLabel = formatModelDisplayName(currentId);
|
|
89
|
-
const lines = [
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
"",
|
|
93
|
-
].filter(Boolean);
|
|
94
|
-
if (prefs) {
|
|
95
|
-
lines.push(` thinking ${prefs.thinking === null ? "auto" : prefs.thinking ? "on" : "off"} · fast ${prefs.fast === null ? "auto" : prefs.fast ? "on" : "off"}`, "");
|
|
96
|
-
}
|
|
97
|
-
for (const entry of PATZE_MODEL_CATALOG) {
|
|
98
|
-
const marker = entry.id.toLowerCase() === currentId.toLowerCase() ? "›" : " ";
|
|
99
|
-
lines.push(` ${marker} ${entry.displayName} (${entry.id})`);
|
|
100
|
-
lines.push(` ${entry.description}`);
|
|
186
|
+
const lines = [`Model · ${currentLabel}`];
|
|
187
|
+
if (prefs?.reasoningLevel) {
|
|
188
|
+
lines[0] = `Model · ${currentLabel} ${prefs.reasoningLevel}`;
|
|
101
189
|
}
|
|
102
190
|
lines.push("");
|
|
103
|
-
|
|
191
|
+
PATZE_MODEL_CATALOG.forEach((entry, index) => {
|
|
192
|
+
const isCurrent = entry.id.toLowerCase() === currentId.toLowerCase();
|
|
193
|
+
const suffixParts = [];
|
|
194
|
+
if (entry.id === DEFAULT_PATZE_MODEL) {
|
|
195
|
+
suffixParts.push("(default)");
|
|
196
|
+
}
|
|
197
|
+
if (isCurrent) {
|
|
198
|
+
suffixParts.push("(current)");
|
|
199
|
+
}
|
|
200
|
+
const suffix = suffixParts.length ? ` ${suffixParts.join(" ")}` : "";
|
|
201
|
+
const marker = isCurrent ? "›" : " ";
|
|
202
|
+
lines.push(`${marker} ${index + 1}. ${entry.displayName}${suffix} ${entry.description}`);
|
|
203
|
+
});
|
|
204
|
+
lines.push("");
|
|
205
|
+
lines.push("Press enter to confirm or esc to go back");
|
|
104
206
|
return lines;
|
|
105
207
|
}
|
|
106
208
|
//# sourceMappingURL=models.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/config/models.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/config/models.ts"],"names":[],"mappings":"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"}
|
package/opentui/src/App.tsx
CHANGED
|
@@ -25,10 +25,13 @@ import { upsertTranscriptEntry } from "../../dist/cli/interactive/transcript-ups
|
|
|
25
25
|
import { applyOpenTuiAgentEvent } from "../../dist/cli/interactive/opentui-agent-event.js"
|
|
26
26
|
import type { AgentEvent } from "../../dist/cli/interactive/agent-events.js"
|
|
27
27
|
import {
|
|
28
|
+
dedupeModelIds,
|
|
28
29
|
formatModelDisplayName,
|
|
29
30
|
getModelCatalogEntry,
|
|
31
|
+
isPatzeDefaultModel,
|
|
30
32
|
PATZE_MODEL_CATALOG,
|
|
31
33
|
} from "../../dist/config/models.js"
|
|
34
|
+
import { formatModelDisplay } from "../../dist/config/model-preferences.js"
|
|
32
35
|
|
|
33
36
|
extend({ "tui-input": InputRenderable })
|
|
34
37
|
|
|
@@ -467,6 +470,7 @@ export function App({ cwd: cwdArg }: { cwd?: string }) {
|
|
|
467
470
|
await submitToController("/help")
|
|
468
471
|
return
|
|
469
472
|
case "model":
|
|
473
|
+
case "models":
|
|
470
474
|
if (!args.trim()) {
|
|
471
475
|
openModelPicker()
|
|
472
476
|
return
|
|
@@ -545,7 +549,10 @@ export function App({ cwd: cwdArg }: { cwd?: string }) {
|
|
|
545
549
|
: composerChromeRows)
|
|
546
550
|
)
|
|
547
551
|
|
|
548
|
-
const composerModelLabel =
|
|
552
|
+
const composerModelLabel = formatModelDisplay(currentModel, {
|
|
553
|
+
thinking: modelThinking,
|
|
554
|
+
fast: modelFast,
|
|
555
|
+
})
|
|
549
556
|
const composerPathLabel = shortenComposerPath(cwd)
|
|
550
557
|
|
|
551
558
|
const scrollableEntries = useMemo(() => transcript, [transcript])
|
|
@@ -577,7 +584,7 @@ export function App({ cwd: cwdArg }: { cwd?: string }) {
|
|
|
577
584
|
|
|
578
585
|
const modelItems = useMemo(() => {
|
|
579
586
|
const catalogIds = PATZE_MODEL_CATALOG.map((entry) => entry.id)
|
|
580
|
-
const merged =
|
|
587
|
+
const merged = dedupeModelIds([...catalogIds, ...supportedModels])
|
|
581
588
|
const normalized = modelSearch.trim().toLowerCase()
|
|
582
589
|
return merged
|
|
583
590
|
.filter((model) => {
|
|
@@ -588,21 +595,16 @@ export function App({ cwd: cwdArg }: { cwd?: string }) {
|
|
|
588
595
|
if (model.toLowerCase().includes(normalized) || display.includes(normalized)) {
|
|
589
596
|
return true
|
|
590
597
|
}
|
|
591
|
-
if (normalized === "patze" && model
|
|
598
|
+
if (normalized === "patze" && isPatzeDefaultModel(model)) {
|
|
592
599
|
return true
|
|
593
600
|
}
|
|
594
601
|
return false
|
|
595
602
|
})
|
|
596
603
|
.map((model) => {
|
|
597
604
|
const entry = getModelCatalogEntry(model)
|
|
598
|
-
const isCurrent = model.toLowerCase() === currentModel.toLowerCase()
|
|
599
605
|
return {
|
|
600
606
|
name: formatModelDisplayName(model),
|
|
601
|
-
description:
|
|
602
|
-
? entry?.description
|
|
603
|
-
? `${entry.description} · current`
|
|
604
|
-
: "current"
|
|
605
|
-
: entry?.description ?? model,
|
|
607
|
+
description: entry?.description ?? "",
|
|
606
608
|
value: model,
|
|
607
609
|
}
|
|
608
610
|
})
|