openhorse 0.2.8 → 0.2.10

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 (184) hide show
  1. package/README.md +2 -2
  2. package/README.zh-CN.md +10 -1
  3. package/dist/cli.d.ts +1 -1
  4. package/dist/cli.js +9 -16
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/index.d.ts.map +1 -1
  7. package/dist/commands/index.js +70 -26
  8. package/dist/commands/index.js.map +1 -1
  9. package/dist/commands/types.d.ts +7 -28
  10. package/dist/commands/types.d.ts.map +1 -1
  11. package/dist/commands/types.js.map +1 -1
  12. package/dist/framework/prompt.d.ts.map +1 -1
  13. package/dist/framework/prompt.js +15 -2
  14. package/dist/framework/prompt.js.map +1 -1
  15. package/dist/framework/query.d.ts +2 -0
  16. package/dist/framework/query.d.ts.map +1 -1
  17. package/dist/framework/query.js +82 -4
  18. package/dist/framework/query.js.map +1 -1
  19. package/dist/framework/tool-scheduler.d.ts +3 -0
  20. package/dist/framework/tool-scheduler.d.ts.map +1 -1
  21. package/dist/framework/tool-scheduler.js +9 -0
  22. package/dist/framework/tool-scheduler.js.map +1 -1
  23. package/dist/ink-ui/App.d.ts +2 -2
  24. package/dist/ink-ui/App.d.ts.map +1 -1
  25. package/dist/ink-ui/components/PixelHorseBanner.d.ts +2 -2
  26. package/dist/ink-ui/components/PixelHorseBanner.d.ts.map +1 -1
  27. package/dist/ink-ui/components/RunningHorseIndicator.d.ts.map +1 -1
  28. package/dist/ink-ui/components/RunningHorseIndicator.js +2 -1
  29. package/dist/ink-ui/components/RunningHorseIndicator.js.map +1 -1
  30. package/dist/ink-ui/components/StatusLine.d.ts +2 -2
  31. package/dist/ink-ui/components/StatusLine.d.ts.map +1 -1
  32. package/dist/ink-ui/launch.d.ts +2 -2
  33. package/dist/ink-ui/launch.d.ts.map +1 -1
  34. package/dist/ink-ui/launch.js.map +1 -1
  35. package/dist/ink-ui/screens/ReplScreen.d.ts +2 -2
  36. package/dist/ink-ui/screens/ReplScreen.d.ts.map +1 -1
  37. package/dist/ink-ui/screens/ReplScreen.js +4 -2
  38. package/dist/ink-ui/screens/ReplScreen.js.map +1 -1
  39. package/dist/print-ui/launch.d.ts +44 -2
  40. package/dist/print-ui/launch.d.ts.map +1 -1
  41. package/dist/print-ui/launch.js +12 -0
  42. package/dist/print-ui/launch.js.map +1 -1
  43. package/dist/runtime/agent-runtime-controller.d.ts +4 -1
  44. package/dist/runtime/agent-runtime-controller.d.ts.map +1 -1
  45. package/dist/runtime/agent-runtime-controller.js +34 -2
  46. package/dist/runtime/agent-runtime-controller.js.map +1 -1
  47. package/dist/runtime/agent-runtime-protocol.d.ts +7 -1
  48. package/dist/runtime/agent-runtime-protocol.d.ts.map +1 -1
  49. package/dist/runtime/agent-runtime-protocol.js +12 -0
  50. package/dist/runtime/agent-runtime-protocol.js.map +1 -1
  51. package/dist/runtime/agent-status.d.ts +4 -0
  52. package/dist/runtime/agent-status.d.ts.map +1 -0
  53. package/dist/runtime/agent-status.js +15 -0
  54. package/dist/runtime/agent-status.js.map +1 -0
  55. package/dist/runtime/chat-controller.d.ts +4 -1
  56. package/dist/runtime/chat-controller.d.ts.map +1 -1
  57. package/dist/runtime/chat-controller.js +35 -3
  58. package/dist/runtime/chat-controller.js.map +1 -1
  59. package/dist/runtime/ui-events.d.ts +29 -2
  60. package/dist/runtime/ui-events.d.ts.map +1 -1
  61. package/dist/runtime/ui-events.js +34 -0
  62. package/dist/runtime/ui-events.js.map +1 -1
  63. package/dist/services/compact/auto-compact.d.ts +19 -0
  64. package/dist/services/compact/auto-compact.d.ts.map +1 -1
  65. package/dist/services/compact/auto-compact.js +55 -7
  66. package/dist/services/compact/auto-compact.js.map +1 -1
  67. package/dist/services/config-dir.d.ts +2 -0
  68. package/dist/services/config-dir.d.ts.map +1 -1
  69. package/dist/services/config-dir.js +5 -0
  70. package/dist/services/config-dir.js.map +1 -1
  71. package/dist/services/config.d.ts +9 -2
  72. package/dist/services/config.d.ts.map +1 -1
  73. package/dist/services/config.js +45 -11
  74. package/dist/services/config.js.map +1 -1
  75. package/dist/services/doctor.d.ts.map +1 -1
  76. package/dist/services/doctor.js +36 -4
  77. package/dist/services/doctor.js.map +1 -1
  78. package/dist/services/format.d.ts +2 -0
  79. package/dist/services/format.d.ts.map +1 -0
  80. package/dist/services/format.js +20 -0
  81. package/dist/services/format.js.map +1 -0
  82. package/dist/services/global-config.d.ts +10 -9
  83. package/dist/services/global-config.d.ts.map +1 -1
  84. package/dist/services/global-config.js +5 -20
  85. package/dist/services/global-config.js.map +1 -1
  86. package/dist/services/llm.d.ts +2 -0
  87. package/dist/services/llm.d.ts.map +1 -1
  88. package/dist/services/llm.js +57 -20
  89. package/dist/services/llm.js.map +1 -1
  90. package/dist/services/model-context.d.ts +10 -1
  91. package/dist/services/model-context.d.ts.map +1 -1
  92. package/dist/services/model-context.js +53 -14
  93. package/dist/services/model-context.js.map +1 -1
  94. package/dist/services/storage-maintenance.d.ts.map +1 -1
  95. package/dist/services/storage-maintenance.js +3 -9
  96. package/dist/services/storage-maintenance.js.map +1 -1
  97. package/dist/services/usage-state.d.ts +20 -0
  98. package/dist/services/usage-state.d.ts.map +1 -0
  99. package/dist/services/usage-state.js +128 -0
  100. package/dist/services/usage-state.js.map +1 -0
  101. package/dist/terminal-ui/launch.d.ts +44 -2
  102. package/dist/terminal-ui/launch.d.ts.map +1 -1
  103. package/dist/terminal-ui/launch.js +102 -36
  104. package/dist/terminal-ui/launch.js.map +1 -1
  105. package/dist/terminal-ui/raw-editor.d.ts +2 -0
  106. package/dist/terminal-ui/raw-editor.d.ts.map +1 -1
  107. package/dist/terminal-ui/raw-editor.js +30 -1
  108. package/dist/terminal-ui/raw-editor.js.map +1 -1
  109. package/dist/tools/index.d.ts.map +1 -1
  110. package/dist/tools/index.js +259 -43
  111. package/dist/tools/index.js.map +1 -1
  112. package/dist/tui-core/input-parser.d.ts +4 -0
  113. package/dist/tui-core/input-parser.d.ts.map +1 -1
  114. package/dist/tui-core/input-parser.js +30 -0
  115. package/dist/tui-core/input-parser.js.map +1 -1
  116. package/dist/tui-ui/launch.d.ts +2 -2
  117. package/dist/tui-ui/launch.d.ts.map +1 -1
  118. package/dist/tui-ui/launch.js +2 -0
  119. package/dist/tui-ui/launch.js.map +1 -1
  120. package/dist/tui-ui/layout.d.ts.map +1 -1
  121. package/dist/tui-ui/layout.js +2 -13
  122. package/dist/tui-ui/layout.js.map +1 -1
  123. package/dist/tui-ui/runner.d.ts.map +1 -1
  124. package/dist/tui-ui/runner.js +6 -0
  125. package/dist/tui-ui/runner.js.map +1 -1
  126. package/dist/tui-ui/state.d.ts +13 -1
  127. package/dist/tui-ui/state.d.ts.map +1 -1
  128. package/dist/tui-ui/state.js +13 -0
  129. package/dist/tui-ui/state.js.map +1 -1
  130. package/dist/ui/command-panel.d.ts +1 -1
  131. package/dist/ui/command-panel.d.ts.map +1 -1
  132. package/dist/ui/command-panel.js +37 -34
  133. package/dist/ui/command-panel.js.map +1 -1
  134. package/dist/ui/file-completion.d.ts +1 -1
  135. package/dist/ui/file-completion.d.ts.map +1 -1
  136. package/dist/ui/file-completion.js +4 -4
  137. package/dist/ui/file-completion.js.map +1 -1
  138. package/dist/ui/shared/command-palette.d.ts +3 -0
  139. package/dist/ui/shared/command-palette.d.ts.map +1 -0
  140. package/dist/ui/shared/command-palette.js +54 -0
  141. package/dist/ui/shared/command-palette.js.map +1 -0
  142. package/dist/ui/shared/command-suggestions.d.ts +19 -0
  143. package/dist/ui/shared/command-suggestions.d.ts.map +1 -0
  144. package/dist/ui/shared/command-suggestions.js +67 -0
  145. package/dist/ui/shared/command-suggestions.js.map +1 -0
  146. package/dist/ui/shared/input-frame.d.ts +19 -0
  147. package/dist/ui/shared/input-frame.d.ts.map +1 -0
  148. package/dist/ui/shared/input-frame.js +74 -0
  149. package/dist/ui/shared/input-frame.js.map +1 -0
  150. package/dist/ui/shared/text.d.ts +5 -0
  151. package/dist/ui/shared/text.d.ts.map +1 -0
  152. package/dist/ui/shared/text.js +55 -0
  153. package/dist/ui/shared/text.js.map +1 -0
  154. package/dist/ui/shared/types.d.ts +27 -0
  155. package/dist/ui/shared/types.d.ts.map +1 -0
  156. package/dist/ui/shared/types.js +3 -0
  157. package/dist/ui/shared/types.js.map +1 -0
  158. package/dist/ui/user-input.js +2 -2
  159. package/dist/ui/user-input.js.map +1 -1
  160. package/dist/ui-v2/components/command-palette.d.ts +1 -5
  161. package/dist/ui-v2/components/command-palette.d.ts.map +1 -1
  162. package/dist/ui-v2/components/command-palette.js +15 -54
  163. package/dist/ui-v2/components/command-palette.js.map +1 -1
  164. package/dist/ui-v2/components/shell.d.ts +1 -14
  165. package/dist/ui-v2/components/shell.d.ts.map +1 -1
  166. package/dist/ui-v2/components/shell.js +4 -55
  167. package/dist/ui-v2/components/shell.js.map +1 -1
  168. package/dist/ui-v2/runtime/text.d.ts +1 -7
  169. package/dist/ui-v2/runtime/text.d.ts.map +1 -1
  170. package/dist/ui-v2/runtime/text.js +15 -55
  171. package/dist/ui-v2/runtime/text.js.map +1 -1
  172. package/dist/ui-v2/state/sessions.d.ts +1 -1
  173. package/dist/ui-v2/state/sessions.d.ts.map +1 -1
  174. package/dist/ui-v2/state/sessions.js +5 -18
  175. package/dist/ui-v2/state/sessions.js.map +1 -1
  176. package/dist/ui-v2/state/suggestions.d.ts +1 -21
  177. package/dist/ui-v2/state/suggestions.d.ts.map +1 -1
  178. package/dist/ui-v2/state/suggestions.js +15 -67
  179. package/dist/ui-v2/state/suggestions.js.map +1 -1
  180. package/dist/ui-v2/types.d.ts +1 -32
  181. package/dist/ui-v2/types.d.ts.map +1 -1
  182. package/dist/ui-v2/types.js +15 -6
  183. package/dist/ui-v2/types.js.map +1 -1
  184. package/package.json +4 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-palette.js","sourceRoot":"","sources":["../../../src/ui/shared/command-palette.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { SlashCommand } from '../../commands/types';
2
+ import type { SuggestionItem } from './types';
3
+ export declare const DEFAULT_COMMAND_LIMIT = 8;
4
+ export declare const FILTERED_COMMAND_LIMIT = 6;
5
+ export interface CommandSuggestionResult {
6
+ query: string;
7
+ total: number;
8
+ limit: number;
9
+ moreCount: number;
10
+ items: SuggestionItem[];
11
+ commands: SlashCommand[];
12
+ }
13
+ export interface BuildCommandSuggestionsOptions {
14
+ defaultLimit?: number;
15
+ filteredLimit?: number;
16
+ }
17
+ export declare function buildCommandSuggestions(commands: SlashCommand[], query?: string, options?: BuildCommandSuggestionsOptions): CommandSuggestionResult;
18
+ export declare function commandToSuggestion(command: SlashCommand): SuggestionItem;
19
+ //# sourceMappingURL=command-suggestions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-suggestions.d.ts","sourceRoot":"","sources":["../../../src/ui/shared/command-suggestions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,eAAO,MAAM,qBAAqB,IAAI,CAAC;AACvC,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,8BAA8B;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,YAAY,EAAE,EACxB,KAAK,GAAE,MAAW,EAClB,OAAO,GAAE,8BAAmC,GAC3C,uBAAuB,CAsBzB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,cAAc,CAezE"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FILTERED_COMMAND_LIMIT = exports.DEFAULT_COMMAND_LIMIT = void 0;
4
+ exports.buildCommandSuggestions = buildCommandSuggestions;
5
+ exports.commandToSuggestion = commandToSuggestion;
6
+ exports.DEFAULT_COMMAND_LIMIT = 8;
7
+ exports.FILTERED_COMMAND_LIMIT = 6;
8
+ function buildCommandSuggestions(commands, query = '', options = {}) {
9
+ const normalizedQuery = normalizeQuery(query);
10
+ const defaultLimit = options.defaultLimit ?? exports.DEFAULT_COMMAND_LIMIT;
11
+ const filteredLimit = options.filteredLimit ?? exports.FILTERED_COMMAND_LIMIT;
12
+ const limit = normalizedQuery ? filteredLimit : defaultLimit;
13
+ const visibleCommands = commands.filter(cmd => !cmd.isHidden);
14
+ const matches = normalizedQuery
15
+ ? visibleCommands
16
+ .filter(cmd => commandMatches(cmd, normalizedQuery))
17
+ .sort((a, b) => commandMatchRank(a, normalizedQuery) - commandMatchRank(b, normalizedQuery))
18
+ : visibleCommands;
19
+ const limitedCommands = matches.slice(0, limit);
20
+ return {
21
+ query: normalizedQuery,
22
+ total: matches.length,
23
+ limit,
24
+ moreCount: Math.max(0, matches.length - limitedCommands.length),
25
+ items: limitedCommands.map(commandToSuggestion),
26
+ commands: limitedCommands,
27
+ };
28
+ }
29
+ function commandToSuggestion(command) {
30
+ const shortcut = command.aliases?.[0];
31
+ return {
32
+ id: `command:${command.name}`,
33
+ kind: 'command',
34
+ label: `/${command.name}`,
35
+ detail: command.description,
36
+ shortcut,
37
+ value: `/${command.name}`,
38
+ metadata: {
39
+ argumentHint: command.argumentHint,
40
+ type: command.type,
41
+ aliases: command.aliases ?? [],
42
+ },
43
+ };
44
+ }
45
+ function commandMatches(command, query) {
46
+ const name = command.name.toLowerCase();
47
+ if (name.startsWith(query))
48
+ return true;
49
+ return command.aliases?.some(alias => alias.toLowerCase().startsWith(query)) ?? false;
50
+ }
51
+ function commandMatchRank(command, query) {
52
+ const name = command.name.toLowerCase();
53
+ const aliases = command.aliases?.map(alias => alias.toLowerCase()) ?? [];
54
+ if (name === query)
55
+ return 0;
56
+ if (aliases.some(alias => alias === query))
57
+ return 1;
58
+ if (name.startsWith(query))
59
+ return 2;
60
+ if (aliases.some(alias => alias.startsWith(query)))
61
+ return 3;
62
+ return 4;
63
+ }
64
+ function normalizeQuery(query) {
65
+ return query.trim().replace(/^\//, '').toLowerCase();
66
+ }
67
+ //# sourceMappingURL=command-suggestions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-suggestions.js","sourceRoot":"","sources":["../../../src/ui/shared/command-suggestions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export interface FramedInputFrameOptions {
2
+ input: string;
3
+ modeIndicator?: string;
4
+ width?: number;
5
+ statusText?: string;
6
+ }
7
+ export interface FramedInputFrameRender {
8
+ output: string;
9
+ height: number;
10
+ cursorRow: number;
11
+ cursorColumn: number;
12
+ }
13
+ export type V2InputFrameOptions = FramedInputFrameOptions;
14
+ export type V2InputFrameRender = FramedInputFrameRender;
15
+ export declare function renderFramedPrompt(modeIndicator?: string): string;
16
+ export declare function renderFramedInputFrame(options: FramedInputFrameOptions): FramedInputFrameRender;
17
+ export declare const renderV2Prompt: typeof renderFramedPrompt;
18
+ export declare const renderV2InputFrame: typeof renderFramedInputFrame;
19
+ //# sourceMappingURL=input-frame.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-frame.d.ts","sourceRoot":"","sources":["../../../src/ui/shared/input-frame.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,mBAAmB,GAAG,uBAAuB,CAAC;AAC1D,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,CAAC;AAExD,wBAAgB,kBAAkB,CAAC,aAAa,GAAE,MAAW,GAAG,MAAM,CAGrE;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,uBAAuB,GAAG,sBAAsB,CA4B/F;AAED,eAAO,MAAM,cAAc,2BAAqB,CAAC;AACjD,eAAO,MAAM,kBAAkB,+BAAyB,CAAC"}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.renderV2InputFrame = exports.renderV2Prompt = void 0;
7
+ exports.renderFramedPrompt = renderFramedPrompt;
8
+ exports.renderFramedInputFrame = renderFramedInputFrame;
9
+ const chalk_1 = __importDefault(require("chalk"));
10
+ const text_1 = require("./text");
11
+ const NO_COLOR = process.env.NO_COLOR !== undefined || process.env.TERM === 'dumb';
12
+ const colorize = NO_COLOR ? {
13
+ accent: (s) => s,
14
+ dim: (s) => s,
15
+ } : {
16
+ accent: chalk_1.default.hex('#00D4AA'),
17
+ dim: chalk_1.default.dim,
18
+ };
19
+ const INPUT_BG = '\x1b[48;2;56;56;56m';
20
+ const INPUT_FG = '\x1b[38;2;226;232;240m';
21
+ const RESET_COLORS = '\x1b[39;49m';
22
+ const CLEAR_TO_EOL = '\x1b[K';
23
+ function renderFramedPrompt(modeIndicator = '') {
24
+ const mode = modeIndicator ? colorize.dim(`${modeIndicator} `) : '';
25
+ return `${colorize.accent('›')} ${mode}`;
26
+ }
27
+ function renderFramedInputFrame(options) {
28
+ const width = Math.max(24, options.width || process.stdout.columns || 80);
29
+ const inputWidth = Math.max(1, width - 1);
30
+ const logicalLines = options.input.length > 0 ? options.input.split('\n') : [''];
31
+ const firstPrompt = renderFramedPrompt(options.modeIndicator || '');
32
+ const continuationPrompt = ' '.repeat((0, text_1.visualWidth)(firstPrompt));
33
+ const renderedLines = logicalLines.map((line, index) => {
34
+ const prefix = index === 0 ? firstPrompt : continuationPrompt;
35
+ return renderInputLine((0, text_1.truncateVisible)(prefix + line, inputWidth));
36
+ });
37
+ const statusLine = options.statusText ? renderInputStatusLine(inputWidth, options.statusText) : undefined;
38
+ const rowSpans = logicalLines.map((line, index) => {
39
+ const prefix = index === 0 ? firstPrompt : continuationPrompt;
40
+ return terminalRowsFor((0, text_1.visualWidth)(prefix) + (0, text_1.visualWidth)(line), width);
41
+ });
42
+ const rowsBeforeCursor = rowSpans.slice(0, -1).reduce((sum, rows) => sum + rows, 0);
43
+ const lastLine = logicalLines[logicalLines.length - 1] || '';
44
+ const lastPrefix = logicalLines.length === 1 ? firstPrompt : continuationPrompt;
45
+ const lastVisibleWidth = (0, text_1.visualWidth)(lastPrefix) + (0, text_1.visualWidth)(lastLine);
46
+ return {
47
+ output: [...renderedLines, ...(statusLine ? [statusLine] : [])].join('\n'),
48
+ height: rowSpans.reduce((sum, rows) => sum + rows, 0) + (statusLine ? 1 : 0),
49
+ cursorRow: rowsBeforeCursor + Math.floor(lastVisibleWidth / width),
50
+ cursorColumn: (lastVisibleWidth % width) + 1,
51
+ };
52
+ }
53
+ exports.renderV2Prompt = renderFramedPrompt;
54
+ exports.renderV2InputFrame = renderFramedInputFrame;
55
+ function renderInputLine(content) {
56
+ if (NO_COLOR) {
57
+ return content;
58
+ }
59
+ return `${INPUT_BG}${INPUT_FG}${content}${CLEAR_TO_EOL}${RESET_COLORS}`;
60
+ }
61
+ function renderInputStatusLine(width, statusText) {
62
+ const badge = ` ${statusText} `;
63
+ const badgeWidth = (0, text_1.visualWidth)(badge);
64
+ if (badgeWidth >= width) {
65
+ return (0, text_1.truncateVisible)(badge, width);
66
+ }
67
+ return ' '.repeat(width - badgeWidth) + badge;
68
+ }
69
+ function terminalRowsFor(visibleWidth, terminalWidth) {
70
+ if (visibleWidth <= 0)
71
+ return 1;
72
+ return Math.floor(visibleWidth / terminalWidth) + 1;
73
+ }
74
+ //# sourceMappingURL=input-frame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-frame.js","sourceRoot":"","sources":["../../../src/ui/shared/input-frame.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function stripAnsi(text: string): string;
2
+ export declare function visualWidth(text: string): number;
3
+ export declare function padEndVisible(text: string, targetWidth: number): string;
4
+ export declare function truncateVisible(text: string, targetWidth: number): string;
5
+ //# sourceMappingURL=text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/ui/shared/text.ts"],"names":[],"mappings":"AAEA,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOhD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAGvE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAkBzE"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stripAnsi = stripAnsi;
4
+ exports.visualWidth = visualWidth;
5
+ exports.padEndVisible = padEndVisible;
6
+ exports.truncateVisible = truncateVisible;
7
+ const ANSI_PATTERN = /\x1b\[[0-9;]*m/g;
8
+ function stripAnsi(text) {
9
+ return text.replace(ANSI_PATTERN, '');
10
+ }
11
+ function visualWidth(text) {
12
+ let width = 0;
13
+ for (const ch of stripAnsi(text)) {
14
+ const cp = ch.codePointAt(0) || 0;
15
+ width += isWideCodePoint(cp) ? 2 : 1;
16
+ }
17
+ return width;
18
+ }
19
+ function padEndVisible(text, targetWidth) {
20
+ const width = visualWidth(text);
21
+ return width >= targetWidth ? text : text + ' '.repeat(targetWidth - width);
22
+ }
23
+ function truncateVisible(text, targetWidth) {
24
+ if (targetWidth <= 0)
25
+ return '';
26
+ if (visualWidth(text) <= targetWidth)
27
+ return text;
28
+ if (targetWidth <= 1)
29
+ return '…';
30
+ let out = '';
31
+ let width = 0;
32
+ const limit = targetWidth - 1;
33
+ for (const ch of text) {
34
+ const cp = ch.codePointAt(0) || 0;
35
+ const chWidth = isWideCodePoint(cp) ? 2 : 1;
36
+ if (width + chWidth > limit)
37
+ break;
38
+ out += ch;
39
+ width += chWidth;
40
+ }
41
+ return out + '…';
42
+ }
43
+ function isWideCodePoint(cp) {
44
+ return cp >= 0x1100 && (cp <= 0x115F || cp === 0x2329 || cp === 0x232A ||
45
+ (cp >= 0x2E80 && cp <= 0xA4CF && cp !== 0x303F) ||
46
+ (cp >= 0xAC00 && cp <= 0xD7A3) ||
47
+ (cp >= 0xF900 && cp <= 0xFAFF) ||
48
+ (cp >= 0xFE10 && cp <= 0xFE19) ||
49
+ (cp >= 0xFE30 && cp <= 0xFE6F) ||
50
+ (cp >= 0xFF01 && cp <= 0xFF60) ||
51
+ (cp >= 0xFFE0 && cp <= 0xFFE6) ||
52
+ (cp >= 0x20000 && cp <= 0x2FFFD) ||
53
+ (cp >= 0x30000 && cp <= 0x3FFFD));
54
+ }
55
+ //# sourceMappingURL=text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../../../src/ui/shared/text.ts"],"names":[],"mappings":";;AAEA,8BAEC;AAED,kCAOC;AAED,sCAGC;AAED,0CAkBC;AAtCD,MAAM,YAAY,GAAG,iBAAiB,CAAC;AAEvC,SAAgB,SAAS,CAAC,IAAY;IACpC,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,SAAgB,WAAW,CAAC,IAAY;IACtC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAClC,KAAK,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,aAAa,CAAC,IAAY,EAAE,WAAmB;IAC7D,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAgB,eAAe,CAAC,IAAY,EAAE,WAAmB;IAC/D,IAAI,WAAW,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,WAAW;QAAE,OAAO,IAAI,CAAC;IAClD,IAAI,WAAW,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC;IAEjC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,KAAK,GAAG,WAAW,GAAG,CAAC,CAAC;IAE9B,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;QACtB,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,KAAK,GAAG,OAAO,GAAG,KAAK;YAAE,MAAM;QACnC,GAAG,IAAI,EAAE,CAAC;QACV,KAAK,IAAI,OAAO,CAAC;IACnB,CAAC;IAED,OAAO,GAAG,GAAG,GAAG,CAAC;AACnB,CAAC;AAED,SAAS,eAAe,CAAC,EAAU;IACjC,OAAO,EAAE,IAAI,MAAM,IAAI,CACrB,EAAE,IAAI,MAAM,IAAI,EAAE,KAAK,MAAM,IAAI,EAAE,KAAK,MAAM;QAC9C,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,IAAI,EAAE,KAAK,MAAM,CAAC;QAC/C,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC;QAC9B,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC;QAC9B,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC;QAC9B,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC;QAC9B,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC;QAC9B,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC;QAC9B,CAAC,EAAE,IAAI,OAAO,IAAI,EAAE,IAAI,OAAO,CAAC;QAChC,CAAC,EAAE,IAAI,OAAO,IAAI,EAAE,IAAI,OAAO,CAAC,CACjC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,27 @@
1
+ export type SuggestionKind = 'command' | 'file' | 'session' | 'model' | 'mcp-resource' | 'skill' | 'edit';
2
+ export interface SuggestionItem {
3
+ id: string;
4
+ kind: SuggestionKind;
5
+ label: string;
6
+ detail?: string;
7
+ shortcut?: string;
8
+ disabledReason?: string;
9
+ value?: string;
10
+ metadata?: Record<string, unknown>;
11
+ }
12
+ export interface PaletteTheme {
13
+ accent: (text: string) => string;
14
+ dim: (text: string) => string;
15
+ selected: (text: string) => string;
16
+ }
17
+ export interface PaletteRenderOptions {
18
+ title: string;
19
+ items: SuggestionItem[];
20
+ selectedIndex: number;
21
+ width: number;
22
+ moreCount?: number;
23
+ footer?: string;
24
+ emptyLabel?: string;
25
+ theme: PaletteTheme;
26
+ }
27
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ui/shared/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,MAAM,GACN,SAAS,GACT,OAAO,GACP,cAAc,GACd,OAAO,GACP,MAAM,CAAC;AAEX,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACjC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,YAAY,CAAC;CACrB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ui/shared/types.ts"],"names":[],"mappings":""}
@@ -63,8 +63,8 @@ function renderUserInputEcho(input, width) {
63
63
  .join('\n');
64
64
  }
65
65
  function renderUserInputEchoFrame(input, width) {
66
- // Kept for compatibility with the v2 caller. Submitted input should read as
67
- // conversation content, not as a bordered live input frame.
66
+ // Kept for compatibility with older framed-input callers. Submitted input
67
+ // should read as conversation content, not as a bordered live input frame.
68
68
  return renderUserInputEcho(input, width);
69
69
  }
70
70
  //# sourceMappingURL=user-input.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"user-input.js","sourceRoot":"","sources":["../../src/ui/user-input.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"user-input.js","sourceRoot":"","sources":["../../src/ui/user-input.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,2 @@
1
- /**
2
- * UI v2 command palette renderer.
3
- */
4
- import type { PaletteRenderOptions } from '../types';
5
- export declare function renderCommandPalette(options: PaletteRenderOptions): string[];
1
+ export * from '../../ui/shared/command-palette';
6
2
  //# sourceMappingURL=command-palette.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"command-palette.d.ts","sourceRoot":"","sources":["../../../src/ui-v2/components/command-palette.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAkB,MAAM,UAAU,CAAC;AAMrE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,EAAE,CAiC5E"}
1
+ {"version":3,"file":"command-palette.d.ts","sourceRoot":"","sources":["../../../src/ui-v2/components/command-palette.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC"}
@@ -1,57 +1,18 @@
1
1
  "use strict";
2
- /**
3
- * UI v2 command palette renderer.
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.renderCommandPalette = renderCommandPalette;
7
- const text_1 = require("../runtime/text");
8
- const MIN_PALETTE_WIDTH = 28;
9
- const MAX_PALETTE_WIDTH = 64;
10
- function renderCommandPalette(options) {
11
- const innerWidth = Math.max(MIN_PALETTE_WIDTH, Math.min(options.width - 4, MAX_PALETTE_WIDTH));
12
- const title = (0, text_1.truncateVisible)(options.title, Math.max(8, innerWidth - 4));
13
- const titleWidth = (0, text_1.visualWidth)(title);
14
- const headerFill = Math.max(1, innerWidth - titleWidth - 3);
15
- const lines = [
16
- options.theme.dim(`┌─ ${title} ${'─'.repeat(headerFill)}┐`),
17
- ];
18
- if (options.items.length === 0) {
19
- lines.push(renderEmptyRow(options.emptyLabel ?? 'No matches', innerWidth, options.theme.dim));
20
- }
21
- else {
22
- options.items.forEach((item, index) => {
23
- lines.push(renderSuggestionRow({
24
- item,
25
- selected: index === options.selectedIndex,
26
- innerWidth,
27
- theme: options.theme,
28
- }));
29
- });
30
- }
31
- if (options.moreCount && options.moreCount > 0) {
32
- const more = `${options.moreCount} more results`;
33
- lines.push(options.theme.dim(`│ ${(0, text_1.padEndVisible)(more, innerWidth - 2)} │`));
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
34
7
  }
35
- lines.push(options.theme.dim(`└${'─'.repeat(innerWidth)}┘`));
36
- lines.push(options.theme.dim(options.footer ?? ' ↑↓ Select Enter Esc'));
37
- return lines;
38
- }
39
- function renderSuggestionRow(options) {
40
- const label = formatLabel(options.item);
41
- const detailWidth = Math.max(0, options.innerWidth - (0, text_1.visualWidth)(label) - 3);
42
- const detail = options.item.detail ? (0, text_1.truncateVisible)(options.item.detail, detailWidth) : '';
43
- const gapWidth = Math.max(1, options.innerWidth - (0, text_1.visualWidth)(label) - (0, text_1.visualWidth)(detail) - 2);
44
- const rowContent = label + ' '.repeat(gapWidth) + detail;
45
- const padded = (0, text_1.padEndVisible)(rowContent, options.innerWidth - 2);
46
- if (options.selected) {
47
- return options.theme.dim('│ ') + options.theme.selected(padded) + options.theme.dim(' │');
48
- }
49
- return options.theme.dim('│ ') + options.theme.accent(label) + ' '.repeat(gapWidth) + options.theme.dim(detail) + options.theme.dim(' │');
50
- }
51
- function renderEmptyRow(label, innerWidth, dim) {
52
- return dim(`│ ${(0, text_1.padEndVisible)((0, text_1.truncateVisible)(label, innerWidth - 2), innerWidth - 2)} │`);
53
- }
54
- function formatLabel(item) {
55
- return item.shortcut ? `${item.label} (${item.shortcut})` : item.label;
56
- }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("../../ui/shared/command-palette"), exports);
57
18
  //# sourceMappingURL=command-palette.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"command-palette.js","sourceRoot":"","sources":["../../../src/ui-v2/components/command-palette.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command-palette.js","sourceRoot":"","sources":["../../../src/ui-v2/components/command-palette.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kEAAgD"}
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * UI v2 visible shell components.
3
3
  */
4
+ export { renderV2InputFrame, renderV2Prompt, type V2InputFrameOptions, type V2InputFrameRender, } from '../../ui/shared/input-frame';
4
5
  export interface V2ShellHeaderConfig {
5
6
  provider: string;
6
7
  model: string;
@@ -27,21 +28,7 @@ export interface V2ShortcutItem {
27
28
  key: string;
28
29
  label: string;
29
30
  }
30
- export interface V2InputFrameOptions {
31
- input: string;
32
- modeIndicator?: string;
33
- width?: number;
34
- statusText?: string;
35
- }
36
- export interface V2InputFrameRender {
37
- output: string;
38
- height: number;
39
- cursorRow: number;
40
- cursorColumn: number;
41
- }
42
31
  export declare function renderV2ShellHeader(config: V2ShellHeaderConfig): string;
43
- export declare function renderV2Prompt(modeIndicator?: string): string;
44
- export declare function renderV2InputFrame(options: V2InputFrameOptions): V2InputFrameRender;
45
32
  export declare function renderV2StatusBadge(stats: V2StatusLineStats): string;
46
33
  export declare function renderV2StatusLine(stats: V2StatusLineStats): string;
47
34
  export declare function renderV2FooterHint(width?: number): string;
@@ -1 +1 @@
1
- {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../src/ui-v2/components/shell.ts"],"names":[],"mappings":"AAAA;;GAEG;AA+BH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,YAAY,CAAC;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAWD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAoBvE;AAED,wBAAgB,cAAc,CAAC,aAAa,GAAE,MAAW,GAAG,MAAM,CAGjE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,kBAAkB,CA4BnF;AAoBD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAIpE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAInE;AAcD,wBAAgB,kBAAkB,CAAC,KAAK,GAAE,MAAqC,GAAG,MAAM,CAMvF;AAED,wBAAgB,iBAAiB,CAAC,KAAK,GAAE,MAAqC,GAAG,MAAM,CAetF"}
1
+ {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../src/ui-v2/components/shell.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,6BAA6B,CAAC;AAsBrC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,YAAY,CAAC;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAWD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAoBvE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAIpE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAInE;AAcD,wBAAgB,kBAAkB,CAAC,KAAK,GAAE,MAAqC,GAAG,MAAM,CAMvF;AAED,wBAAgB,iBAAiB,CAAC,KAAK,GAAE,MAAqC,GAAG,MAAM,CAetF"}
@@ -6,9 +6,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
6
6
  return (mod && mod.__esModule) ? mod : { "default": mod };
7
7
  };
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.renderV2Prompt = exports.renderV2InputFrame = void 0;
9
10
  exports.renderV2ShellHeader = renderV2ShellHeader;
10
- exports.renderV2Prompt = renderV2Prompt;
11
- exports.renderV2InputFrame = renderV2InputFrame;
12
11
  exports.renderV2StatusBadge = renderV2StatusBadge;
13
12
  exports.renderV2StatusLine = renderV2StatusLine;
14
13
  exports.renderV2FooterHint = renderV2FooterHint;
@@ -16,6 +15,9 @@ exports.renderV2Shortcuts = renderV2Shortcuts;
16
15
  const path_1 = require("path");
17
16
  const chalk_1 = __importDefault(require("chalk"));
18
17
  const text_1 = require("../runtime/text");
18
+ var input_frame_1 = require("../../ui/shared/input-frame");
19
+ Object.defineProperty(exports, "renderV2InputFrame", { enumerable: true, get: function () { return input_frame_1.renderV2InputFrame; } });
20
+ Object.defineProperty(exports, "renderV2Prompt", { enumerable: true, get: function () { return input_frame_1.renderV2Prompt; } });
19
21
  const NO_COLOR = process.env.NO_COLOR !== undefined || process.env.TERM === 'dumb';
20
22
  const colorize = NO_COLOR ? {
21
23
  brand: (s) => s,
@@ -34,10 +36,6 @@ const colorize = NO_COLOR ? {
34
36
  danger: chalk_1.default.red,
35
37
  label: chalk_1.default.hex('#94A3B8'),
36
38
  };
37
- const INPUT_BG = '\x1b[48;2;56;56;56m';
38
- const INPUT_FG = '\x1b[38;2;226;232;240m';
39
- const RESET_COLORS = '\x1b[39;49m';
40
- const CLEAR_TO_EOL = '\x1b[K';
41
39
  const DEFAULT_SHORTCUTS = [
42
40
  { key: '/', label: 'commands' },
43
41
  { key: '@', label: 'files' },
@@ -65,50 +63,6 @@ function renderV2ShellHeader(config) {
65
63
  colorize.dim(`╰${'─'.repeat(innerWidth)}╯`),
66
64
  ].join('\n');
67
65
  }
68
- function renderV2Prompt(modeIndicator = '') {
69
- const mode = modeIndicator ? colorize.dim(`${modeIndicator} `) : '';
70
- return `${colorize.accent('›')} ${mode}`;
71
- }
72
- function renderV2InputFrame(options) {
73
- const width = Math.max(24, options.width || process.stdout.columns || 80);
74
- const inputWidth = Math.max(1, width - 1);
75
- const logicalLines = options.input.length > 0 ? options.input.split('\n') : [''];
76
- const firstPrompt = renderV2Prompt(options.modeIndicator || '');
77
- const continuationPrompt = ' '.repeat((0, text_1.visualWidth)(firstPrompt));
78
- const renderedLines = logicalLines.map((line, index) => {
79
- const prefix = index === 0 ? firstPrompt : continuationPrompt;
80
- return renderInputLine((0, text_1.truncateVisible)(prefix + line, inputWidth));
81
- });
82
- const statusLine = options.statusText ? renderInputStatusLine(inputWidth, options.statusText) : undefined;
83
- const rowSpans = logicalLines.map((line, index) => {
84
- const prefix = index === 0 ? firstPrompt : continuationPrompt;
85
- return terminalRowsFor((0, text_1.visualWidth)(prefix) + (0, text_1.visualWidth)(line), width);
86
- });
87
- const rowsBeforeCursor = rowSpans.slice(0, -1).reduce((sum, rows) => sum + rows, 0);
88
- const lastLine = logicalLines[logicalLines.length - 1] || '';
89
- const lastPrefix = logicalLines.length === 1 ? firstPrompt : continuationPrompt;
90
- const lastVisibleWidth = (0, text_1.visualWidth)(lastPrefix) + (0, text_1.visualWidth)(lastLine);
91
- return {
92
- output: [...renderedLines, ...(statusLine ? [statusLine] : [])].join('\n'),
93
- height: rowSpans.reduce((sum, rows) => sum + rows, 0) + (statusLine ? 1 : 0),
94
- cursorRow: rowsBeforeCursor + Math.floor(lastVisibleWidth / width),
95
- cursorColumn: (lastVisibleWidth % width) + 1,
96
- };
97
- }
98
- function renderInputLine(content) {
99
- if (NO_COLOR) {
100
- return content;
101
- }
102
- return `${INPUT_BG}${INPUT_FG}${content}${CLEAR_TO_EOL}${RESET_COLORS}`;
103
- }
104
- function renderInputStatusLine(width, statusText) {
105
- const badge = ` ${statusText} `;
106
- const badgeWidth = (0, text_1.visualWidth)(badge);
107
- if (badgeWidth >= width) {
108
- return (0, text_1.truncateVisible)(badge, width);
109
- }
110
- return ' '.repeat(width - badgeWidth) + badge;
111
- }
112
66
  function renderV2StatusBadge(stats) {
113
67
  const width = Math.max(20, stats.width || process.stdout.columns || 80);
114
68
  const parts = buildStatusParts(stats).join(colorize.dim(' '));
@@ -165,11 +119,6 @@ function renderStatus(status, text) {
165
119
  function renderToken(label, value) {
166
120
  return `${colorize.label(label)}=${colorize.accent(value)}`;
167
121
  }
168
- function terminalRowsFor(visibleWidth, terminalWidth) {
169
- if (visibleWidth <= 0)
170
- return 1;
171
- return Math.floor(visibleWidth / terminalWidth) + 1;
172
- }
173
122
  function shortProvider(provider) {
174
123
  return provider === 'Alibaba Cloud' ? 'Qwen' : provider;
175
124
  }