@oh-my-pi/pi-tui 18.13.2 → 18.14.0
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/CHANGELOG.md +40 -54
- package/README.md +34 -34
- package/dist/types/app-keybindings.d.ts +15 -0
- package/dist/types/apps/session-picker.d.ts +5 -0
- package/dist/types/charts/chart-plan.d.ts +9 -7
- package/dist/types/chat/assistant-message.d.ts +15 -3
- package/dist/types/chat/bash-execution.d.ts +2 -0
- package/dist/types/chat/display-preferences.d.ts +2 -0
- package/dist/types/chat/extension-types.d.ts +31 -0
- package/dist/types/chat/reply-write.d.ts +48 -0
- package/dist/types/chat/table-chart.d.ts +4 -3
- package/dist/types/chat/tool-execution.d.ts +1 -2
- package/dist/types/chat/transcript-outline.d.ts +7 -0
- package/dist/types/chat/transcript-render-helpers.d.ts +2 -0
- package/dist/types/chrome/index.d.ts +1 -0
- package/dist/types/chrome/transcript-notice.d.ts +35 -0
- package/dist/types/chrome/transcript-status.d.ts +20 -8
- package/dist/types/components/editor.d.ts +8 -0
- package/dist/types/components/markdown.d.ts +7 -0
- package/dist/types/native/blobs.d.ts +2 -1
- package/dist/types/native/picker.d.ts +3 -3
- package/dist/types/overlays/annotation-overlay.d.ts +7 -1
- package/dist/types/overlays/annotation-types.d.ts +28 -0
- package/dist/types/overlays/login-dialog.d.ts +5 -1
- package/dist/types/overlays/model-browser.d.ts +10 -1
- package/dist/types/overlays/oauth-selector.d.ts +23 -0
- package/dist/types/overlays/plan-review-overlay.d.ts +2 -0
- package/dist/types/overlays/rewind-selector.d.ts +1 -1
- package/dist/types/overlays/session-selector.d.ts +22 -2
- package/dist/types/prompt/composer.d.ts +41 -4
- package/dist/types/prompt/interactive-context-helpers.d.ts +10 -3
- package/dist/types/prompt/welcome.d.ts +6 -2
- package/dist/types/render/extension-links.d.ts +65 -0
- package/dist/types/render/hyperlink.d.ts +25 -7
- package/dist/types/render/index.d.ts +1 -0
- package/dist/types/setup/scenes/model.d.ts +1 -1
- package/dist/types/setup/scenes/outro.d.ts +5 -4
- package/dist/types/setup/scenes/sign-in.d.ts +13 -8
- package/dist/types/setup/scenes/splash.d.ts +4 -4
- package/dist/types/setup/scenes/types.d.ts +16 -1
- package/dist/types/setup/startup-splash.d.ts +1 -1
- package/dist/types/setup/wizard-overlay.d.ts +11 -7
- package/dist/types/setup/wizard.d.ts +5 -1
- package/dist/types/status-line/component.d.ts +1 -1
- package/dist/types/status-line/context-usage.d.ts +28 -6
- package/dist/types/status-line/host.d.ts +6 -2
- package/dist/types/theme/theme.d.ts +0 -23
- package/dist/types/tools/bash-interactive.d.ts +6 -0
- package/dist/types/tools/bash.d.ts +2 -0
- package/dist/types/tools/default-renderer.d.ts +6 -4
- package/dist/types/tools/irc.d.ts +6 -0
- package/dist/types/tools/json-tree.d.ts +23 -4
- package/dist/types/tools/lsp.d.ts +2 -0
- package/dist/types/tools/mcp.d.ts +6 -5
- package/dist/types/tools/native-view.d.ts +1 -1
- package/dist/types/tools/renderer.d.ts +2 -0
- package/dist/types/tools/streaming-output.d.ts +11 -0
- package/dist/types/tools/task.d.ts +9 -1
- package/dist/types/tools/url-scheme-host.d.ts +17 -0
- package/dist/types/tools/yield.d.ts +1 -1
- package/dist/types/tui.d.ts +7 -2
- package/package.json +10 -15
- package/src/app-keybindings.ts +15 -0
- package/src/apps/session-picker.ts +7 -0
- package/src/charts/chart-plan.ts +20 -50
- package/src/chat/advisor-message.ts +2 -0
- package/src/chat/assistant-message.ts +137 -19
- package/src/chat/background-tan-message.ts +4 -0
- package/src/chat/bash-execution.ts +6 -0
- package/src/chat/chat-transcript-builder.ts +58 -28
- package/src/chat/compaction-summary-message.ts +2 -1
- package/src/chat/display-preferences.ts +3 -0
- package/src/chat/extension-types.ts +34 -0
- package/src/chat/reply-write.ts +127 -0
- package/src/chat/table-chart.ts +10 -4
- package/src/chat/tool-execution.ts +20 -13
- package/src/chat/transcript-outline.ts +27 -0
- package/src/chat/transcript-render-helpers.ts +66 -24
- package/src/chrome/index.ts +1 -0
- package/src/chrome/transcript-notice.ts +83 -0
- package/src/chrome/transcript-status.ts +29 -29
- package/src/components/editor.ts +10 -1
- package/src/components/markdown.ts +116 -6
- package/src/hotkeys-markdown.ts +1 -0
- package/src/native/backend.ts +5 -66
- package/src/native/blobs.ts +3 -2
- package/src/native/picker.ts +3 -3
- package/src/overlays/advisor-config.ts +1 -10
- package/src/overlays/annotation-overlay.ts +125 -37
- package/src/overlays/annotation-types.ts +24 -0
- package/src/overlays/hook-selector.ts +2 -2
- package/src/overlays/login-dialog.ts +31 -5
- package/src/overlays/model-browser.ts +37 -0
- package/src/overlays/model-hub.ts +1 -7
- package/src/overlays/model-picker.ts +1 -10
- package/src/overlays/oauth-selector.ts +44 -6
- package/src/overlays/plan-review-overlay.ts +13 -2
- package/src/overlays/rewind-selector.ts +29 -12
- package/src/overlays/session-selector.ts +305 -39
- package/src/overlays/usage-dashboard.ts +5 -12
- package/src/prompt/composer.ts +213 -5
- package/src/prompt/custom-editor.ts +6 -1
- package/src/prompt/emoji-autocomplete.ts +0 -2
- package/src/prompt/interactive-context-helpers.ts +29 -4
- package/src/prompt/welcome.ts +31 -45
- package/src/render/extension-links.ts +214 -0
- package/src/render/hyperlink.ts +65 -9
- package/src/render/index.ts +1 -0
- package/src/setup/scenes/composer.ts +2 -0
- package/src/setup/scenes/glyph.ts +2 -0
- package/src/setup/scenes/model.ts +192 -29
- package/src/setup/scenes/outro.ts +30 -17
- package/src/setup/scenes/sign-in.ts +196 -400
- package/src/setup/scenes/splash.ts +25 -21
- package/src/setup/scenes/theme.ts +2 -0
- package/src/setup/scenes/types.ts +18 -1
- package/src/setup/startup-splash.ts +8 -7
- package/src/setup/wizard-overlay.ts +164 -33
- package/src/setup/wizard.ts +11 -2
- package/src/status-line/component.ts +4 -10
- package/src/status-line/context-usage.ts +72 -21
- package/src/status-line/host.ts +6 -2
- package/src/terminal.ts +24 -2
- package/src/theme/defaults.json +1 -0
- package/src/theme/loader.ts +1 -1
- package/src/theme/theme.ts +2 -75
- package/src/tools/bash-interactive.ts +6 -1
- package/src/tools/bash.ts +2 -0
- package/src/tools/default-renderer.ts +9 -6
- package/src/tools/eval.ts +14 -4
- package/src/tools/irc.ts +6 -0
- package/src/tools/job-widget.ts +13 -1
- package/src/tools/json-tree.ts +132 -42
- package/src/tools/lsp.ts +36 -15
- package/src/tools/mcp.ts +20 -12
- package/src/tools/native-view.ts +1 -1
- package/src/tools/renderer.ts +2 -0
- package/src/tools/streaming-output.ts +41 -0
- package/src/tools/task.ts +59 -17
- package/src/tools/url-scheme-host.ts +21 -0
- package/src/tools/yield.ts +18 -9
- package/src/tui.ts +43 -15
- package/THIRD-PARTY-NOTICES.txt +0 -22901
- package/dist/types/theme/defaults/index.d.ts +0 -10289
- package/src/theme/defaults/alabaster.json +0 -103
- package/src/theme/defaults/amethyst.json +0 -106
- package/src/theme/defaults/anthracite.json +0 -103
- package/src/theme/defaults/basalt.json +0 -101
- package/src/theme/defaults/birch.json +0 -105
- package/src/theme/defaults/dark-abyss.json +0 -101
- package/src/theme/defaults/dark-arctic.json +0 -114
- package/src/theme/defaults/dark-aurora.json +0 -105
- package/src/theme/defaults/dark-catppuccin.json +0 -117
- package/src/theme/defaults/dark-cavern.json +0 -101
- package/src/theme/defaults/dark-celestial.json +0 -116
- package/src/theme/defaults/dark-copper.json +0 -105
- package/src/theme/defaults/dark-cosmos.json +0 -100
- package/src/theme/defaults/dark-cyberpunk.json +0 -112
- package/src/theme/defaults/dark-dracula.json +0 -108
- package/src/theme/defaults/dark-eclipse.json +0 -101
- package/src/theme/defaults/dark-ember.json +0 -105
- package/src/theme/defaults/dark-equinox.json +0 -100
- package/src/theme/defaults/dark-forest.json +0 -106
- package/src/theme/defaults/dark-github.json +0 -115
- package/src/theme/defaults/dark-gruvbox.json +0 -122
- package/src/theme/defaults/dark-lavender.json +0 -105
- package/src/theme/defaults/dark-lunar.json +0 -99
- package/src/theme/defaults/dark-midnight.json +0 -105
- package/src/theme/defaults/dark-monochrome.json +0 -104
- package/src/theme/defaults/dark-monokai.json +0 -108
- package/src/theme/defaults/dark-nebula.json +0 -100
- package/src/theme/defaults/dark-neon-noir.json +0 -110
- package/src/theme/defaults/dark-nord.json +0 -108
- package/src/theme/defaults/dark-ocean.json +0 -111
- package/src/theme/defaults/dark-one.json +0 -110
- package/src/theme/defaults/dark-poimandres.json +0 -125
- package/src/theme/defaults/dark-rainforest.json +0 -101
- package/src/theme/defaults/dark-reef.json +0 -101
- package/src/theme/defaults/dark-retro.json +0 -102
- package/src/theme/defaults/dark-rose-pine.json +0 -106
- package/src/theme/defaults/dark-sakura.json +0 -105
- package/src/theme/defaults/dark-slate.json +0 -105
- package/src/theme/defaults/dark-solarized.json +0 -107
- package/src/theme/defaults/dark-solstice.json +0 -100
- package/src/theme/defaults/dark-starfall.json +0 -101
- package/src/theme/defaults/dark-sunset.json +0 -109
- package/src/theme/defaults/dark-swamp.json +0 -100
- package/src/theme/defaults/dark-synthwave.json +0 -113
- package/src/theme/defaults/dark-taiga.json +0 -101
- package/src/theme/defaults/dark-terminal.json +0 -105
- package/src/theme/defaults/dark-tokyo-night.json +0 -111
- package/src/theme/defaults/dark-tundra.json +0 -101
- package/src/theme/defaults/dark-twilight.json +0 -101
- package/src/theme/defaults/dark-volcanic.json +0 -101
- package/src/theme/defaults/graphite.json +0 -102
- package/src/theme/defaults/index.ts +0 -203
- package/src/theme/defaults/light-arctic.json +0 -117
- package/src/theme/defaults/light-aurora-day.json +0 -101
- package/src/theme/defaults/light-canyon.json +0 -101
- package/src/theme/defaults/light-catppuccin.json +0 -116
- package/src/theme/defaults/light-cirrus.json +0 -100
- package/src/theme/defaults/light-coral.json +0 -105
- package/src/theme/defaults/light-cyberpunk.json +0 -106
- package/src/theme/defaults/light-dawn.json +0 -100
- package/src/theme/defaults/light-dunes.json +0 -101
- package/src/theme/defaults/light-eucalyptus.json +0 -105
- package/src/theme/defaults/light-forest.json +0 -110
- package/src/theme/defaults/light-frost.json +0 -105
- package/src/theme/defaults/light-github.json +0 -125
- package/src/theme/defaults/light-glacier.json +0 -101
- package/src/theme/defaults/light-gruvbox.json +0 -118
- package/src/theme/defaults/light-haze.json +0 -100
- package/src/theme/defaults/light-honeycomb.json +0 -105
- package/src/theme/defaults/light-lagoon.json +0 -101
- package/src/theme/defaults/light-lavender.json +0 -105
- package/src/theme/defaults/light-meadow.json +0 -101
- package/src/theme/defaults/light-mint.json +0 -105
- package/src/theme/defaults/light-monochrome.json +0 -111
- package/src/theme/defaults/light-ocean.json +0 -109
- package/src/theme/defaults/light-one.json +0 -109
- package/src/theme/defaults/light-opal.json +0 -101
- package/src/theme/defaults/light-orchard.json +0 -101
- package/src/theme/defaults/light-paper.json +0 -105
- package/src/theme/defaults/light-poimandres.json +0 -125
- package/src/theme/defaults/light-prism.json +0 -100
- package/src/theme/defaults/light-retro.json +0 -108
- package/src/theme/defaults/light-sand.json +0 -105
- package/src/theme/defaults/light-savanna.json +0 -101
- package/src/theme/defaults/light-solarized.json +0 -112
- package/src/theme/defaults/light-soleil.json +0 -100
- package/src/theme/defaults/light-sunset.json +0 -109
- package/src/theme/defaults/light-synthwave.json +0 -108
- package/src/theme/defaults/light-tokyo-night.json +0 -121
- package/src/theme/defaults/light-wetland.json +0 -101
- package/src/theme/defaults/light-zenith.json +0 -99
- package/src/theme/defaults/limestone.json +0 -104
- package/src/theme/defaults/mahogany.json +0 -107
- package/src/theme/defaults/marble.json +0 -103
- package/src/theme/defaults/obsidian.json +0 -101
- package/src/theme/defaults/onyx.json +0 -101
- package/src/theme/defaults/pearl.json +0 -103
- package/src/theme/defaults/porcelain.json +0 -101
- package/src/theme/defaults/quartz.json +0 -106
- package/src/theme/defaults/sandstone.json +0 -105
- package/src/theme/defaults/titanium.json +0 -100
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { type SgrMouseEvent } from "../../mouse.js";
|
|
2
|
-
import type { NativeNode } from "../../native/node.js";
|
|
3
|
-
import type
|
|
2
|
+
import type { DescribeContext, NativeNode } from "../../native/node.js";
|
|
3
|
+
import { type SetupScene, type SetupSceneController, type SetupSceneHost } from "./types.js";
|
|
4
4
|
/**
|
|
5
5
|
* "Sign in" scene: lets the user authenticate one or more model providers via
|
|
6
6
|
* OAuth. It never auto-advances the wizard — the user may sign in to several
|
|
7
|
-
* providers and then
|
|
7
|
+
* providers and then leave the step with Esc.
|
|
8
|
+
*
|
|
9
|
+
* Picking is the provider selector (natively a setup sheet: Skip/Continue on
|
|
10
|
+
* Esc, Sign in on Enter); signing in is the app's {@link LoginDialogComponent},
|
|
11
|
+
* driven like `/login` drives it: natively its own sheet over the setup page,
|
|
12
|
+
* in the cell grid drawn in the wizard body in place of the selector.
|
|
8
13
|
*/
|
|
9
14
|
export declare class SignInScene implements SetupSceneController {
|
|
10
15
|
#private;
|
|
@@ -14,15 +19,15 @@ export declare class SignInScene implements SetupSceneController {
|
|
|
14
19
|
dispose(): void;
|
|
15
20
|
invalidate(): void;
|
|
16
21
|
handleInput(data: string): void;
|
|
17
|
-
/** Forward mouse to the provider selector;
|
|
22
|
+
/** Forward mouse to the provider selector; the login dialog takes keys only. */
|
|
18
23
|
routeMouse(event: SgrMouseEvent, line: number, col: number): void;
|
|
19
24
|
render(width: number, maxLines?: number): readonly string[];
|
|
20
25
|
/**
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
26
|
+
* Signing in: the login dialog (its own sheet). Picking: the provider
|
|
27
|
+
* selector, which presents the setup sheet where the terminal draws
|
|
28
|
+
* pickers; elsewhere it is an inline card under the lead and the outcome.
|
|
24
29
|
*/
|
|
25
|
-
describe(): NativeNode;
|
|
30
|
+
describe(cx: DescribeContext): NativeNode;
|
|
26
31
|
}
|
|
27
32
|
/** Onboarding scene for provider sign-in. */
|
|
28
33
|
export declare const providersSetupScene: SetupScene;
|
|
@@ -11,9 +11,9 @@ export declare function renderStarfield(width: number, height: number, frame: nu
|
|
|
11
11
|
*/
|
|
12
12
|
export declare function renderSetupSplash(width: number, height: number, elapsedMs: number): string[];
|
|
13
13
|
/**
|
|
14
|
-
* Native splash:
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* sends
|
|
14
|
+
* Native splash: omp's lockup as the welcome draws it (the builtin mark
|
|
15
|
+
* drawing on beside the wordmark and version), centered, and a quiet Enter
|
|
16
|
+
* hint pinned to the bottom. The water and starfield are cell paintings with
|
|
17
|
+
* no semantic counterpart. A click anywhere sends `skip`.
|
|
18
18
|
*/
|
|
19
19
|
export declare function describeSetupSplash(): NativeNode;
|
|
@@ -42,7 +42,6 @@ export interface SetupHost extends SetupUiHost {
|
|
|
42
42
|
saveColorBlindMode(enabled: boolean): void;
|
|
43
43
|
saveTheme(mode: "dark" | "light", name: string): void;
|
|
44
44
|
captureBrowserSession(request: OAuthBrowserSessionRequest, signal?: AbortSignal): Promise<string>;
|
|
45
|
-
copyToClipboard(text: string): Promise<void>;
|
|
46
45
|
openInBrowser(url: string): void;
|
|
47
46
|
markComplete(version: number): Promise<void>;
|
|
48
47
|
playWelcomeIntro(): void;
|
|
@@ -80,11 +79,27 @@ export interface SetupSceneController extends Component {
|
|
|
80
79
|
*/
|
|
81
80
|
routeMouse?(event: SgrMouseEvent, line: number, col: number): void;
|
|
82
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Role of the sheet (`picker` or `overlay`) an interactive scene presents in a
|
|
84
|
+
* TSP terminal. The terminal's setup stylesheet seats it under the wizard's
|
|
85
|
+
* brand and stepper instead of floating it over a dimmed page.
|
|
86
|
+
*/
|
|
87
|
+
export declare const SETUP_SHEET_ROLE = "omp.setup.sheet";
|
|
88
|
+
/** Surface role of the setup page (wizard and startup splash) in a TSP terminal. */
|
|
89
|
+
export declare const SETUP_SURFACE_ROLE = "omp.app.setup";
|
|
83
90
|
/** Versioned onboarding scene definition. */
|
|
84
91
|
export interface SetupScene {
|
|
85
92
|
id: string;
|
|
86
93
|
title: string;
|
|
94
|
+
/** Short label for the wizard's stepper (`Sign in`, `Model`). */
|
|
95
|
+
step: string;
|
|
87
96
|
minVersion: number;
|
|
97
|
+
/**
|
|
98
|
+
* Configures something only the cell-grid renderer draws (glyphs, composer
|
|
99
|
+
* shape, theme). A TSP terminal draws those itself, so the wizard skips the
|
|
100
|
+
* scene while a native surface is live.
|
|
101
|
+
*/
|
|
102
|
+
ansiOnly?: boolean;
|
|
88
103
|
shouldRun?(ctx: SetupHost): boolean | Promise<boolean>;
|
|
89
104
|
mount(host: SetupSceneHost): SetupSceneController;
|
|
90
105
|
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { type Component, type OverlayFocusOwner } from "../tui.js";
|
|
2
|
-
import type { NativeNode, NativeUiEvent } from "../native/node.js";
|
|
2
|
+
import type { DescribeContext, NativeNode, NativeScreen, NativeUiEvent } from "../native/node.js";
|
|
3
3
|
import type { SetupHost } from "./scenes/types.js";
|
|
4
|
-
import type
|
|
4
|
+
import { type SetupScene } from "./scenes/types.js";
|
|
5
|
+
/** Whether `scene` is asked under the current renderer: a TSP surface draws `ansiOnly` settings itself. */
|
|
6
|
+
export declare function setupSceneApplies(scene: SetupScene): boolean;
|
|
5
7
|
/** Fullscreen onboarding presentation with scene focus and mouse routing. */
|
|
6
8
|
export declare class SetupWizardComponent implements Component, OverlayFocusOwner {
|
|
7
9
|
#private;
|
|
@@ -14,12 +16,14 @@ export declare class SetupWizardComponent implements Component, OverlayFocusOwne
|
|
|
14
16
|
ownsOverlayFocusTarget(component: Component): boolean;
|
|
15
17
|
handleInput(data: string): void;
|
|
16
18
|
render(width: number): readonly string[];
|
|
19
|
+
/** The wizard is a page of its own: a screen surface styled by {@link SETUP_SURFACE_ROLE}. */
|
|
20
|
+
describeScreen(_cx: DescribeContext): NativeScreen;
|
|
17
21
|
/**
|
|
18
|
-
* Fullscreen description: splash, the active scene
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
+
* Fullscreen description: splash, the active scene under the setup
|
|
23
|
+
* header (brand, stepper, Exit setup), or the outro. The splash→scene
|
|
24
|
+
* dissolve is a row effect with no native counterpart, so a transition
|
|
25
|
+
* describes as the scene.
|
|
22
26
|
*/
|
|
23
|
-
describe(): NativeNode;
|
|
27
|
+
describe(cx: DescribeContext): NativeNode;
|
|
24
28
|
handleNativeEvent(event: NativeUiEvent): void;
|
|
25
29
|
}
|
|
@@ -21,5 +21,9 @@ export interface RunSetupWizardOptions {
|
|
|
21
21
|
markComplete?: boolean;
|
|
22
22
|
playWelcomeIntro?: boolean;
|
|
23
23
|
}
|
|
24
|
-
/**
|
|
24
|
+
/**
|
|
25
|
+
* Own the fullscreen setup overlay until its scenes and outro finish. When
|
|
26
|
+
* none of `scenes` applies to the current renderer (a TSP surface skips
|
|
27
|
+
* `ansiOnly` ones) nothing is shown, but completion is still persisted.
|
|
28
|
+
*/
|
|
25
29
|
export declare function runSetupWizard(ctx: SetupHost, scenes?: readonly SetupScene[], options?: RunSetupWizardOptions): Promise<void>;
|
|
@@ -111,7 +111,7 @@ export declare class StatusLineComponent<TSession extends StatusLineSession = St
|
|
|
111
111
|
setRecording(recording: boolean): void;
|
|
112
112
|
/** Set the callback that presents detected Codex reset celebrations, or clear it with `undefined`. */
|
|
113
113
|
setCodexResetFireworksHandler(handler: ((event: CodexResetFireworksEvent) => void) | undefined): void;
|
|
114
|
-
/** Set the callback that presents
|
|
114
|
+
/** Set the callback that presents pool-wide saved-reset expiry warnings, or clear it with `undefined`. */
|
|
115
115
|
setResetExpiryNoticeHandler(handler: ((notice: string) => void) | undefined): void;
|
|
116
116
|
setHookStatus(key: string, text: string | undefined): void;
|
|
117
117
|
watchBranch(onBranchChange: () => void): void;
|
|
@@ -98,6 +98,11 @@ export interface NonMessageTokenSource {
|
|
|
98
98
|
readonly state?: {
|
|
99
99
|
readonly tools?: readonly ContextTool[];
|
|
100
100
|
};
|
|
101
|
+
/**
|
|
102
|
+
* Whether requests to `model` ship description-stripped tool specs because
|
|
103
|
+
* the catalog rides in the system prompt (`Agent.prunesToolDescriptions`).
|
|
104
|
+
*/
|
|
105
|
+
prunesToolDescriptions?(model: Model | undefined): boolean;
|
|
101
106
|
};
|
|
102
107
|
readonly skills?: readonly ContextSkill[];
|
|
103
108
|
/** Provider-facing, session-frozen descriptions when available. */
|
|
@@ -131,24 +136,41 @@ export interface ToolSchemaFragments {
|
|
|
131
136
|
/** Why serialization stopped; the schema or examples after that point are missing from `fragments`. */
|
|
132
137
|
readonly schemaError?: string;
|
|
133
138
|
}
|
|
139
|
+
/** How {@link toolSchemaFragments} renders one tool definition. */
|
|
140
|
+
export interface ToolSchemaFragmentOptions {
|
|
141
|
+
/** Also return `display`: the same fragments with the schema JSON indented by this many spaces. */
|
|
142
|
+
displayIndent?: number;
|
|
143
|
+
/**
|
|
144
|
+
* Mirror `normalizeTools({ pruneDescriptions: true })`: the wire spec is the
|
|
145
|
+
* name plus the description-stripped schema, with no description or examples.
|
|
146
|
+
*/
|
|
147
|
+
pruneDescriptions?: boolean;
|
|
148
|
+
}
|
|
134
149
|
/**
|
|
135
150
|
* Provider-visible text of one tool definition. `displayIndent` additionally
|
|
136
151
|
* returns `display`, the same fragments with the schema JSON indented, from
|
|
137
152
|
* the same schema conversion.
|
|
138
153
|
*/
|
|
139
|
-
export declare function toolSchemaFragments(tool: ContextTool,
|
|
154
|
+
export declare function toolSchemaFragments(tool: ContextTool, options?: ToolSchemaFragmentOptions): ToolSchemaFragments;
|
|
155
|
+
/** Inputs that select which tool-schema estimate applies, beyond the roster and tokenizer. */
|
|
156
|
+
export interface ToolSchemaEstimateOptions {
|
|
157
|
+
/** Caller settings/source revision; a change invalidates the cached estimate. */
|
|
158
|
+
sourceRevision?: number;
|
|
159
|
+
/** Count the description-stripped specs sent when the catalog rides in the system prompt. */
|
|
160
|
+
pruneDescriptions?: boolean;
|
|
161
|
+
}
|
|
140
162
|
/**
|
|
141
163
|
* Estimate provider-visible tool-schema tokens.
|
|
142
164
|
*
|
|
143
165
|
* Results are cached by roster-array identity, tokenizer identity, the
|
|
144
|
-
* caller-supplied settings/source revision, and the roster's
|
|
145
|
-
* metadata revision. Callers whose descriptions or schemas are
|
|
146
|
-
* must either advance `sourceRevision` or call
|
|
166
|
+
* caller-supplied settings/source revision, the prune mode, and the roster's
|
|
167
|
+
* explicit dynamic metadata revision. Callers whose descriptions or schemas are
|
|
168
|
+
* live getters must either advance `sourceRevision` or call
|
|
147
169
|
* {@link invalidateToolSchemaMetadata} when those inputs change.
|
|
148
170
|
*/
|
|
149
|
-
export declare function estimateToolSchemaTokens(tools: ToolSchemaSource, tokenizer: Tokenizer,
|
|
171
|
+
export declare function estimateToolSchemaTokens(tools: ToolSchemaSource, tokenizer: Tokenizer, options?: ToolSchemaEstimateOptions): number;
|
|
150
172
|
/** Count schemas carried on every request, excluding server-side deferred catalogs. */
|
|
151
|
-
export declare function estimateContextToolSchemaTokens(tools: ToolSchemaSource, tokenizer: Tokenizer, model: Model | undefined,
|
|
173
|
+
export declare function estimateContextToolSchemaTokens(tools: ToolSchemaSource, tokenizer: Tokenizer, model: Model | undefined, options?: ToolSchemaEstimateOptions): number;
|
|
152
174
|
export declare function computeNonMessageTokens(session: NonMessageTokenSource, tokenizer: Tokenizer, sourceRevision?: number): number;
|
|
153
175
|
/**
|
|
154
176
|
* Shared helper for the four non-message token totals used by
|
|
@@ -132,8 +132,12 @@ export interface StatusLineHost<TSession extends StatusLineSession = StatusLineS
|
|
|
132
132
|
calculateTokensPerSecond(messages: readonly AgentMessage[], isStreaming: boolean): number | null;
|
|
133
133
|
limitMatchesActiveAccount(report: UsageReport, limit: UsageLimit, identity: StatusAccountIdentity): boolean;
|
|
134
134
|
classifyResetExpiry?(report: UsageReport, nowMs: number): StatusResetExpiry | undefined;
|
|
135
|
-
/**
|
|
136
|
-
|
|
135
|
+
/**
|
|
136
|
+
* One-line warning for saved resets anywhere in the pool that are about to expire.
|
|
137
|
+
* The host owns deduplication: a returned warning counts as shown, so each saved
|
|
138
|
+
* reset is warned about once, not once per refresh or conversation.
|
|
139
|
+
*/
|
|
140
|
+
resetExpiryNotice?(session: TSession, reports: readonly UsageReport[], nowMs: number): string | undefined;
|
|
137
141
|
computeCompactionBoundaries(session: TSession, contextWindow: number, model?: Model): CompactionBoundaries | null;
|
|
138
142
|
}
|
|
139
143
|
export interface FooterHost {
|
|
@@ -114,29 +114,6 @@ export declare function stopThemeWatcher(): void;
|
|
|
114
114
|
* Used by HTML export to generate CSS custom properties.
|
|
115
115
|
*/
|
|
116
116
|
export declare function getResolvedThemeColors(themeName?: string): Promise<Record<string, string>>;
|
|
117
|
-
/** One appearance variant of {@link NativeThemePalette}: token name → `#rrggbb`. */
|
|
118
|
-
export type NativeThemeVariant = Record<string, string>;
|
|
119
|
-
/** omp's resolved theme for a Tern Surface Protocol terminal (the `t` verb body minus `sf`). */
|
|
120
|
-
export interface NativeThemePalette {
|
|
121
|
-
dark?: NativeThemeVariant;
|
|
122
|
-
light?: NativeThemeVariant;
|
|
123
|
-
name: {
|
|
124
|
-
dark?: string;
|
|
125
|
-
light?: string;
|
|
126
|
-
};
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Cheap identity of everything {@link getNativeThemePalette} depends on;
|
|
130
|
-
* recompute the palette only when it changes.
|
|
131
|
-
*/
|
|
132
|
-
export declare function getNativeThemePaletteKey(): string;
|
|
133
|
-
/**
|
|
134
|
-
* omp's theme for a native surface: with auto theme, the configured dark and
|
|
135
|
-
* light themes; otherwise (or while the theme selector previews one) the
|
|
136
|
-
* active theme under its own appearance only. Themes without a loadable
|
|
137
|
-
* definition (in-memory instances) contribute nothing.
|
|
138
|
-
*/
|
|
139
|
-
export declare function getNativeThemePalette(): NativeThemePalette;
|
|
140
117
|
/**
|
|
141
118
|
* Check if a theme is a "light" theme by analyzing its status-line background
|
|
142
119
|
* luminance. Loads theme JSON synchronously (built-in or custom file on disk)
|
|
@@ -6,6 +6,12 @@ import type { Theme } from "../theme/theme.js";
|
|
|
6
6
|
export interface BashInteractiveTerminalBackend {
|
|
7
7
|
resize(columns: number, rows: number): void;
|
|
8
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* Translates a TUI key event into the bytes a terminal would send to a PTY
|
|
11
|
+
* child; key releases encode to "". Shared by the agent `pty` console and
|
|
12
|
+
* `!` commands (`BashExecutionComponent.encodePtyInput`).
|
|
13
|
+
*/
|
|
14
|
+
export declare function normalizeInputForPty(data: string, applicationCursorKeysMode: boolean): string;
|
|
9
15
|
/** Interactive terminal overlay driven by an external PTY controller. */
|
|
10
16
|
export declare class BashInteractiveOverlayComponent implements Component {
|
|
11
17
|
#private;
|
|
@@ -24,6 +24,8 @@ export interface BashToolDetails {
|
|
|
24
24
|
exitCode?: number;
|
|
25
25
|
/** True when the command was killed by its timeout deadline (not a failure). */
|
|
26
26
|
timedOut?: boolean;
|
|
27
|
+
/** Text the command wrote to `out://`, oldest first; transcripts draw each as a reply after the call. */
|
|
28
|
+
replies?: string[];
|
|
27
29
|
/** Live ACP update only; completed results refer to released terminals. */
|
|
28
30
|
terminalId?: string;
|
|
29
31
|
service?: {
|
|
@@ -22,10 +22,12 @@ export interface DefaultToolRenderInput {
|
|
|
22
22
|
export declare function formatDefaultToolExecution(input: DefaultToolRenderInput, contentWidth: number, uiTheme: Theme): string;
|
|
23
23
|
/**
|
|
24
24
|
* TSP view of the generic fallback card: the tool label with a one-line args
|
|
25
|
-
* summary as the head target; the result as
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
25
|
+
* summary as the head target; the result as JSON (the host's `json` viewer,
|
|
26
|
+
* else a JSON tree) or raw `ansi` output. The complete output goes over the
|
|
27
|
+
* wire — the card-level disclosure clamp the terminal applies is the only
|
|
28
|
+
* bound, so an expanded card keeps every row. The `json` viewer never cuts;
|
|
29
|
+
* JSON the fallback tree's depth, node or scalar caps would cut keeps the raw
|
|
30
|
+
* path instead.
|
|
29
31
|
*/
|
|
30
32
|
export declare function describeDefaultToolExecution(input: DefaultToolRenderInput): NativeToolView;
|
|
31
33
|
/** Render the generic fallback as the state-tinted card used by direct custom tools. */
|
|
@@ -25,6 +25,12 @@ export interface IrcMessage {
|
|
|
25
25
|
* the broadcaster, mostly to say the message was not for it.
|
|
26
26
|
*/
|
|
27
27
|
broadcast?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Interim acknowledgement or progress on something the recipient asked
|
|
30
|
+
* (`agent://<id>?progress`): it neither answers that request nor asks one,
|
|
31
|
+
* so the recipient's `wait` keeps waiting for the actual reply.
|
|
32
|
+
*/
|
|
33
|
+
progress?: boolean;
|
|
28
34
|
}
|
|
29
35
|
/** Delivery outcome for one peer recipient. */
|
|
30
36
|
export interface IrcDeliveryReceipt {
|
|
@@ -12,6 +12,8 @@ export declare const JSON_TREE_MAX_LINES_EXPANDED = 200;
|
|
|
12
12
|
export declare const JSON_TREE_SCALAR_LEN_COLLAPSED = 60;
|
|
13
13
|
/** Maximum expanded JSON scalar width. */
|
|
14
14
|
export declare const JSON_TREE_SCALAR_LEN_EXPANDED = 2000;
|
|
15
|
+
/** Characters a container's one-line form may take before a JSON tree lists its entries instead. */
|
|
16
|
+
export declare const JSON_TREE_INLINE_LEN = 60;
|
|
15
17
|
/** Sanitization, string summary, and budgeting policy for inline JSON. */
|
|
16
18
|
export interface InlineFormatOptions {
|
|
17
19
|
sanitizeText?: (text: string) => string;
|
|
@@ -46,7 +48,8 @@ export interface JsonTreeRenderOptions {
|
|
|
46
48
|
rootConnectors?: "hooked" | "siblings";
|
|
47
49
|
}
|
|
48
50
|
/**
|
|
49
|
-
* Render a JSON value as bounded tree lines
|
|
51
|
+
* Render a JSON value as bounded tree lines, containers that fit
|
|
52
|
+
* {@link JSON_TREE_INLINE_LEN} on one row. The positional form remains the
|
|
50
53
|
* public tool-renderer contract; the options form exposes sanitization and root
|
|
51
54
|
* connector policy for specialized adapters such as nested task output.
|
|
52
55
|
*/
|
|
@@ -74,8 +77,24 @@ export interface JsonTreeDescribeOptions {
|
|
|
74
77
|
onTruncated?: () => void;
|
|
75
78
|
}
|
|
76
79
|
/**
|
|
77
|
-
* TSP `tree` of a JSON value: containers
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
+
* TSP `tree` of a JSON value: containers that fit {@link JSON_TREE_INLINE_LEN}
|
|
81
|
+
* become `key: [1, "a"]` leaves, larger ones expandable nodes labelled with
|
|
82
|
+
* their key and size, scalars `key: value` leaves styled by type. Bounded by
|
|
83
|
+
* depth, node count and scalar length; no width math.
|
|
80
84
|
*/
|
|
81
85
|
export declare function describeJsonTree(value: unknown, options?: JsonTreeDescribeOptions): NativeNode;
|
|
86
|
+
/** Options of {@link describeJsonValue}: the `json` node's own, plus the fallback tree's. */
|
|
87
|
+
export interface JsonValueDescribeOptions extends JsonTreeDescribeOptions {
|
|
88
|
+
/** The host draws the `json` kind (`cx.supports("json")`). */
|
|
89
|
+
native?: boolean;
|
|
90
|
+
/** `json` node: container levels expanded below the top-level entries (default 0). */
|
|
91
|
+
open?: number;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* A JSON value for a TSP host: the terminal's own `json` viewer when it draws
|
|
95
|
+
* the kind, which folds and previews containers itself and never cuts (so
|
|
96
|
+
* `onTruncated` never fires), else {@link describeJsonTree} with the same
|
|
97
|
+
* options. Root keys the tree would hide are left out of the sent value too;
|
|
98
|
+
* strings are sanitized like the tree's labels.
|
|
99
|
+
*/
|
|
100
|
+
export declare function describeJsonValue(value: unknown, options?: JsonValueDescribeOptions): NativeNode;
|
|
@@ -31,6 +31,8 @@ export interface FileDiagnosticsResult {
|
|
|
31
31
|
summary: string;
|
|
32
32
|
/** Whether there are any errors (severity 1) */
|
|
33
33
|
errored: boolean;
|
|
34
|
+
/** Servers that sent no fresh report in time: the file is unverified for them, not clean. */
|
|
35
|
+
unreported?: string[];
|
|
34
36
|
/** Whether the file was formatted */
|
|
35
37
|
formatter?: FileFormatResult;
|
|
36
38
|
}
|
|
@@ -23,11 +23,12 @@ export declare function renderMCPResult(result: {
|
|
|
23
23
|
isError?: boolean;
|
|
24
24
|
}, options: RenderResultOptions, theme: Theme, args?: Record<string, unknown>): Component;
|
|
25
25
|
/** Native MCP call view: the head plus the folded args, inline while pending. */
|
|
26
|
-
export declare function describeMCPCall(args: Record<string, unknown>, label: string): NativeToolView;
|
|
26
|
+
export declare function describeMCPCall(args: Record<string, unknown>, label: string, options?: RenderResultOptions): NativeToolView;
|
|
27
27
|
/**
|
|
28
|
-
* Native MCP result view: JSON output as
|
|
29
|
-
*
|
|
30
|
-
*
|
|
28
|
+
* Native MCP result view: JSON output as the host's `json` viewer (when it
|
|
29
|
+
* draws one) or a JSON tree, Markdown when the preference is on, otherwise
|
|
30
|
+
* the raw text as tool output; the folded Args section follows, so the
|
|
31
|
+
* collapsed preview still leads with the output.
|
|
31
32
|
*/
|
|
32
33
|
export declare function describeMCPResult(result: {
|
|
33
34
|
content: Array<{
|
|
@@ -36,7 +37,7 @@ export declare function describeMCPResult(result: {
|
|
|
36
37
|
}>;
|
|
37
38
|
details?: MCPToolDetails;
|
|
38
39
|
isError?: boolean;
|
|
39
|
-
},
|
|
40
|
+
}, options: RenderResultOptions, args?: Record<string, unknown>): NativeToolView | undefined;
|
|
40
41
|
import type { OutputMeta } from "./output-meta.js";
|
|
41
42
|
/** Set whether plain MCP text results render as Markdown. */
|
|
42
43
|
export declare function setMcpRenderMarkdownResults(enabled: boolean): void;
|
|
@@ -6,7 +6,7 @@ import { type OutputMeta } from "./output-meta.js";
|
|
|
6
6
|
import type { NativeToolHead, NativeToolView, ToolRenderResult } from "./renderer.js";
|
|
7
7
|
/** A path for native heads: relative to the working directory when inside it, else `~`-shortened. */
|
|
8
8
|
export declare function displayPath(filePath: string): string;
|
|
9
|
-
/**
|
|
9
|
+
/** Configured file link for a head's path target, when the path is absolute. */
|
|
10
10
|
export declare function fileHref(filePath: string | undefined): string | undefined;
|
|
11
11
|
/** Diff stats as one head `meta` string, `+8 −1` (U+2212 minus), or undefined when nothing changed. */
|
|
12
12
|
export declare function diffStatsMeta(added: number, removed: number): string | undefined;
|
|
@@ -36,6 +36,8 @@ export interface RenderResultOptions {
|
|
|
36
36
|
cancelled?: boolean;
|
|
37
37
|
/** The native host shows files by path (`cx.supports("media")`). Native describe hooks only. */
|
|
38
38
|
media?: boolean;
|
|
39
|
+
/** The native host draws raw JSON values (`cx.supports("json")`). Native describe hooks only. */
|
|
40
|
+
json?: boolean;
|
|
39
41
|
}
|
|
40
42
|
/** Render options for a result, plus the tool-specific context the transcript threads through. */
|
|
41
43
|
export type RenderResultContextOptions = RenderResultOptions & {
|
|
@@ -177,6 +177,17 @@ export declare function truncateLineBytes(line: string, maxBytes?: number): {
|
|
|
177
177
|
text: string;
|
|
178
178
|
wasTruncated: boolean;
|
|
179
179
|
};
|
|
180
|
+
/**
|
|
181
|
+
* Where `text` shows in `output` written through an {@link OutputSink} with
|
|
182
|
+
* `maxColumns`, searching from `from`: each of its lines whole, or, where the
|
|
183
|
+
* cap cut the output line, a head of it and `…` ending that output line.
|
|
184
|
+
* Only the first line can be cut short of its first 16 characters (after
|
|
185
|
+
* other text on its output line); such text is not found.
|
|
186
|
+
*/
|
|
187
|
+
export declare function findColumnCapped(output: string, text: string, from?: number): {
|
|
188
|
+
start: number;
|
|
189
|
+
end: number;
|
|
190
|
+
} | undefined;
|
|
180
191
|
/** Shared helper to build a no-truncation result. */
|
|
181
192
|
export declare function noTruncResult(content: string, totalLines?: number, totalBytes?: number): TruncationResult;
|
|
182
193
|
/**
|
|
@@ -106,8 +106,9 @@ export interface TaskItem {
|
|
|
106
106
|
sourceSession?: string;
|
|
107
107
|
/** Optional model selector override for the historical source session. */
|
|
108
108
|
model?: string | string[];
|
|
109
|
-
/**
|
|
109
|
+
/** Inline instructions; exactly one of task or taskFile is required. */
|
|
110
110
|
task?: string;
|
|
111
|
+
taskFile?: string;
|
|
111
112
|
/** How open-ended the work is; required by the schema and the child's sole `auto` thinking classification input. */
|
|
112
113
|
solutionSpace?: string;
|
|
113
114
|
/** Per-spawn thinking effort: lowest/middle/highest level the resolved model supports. Overrides the agent's default selector (e.g. `auto`). */
|
|
@@ -138,6 +139,8 @@ export interface TaskParams {
|
|
|
138
139
|
model?: string | string[];
|
|
139
140
|
/** The work (flat form). */
|
|
140
141
|
task?: string;
|
|
142
|
+
/** Absolute path or local:// URL to a UTF-8 file (flat form), mutually exclusive with task. */
|
|
143
|
+
taskFile?: string;
|
|
141
144
|
/** How open-ended the work is (flat form); see {@link TaskItem.solutionSpace}. */
|
|
142
145
|
solutionSpace?: string;
|
|
143
146
|
/** Per-spawn thinking effort (flat form): lowest/middle/highest level the resolved model supports. */
|
|
@@ -213,6 +216,9 @@ export interface AgentProgress {
|
|
|
213
216
|
status: "pending" | "running" | "completed" | "failed" | "aborted";
|
|
214
217
|
task: string;
|
|
215
218
|
assignment?: string;
|
|
219
|
+
taskFile?: string;
|
|
220
|
+
/** SHA-256 of the exact task file bytes before decoding and trimming. */
|
|
221
|
+
taskFileSha256?: string;
|
|
216
222
|
description?: string;
|
|
217
223
|
lastIntent?: string;
|
|
218
224
|
currentTool?: string;
|
|
@@ -320,6 +326,8 @@ export interface SingleResult {
|
|
|
320
326
|
agentSource: AgentSource;
|
|
321
327
|
task: string;
|
|
322
328
|
assignment?: string;
|
|
329
|
+
taskFile?: string;
|
|
330
|
+
taskFileSha256?: string;
|
|
323
331
|
description?: string;
|
|
324
332
|
lastIntent?: string;
|
|
325
333
|
exitCode: number;
|
|
@@ -4,6 +4,15 @@
|
|
|
4
4
|
* selector peeling and transcript renderers consult it instead of hardcoding
|
|
5
5
|
* scheme names.
|
|
6
6
|
*/
|
|
7
|
+
/**
|
|
8
|
+
* Mutation class of a writable scheme; drives plan-mode and device-only `write` gates.
|
|
9
|
+
* - `workspace`: mutates user/external state; blocked in plan mode and device-only sessions.
|
|
10
|
+
* - `sandbox`: session scratch space (local://); allowed in plan mode and device-only sessions.
|
|
11
|
+
* - `coordination`: peer messaging (agent://); always allowed. `SchemeWritePolicy.cancels` grants the same per URL.
|
|
12
|
+
* - `device`: tool-device dispatch (xd://); always allowed, the device enforces its own policy.
|
|
13
|
+
* - `reply`: a message to the user (out://); always allowed, and transcripts draw the content as assistant prose.
|
|
14
|
+
*/
|
|
15
|
+
export type SchemeWriteScope = "workspace" | "sandbox" | "coordination" | "device" | "reply";
|
|
7
16
|
/** Renderer-relevant subset of a registered scheme's declared spec. */
|
|
8
17
|
export interface InternalUrlSchemeSpec {
|
|
9
18
|
/** `lines`: a trailing `:<selector>` chain is a read selector; `none`/`opaque`: never peel. */
|
|
@@ -12,16 +21,24 @@ export interface InternalUrlSchemeSpec {
|
|
|
12
21
|
readonly portAuthority?: boolean;
|
|
13
22
|
/** Read cards collapse into the compact read group like plain files instead of expanding. */
|
|
14
23
|
readonly compactTranscript?: boolean;
|
|
24
|
+
/** Write policy; absent on read-only schemes. Transcripts draw `reply`-scoped writes as assistant prose. */
|
|
25
|
+
readonly write?: {
|
|
26
|
+
readonly scope: SchemeWriteScope;
|
|
27
|
+
};
|
|
15
28
|
}
|
|
16
29
|
/** Scheme registry capabilities installed by the internal URL host. */
|
|
17
30
|
export interface InternalUrlSchemeHost {
|
|
18
31
|
/** Declared spec of a registered scheme (case-insensitive); undefined when unregistered. */
|
|
19
32
|
spec(scheme: string): InternalUrlSchemeSpec | undefined;
|
|
33
|
+
/** Declared specs of every registered scheme, keyed by lowercased scheme. */
|
|
34
|
+
specs(): ReadonlyMap<string, InternalUrlSchemeSpec>;
|
|
20
35
|
}
|
|
21
36
|
/** Install the scheme registry. Until one is installed, no URL counts as an internal scheme. */
|
|
22
37
|
export declare function setInternalUrlSchemeHost(host: InternalUrlSchemeHost): void;
|
|
23
38
|
/** Declared spec of `scheme`; undefined when it is unregistered or no host is installed. */
|
|
24
39
|
export declare function internalUrlSchemeSpec(scheme: string): InternalUrlSchemeSpec | undefined;
|
|
40
|
+
/** Declared specs of every registered scheme, keyed by lowercased scheme; empty when no host is installed. */
|
|
41
|
+
export declare function internalUrlSchemeSpecs(): ReadonlyMap<string, InternalUrlSchemeSpec>;
|
|
25
42
|
/** Split a hierarchical `scheme://rest` URL into its lowercased scheme and the text after `://`. */
|
|
26
43
|
export declare function splitUrlScheme(input: string): {
|
|
27
44
|
scheme: string;
|
|
@@ -15,7 +15,7 @@ export declare const yieldToolRenderer: {
|
|
|
15
15
|
renderCall(args: YieldRenderArgs, options: RenderResultOptions, theme: Theme): Component;
|
|
16
16
|
renderResult(result: ToolRenderResult<YieldItem>, options: RenderResultContextOptions, theme: Theme, args?: YieldRenderArgs): Component;
|
|
17
17
|
describeCall(args: YieldRenderArgs, options: RenderResultOptions): NativeToolView;
|
|
18
|
-
describeResult(result: ToolRenderResult<YieldItem>,
|
|
18
|
+
describeResult(result: ToolRenderResult<YieldItem>, options: RenderResultContextOptions, args?: YieldRenderArgs): NativeToolView;
|
|
19
19
|
mergeCallAndResult: true;
|
|
20
20
|
animatedPendingPreview: true;
|
|
21
21
|
};
|
package/dist/types/tui.d.ts
CHANGED
|
@@ -80,7 +80,9 @@ export interface TUIStartOptions {
|
|
|
80
80
|
* switches to raw input and replays the kernel-buffered keystrokes.
|
|
81
81
|
*
|
|
82
82
|
* A terminal expected to speak TSP needs raw input from the start, so it
|
|
83
|
-
* gets it
|
|
83
|
+
* gets it. Plain typing (printable text, Backspace) still edits the focused
|
|
84
|
+
* component live, as the kernel echo shows it elsewhere; the first other key
|
|
85
|
+
* and every key after it are held instead (TSP events and the cell-size
|
|
84
86
|
* reply still apply) until {@link TUI.releaseHeldInput} replays them.
|
|
85
87
|
*/
|
|
86
88
|
deferInput?: boolean;
|
|
@@ -507,7 +509,10 @@ export declare class TUI extends Container {
|
|
|
507
509
|
* never come.
|
|
508
510
|
*/
|
|
509
511
|
addStartListener(listener: StartListener): () => void;
|
|
510
|
-
|
|
512
|
+
/** Registers a key listener; `prepend` gives a foreground input owner first refusal over global shortcuts. */
|
|
513
|
+
addInputListener(listener: InputListener, options?: {
|
|
514
|
+
prepend?: boolean;
|
|
515
|
+
}): () => void;
|
|
511
516
|
removeInputListener(listener: InputListener): void;
|
|
512
517
|
stop(): void;
|
|
513
518
|
/**
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@oh-my-pi/pi-tui",
|
|
4
|
-
"version": "18.
|
|
4
|
+
"version": "18.14.0",
|
|
5
5
|
"description": "Terminal User Interface library with differential rendering for efficient text-based applications",
|
|
6
6
|
"homepage": "https://omp.sh",
|
|
7
7
|
"author": {
|
|
@@ -41,27 +41,26 @@
|
|
|
41
41
|
"gen:glyphs": "bun scripts/gen-glyphs.ts"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@oh-my-pi/omptype": "18.
|
|
45
|
-
"@oh-my-pi/pi-agent-core": "18.
|
|
46
|
-
"@oh-my-pi/pi-ai": "18.
|
|
47
|
-
"@oh-my-pi/pi-catalog": "18.
|
|
48
|
-
"@oh-my-pi/pi-natives": "18.
|
|
49
|
-
"@oh-my-pi/pi-utils": "18.
|
|
50
|
-
"@oh-my-pi/pi-wire": "18.
|
|
51
|
-
"@oh-my-pi/snapcompact": "18.
|
|
44
|
+
"@oh-my-pi/omptype": "18.14.0",
|
|
45
|
+
"@oh-my-pi/pi-agent-core": "18.14.0",
|
|
46
|
+
"@oh-my-pi/pi-ai": "18.14.0",
|
|
47
|
+
"@oh-my-pi/pi-catalog": "18.14.0",
|
|
48
|
+
"@oh-my-pi/pi-natives": "18.14.0",
|
|
49
|
+
"@oh-my-pi/pi-utils": "18.14.0",
|
|
50
|
+
"@oh-my-pi/pi-wire": "18.14.0",
|
|
51
|
+
"@oh-my-pi/snapcompact": "18.14.0"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"kitty-vt-wasm": "^0.2.0"
|
|
55
55
|
},
|
|
56
56
|
"engines": {
|
|
57
|
-
"bun": ">=1.
|
|
57
|
+
"bun": ">=1.4.4"
|
|
58
58
|
},
|
|
59
59
|
"files": [
|
|
60
60
|
"src",
|
|
61
61
|
"README.md",
|
|
62
62
|
"CHANGELOG.md",
|
|
63
63
|
"LICENSE",
|
|
64
|
-
"THIRD-PARTY-NOTICES.txt",
|
|
65
64
|
"dist/types"
|
|
66
65
|
],
|
|
67
66
|
"exports": {
|
|
@@ -73,10 +72,6 @@
|
|
|
73
72
|
"types": "./dist/types/theme/index.d.ts",
|
|
74
73
|
"import": "./src/theme/index.ts"
|
|
75
74
|
},
|
|
76
|
-
"./theme/defaults": {
|
|
77
|
-
"types": "./dist/types/theme/defaults/index.d.ts",
|
|
78
|
-
"import": "./src/theme/defaults/index.ts"
|
|
79
|
-
},
|
|
80
75
|
"./theme/*": {
|
|
81
76
|
"types": "./dist/types/theme/*.d.ts",
|
|
82
77
|
"import": "./src/theme/*.ts"
|