@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,8 +1,7 @@
1
1
  import { emitKeypressEvents } from "node:readline";
2
2
  import { moveSelection } from "./slash-menu.js";
3
+ import { clearTtyFrame, redrawTtyFrame, } from "./tty-frame.js";
3
4
  import { createKeyReaderFromSequence, mapKeypressToSelectorKey, readPermissionSelectorKey, } from "./permissions-keys.js";
4
- const HIDE_CURSOR = "\x1b[?25l";
5
- const SHOW_CURSOR = "\x1b[?25h";
6
5
  /** Cookbook-style ↑/↓ + Enter list picker for Node TTY shells. */
7
6
  export async function runTTYArrowSelector(options) {
8
7
  const itemCount = Math.max(0, options.itemCount);
@@ -11,7 +10,13 @@ export async function runTTYArrowSelector(options) {
11
10
  }
12
11
  let selectedIndex = clampIndex(options.initialIndex, itemCount);
13
12
  if (options.keySequence?.length) {
14
- return runScriptedArrowSelector(options, selectedIndex);
13
+ const readChunk = createKeyReaderFromSequence(options.keySequence);
14
+ return runArrowSelectorLoop({
15
+ itemCount,
16
+ selectedIndex,
17
+ readKey: () => readPermissionSelectorKey(readChunk),
18
+ digitJump: options.digitJump ?? false,
19
+ });
15
20
  }
16
21
  const input = options.input ?? process.stdin;
17
22
  const output = options.output ?? process.stdout;
@@ -22,26 +27,14 @@ export async function runTTYArrowSelector(options) {
22
27
  const wasRaw = input.isRaw ?? false;
23
28
  input.setRawMode(true);
24
29
  input.resume();
30
+ const width = output.columns && output.columns > 0 ? output.columns : 80;
25
31
  let frameRows = 0;
26
32
  const redraw = () => {
27
- const lines = options.render(selectedIndex);
28
- let out = HIDE_CURSOR;
29
- if (frameRows > 0) {
30
- out += `\x1b[${frameRows}A\r\x1b[J`;
31
- }
32
- else {
33
- out += "\r\x1b[J";
34
- }
35
- out += lines.join("\n");
36
- out += SHOW_CURSOR;
37
- output.write(out);
38
- frameRows = lines.length;
39
- };
40
- const clearFrame = () => {
41
- if (frameRows > 0) {
42
- output.write(`\x1b[${frameRows}A\r\x1b[J${SHOW_CURSOR}\n`);
43
- frameRows = 0;
44
- }
33
+ frameRows = redrawTtyFrame(output, {
34
+ previousRows: frameRows,
35
+ lines: options.render(selectedIndex),
36
+ width,
37
+ });
45
38
  };
46
39
  return new Promise((resolve) => {
47
40
  const finish = (result) => {
@@ -50,10 +43,18 @@ export async function runTTYArrowSelector(options) {
50
43
  input.setRawMode(wasRaw);
51
44
  }
52
45
  input.pause();
53
- clearFrame();
46
+ clearTtyFrame(output, frameRows);
54
47
  resolve(result);
55
48
  };
56
49
  const onKeypress = (str, key) => {
50
+ if (options.digitJump && str && /^[1-9]$/.test(str)) {
51
+ const jump = Number(str) - 1;
52
+ if (jump < itemCount) {
53
+ selectedIndex = jump;
54
+ redraw();
55
+ }
56
+ return;
57
+ }
57
58
  const mapped = mapKeypressToSelectorKey(str, key ?? {});
58
59
  if (!mapped) {
59
60
  return;
@@ -80,25 +81,31 @@ export async function runTTYArrowSelector(options) {
80
81
  redraw();
81
82
  });
82
83
  }
83
- async function runScriptedArrowSelector(options, selectedIndex) {
84
- const readChunk = createKeyReaderFromSequence(options.keySequence ?? []);
85
- const itemCount = options.itemCount;
84
+ /** Shared arrow/digit/enter loop for scripted selectors and multi-step pickers. */
85
+ export async function runArrowSelectorLoop(input) {
86
+ let selectedIndex = clampIndex(input.selectedIndex, input.itemCount);
86
87
  while (true) {
87
- const key = await readPermissionSelectorKey(readChunk);
88
+ const key = await input.readKey();
88
89
  if (!key || key === "escape" || key === "cancel") {
89
90
  return { action: "cancel" };
90
91
  }
91
92
  if (key === "up") {
92
- selectedIndex = moveSelection(selectedIndex, -1, itemCount);
93
+ selectedIndex = moveSelection(selectedIndex, -1, input.itemCount);
93
94
  continue;
94
95
  }
95
96
  if (key === "down") {
96
- selectedIndex = moveSelection(selectedIndex, 1, itemCount);
97
+ selectedIndex = moveSelection(selectedIndex, 1, input.itemCount);
97
98
  continue;
98
99
  }
99
100
  if (key === "enter") {
100
101
  return { action: "select", selectedIndex };
101
102
  }
103
+ if (input.digitJump && /^[1-9]$/.test(key)) {
104
+ const jump = Number(key) - 1;
105
+ if (jump < input.itemCount) {
106
+ selectedIndex = jump;
107
+ }
108
+ }
102
109
  }
103
110
  }
104
111
  function clampIndex(index, length) {
@@ -1 +1 @@
1
- {"version":3,"file":"tty-arrow-selector.js","sourceRoot":"","sources":["../../../src/cli/interactive/tty-arrow-selector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tty-arrow-selector.js","sourceRoot":"","sources":["../../../src/cli/interactive/tty-arrow-selector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare const SHOW_CURSOR = "\u001B[?25h";
2
+ export declare function stripAnsi(text: string): string;
3
+ /** Terminal row count after soft-wrapping long logical lines. */
4
+ export declare function countVisualRows(lines: readonly string[], width: number): number;
5
+ export declare function redrawTtyFrame(output: NodeJS.WriteStream, input: {
6
+ previousRows: number;
7
+ lines: readonly string[];
8
+ width: number;
9
+ }): number;
10
+ export declare function clearTtyFrame(output: NodeJS.WriteStream, frameRows: number): void;
11
+ //# sourceMappingURL=tty-frame.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tty-frame.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/tty-frame.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,WAAW,gBAAc,CAAA;AAEtC,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,iEAAiE;AACjE,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAS/E;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,CAAC,WAAW,EAC1B,KAAK,EAAE;IACL,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;CACd,GACA,MAAM,CAYR;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAIjF"}
@@ -0,0 +1,36 @@
1
+ const HIDE_CURSOR = "\x1b[?25l";
2
+ export const SHOW_CURSOR = "\x1b[?25h";
3
+ export function stripAnsi(text) {
4
+ return text.replace(/\x1b\[[0-9;]*m/g, "");
5
+ }
6
+ /** Terminal row count after soft-wrapping long logical lines. */
7
+ export function countVisualRows(lines, width) {
8
+ const cols = Math.max(1, width);
9
+ let total = 0;
10
+ for (const line of lines) {
11
+ const plain = stripAnsi(line);
12
+ const length = [...plain].length;
13
+ total += Math.max(1, Math.ceil(length / cols));
14
+ }
15
+ return total;
16
+ }
17
+ export function redrawTtyFrame(output, input) {
18
+ const visualRows = countVisualRows(input.lines, input.width);
19
+ let out = HIDE_CURSOR;
20
+ if (input.previousRows > 0) {
21
+ out += `\x1b[${input.previousRows}A\r\x1b[J`;
22
+ }
23
+ else {
24
+ out += "\r\x1b[J";
25
+ }
26
+ out += input.lines.join("\n");
27
+ out += SHOW_CURSOR;
28
+ output.write(out);
29
+ return visualRows;
30
+ }
31
+ export function clearTtyFrame(output, frameRows) {
32
+ if (frameRows > 0) {
33
+ output.write(`\x1b[${frameRows}A\r\x1b[J${SHOW_CURSOR}\n`);
34
+ }
35
+ }
36
+ //# sourceMappingURL=tty-frame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tty-frame.js","sourceRoot":"","sources":["../../../src/cli/interactive/tty-frame.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,GAAG,WAAW,CAAA;AAC/B,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAA;AAEtC,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAA;AAC5C,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,eAAe,CAAC,KAAwB,EAAE,KAAa;IACrE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IAC/B,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;QAC7B,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAA;QAChC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAA;IAChD,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,MAA0B,EAC1B,KAIC;IAED,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;IAC5D,IAAI,GAAG,GAAG,WAAW,CAAA;IACrB,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;QAC3B,GAAG,IAAI,QAAQ,KAAK,CAAC,YAAY,WAAW,CAAA;IAC9C,CAAC;SAAM,CAAC;QACN,GAAG,IAAI,UAAU,CAAA;IACnB,CAAC;IACD,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC7B,GAAG,IAAI,WAAW,CAAA;IAClB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACjB,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAA0B,EAAE,SAAiB;IACzE,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,MAAM,CAAC,KAAK,CAAC,QAAQ,SAAS,YAAY,WAAW,IAAI,CAAC,CAAA;IAC5D,CAAC;AACH,CAAC"}
@@ -1,7 +1,9 @@
1
+ import { type ModelReasoningLevel } from "./model-reasoning.js";
1
2
  export type ModelPreferenceKey = "thinking" | "fast";
2
3
  export type ModelPreferences = {
3
4
  thinking: boolean | null;
4
5
  fast: boolean | null;
6
+ reasoningLevel?: ModelReasoningLevel | null;
5
7
  };
6
8
  export declare function resolveModelPreferenceToggle(current: boolean | null, token: string): boolean | null;
7
9
  export declare function formatModelPreferenceLabel(key: ModelPreferenceKey, value: boolean | null): string;
@@ -1 +1 @@
1
- {"version":3,"file":"model-preferences.d.ts","sourceRoot":"","sources":["../../src/config/model-preferences.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,MAAM,CAAA;AAEpD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAA;IACxB,IAAI,EAAE,OAAO,GAAG,IAAI,CAAA;CACrB,CAAA;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,KAAK,EAAE,MAAM,GACZ,OAAO,GAAG,IAAI,CAkBhB;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,MAAM,CAKjG;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,gBAAgB,EACvB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,GAC5B,MAAM,CAaR;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,gBAAgB,EACvB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,GAC5B,MAAM,CAOR;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,gBAAgB,GAAG;IACnE,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CASA"}
1
+ {"version":3,"file":"model-preferences.d.ts","sourceRoot":"","sources":["../../src/config/model-preferences.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,mBAAmB,EACzB,MAAM,sBAAsB,CAAA;AAE7B,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,MAAM,CAAA;AAEpD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAA;IACxB,IAAI,EAAE,OAAO,GAAG,IAAI,CAAA;IACpB,cAAc,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAA;CAC5C,CAAA;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,KAAK,EAAE,MAAM,GACZ,OAAO,GAAG,IAAI,CAkBhB;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,MAAM,CAKjG;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,gBAAgB,EACvB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,GAC5B,MAAM,CAaR;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,gBAAgB,EACvB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,GAC5B,MAAM,CAgBR;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,gBAAgB,GAAG;IACnE,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAaA"}
@@ -1,4 +1,5 @@
1
1
  import { formatModelDisplayName } from "./models.js";
2
+ import { formatReasoningLevelShort, getDefaultReasoningLevel, modelSupportsReasoningPicker, reasoningLevelToThinking, } from "./model-reasoning.js";
2
3
  export function resolveModelPreferenceToggle(current, token) {
3
4
  const normalized = token.trim().toLowerCase();
4
5
  if (normalized === "toggle") {
@@ -30,7 +31,7 @@ export function formatModelPreferenceSuffix(prefs, cursorAgentId) {
30
31
  parts.push(prefs.thinking ? "think" : "no-think");
31
32
  }
32
33
  if (prefs.fast !== null) {
33
- parts.push(prefs.fast ? "fast" : "no-fast");
34
+ parts.push(prefs.fast ? "turbo" : "balanced");
34
35
  }
35
36
  const agent = cursorAgentId?.trim();
36
37
  if (agent) {
@@ -39,7 +40,13 @@ export function formatModelPreferenceSuffix(prefs, cursorAgentId) {
39
40
  return parts.join(" · ");
40
41
  }
41
42
  export function formatModelDisplay(model, prefs, cursorAgentId) {
42
- const parts = [formatModelDisplayName(model)];
43
+ const name = formatModelDisplayName(model);
44
+ const reasoningLevel = prefs.reasoningLevel ??
45
+ (modelSupportsReasoningPicker(model) ? getDefaultReasoningLevel(model) : null);
46
+ if (reasoningLevel && modelSupportsReasoningPicker(model)) {
47
+ return `${name} ${formatReasoningLevelShort(reasoningLevel)}`;
48
+ }
49
+ const parts = [name];
43
50
  const suffix = formatModelPreferenceSuffix(prefs, cursorAgentId);
44
51
  if (suffix) {
45
52
  parts.push(suffix);
@@ -47,9 +54,12 @@ export function formatModelDisplay(model, prefs, cursorAgentId) {
47
54
  return parts.join(" · ");
48
55
  }
49
56
  export function modelPreferencesToMetadata(prefs) {
57
+ const thinking = prefs.reasoningLevel !== undefined && prefs.reasoningLevel !== null
58
+ ? reasoningLevelToThinking(prefs.reasoningLevel)
59
+ : prefs.thinking;
50
60
  const metadata = {};
51
- if (prefs.thinking !== null) {
52
- metadata.model_thinking = prefs.thinking ? "true" : "false";
61
+ if (thinking !== null && thinking !== undefined) {
62
+ metadata.model_thinking = thinking ? "true" : "false";
53
63
  }
54
64
  if (prefs.fast !== null) {
55
65
  metadata.model_fast = prefs.fast ? "true" : "false";
@@ -1 +1 @@
1
- {"version":3,"file":"model-preferences.js","sourceRoot":"","sources":["../../src/config/model-preferences.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-preferences.js","sourceRoot":"","sources":["../../src/config/model-preferences.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export type ModelReasoningLevel = "low" | "medium" | "high" | "xhigh";
2
+ export type ReasoningLevelOption = {
3
+ id: ModelReasoningLevel;
4
+ label: string;
5
+ description: string;
6
+ };
7
+ export declare function getReasoningLevelsForModelId(modelId: string): ReasoningLevelOption[];
8
+ export declare function modelSupportsReasoningPicker(modelId: string): boolean;
9
+ export declare function getDefaultReasoningLevel(modelId: string): ModelReasoningLevel;
10
+ export declare function reasoningLevelToThinking(level: ModelReasoningLevel | null): boolean | null;
11
+ export declare function thinkingToReasoningLevel(thinking: boolean | null): ModelReasoningLevel | null;
12
+ export declare function formatReasoningLevelShort(level: ModelReasoningLevel): string;
13
+ export declare function resolveWireModelId(catalogId: string, level: ModelReasoningLevel | null): string;
14
+ export declare function normalizeReasoningLevel(value: unknown): ModelReasoningLevel | null;
15
+ //# sourceMappingURL=model-reasoning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-reasoning.d.ts","sourceRoot":"","sources":["../../src/config/model-reasoning.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;AAErE,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,mBAAmB,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAwDD,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAepF;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAErE;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB,CAS7E;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI,CAW1F;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,GAAG,mBAAmB,GAAG,IAAI,CAQ7F;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,CAa5E;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,mBAAmB,GAAG,IAAI,GAChC,MAAM,CASR;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,GAAG,IAAI,CAKlF"}
@@ -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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"}
@@ -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;
@@ -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;AACnE,eAAO,MAAM,mBAAmB,EAAE,SAAS,sBAAsB,EA0BvD,CAAA;AAEV,wFAAwF;AACxF,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAEnD,CAAA;AAOD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAS9D;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,CAuB1F"}
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"}