@patze/code-cli 0.42.2 → 0.43.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.
Files changed (70) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/VERSION +1 -1
  3. package/dist/cli/commands/runs-format.d.ts.map +1 -1
  4. package/dist/cli/commands/runs-format.js +3 -2
  5. package/dist/cli/commands/runs-format.js.map +1 -1
  6. package/dist/cli/commands/runs.d.ts.map +1 -1
  7. package/dist/cli/commands/runs.js +2 -1
  8. package/dist/cli/commands/runs.js.map +1 -1
  9. package/dist/cli/interactive/composer-session-chrome.d.ts.map +1 -1
  10. package/dist/cli/interactive/composer-session-chrome.js +1 -0
  11. package/dist/cli/interactive/composer-session-chrome.js.map +1 -1
  12. package/dist/cli/interactive/header.d.ts +1 -0
  13. package/dist/cli/interactive/header.d.ts.map +1 -1
  14. package/dist/cli/interactive/header.js +2 -0
  15. package/dist/cli/interactive/header.js.map +1 -1
  16. package/dist/cli/interactive/model-command.d.ts.map +1 -1
  17. package/dist/cli/interactive/model-command.js +1 -0
  18. package/dist/cli/interactive/model-command.js.map +1 -1
  19. package/dist/cli/interactive/model-picker-panel.d.ts +40 -0
  20. package/dist/cli/interactive/model-picker-panel.d.ts.map +1 -0
  21. package/dist/cli/interactive/model-picker-panel.js +170 -0
  22. package/dist/cli/interactive/model-picker-panel.js.map +1 -0
  23. package/dist/cli/interactive/model-selection-apply.d.ts +6 -0
  24. package/dist/cli/interactive/model-selection-apply.d.ts.map +1 -0
  25. package/dist/cli/interactive/model-selection-apply.js +15 -0
  26. package/dist/cli/interactive/model-selection-apply.js.map +1 -0
  27. package/dist/cli/interactive/model-selector.d.ts +1 -0
  28. package/dist/cli/interactive/model-selector.d.ts.map +1 -1
  29. package/dist/cli/interactive/model-selector.js +18 -60
  30. package/dist/cli/interactive/model-selector.js.map +1 -1
  31. package/dist/cli/interactive/model-tty-picker.d.ts +18 -0
  32. package/dist/cli/interactive/model-tty-picker.d.ts.map +1 -0
  33. package/dist/cli/interactive/model-tty-picker.js +85 -0
  34. package/dist/cli/interactive/model-tty-picker.js.map +1 -0
  35. package/dist/cli/interactive/run-replay.d.ts.map +1 -1
  36. package/dist/cli/interactive/run-replay.js +2 -1
  37. package/dist/cli/interactive/run-replay.js.map +1 -1
  38. package/dist/cli/interactive/session-controller.d.ts.map +1 -1
  39. package/dist/cli/interactive/session-controller.js +2 -0
  40. package/dist/cli/interactive/session-controller.js.map +1 -1
  41. package/dist/cli/interactive/session-store.d.ts +1 -0
  42. package/dist/cli/interactive/session-store.d.ts.map +1 -1
  43. package/dist/cli/interactive/session-store.js +2 -0
  44. package/dist/cli/interactive/session-store.js.map +1 -1
  45. package/dist/cli/interactive/session.d.ts +6 -0
  46. package/dist/cli/interactive/session.d.ts.map +1 -1
  47. package/dist/cli/interactive/session.js +22 -1
  48. package/dist/cli/interactive/session.js.map +1 -1
  49. package/dist/cli/interactive/tty-arrow-selector.d.ts +10 -0
  50. package/dist/cli/interactive/tty-arrow-selector.d.ts.map +1 -1
  51. package/dist/cli/interactive/tty-arrow-selector.js +35 -28
  52. package/dist/cli/interactive/tty-arrow-selector.js.map +1 -1
  53. package/dist/cli/interactive/tty-frame.d.ts +11 -0
  54. package/dist/cli/interactive/tty-frame.d.ts.map +1 -0
  55. package/dist/cli/interactive/tty-frame.js +36 -0
  56. package/dist/cli/interactive/tty-frame.js.map +1 -0
  57. package/dist/config/model-preferences.d.ts +2 -0
  58. package/dist/config/model-preferences.d.ts.map +1 -1
  59. package/dist/config/model-preferences.js +14 -4
  60. package/dist/config/model-preferences.js.map +1 -1
  61. package/dist/config/model-reasoning.d.ts +15 -0
  62. package/dist/config/model-reasoning.d.ts.map +1 -0
  63. package/dist/config/model-reasoning.js +132 -0
  64. package/dist/config/model-reasoning.js.map +1 -0
  65. package/dist/config/models.d.ts +9 -0
  66. package/dist/config/models.d.ts.map +1 -1
  67. package/dist/config/models.js +128 -26
  68. package/dist/config/models.js.map +1 -1
  69. package/opentui/src/App.tsx +9 -3
  70. package/package.json +1 -1
