mirror of
https://github.com/MoonshotAI/kimi-code.git
synced 2026-07-10 01:39:25 +00:00
feat(kimi-code): integrate vendored @moonshot-ai/pi-tui
Replace the npm @earendil-works/pi-tui dependency with the vendored @moonshot-ai/pi-tui workspace package so the fork can be modified locally. - Point apps/kimi-code imports and native-deps at @moonshot-ai/pi-tui. - Make pi-tui source-first (exports -> src, publishConfig.exports -> dist, mirroring node-sdk) and strict-clean: bracket access for process.env / named capture groups, an override modifier, and non-null assertions for noUncheckedIndexedAccess. - Bump the root tsconfig target to ES2024 and enable allowImportingTsExtensions (needed for pi-tui's /v regex and .ts imports, which node --test requires). - Add packages/pi-tui to flake.nix workspaces and exclude the vendored source from oxlint.
This commit is contained in:
parent
63e7b988f0
commit
86540ca2d7
144 changed files with 321 additions and 1259 deletions
|
|
@ -150,6 +150,7 @@
|
|||
"node_modules/",
|
||||
"apps/*/scripts/",
|
||||
"docs/smoke-archive/",
|
||||
"packages/pi-tui/",
|
||||
"*.generated.ts"
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -79,13 +79,13 @@
|
|||
"node-pty": "^1.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@earendil-works/pi-tui": "^0.78.1",
|
||||
"@moonshot-ai/acp-adapter": "workspace:^",
|
||||
"@moonshot-ai/kimi-code-oauth": "workspace:^",
|
||||
"@moonshot-ai/kimi-code-sdk": "workspace:^",
|
||||
"@moonshot-ai/kimi-telemetry": "workspace:^",
|
||||
"@moonshot-ai/kimi-web": "workspace:^",
|
||||
"@moonshot-ai/migration-legacy": "workspace:^",
|
||||
"@moonshot-ai/pi-tui": "workspace:^",
|
||||
"@moonshot-ai/server": "workspace:^",
|
||||
"@moonshot-ai/vis-server": "workspace:^",
|
||||
"@moonshot-ai/vis-web": "workspace:*",
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ export const nativeDeps = Object.freeze([
|
|||
},
|
||||
{
|
||||
id: 'pi-tui',
|
||||
name: () => '@earendil-works/pi-tui',
|
||||
name: () => '@moonshot-ai/pi-tui',
|
||||
// pi-tui's JS is bundled into main.cjs, so only the platform-specific
|
||||
// native helper (.node under native/) ships alongside the binary — its
|
||||
// dist/ JS is intentionally NOT collected (it stays in the bundle). This
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
* This file implements the ask, progress, and result phases. `beginMigration`
|
||||
* drives the real runMigration flow (injectable for tests).
|
||||
*/
|
||||
import { Container, matchesKey, Key, truncateToWidth, type Focusable } from '@earendil-works/pi-tui';
|
||||
import { Container, matchesKey, Key, truncateToWidth, type Focusable } from '@moonshot-ai/pi-tui';
|
||||
import chalk from 'chalk';
|
||||
|
||||
import type { ColorPalette } from '#/tui/theme/colors';
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ export function installNativeModuleHook(): void {
|
|||
PI_TUI_NATIVE_PATTERN.test(request) &&
|
||||
!existsSync(request)
|
||||
) {
|
||||
const pkgRoot = getNativePackageRoot('@earendil-works/pi-tui');
|
||||
const pkgRoot = getNativePackageRoot('@moonshot-ai/pi-tui');
|
||||
if (pkgRoot !== null) {
|
||||
const match = request.match(PI_TUI_NATIVE_PATTERN);
|
||||
if (match !== null) {
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import { dirname, join } from 'node:path';
|
|||
|
||||
import { getEmbeddedNativeAssetManifest, getNativePackageRoot } from './native-assets';
|
||||
|
||||
const smokePackages = ['@mariozechner/clipboard', '@earendil-works/pi-tui'];
|
||||
const smokePackages = ['@mariozechner/clipboard', '@moonshot-ai/pi-tui'];
|
||||
|
||||
// Verify pi-tui's native helper can actually be loaded through the module hook.
|
||||
// pi-tui computes native helper paths from process.execPath and require()s them;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import type { AutocompleteItem } from '@earendil-works/pi-tui';
|
||||
import type { AutocompleteItem } from '@moonshot-ai/pi-tui';
|
||||
|
||||
/**
|
||||
* A completable token (subcommand or flag) for a slash command's argument
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import type { Component, Focusable } from '@earendil-works/pi-tui';
|
||||
import type { Component, Focusable } from '@moonshot-ai/pi-tui';
|
||||
import type { DeviceAuthorization } from '@moonshot-ai/kimi-code-oauth';
|
||||
import type { KimiHarness, Session } from '@moonshot-ai/kimi-code-sdk';
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import { readdirSync, statSync } from 'node:fs';
|
|||
import { homedir } from 'node:os';
|
||||
import { basename, dirname, join, relative, resolve } from 'pathe';
|
||||
|
||||
import type { AutocompleteItem } from '@earendil-works/pi-tui';
|
||||
import type { AutocompleteItem } from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { completeLeadingArg, type ArgCompletionSpec } from './complete-args';
|
||||
import type { KimiSlashCommand, SlashCommandAvailability } from './types';
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import type { AutocompleteItem, SlashCommand } from '@earendil-works/pi-tui';
|
||||
import type { AutocompleteItem, SlashCommand } from '@moonshot-ai/pi-tui';
|
||||
import type { FlagId } from '@moonshot-ai/kimi-code-sdk';
|
||||
|
||||
export type SlashCommandAvailability = 'always' | 'idle-only';
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import type { Component } from '@earendil-works/pi-tui';
|
||||
import type { Component } from '@moonshot-ai/pi-tui';
|
||||
import type { ContextMessage } from '@moonshot-ai/kimi-code-sdk';
|
||||
import { isKimiError } from '@moonshot-ai/kimi-code-sdk';
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import type { Component } from '@earendil-works/pi-tui';
|
||||
import { visibleWidth, wrapTextWithAnsi } from '@earendil-works/pi-tui';
|
||||
import type { Component } from '@moonshot-ai/pi-tui';
|
||||
import { visibleWidth, wrapTextWithAnsi } from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { currentTheme } from '#/tui/theme';
|
||||
import type { BannerState } from '#/tui/types';
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@
|
|||
* active palette so theme switches take effect on the next render.
|
||||
*/
|
||||
|
||||
import type { Component } from '@earendil-works/pi-tui';
|
||||
import { truncateToWidth, visibleWidth } from '@earendil-works/pi-tui';
|
||||
import type { Component } from '@moonshot-ai/pi-tui';
|
||||
import { truncateToWidth, visibleWidth } from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { currentTheme } from '#/tui/theme';
|
||||
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@
|
|||
* Line 2: context: XX.X% (tokens/max)
|
||||
*/
|
||||
|
||||
import type { Component } from '@earendil-works/pi-tui';
|
||||
import { truncateToWidth, visibleWidth } from '@earendil-works/pi-tui';
|
||||
import type { Component } from '@moonshot-ai/pi-tui';
|
||||
import { truncateToWidth, visibleWidth } from '@moonshot-ai/pi-tui';
|
||||
import chalk from 'chalk';
|
||||
|
||||
import { ALL_TIPS, type ToolbarTip } from '#/tui/constant/tips';
|
||||
|
|
|
|||
|
|
@ -9,8 +9,8 @@
|
|||
* the edge and adding them would just churn the diff renderer.
|
||||
*/
|
||||
|
||||
import { Container } from '@earendil-works/pi-tui';
|
||||
import type { Component } from '@earendil-works/pi-tui';
|
||||
import { Container } from '@moonshot-ai/pi-tui';
|
||||
import type { Component } from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { isRenderCacheEnabled } from '#/tui/utils/render-cache';
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { Text, visibleWidth } from '@earendil-works/pi-tui';
|
||||
import type { TUI } from '@earendil-works/pi-tui';
|
||||
import { Text, visibleWidth } from '@moonshot-ai/pi-tui';
|
||||
import type { TUI } from '@moonshot-ai/pi-tui';
|
||||
|
||||
import {
|
||||
BRAILLE_SPINNER_FRAMES,
|
||||
|
|
|
|||
|
|
@ -9,8 +9,8 @@
|
|||
* is issued.
|
||||
*/
|
||||
|
||||
import type { Component } from '@earendil-works/pi-tui';
|
||||
import { truncateToWidth } from '@earendil-works/pi-tui';
|
||||
import type { Component } from '@moonshot-ai/pi-tui';
|
||||
import { truncateToWidth } from '@moonshot-ai/pi-tui';
|
||||
import chalk from 'chalk';
|
||||
|
||||
import { currentTheme } from '#/tui/theme';
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@
|
|||
* Renders a round-bordered box with the logo, session, model, and version.
|
||||
*/
|
||||
|
||||
import type { Component } from '@earendil-works/pi-tui';
|
||||
import { truncateToWidth, visibleWidth } from '@earendil-works/pi-tui';
|
||||
import type { Component } from '@moonshot-ai/pi-tui';
|
||||
import { truncateToWidth, visibleWidth } from '@moonshot-ai/pi-tui';
|
||||
import chalk from 'chalk';
|
||||
|
||||
import { isRainbowDancing, renderDanceWelcomeHeader } from '#/tui/easter-eggs/dance';
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import {
|
|||
truncateToWidth,
|
||||
visibleWidth,
|
||||
type Focusable,
|
||||
} from '@earendil-works/pi-tui';
|
||||
} from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { currentTheme } from '#/tui/theme';
|
||||
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import {
|
|||
truncateToWidth,
|
||||
visibleWidth,
|
||||
wrapTextWithAnsi,
|
||||
} from '@earendil-works/pi-tui';
|
||||
} from '@moonshot-ai/pi-tui';
|
||||
import { currentTheme } from '#/tui/theme';
|
||||
import { highlightLines, langFromPath } from '#/tui/components/media/code-highlight';
|
||||
import { renderDiffLinesClustered } from '#/tui/components/media/diff-preview';
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ import {
|
|||
truncateToWidth,
|
||||
visibleWidth,
|
||||
type Focusable,
|
||||
} from '@earendil-works/pi-tui';
|
||||
} from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { highlightLines, langFromPath } from '#/tui/components/media/code-highlight';
|
||||
import { renderDiffLines } from '#/tui/components/media/diff-preview';
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ import {
|
|||
truncateToWidth,
|
||||
visibleWidth,
|
||||
type Focusable,
|
||||
} from '@earendil-works/pi-tui';
|
||||
} from '@moonshot-ai/pi-tui';
|
||||
import { CURRENT_MARK, SELECT_POINTER } from '#/tui/constant/symbols';
|
||||
import { currentTheme, type ColorToken } from '#/tui/theme';
|
||||
import { printableChar } from '#/tui/utils/printable-key';
|
||||
|
|
|
|||
|
|
@ -13,8 +13,8 @@
|
|||
* reads the same "work in progress" signal across the UI.
|
||||
*/
|
||||
|
||||
import { Container, Text, Spacer } from '@earendil-works/pi-tui';
|
||||
import type { TUI } from '@earendil-works/pi-tui';
|
||||
import { Container, Text, Spacer } from '@moonshot-ai/pi-tui';
|
||||
import type { TUI } from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { STATUS_BULLET } from '#/tui/constant/symbols';
|
||||
import { currentTheme } from '#/tui/theme';
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ import {
|
|||
truncateToWidth,
|
||||
visibleWidth,
|
||||
type Focusable,
|
||||
} from '@earendil-works/pi-tui';
|
||||
} from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { currentTheme } from '#/tui/theme';
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import {
|
|||
truncateToWidth,
|
||||
visibleWidth,
|
||||
type Focusable,
|
||||
} from '@earendil-works/pi-tui';
|
||||
} from '@moonshot-ai/pi-tui';
|
||||
import type { ExperimentalFeatureState } from '@moonshot-ai/kimi-code-sdk';
|
||||
|
||||
import { SELECT_POINTER } from '#/tui/constant/symbols';
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ import {
|
|||
truncateToWidth,
|
||||
visibleWidth,
|
||||
type Focusable,
|
||||
} from '@earendil-works/pi-tui';
|
||||
} from '@moonshot-ai/pi-tui';
|
||||
import { currentTheme } from '#/tui/theme';
|
||||
|
||||
export type FeedbackInputDialogResult =
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import {
|
|||
truncateToWidth,
|
||||
visibleWidth,
|
||||
type Focusable,
|
||||
} from '@earendil-works/pi-tui';
|
||||
} from '@moonshot-ai/pi-tui';
|
||||
import chalk from 'chalk';
|
||||
|
||||
import { SELECT_POINTER } from '#/tui/constant/symbols';
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ import {
|
|||
decodeKittyPrintable,
|
||||
type Focusable,
|
||||
truncateToWidth,
|
||||
} from '@earendil-works/pi-tui';
|
||||
} from '@moonshot-ai/pi-tui';
|
||||
import { currentTheme } from '#/tui/theme';
|
||||
|
||||
export interface KeyboardShortcut {
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import {
|
|||
truncateToWidth,
|
||||
visibleWidth,
|
||||
type Focusable,
|
||||
} from '@earendil-works/pi-tui';
|
||||
} from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { DEFAULT_OAUTH_PROVIDER_NAME, PRODUCT_NAME } from '#/constant/app';
|
||||
import { CURRENT_MARK, SELECT_POINTER } from '#/tui/constant/symbols';
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import {
|
|||
truncateToWidth,
|
||||
visibleWidth,
|
||||
type Focusable,
|
||||
} from '@earendil-works/pi-tui';
|
||||
} from '@moonshot-ai/pi-tui';
|
||||
import type { PluginInfo, PluginMcpServerInfo, PluginSummary } from '@moonshot-ai/kimi-code-sdk';
|
||||
import chalk from 'chalk';
|
||||
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ import {
|
|||
truncateToWidth,
|
||||
visibleWidth,
|
||||
type Focusable,
|
||||
} from '@earendil-works/pi-tui';
|
||||
} from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { DEFAULT_OAUTH_PROVIDER_NAME } from '#/constant/app';
|
||||
import { CURRENT_MARK, SELECT_POINTER } from '#/tui/constant/symbols';
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ import {
|
|||
truncateToWidth,
|
||||
visibleWidth,
|
||||
wrapTextWithAnsi,
|
||||
} from '@earendil-works/pi-tui';
|
||||
} from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { currentTheme } from '#/tui/theme';
|
||||
import type {
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import {
|
|||
truncateToWidth,
|
||||
visibleWidth,
|
||||
type Focusable,
|
||||
} from '@earendil-works/pi-tui';
|
||||
} from '@moonshot-ai/pi-tui';
|
||||
import { formatSessionLabel } from '#/migration/index';
|
||||
import { CURRENT_MARK, SELECT_POINTER } from '#/tui/constant/symbols';
|
||||
import { currentTheme } from '#/tui/theme';
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import {
|
|||
visibleWidth,
|
||||
type Component,
|
||||
type Focusable,
|
||||
} from '@earendil-works/pi-tui';
|
||||
} from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { SELECT_POINTER } from '#/tui/constant/symbols';
|
||||
import { currentTheme } from '#/tui/theme';
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ import {
|
|||
matchesKey,
|
||||
truncateToWidth,
|
||||
type Focusable,
|
||||
} from '@earendil-works/pi-tui';
|
||||
} from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { currentTheme } from '#/tui/theme';
|
||||
import { renderTabStrip } from '#/tui/utils/tab-strip';
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ import {
|
|||
truncateToWidth,
|
||||
visibleWidth,
|
||||
type Focusable,
|
||||
} from '@earendil-works/pi-tui';
|
||||
} from '@moonshot-ai/pi-tui';
|
||||
import type { BackgroundTaskInfo, BackgroundTaskStatus } from '@moonshot-ai/kimi-code-sdk';
|
||||
|
||||
import { currentTheme } from '#/tui/theme';
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ import {
|
|||
truncateToWidth,
|
||||
visibleWidth,
|
||||
type Focusable,
|
||||
} from '@earendil-works/pi-tui';
|
||||
} from '@moonshot-ai/pi-tui';
|
||||
import type { BackgroundTaskInfo, BackgroundTaskStatus } from '@moonshot-ai/kimi-code-sdk';
|
||||
|
||||
import { SELECT_POINTER } from '@/tui/constant/symbols';
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import {
|
|||
truncateToWidth,
|
||||
visibleWidth,
|
||||
type Focusable,
|
||||
} from '@earendil-works/pi-tui';
|
||||
} from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { SELECT_POINTER } from '#/tui/constant/symbols';
|
||||
import { currentTheme } from '#/tui/theme';
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ import {
|
|||
visibleWidth,
|
||||
type SelectItem,
|
||||
type TUI,
|
||||
} from '@earendil-works/pi-tui';
|
||||
} from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { currentTheme } from '#/tui/theme';
|
||||
import { createEditorTheme } from '#/tui/theme/pi-tui-theme';
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import {
|
|||
type AutocompleteProvider,
|
||||
type AutocompleteSuggestions,
|
||||
type SlashCommand,
|
||||
} from '@earendil-works/pi-tui';
|
||||
} from '@moonshot-ai/pi-tui';
|
||||
|
||||
const PATH_DELIMITERS = new Set([' ', '\t', '"', "'", '=']);
|
||||
const MAX_FALLBACK_SCAN = 2000;
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import {
|
|||
type SelectItem,
|
||||
type SelectListLayoutOptions,
|
||||
type SelectListTheme,
|
||||
} from '@earendil-works/pi-tui';
|
||||
} from '@moonshot-ai/pi-tui';
|
||||
|
||||
// Mirror pi-tui's private select-list layout constants
|
||||
// (dist/components/select-list.js); keep in sync when bumping pi-tui.
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
* the viewport; pi-tui handles proportional scaling internally.
|
||||
*/
|
||||
|
||||
import { Container, Image, Text, type ImageTheme, getCapabilities } from '@earendil-works/pi-tui';
|
||||
import { Container, Image, Text, type ImageTheme, getCapabilities } from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { currentTheme } from '#/tui/theme';
|
||||
import type { ImageAttachment } from '#/tui/utils/image-attachment-store';
|
||||
|
|
|
|||
|
|
@ -15,8 +15,8 @@
|
|||
* - Ungrouping is not implemented. Once formed, a group stays grouped.
|
||||
*/
|
||||
|
||||
import type { TUI } from '@earendil-works/pi-tui';
|
||||
import { Container, Spacer, Text } from '@earendil-works/pi-tui';
|
||||
import type { TUI } from '@moonshot-ai/pi-tui';
|
||||
import { Container, Spacer, Text } from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { STATUS_BULLET } from '#/tui/constant/symbols';
|
||||
import { currentTheme } from '#/tui/theme';
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { truncateToWidth, visibleWidth, type Component } from '@earendil-works/pi-tui';
|
||||
import { truncateToWidth, visibleWidth, type Component } from '@moonshot-ai/pi-tui';
|
||||
import chalk from 'chalk';
|
||||
|
||||
import {
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
* to align after the bullet.
|
||||
*/
|
||||
|
||||
import { Container, Markdown, truncateToWidth, visibleWidth, type Component } from '@earendil-works/pi-tui';
|
||||
import { Container, Markdown, truncateToWidth, visibleWidth, type Component } from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { MESSAGE_INDENT } from '#/tui/constant/rendering';
|
||||
import { STATUS_BULLET } from '#/tui/constant/symbols';
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { Text, truncateToWidth, type Component } from '@earendil-works/pi-tui';
|
||||
import { Text, truncateToWidth, type Component } from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { MESSAGE_INDENT } from '#/tui/constant/rendering';
|
||||
import { FAILURE_MARK, STATUS_BULLET } from '#/tui/constant/symbols';
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import type { Component } from '@earendil-works/pi-tui';
|
||||
import { Spacer, Text, visibleWidth } from '@earendil-works/pi-tui';
|
||||
import type { Component } from '@moonshot-ai/pi-tui';
|
||||
import { Spacer, Text, visibleWidth } from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { STATUS_BULLET } from '#/tui/constant/symbols';
|
||||
import { currentTheme } from '#/tui/theme';
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
* the richer completion card (the `/goal` box), not this marker.
|
||||
*/
|
||||
|
||||
import { truncateToWidth, type Component } from '@earendil-works/pi-tui';
|
||||
import { truncateToWidth, type Component } from '@moonshot-ai/pi-tui';
|
||||
import type { GoalChange } from '@moonshot-ai/kimi-code-sdk';
|
||||
|
||||
import { STATUS_BULLET } from '#/tui/constant/symbols';
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ import {
|
|||
visibleWidth,
|
||||
wrapTextWithAnsi,
|
||||
type Component,
|
||||
} from '@earendil-works/pi-tui';
|
||||
} from '@moonshot-ai/pi-tui';
|
||||
import type { GoalSnapshot, GoalStatus } from '@moonshot-ai/kimi-code-sdk';
|
||||
|
||||
import { MESSAGE_INDENT } from '#/tui/constant/rendering';
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
import path from 'node:path';
|
||||
import { pathToFileURL } from 'node:url';
|
||||
|
||||
import { Markdown, truncateToWidth, visibleWidth, type Component, type MarkdownTheme } from '@earendil-works/pi-tui';
|
||||
import { Markdown, truncateToWidth, visibleWidth, type Component, type MarkdownTheme } from '@moonshot-ai/pi-tui';
|
||||
import chalk from 'chalk';
|
||||
|
||||
import { toTerminalHyperlink } from '#/utils/terminal-hyperlink';
|
||||
|
|
|
|||
|
|
@ -20,8 +20,8 @@
|
|||
* src/missing.ts · failed
|
||||
*/
|
||||
|
||||
import type { TUI } from '@earendil-works/pi-tui';
|
||||
import { Container, Spacer, Text } from '@earendil-works/pi-tui';
|
||||
import type { TUI } from '@moonshot-ai/pi-tui';
|
||||
import { Container, Spacer, Text } from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { STATUS_BULLET } from '#/tui/constant/symbols';
|
||||
import { currentTheme } from '#/tui/theme';
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import type { Component } from '@earendil-works/pi-tui';
|
||||
import { Container, Text } from '@earendil-works/pi-tui';
|
||||
import type { Component } from '@moonshot-ai/pi-tui';
|
||||
import { Container, Text } from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { currentTheme } from '#/tui/theme';
|
||||
import type { ToolCallBlockData, ToolResultBlockData } from '#/tui/types';
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { Container, Text } from '@earendil-works/pi-tui';
|
||||
import { Container, Text } from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { currentTheme } from '#/tui/theme';
|
||||
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
* metadata.
|
||||
*/
|
||||
|
||||
import { Container, Text, Spacer } from '@earendil-works/pi-tui';
|
||||
import { Container, Text, Spacer } from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { currentTheme } from '#/tui/theme';
|
||||
import type { SkillActivationTrigger } from '#/tui/types';
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { Container, Spacer, Text } from '@earendil-works/pi-tui';
|
||||
import { Container, Spacer, Text } from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { currentTheme } from '#/tui/theme';
|
||||
import type { ColorToken } from '#/tui/theme';
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import type { Component } from '@earendil-works/pi-tui';
|
||||
import type { Component } from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { currentTheme } from '#/tui/theme';
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { truncateToWidth, type Component } from '@earendil-works/pi-tui';
|
||||
import { truncateToWidth, type Component } from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { STATUS_BULLET } from '#/tui/constant/symbols';
|
||||
import { currentTheme } from '#/tui/theme';
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
* Supports expand/collapse via Ctrl+O (shared with tool output).
|
||||
*/
|
||||
|
||||
import { Text, truncateToWidth, type Component, type TUI } from '@earendil-works/pi-tui';
|
||||
import { Text, truncateToWidth, type Component, type TUI } from '@moonshot-ai/pi-tui';
|
||||
|
||||
import {
|
||||
BRAILLE_SPINNER_FRAMES,
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@
|
|||
|
||||
import { isAbsolute, relative, sep } from 'node:path';
|
||||
|
||||
import { Container, Spacer, Text, truncateToWidth, visibleWidth } from '@earendil-works/pi-tui';
|
||||
import type { Component, TUI } from '@earendil-works/pi-tui';
|
||||
import { Container, Spacer, Text, truncateToWidth, visibleWidth } from '@moonshot-ai/pi-tui';
|
||||
import type { Component, TUI } from '@moonshot-ai/pi-tui';
|
||||
import { highlightLines, langFromPath } from '#/tui/components/media/code-highlight';
|
||||
import { renderDiffLinesClustered } from '#/tui/components/media/diff-preview';
|
||||
import {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { Text } from '@earendil-works/pi-tui';
|
||||
import { Text } from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { STATUS_BULLET } from '#/tui/constant/symbols';
|
||||
import { currentTheme } from '#/tui/theme';
|
||||
|
|
|
|||
|
|
@ -13,8 +13,8 @@
|
|||
* message.
|
||||
*/
|
||||
|
||||
import type { Component } from '@earendil-works/pi-tui';
|
||||
import { Text } from '@earendil-works/pi-tui';
|
||||
import type { Component } from '@moonshot-ai/pi-tui';
|
||||
import { Text } from '@moonshot-ai/pi-tui';
|
||||
import chalk from 'chalk';
|
||||
|
||||
import type { ChipProvider } from './chip';
|
||||
|
|
|
|||
|
|
@ -10,8 +10,8 @@
|
|||
* sees the actual error message, not a synthetic summary.
|
||||
*/
|
||||
|
||||
import type { Component } from '@earendil-works/pi-tui';
|
||||
import { Text } from '@earendil-works/pi-tui';
|
||||
import type { Component } from '@moonshot-ai/pi-tui';
|
||||
import { Text } from '@moonshot-ai/pi-tui';
|
||||
import chalk from 'chalk';
|
||||
|
||||
import { renderTruncated } from './truncated';
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { Text, truncateToWidth, type Component } from '@earendil-works/pi-tui';
|
||||
import { Text, truncateToWidth, type Component } from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { currentTheme } from '#/tui/theme';
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import type { Component } from '@earendil-works/pi-tui';
|
||||
import type { Component } from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { RESULT_PREVIEW_LINES } from '#/tui/constant/rendering';
|
||||
import type { ToolCallBlockData, ToolResultBlockData } from '#/tui/types';
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@
|
|||
* the pattern stays consistent across command-triggered panels.
|
||||
*/
|
||||
|
||||
import type { Component } from '@earendil-works/pi-tui';
|
||||
import { truncateToWidth, visibleWidth } from '@earendil-works/pi-tui';
|
||||
import type { Component } from '@moonshot-ai/pi-tui';
|
||||
import { truncateToWidth, visibleWidth } from '@moonshot-ai/pi-tui';
|
||||
import type { SessionUsage, TokenUsage } from '@moonshot-ai/kimi-code-sdk';
|
||||
|
||||
import {
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
* Renders a user message in the transcript.
|
||||
*/
|
||||
|
||||
import { Spacer, Text, truncateToWidth, visibleWidth, type Component } from '@earendil-works/pi-tui';
|
||||
import { Spacer, Text, truncateToWidth, visibleWidth, type Component } from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { ImageThumbnail } from '#/tui/components/media/image-thumbnail';
|
||||
import { USER_MESSAGE_BULLET } from '#/tui/constant/symbols';
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { Container, Spacer } from '@earendil-works/pi-tui';
|
||||
import { Container, Spacer } from '@moonshot-ai/pi-tui';
|
||||
|
||||
import type { MoonLoader } from '#/tui/components/chrome/moon-loader';
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
import type { Component, MarkdownTheme } from '@earendil-works/pi-tui';
|
||||
import type { Component, MarkdownTheme } from '@moonshot-ai/pi-tui';
|
||||
import {
|
||||
Markdown,
|
||||
Text,
|
||||
truncateToWidth,
|
||||
visibleWidth,
|
||||
} from '@earendil-works/pi-tui';
|
||||
} from '@moonshot-ai/pi-tui';
|
||||
import chalk from 'chalk';
|
||||
|
||||
import { THINKING_PREVIEW_LINES } from '../../constant/rendering';
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { Container, truncateToWidth, visibleWidth } from '@earendil-works/pi-tui';
|
||||
import { Container, truncateToWidth, visibleWidth } from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { SELECT_POINTER } from '../../constant/symbols';
|
||||
import type { QueuedMessage } from '../../types';
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { Spacer } from '@earendil-works/pi-tui';
|
||||
import { Spacer } from '@moonshot-ai/pi-tui';
|
||||
import type {
|
||||
Event,
|
||||
KimiHarness,
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import type { TUI } from '@earendil-works/pi-tui';
|
||||
import type { TUI } from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { clipboardHasImage } from '#/utils/clipboard/clipboard-has-image';
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import type { Component, Focusable } from '@earendil-works/pi-tui';
|
||||
import type { Component, Focusable } from '@moonshot-ai/pi-tui';
|
||||
import type {
|
||||
AgentStatusUpdatedEvent,
|
||||
AssistantDeltaEvent,
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import type {
|
|||
BackgroundTaskInfo,
|
||||
Event,
|
||||
} from '@moonshot-ai/kimi-code-sdk';
|
||||
import type { Component } from '@earendil-works/pi-tui';
|
||||
import type { Component } from '@moonshot-ai/pi-tui';
|
||||
|
||||
import {
|
||||
AgentSwarmProgressComponent,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import type { BackgroundTaskInfo, Session } from '@moonshot-ai/kimi-code-sdk';
|
||||
import type { Component, ProcessTerminal, TUI } from '@earendil-works/pi-tui';
|
||||
import type { Component, ProcessTerminal, TUI } from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { TaskOutputViewer } from '../components/dialogs/task-output-viewer';
|
||||
import { TasksBrowserApp, type TasksFilter } from '../components/dialogs/tasks-browser';
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
*/
|
||||
|
||||
import chalk from 'chalk';
|
||||
import { truncateToWidth, visibleWidth } from '@earendil-works/pi-tui';
|
||||
import { truncateToWidth, visibleWidth } from '@moonshot-ai/pi-tui';
|
||||
|
||||
import type { SlashCommandHost } from '../commands/dispatch';
|
||||
import type { ParsedSlashInput } from '../commands/types';
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import {
|
|||
type Focusable,
|
||||
getCapabilities,
|
||||
Spacer,
|
||||
} from '@earendil-works/pi-tui';
|
||||
} from '@moonshot-ai/pi-tui';
|
||||
import type { DeviceAuthorization } from '@moonshot-ai/kimi-code-oauth';
|
||||
import type {
|
||||
ApprovalRequest,
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
* instances reads the *current* palette via the singleton.
|
||||
*/
|
||||
|
||||
import type { MarkdownTheme, EditorTheme } from '@earendil-works/pi-tui';
|
||||
import type { MarkdownTheme, EditorTheme } from '@moonshot-ai/pi-tui';
|
||||
import chalk from 'chalk';
|
||||
import { highlight, supportsLanguage } from 'cli-highlight';
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import {
|
|||
Container,
|
||||
ProcessTerminal,
|
||||
TUI,
|
||||
} from '@earendil-works/pi-tui';
|
||||
} from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { FooterComponent } from './components/chrome/footer';
|
||||
import { GutterContainer } from './components/chrome/gutter-container';
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
* `tui/components/**` and rejects bare-literal comparisons.
|
||||
*/
|
||||
|
||||
import { decodeKittyPrintable } from '@earendil-works/pi-tui';
|
||||
import { decodeKittyPrintable } from '@moonshot-ai/pi-tui';
|
||||
|
||||
export function printableChar(data: string): string {
|
||||
return decodeKittyPrintable(data) ?? data;
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
* everywhere: ↑/↓, PgUp/PgDn, and search editing.
|
||||
*/
|
||||
|
||||
import { fuzzyFilter, Key, matchesKey } from '@earendil-works/pi-tui';
|
||||
import { fuzzyFilter, Key, matchesKey } from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { pageView, type PageView } from './paging';
|
||||
import { isPrintableChar, printableChar } from './printable-key';
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
* visible, framed by `<`/`>` markers.
|
||||
*/
|
||||
|
||||
import { visibleWidth } from '@earendil-works/pi-tui';
|
||||
import { visibleWidth } from '@moonshot-ai/pi-tui';
|
||||
import chalk from 'chalk';
|
||||
|
||||
import type { ColorPalette } from '#/tui/theme/colors';
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import type { Terminal } from '@earendil-works/pi-tui';
|
||||
import type { Terminal } from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { BEL, ESC, MAX_TERMINAL_NOTIFICATION_MESSAGE_LENGTH, ST } from '#/tui/constant/terminal';
|
||||
import type { TUIState } from '#/tui/tui-state';
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import type { Component } from '@earendil-works/pi-tui';
|
||||
import type { Component } from '@moonshot-ai/pi-tui';
|
||||
|
||||
import type { TranscriptEntry } from '../types';
|
||||
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ describe('resolveTargetDeps', () => {
|
|||
const names = deps.map((d) => d.resolvedName);
|
||||
expect(names).toContain('@mariozechner/clipboard');
|
||||
expect(names).toContain('@mariozechner/clipboard-darwin-arm64');
|
||||
expect(names).toContain('@earendil-works/pi-tui');
|
||||
expect(names).toContain('@moonshot-ai/pi-tui');
|
||||
});
|
||||
|
||||
it('picks the right clipboard subpackage per target', () => {
|
||||
|
|
@ -58,17 +58,17 @@ describe('resolveTargetDeps', () => {
|
|||
|
||||
it('encodes pi-tui native file path per target', () => {
|
||||
const linuxPiTui = resolveTargetDeps('linux-arm64').find(
|
||||
(d) => d.resolvedName === '@earendil-works/pi-tui',
|
||||
(d) => d.resolvedName === '@moonshot-ai/pi-tui',
|
||||
);
|
||||
expect(linuxPiTui?.nativeFileRelatives).toEqual([]);
|
||||
const macPiTui = resolveTargetDeps('darwin-x64').find(
|
||||
(d) => d.resolvedName === '@earendil-works/pi-tui',
|
||||
(d) => d.resolvedName === '@moonshot-ai/pi-tui',
|
||||
);
|
||||
expect(macPiTui?.nativeFileRelatives).toEqual([
|
||||
'native/darwin/prebuilds/darwin-x64/darwin-modifiers.node',
|
||||
]);
|
||||
const winArmPiTui = resolveTargetDeps('win32-arm64').find(
|
||||
(d) => d.resolvedName === '@earendil-works/pi-tui',
|
||||
(d) => d.resolvedName === '@moonshot-ai/pi-tui',
|
||||
);
|
||||
expect(winArmPiTui?.nativeFileRelatives).toEqual([
|
||||
'native/win32/prebuilds/win32-arm64/win32-console-mode.node',
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import chalk from 'chalk';
|
||||
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
|
||||
import { visibleWidth } from '@earendil-works/pi-tui';
|
||||
import { visibleWidth } from '@moonshot-ai/pi-tui';
|
||||
|
||||
import { BannerComponent } from '#/tui/components/chrome/banner';
|
||||
import { currentTheme } from '#/tui/theme';
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { visibleWidth } from '@earendil-works/pi-tui';
|
||||
import { visibleWidth } from '@moonshot-ai/pi-tui';
|
||||
import { describe, expect, it } from 'vitest';
|
||||
|
||||
import { DeviceCodeBoxComponent } from '#/tui/components/chrome/device-code-box';
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import type { Component } from '@earendil-works/pi-tui';
|
||||
import type { Component } from '@moonshot-ai/pi-tui';
|
||||
import { describe, expect, it, vi } from 'vitest';
|
||||
|
||||
import { GutterContainer } from '#/tui/components/chrome/gutter-container';
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import type { TUI } from '@earendil-works/pi-tui';
|
||||
import type { TUI } from '@moonshot-ai/pi-tui';
|
||||
import { afterEach, describe, expect, it } from 'vitest';
|
||||
|
||||
import { MoonLoader } from '#/tui/components/chrome/moon-loader';
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { visibleWidth } from '@earendil-works/pi-tui';
|
||||
import { visibleWidth } from '@moonshot-ai/pi-tui';
|
||||
import chalk from 'chalk';
|
||||
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { visibleWidth } from '@earendil-works/pi-tui';
|
||||
import { visibleWidth } from '@moonshot-ai/pi-tui';
|
||||
import { describe, expect, it } from 'vitest';
|
||||
|
||||
import { ApiKeyInputDialogComponent } from '#/tui/components/dialogs/api-key-input-dialog';
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { CURSOR_MARKER } from '@earendil-works/pi-tui';
|
||||
import { CURSOR_MARKER } from '@moonshot-ai/pi-tui';
|
||||
import { describe, expect, it } from 'vitest';
|
||||
|
||||
import { ApprovalPanelComponent } from '#/tui/components/dialogs/approval-panel';
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import type { Terminal } from '@earendil-works/pi-tui';
|
||||
import type { Terminal } from '@moonshot-ai/pi-tui';
|
||||
import { describe, expect, it } from 'vitest';
|
||||
|
||||
import {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { visibleWidth } from '@earendil-works/pi-tui';
|
||||
import { visibleWidth } from '@moonshot-ai/pi-tui';
|
||||
import { describe, expect, it, vi } from 'vitest';
|
||||
|
||||
import {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { visibleWidth } from '@earendil-works/pi-tui';
|
||||
import { visibleWidth } from '@moonshot-ai/pi-tui';
|
||||
import chalk from 'chalk';
|
||||
import { beforeAll, describe, expect, it } from 'vitest';
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { visibleWidth } from '@earendil-works/pi-tui';
|
||||
import { visibleWidth } from '@moonshot-ai/pi-tui';
|
||||
import { describe, expect, it, vi } from 'vitest';
|
||||
|
||||
import {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import type { ModelAlias } from '@moonshot-ai/kimi-code-sdk';
|
||||
import { visibleWidth } from '@earendil-works/pi-tui';
|
||||
import { visibleWidth } from '@moonshot-ai/pi-tui';
|
||||
import { describe, expect, it, vi } from 'vitest';
|
||||
|
||||
import { ModelSelectorComponent } from '#/tui/components/dialogs/model-selector';
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { CURSOR_MARKER } from '@earendil-works/pi-tui';
|
||||
import { CURSOR_MARKER } from '@moonshot-ai/pi-tui';
|
||||
import chalk from 'chalk';
|
||||
import { beforeAll, describe, expect, it } from 'vitest';
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { visibleWidth } from '@earendil-works/pi-tui';
|
||||
import { visibleWidth } from '@moonshot-ai/pi-tui';
|
||||
import { afterEach, describe, expect, it, vi } from 'vitest';
|
||||
|
||||
import { SessionPickerComponent } from '#/tui/components/dialogs/session-picker';
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import type {
|
|||
AutocompleteProvider,
|
||||
AutocompleteSuggestions,
|
||||
TUI,
|
||||
} from '@earendil-works/pi-tui';
|
||||
} from '@moonshot-ai/pi-tui';
|
||||
import { describe, expect, it, vi } from 'vitest';
|
||||
|
||||
import { CustomEditor } from '#/tui/components/editor/custom-editor';
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { visibleWidth, type SelectItem, type SelectListTheme } from '@earendil-works/pi-tui';
|
||||
import { visibleWidth, type SelectItem, type SelectListTheme } from '@moonshot-ai/pi-tui';
|
||||
import { describe, expect, it } from 'vitest';
|
||||
|
||||
import { WrappingSelectList } from '#/tui/components/editor/wrapping-select-list';
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue