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.
- package/README.md +2 -2
- package/README.zh-CN.md +10 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +9 -16
- package/dist/cli.js.map +1 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +70 -26
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/types.d.ts +7 -28
- package/dist/commands/types.d.ts.map +1 -1
- package/dist/commands/types.js.map +1 -1
- package/dist/framework/prompt.d.ts.map +1 -1
- package/dist/framework/prompt.js +15 -2
- package/dist/framework/prompt.js.map +1 -1
- package/dist/framework/query.d.ts +2 -0
- package/dist/framework/query.d.ts.map +1 -1
- package/dist/framework/query.js +82 -4
- package/dist/framework/query.js.map +1 -1
- package/dist/framework/tool-scheduler.d.ts +3 -0
- package/dist/framework/tool-scheduler.d.ts.map +1 -1
- package/dist/framework/tool-scheduler.js +9 -0
- package/dist/framework/tool-scheduler.js.map +1 -1
- package/dist/ink-ui/App.d.ts +2 -2
- package/dist/ink-ui/App.d.ts.map +1 -1
- package/dist/ink-ui/components/PixelHorseBanner.d.ts +2 -2
- package/dist/ink-ui/components/PixelHorseBanner.d.ts.map +1 -1
- package/dist/ink-ui/components/RunningHorseIndicator.d.ts.map +1 -1
- package/dist/ink-ui/components/RunningHorseIndicator.js +2 -1
- package/dist/ink-ui/components/RunningHorseIndicator.js.map +1 -1
- package/dist/ink-ui/components/StatusLine.d.ts +2 -2
- package/dist/ink-ui/components/StatusLine.d.ts.map +1 -1
- package/dist/ink-ui/launch.d.ts +2 -2
- package/dist/ink-ui/launch.d.ts.map +1 -1
- package/dist/ink-ui/launch.js.map +1 -1
- package/dist/ink-ui/screens/ReplScreen.d.ts +2 -2
- package/dist/ink-ui/screens/ReplScreen.d.ts.map +1 -1
- package/dist/ink-ui/screens/ReplScreen.js +4 -2
- package/dist/ink-ui/screens/ReplScreen.js.map +1 -1
- package/dist/print-ui/launch.d.ts +44 -2
- package/dist/print-ui/launch.d.ts.map +1 -1
- package/dist/print-ui/launch.js +12 -0
- package/dist/print-ui/launch.js.map +1 -1
- package/dist/runtime/agent-runtime-controller.d.ts +4 -1
- package/dist/runtime/agent-runtime-controller.d.ts.map +1 -1
- package/dist/runtime/agent-runtime-controller.js +34 -2
- package/dist/runtime/agent-runtime-controller.js.map +1 -1
- package/dist/runtime/agent-runtime-protocol.d.ts +7 -1
- package/dist/runtime/agent-runtime-protocol.d.ts.map +1 -1
- package/dist/runtime/agent-runtime-protocol.js +12 -0
- package/dist/runtime/agent-runtime-protocol.js.map +1 -1
- package/dist/runtime/agent-status.d.ts +4 -0
- package/dist/runtime/agent-status.d.ts.map +1 -0
- package/dist/runtime/agent-status.js +15 -0
- package/dist/runtime/agent-status.js.map +1 -0
- package/dist/runtime/chat-controller.d.ts +4 -1
- package/dist/runtime/chat-controller.d.ts.map +1 -1
- package/dist/runtime/chat-controller.js +35 -3
- package/dist/runtime/chat-controller.js.map +1 -1
- package/dist/runtime/ui-events.d.ts +29 -2
- package/dist/runtime/ui-events.d.ts.map +1 -1
- package/dist/runtime/ui-events.js +34 -0
- package/dist/runtime/ui-events.js.map +1 -1
- package/dist/services/compact/auto-compact.d.ts +19 -0
- package/dist/services/compact/auto-compact.d.ts.map +1 -1
- package/dist/services/compact/auto-compact.js +55 -7
- package/dist/services/compact/auto-compact.js.map +1 -1
- package/dist/services/config-dir.d.ts +2 -0
- package/dist/services/config-dir.d.ts.map +1 -1
- package/dist/services/config-dir.js +5 -0
- package/dist/services/config-dir.js.map +1 -1
- package/dist/services/config.d.ts +9 -2
- package/dist/services/config.d.ts.map +1 -1
- package/dist/services/config.js +45 -11
- package/dist/services/config.js.map +1 -1
- package/dist/services/doctor.d.ts.map +1 -1
- package/dist/services/doctor.js +36 -4
- package/dist/services/doctor.js.map +1 -1
- package/dist/services/format.d.ts +2 -0
- package/dist/services/format.d.ts.map +1 -0
- package/dist/services/format.js +20 -0
- package/dist/services/format.js.map +1 -0
- package/dist/services/global-config.d.ts +10 -9
- package/dist/services/global-config.d.ts.map +1 -1
- package/dist/services/global-config.js +5 -20
- package/dist/services/global-config.js.map +1 -1
- package/dist/services/llm.d.ts +2 -0
- package/dist/services/llm.d.ts.map +1 -1
- package/dist/services/llm.js +57 -20
- package/dist/services/llm.js.map +1 -1
- package/dist/services/model-context.d.ts +10 -1
- package/dist/services/model-context.d.ts.map +1 -1
- package/dist/services/model-context.js +53 -14
- package/dist/services/model-context.js.map +1 -1
- package/dist/services/storage-maintenance.d.ts.map +1 -1
- package/dist/services/storage-maintenance.js +3 -9
- package/dist/services/storage-maintenance.js.map +1 -1
- package/dist/services/usage-state.d.ts +20 -0
- package/dist/services/usage-state.d.ts.map +1 -0
- package/dist/services/usage-state.js +128 -0
- package/dist/services/usage-state.js.map +1 -0
- package/dist/terminal-ui/launch.d.ts +44 -2
- package/dist/terminal-ui/launch.d.ts.map +1 -1
- package/dist/terminal-ui/launch.js +102 -36
- package/dist/terminal-ui/launch.js.map +1 -1
- package/dist/terminal-ui/raw-editor.d.ts +2 -0
- package/dist/terminal-ui/raw-editor.d.ts.map +1 -1
- package/dist/terminal-ui/raw-editor.js +30 -1
- package/dist/terminal-ui/raw-editor.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +259 -43
- package/dist/tools/index.js.map +1 -1
- package/dist/tui-core/input-parser.d.ts +4 -0
- package/dist/tui-core/input-parser.d.ts.map +1 -1
- package/dist/tui-core/input-parser.js +30 -0
- package/dist/tui-core/input-parser.js.map +1 -1
- package/dist/tui-ui/launch.d.ts +2 -2
- package/dist/tui-ui/launch.d.ts.map +1 -1
- package/dist/tui-ui/launch.js +2 -0
- package/dist/tui-ui/launch.js.map +1 -1
- package/dist/tui-ui/layout.d.ts.map +1 -1
- package/dist/tui-ui/layout.js +2 -13
- package/dist/tui-ui/layout.js.map +1 -1
- package/dist/tui-ui/runner.d.ts.map +1 -1
- package/dist/tui-ui/runner.js +6 -0
- package/dist/tui-ui/runner.js.map +1 -1
- package/dist/tui-ui/state.d.ts +13 -1
- package/dist/tui-ui/state.d.ts.map +1 -1
- package/dist/tui-ui/state.js +13 -0
- package/dist/tui-ui/state.js.map +1 -1
- package/dist/ui/command-panel.d.ts +1 -1
- package/dist/ui/command-panel.d.ts.map +1 -1
- package/dist/ui/command-panel.js +37 -34
- package/dist/ui/command-panel.js.map +1 -1
- package/dist/ui/file-completion.d.ts +1 -1
- package/dist/ui/file-completion.d.ts.map +1 -1
- package/dist/ui/file-completion.js +4 -4
- package/dist/ui/file-completion.js.map +1 -1
- package/dist/ui/shared/command-palette.d.ts +3 -0
- package/dist/ui/shared/command-palette.d.ts.map +1 -0
- package/dist/ui/shared/command-palette.js +54 -0
- package/dist/ui/shared/command-palette.js.map +1 -0
- package/dist/ui/shared/command-suggestions.d.ts +19 -0
- package/dist/ui/shared/command-suggestions.d.ts.map +1 -0
- package/dist/ui/shared/command-suggestions.js +67 -0
- package/dist/ui/shared/command-suggestions.js.map +1 -0
- package/dist/ui/shared/input-frame.d.ts +19 -0
- package/dist/ui/shared/input-frame.d.ts.map +1 -0
- package/dist/ui/shared/input-frame.js +74 -0
- package/dist/ui/shared/input-frame.js.map +1 -0
- package/dist/ui/shared/text.d.ts +5 -0
- package/dist/ui/shared/text.d.ts.map +1 -0
- package/dist/ui/shared/text.js +55 -0
- package/dist/ui/shared/text.js.map +1 -0
- package/dist/ui/shared/types.d.ts +27 -0
- package/dist/ui/shared/types.d.ts.map +1 -0
- package/dist/ui/shared/types.js +3 -0
- package/dist/ui/shared/types.js.map +1 -0
- package/dist/ui/user-input.js +2 -2
- package/dist/ui/user-input.js.map +1 -1
- package/dist/ui-v2/components/command-palette.d.ts +1 -5
- package/dist/ui-v2/components/command-palette.d.ts.map +1 -1
- package/dist/ui-v2/components/command-palette.js +15 -54
- package/dist/ui-v2/components/command-palette.js.map +1 -1
- package/dist/ui-v2/components/shell.d.ts +1 -14
- package/dist/ui-v2/components/shell.d.ts.map +1 -1
- package/dist/ui-v2/components/shell.js +4 -55
- package/dist/ui-v2/components/shell.js.map +1 -1
- package/dist/ui-v2/runtime/text.d.ts +1 -7
- package/dist/ui-v2/runtime/text.d.ts.map +1 -1
- package/dist/ui-v2/runtime/text.js +15 -55
- package/dist/ui-v2/runtime/text.js.map +1 -1
- package/dist/ui-v2/state/sessions.d.ts +1 -1
- package/dist/ui-v2/state/sessions.d.ts.map +1 -1
- package/dist/ui-v2/state/sessions.js +5 -18
- package/dist/ui-v2/state/sessions.js.map +1 -1
- package/dist/ui-v2/state/suggestions.d.ts +1 -21
- package/dist/ui-v2/state/suggestions.d.ts.map +1 -1
- package/dist/ui-v2/state/suggestions.js +15 -67
- package/dist/ui-v2/state/suggestions.js.map +1 -1
- package/dist/ui-v2/types.d.ts +1 -32
- package/dist/ui-v2/types.d.ts.map +1 -1
- package/dist/ui-v2/types.js +15 -6
- package/dist/ui-v2/types.js.map +1 -1
- 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":";;AAMA,oDAiCC;AAtCD,iCAAqE;AAErE,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B,SAAgB,oBAAoB,CAAC,OAA6B;IAChE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CACzB,iBAAiB,EACjB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE,iBAAiB,CAAC,CAC/C,CAAC;IACF,MAAM,KAAK,GAAG,IAAA,sBAAe,EAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1E,MAAM,UAAU,GAAG,IAAA,kBAAW,EAAC,KAAK,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAa;QACtB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;KAC5D,CAAC;IAEF,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAU,IAAI,YAAY,EAAE,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAChG,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACpC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC;gBAC7B,IAAI;gBACJ,QAAQ,EAAE,KAAK,KAAK,OAAO,CAAC,aAAa;gBACzC,UAAU;gBACV,KAAK,EAAE,OAAO,CAAC,KAAK;aACrB,CAAC,CAAC,CAAC;QACN,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAG,GAAG,OAAO,CAAC,SAAS,eAAe,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAA,oBAAa,EAAC,IAAI,EAAE,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,yBAAyB,CAAC,CAAC,CAAC;IAC3E,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,mBAAmB,CAAC,OAK5B;IACC,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,GAAG,IAAA,kBAAW,EAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAA,sBAAe,EAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5F,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,GAAG,IAAA,kBAAW,EAAC,KAAK,CAAC,GAAG,IAAA,kBAAW,EAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAChG,MAAM,UAAU,GAAG,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;IACzD,MAAM,MAAM,GAAG,IAAA,oBAAa,EAAC,UAAU,EAAE,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IAEjE,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5F,CAAC;IAED,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5I,CAAC;AAED,SAAS,cAAc,CAAC,KAAa,EAAE,UAAkB,EAAE,GAA6B;IACtF,OAAO,GAAG,CAAC,KAAK,IAAA,oBAAa,EAAC,IAAA,sBAAe,EAAC,KAAK,EAAE,UAAU,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;AAC7F,CAAC;AAED,SAAS,WAAW,CAAC,IAAoB;IACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;AACzE,CAAC"}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ui/shared/types.ts"],"names":[],"mappings":""}
|
package/dist/ui/user-input.js
CHANGED
|
@@ -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
|
|
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
|
|
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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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":"
|
|
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;
|
|
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
|
}
|