@@ -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: "composer-2.5-fast",
6
- displayName: "Patze",
7
- description: "Default agent fast coding",
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: "composer-2.5",
11
- displayName: "Composer 2.5",
12
- description: "Balanced Composer tier",
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: "composer-2",
16
- displayName: "Composer 2",
17
- description: "Legacy Composer tier",
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: "OpenAI mini lighter tasks",
27
+ description: "Small, fast, and cost-efficient model for simpler coding tasks",
23
28
  },
24
29
  {
25
- id: "gpt-5.4",
26
- displayName: "GPT-5.4",
27
- description: "OpenAI full deeper analysis",
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: "composer-2.5-fast",
34
- "patze-fast": "composer-2.5-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() || DEFAULT_PATZE_MODEL;
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
- return entry?.displayName ?? normalized;
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 = MODEL_ALIASES[trimmed.toLowerCase()];
150
+ const alias = lookupModelAlias(trimmed);
57
151
  if (alias) {
58
152
  return alias;
59
153
  }
@@ -90,17 +184,25 @@ export function formatModelPickerLines(current, prefs) {
90
184
  const currentId = normalizeModelId(current) ?? DEFAULT_PATZE_MODEL;
91
185
  const currentLabel = formatModelDisplayName(currentId);
92
186
  const lines = [`Model · ${currentLabel}`];
93
- if (prefs) {
94
- lines.push(` thinking ${prefs.thinking === null ? "auto" : prefs.thinking ? "on" : "off"} · fast ${prefs.fast === null ? "auto" : prefs.fast ? "on" : "off"}`);
187
+ if (prefs?.reasoningLevel) {
188
+ lines[0] = `Model · ${currentLabel} ${prefs.reasoningLevel}`;
95
189
  }
96
190
  lines.push("");
97
- for (const entry of PATZE_MODEL_CATALOG) {
98
- const marker = entry.id.toLowerCase() === currentId.toLowerCase() ? "›" : " ";
99
- lines.push(` ${marker} ${formatModelCatalogLabel(entry)}`);
100
- lines.push(` ${entry.description}`);
101
- }
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
+ });
102
204
  lines.push("");
103
- lines.push(" /model <name> · /models · thinking/fast toggles on /model");
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;AAQtD,mEAAmE;AACnE,MAAM,CAAC,MAAM,mBAAmB,GAAsC;IACpE;QACE,EAAE,EAAE,mBAAmB;QACvB,WAAW,EAAE,OAAO;QACpB,WAAW,EAAE,6BAA6B;KAC3C;IACD;QACE,EAAE,EAAE,cAAc;QAClB,WAAW,EAAE,cAAc;QAC3B,WAAW,EAAE,wBAAwB;KACtC;IACD;QACE,EAAE,EAAE,YAAY;QAChB,WAAW,EAAE,YAAY;QACzB,WAAW,EAAE,sBAAsB;KACpC;IACD;QACE,EAAE,EAAE,cAAc;QAClB,WAAW,EAAE,cAAc;QAC3B,WAAW,EAAE,6BAA6B;KAC3C;IACD;QACE,EAAE,EAAE,SAAS;QACb,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE,+BAA+B;KAC7C;CACO,CAAA;AAEV,wFAAwF;AACxF,MAAM,CAAC,MAAM,sBAAsB,GAAsB,mBAAmB,CAAC,GAAG,CAC9E,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CACpB,CAAA;AAED,MAAM,aAAa,GAA2B;IAC5C,KAAK,EAAE,mBAAmB;IAC1B,YAAY,EAAE,mBAAmB;CAClC,CAAA;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,mBAAmB,CAAA;IAC9C,CAAC;IACD,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CACpC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,WAAW,EAAE,CACvE,CAAA;IACD,OAAO,KAAK,EAAE,WAAW,IAAI,UAAU,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,CACL,mBAAmB,CAAC,IAAI,CACtB,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,WAAW,EAAE,CACvE,IAAI,IAAI,CACV,CAAA;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAgC;IAC/D,MAAM,OAAO,GAAG,KAAK,EAAE,IAAI,EAAE,CAAA;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;IAClD,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;IACnC,MAAM,KAAK,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAA;IACnF,OAAO,KAAK,IAAI,OAAO,CAAA;AACzB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAA;IAC1C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,WAAW,EAAE,CAAC,CAAA;AACjG,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAGrC;IACC,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;IAC3D,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAA;IACpB,CAAC;IACD,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC9D,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,CAAA;IAChB,CAAC;IACD,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IACtD,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,UAAU,CAAA;IACnB,CAAC;IACD,OAAO,mBAAmB,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAA6B;IACnE,OAAO,KAAK,CAAC,WAAW,CAAA;AAC1B,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAe,EAAE,KAAwB;IAC9E,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,IAAI,mBAAmB,CAAA;IAClE,MAAM,YAAY,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAA;IACtD,MAAM,KAAK,GAAG,CAAC,WAAW,YAAY,EAAE,CAAC,CAAA;IAEzC,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,CAAC,IAAI,CACR,cAAc,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,WAC5E,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KACrD,EAAE,CACH,CAAA;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,MAAM,KAAK,IAAI,mBAAmB,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;QAC7E,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,IAAI,uBAAuB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAC3D,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,WAAW,EAAE,CAAC,CAAA;IAC1C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAA;IACzE,OAAO,KAAK,CAAA;AACd,CAAC"}
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/config/models.ts"],"names":[],"mappings":"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"}
@@ -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
 
@@ -546,7 +549,10 @@ export function App({ cwd: cwdArg }: { cwd?: string }) {
546
549
  : composerChromeRows)
547
550
  )
548
551
 
549
- const composerModelLabel = `${formatModelDisplayName(currentModel)}${modelThinking ? " · thinking" : ""}${modelFast ? " · fast" : ""}`
552
+ const composerModelLabel = formatModelDisplay(currentModel, {
553
+ thinking: modelThinking,
554
+ fast: modelFast,
555
+ })
550
556
  const composerPathLabel = shortenComposerPath(cwd)
551
557
 
552
558
  const scrollableEntries = useMemo(() => transcript, [transcript])
@@ -578,7 +584,7 @@ export function App({ cwd: cwdArg }: { cwd?: string }) {
578
584
 
579
585
  const modelItems = useMemo(() => {
580
586
  const catalogIds = PATZE_MODEL_CATALOG.map((entry) => entry.id)
581
- const merged = [...new Set([...catalogIds, ...supportedModels])]
587
+ const merged = dedupeModelIds([...catalogIds, ...supportedModels])
582
588
  const normalized = modelSearch.trim().toLowerCase()
583
589
  return merged
584
590
  .filter((model) => {
@@ -589,7 +595,7 @@ export function App({ cwd: cwdArg }: { cwd?: string }) {
589
595
  if (model.toLowerCase().includes(normalized) || display.includes(normalized)) {
590
596
  return true
591
597
  }
592
- if (normalized === "patze" && model === "composer-2.5-fast") {
598
+ if (normalized === "patze" && isPatzeDefaultModel(model)) {
593
599
  return true
594
600
  }
595
601
  return false
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@patze/code-cli",
3
- "version": "0.42.2",
3
+ "version": "0.43.1",
4
4
  "description": "Patze Code — local terminal coding agent client for PatzeAgents",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",