@agi-fans/dsh-tui 0.12.0 → 0.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.
Files changed (55) hide show
  1. package/lib/CHANGELOG.md +24 -1
  2. package/lib/chrome/box.d.ts +2 -1
  3. package/lib/chrome/box.js +6 -4
  4. package/lib/chrome/box.js.map +1 -1
  5. package/lib/chrome/status-line.js +16 -2
  6. package/lib/chrome/status-line.js.map +1 -1
  7. package/lib/chrome/tool-renderers.js +1 -1
  8. package/lib/chrome/tool-renderers.js.map +1 -1
  9. package/lib/commands/auth.d.ts +2 -2
  10. package/lib/commands/auth.js +6 -8
  11. package/lib/commands/auth.js.map +1 -1
  12. package/lib/commands/export.js +3 -3
  13. package/lib/commands/export.js.map +1 -1
  14. package/lib/commands/permission.js +1 -1
  15. package/lib/commands/permission.js.map +1 -1
  16. package/lib/commands/session.js +4 -3
  17. package/lib/commands/session.js.map +1 -1
  18. package/lib/commands/trajectory.js +1 -1
  19. package/lib/commands/trajectory.js.map +1 -1
  20. package/lib/definition.d.ts +12 -0
  21. package/lib/runtime/provider-local.d.ts +2 -1
  22. package/lib/runtime/provider-local.js +203 -10
  23. package/lib/runtime/provider-local.js.map +1 -1
  24. package/lib/runtime/startup-notices.js +1 -2
  25. package/lib/runtime/startup-notices.js.map +1 -1
  26. package/lib/runtime/terminal-notifications.d.ts +2 -0
  27. package/lib/runtime/terminal-notifications.js +14 -2
  28. package/lib/runtime/terminal-notifications.js.map +1 -1
  29. package/lib/runtime/tool-presentation.js +1 -1
  30. package/lib/runtime/tool-presentation.js.map +1 -1
  31. package/lib/session/interaction-adapter.js +4 -2
  32. package/lib/session/interaction-adapter.js.map +1 -1
  33. package/lib/session/session-configuration.js +2 -2
  34. package/lib/session/session-configuration.js.map +1 -1
  35. package/lib/session/session-controller.d.ts +1 -1
  36. package/lib/session/session-controller.js +27 -16
  37. package/lib/session/session-controller.js.map +1 -1
  38. package/lib/session/subagent-roster.js +1 -2
  39. package/lib/session/subagent-roster.js.map +1 -1
  40. package/lib/session/tui-settings.d.ts +5 -0
  41. package/lib/session/tui-settings.js +4 -0
  42. package/lib/session/tui-settings.js.map +1 -1
  43. package/lib/views/event-views.d.ts +6 -3
  44. package/lib/views/event-views.js +79 -18
  45. package/lib/views/event-views.js.map +1 -1
  46. package/lib/views/settings-list.d.ts +11 -4
  47. package/lib/views/settings-list.js +134 -55
  48. package/lib/views/settings-list.js.map +1 -1
  49. package/lib/views/streaming-reveal.d.ts +20 -0
  50. package/lib/views/streaming-reveal.js +59 -0
  51. package/lib/views/streaming-reveal.js.map +1 -0
  52. package/lib/views/trajectory.d.ts +2 -2
  53. package/lib/views/trajectory.js +17 -5
  54. package/lib/views/trajectory.js.map +1 -1
  55. package/package.json +34 -33
@@ -21,11 +21,11 @@ async function exportTranscript(invocation) {
21
21
  const unquoted = pathInput.replace(/^(?:"(.*)"|'(.*)')$/u, '$1$2');
22
22
  const fallback = `omdsh-transcript-${invocation.agent.id}.${html ? 'html' : 'md'}`;
23
23
  const path = resolve(unquoted === '' ? fallback : (unquoted.startsWith('~/') ? homedir() + unquoted.slice(1) : unquoted));
24
- const title = sessionTitle(invocation.agent.session.events, invocation.agent.id);
24
+ const title = sessionTitle(invocation.agent.session.snapshotEvents(), invocation.agent.id);
25
25
  try {
26
26
  const contents = html
27
- ? formatTranscriptHtml(invocation.agent.id, title, invocation.agent.session.events)
28
- : formatTranscriptMarkdown(invocation.agent.id, title, invocation.agent.session.events);
27
+ ? formatTranscriptHtml(invocation.agent.id, title, invocation.agent.session.snapshotEvents())
28
+ : formatTranscriptMarkdown(invocation.agent.id, title, invocation.agent.session.snapshotEvents());
29
29
  await writeFile(path, contents, { encoding: 'utf8', mode: 0o600 });
30
30
  return { kind: 'success', text: `Exported complete transcript to ${path}` };
31
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"AAAA,iEAAiE;AAEjE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAInC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AAE9F,MAAM,CAAC,MAAM,IAAI,GAAG,sBAAsB,CAAA;AAC1C,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,UAAU,CAAC,CAAA;AAElC,SAAS,YAAY,CAAC,MAA+B,EAAE,QAAgB;IACrE,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACvB,IAAI,KAAK,EAAE,IAAI,KAAK,eAAe;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAA;IAC9D,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,UAA6B;IAC3D,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;IACxC,MAAM,IAAI,GAAG,KAAK,KAAK,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAA;IAC/F,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAA;IAClE,MAAM,QAAQ,GAAG,oBAAoB,UAAU,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IAClF,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;IACzH,MAAM,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAChF,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI;YACnB,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YACnF,CAAC,CAAC,wBAAwB,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACzF,MAAM,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;QAClE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,mCAAmC,IAAI,EAAE,EAAE,CAAA;IAC7E,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAA;IAC9G,CAAC;AACH,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,GAAY;IAChC,gBAAgB,CAAC,GAAG,EAAE,CAAC;YACrB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,+DAA+D;YAC5E,KAAK,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE;YACzC,OAAO,EAAE,gBAAgB;SAC1B,CAAC,EAAE,sBAAsB,CAAC,CAAA;AAC7B,CAAC"}
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"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"}
@@ -26,7 +26,7 @@ async function confirmFullAccess(ctx, invocation) {
26
26
  async function selectAccess(ctx, invocation, switchPreset) {
27
27
  if (invocation.rawInput.trim() !== '')
28
28
  return { kind: 'error', text: 'Usage: /permission' };
29
- const current = ctx.permissionPresets.current(invocation.agent.session.events);
29
+ const current = ctx.permissionPresets.current(invocation.agent.session);
30
30
  const options = ctx.permissionPresets.names.map((value) => {
31
31
  const option = ctx.permissionPresets.optionOf(value);
32
32
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"permission.js","sourceRoot":"","sources":["../../src/commands/permission.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"permission.js","sourceRoot":"","sources":["../../src/commands/permission.ts"],"names":[],"mappings":"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"}
@@ -144,8 +144,9 @@ function showSession(ctx, invocation) {
144
144
  async function retry(ctx, invocation) {
145
145
  if (invocation.rawInput.trim() !== '')
146
146
  return { kind: 'error', text: 'Usage: /retry' };
147
- for (let i = invocation.agent.session.events.length - 1; i >= 0; i -= 1) {
148
- const text = humanText(invocation.agent.session.events[i]);
147
+ const log = invocation.agent.session.snapshotEvents();
148
+ for (let i = log.length - 1; i >= 0; i -= 1) {
149
+ const text = humanText(log[i]);
149
150
  if (text === undefined)
150
151
  continue;
151
152
  await ctx.omdshSession.send(text, invocation.agent);
@@ -164,7 +165,7 @@ function showContext(ctx, invocation) {
164
165
  function showTodo(invocation) {
165
166
  if (invocation.rawInput.trim() !== '')
166
167
  return { kind: 'error', text: 'Usage: /todo' };
167
- const event = invocation.agent.session.events.findLast(item => item.type === 'todo/write');
168
+ const event = invocation.agent.session.snapshotEvents().findLast(item => item.type === 'todo/write');
168
169
  if (event === undefined)
169
170
  return { kind: 'success', text: 'No todo list has been recorded.' };
170
171
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ export const inject = ['commands', 'tui'];
5
5
  function openTrajectory(ctx, invocation) {
6
6
  if (invocation.rawInput.trim() !== '')
7
7
  return { kind: 'error', text: 'Usage: /trajectory' };
8
- if (!ctx.tui.openTrajectory(invocation.agent.session.events)) {
8
+ if (!ctx.tui.openTrajectory(invocation.agent.session.snapshotEvents())) {
9
9
  return { kind: 'error', text: 'Trajectory requires an interactive terminal.' };
10
10
  }
11
11
  return { kind: 'success' };
@@ -1 +1 @@
1
- {"version":3,"file":"trajectory.js","sourceRoot":"","sources":["../../src/commands/trajectory.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAI9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEpD,MAAM,CAAC,MAAM,IAAI,GAAG,0BAA0B,CAAA;AAC9C,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;AAEzC,SAAS,cAAc,CAAC,GAAY,EAAE,UAA6B;IACjE,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAA;IAC3F,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,8CAA8C,EAAE,CAAA;IAChF,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,GAAY;IAChC,gBAAgB,CAAC,GAAG,EAAE,CAAC;YACrB,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,sCAAsC;YACnD,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,UAAU,CAAC;SACvD,CAAC,EAAE,0BAA0B,CAAC,CAAA;AACjC,CAAC"}
1
+ {"version":3,"file":"trajectory.js","sourceRoot":"","sources":["../../src/commands/trajectory.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAI9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEpD,MAAM,CAAC,MAAM,IAAI,GAAG,0BAA0B,CAAA;AAC9C,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;AAEzC,SAAS,cAAc,CAAC,GAAY,EAAE,UAA6B;IACjE,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAA;IAC3F,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC;QACvE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,8CAA8C,EAAE,CAAA;IAChF,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,GAAY;IAChC,gBAAgB,CAAC,GAAG,EAAE,CAAC;YACrB,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,sCAAsC;YACnD,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,UAAU,CAAC;SACvD,CAAC,EAAE,0BAA0B,CAAC,CAAA;AACjC,CAAC"}
@@ -179,6 +179,16 @@ export interface TuiSubmission {
179
179
  text: string;
180
180
  images: readonly TuiInputImage[];
181
181
  }
182
+ /** Product-owned language preference projected into the settings overlay. */
183
+ export interface TuiAgentBehaviorSettings {
184
+ language: 'auto' | 'zh-CN' | 'en';
185
+ }
186
+ /** Closed binding between the product settings owner and the terminal surface. */
187
+ export interface TuiAgentBehaviorSettingsBinding {
188
+ get(): TuiAgentBehaviorSettings;
189
+ update(next: TuiAgentBehaviorSettings): Promise<void>;
190
+ watch(listener: (next: TuiAgentBehaviorSettings) => void): () => void;
191
+ }
182
192
  /**
183
193
  * Terminal presentation service.
184
194
  * Implementations must be single-consumer: one runner owns readInput().
@@ -209,6 +219,8 @@ export interface TuiService {
209
219
  notice(text: string, options?: TuiNoticeOptions): void;
210
220
  /** Append one successful plugin command result using the command-output surface. */
211
221
  commandOutput(command: string, text: string): void;
222
+ /** Bind the product-owned Agent settings section; only one binding may be active. */
223
+ bindAgentBehaviorSettings?(binding: TuiAgentBehaviorSettingsBinding): () => void;
212
224
  /** Temporarily own the composer and collect one human answer. */
213
225
  prompt(request: TuiPrompt): Promise<string | null>;
214
226
  /** Replace the transcript when a new or resumed session becomes active. */
@@ -12,7 +12,7 @@
12
12
  */
13
13
  import type { Context } from '@deepseek-ai/cordis';
14
14
  import type { SessionEvent } from '@deepseek-ai/dsh-session';
15
- import { type TuiCommand, type TuiPrompt, type TuiNoticeOptions, type TuiRecentSession, type TuiService, type TuiSessionControls, type TuiSessionStats, type TuiStatus, type TuiInputImage, type TuiInspectedSubagent, type TuiLoopStatus, type TuiSubagentRoster, type TuiSubmission } from '../definition.ts';
15
+ import { type TuiAgentBehaviorSettingsBinding, type TuiCommand, type TuiPrompt, type TuiNoticeOptions, type TuiRecentSession, type TuiService, type TuiSessionControls, type TuiSessionStats, type TuiStatus, type TuiInputImage, type TuiInspectedSubagent, type TuiLoopStatus, type TuiSubagentRoster, type TuiSubmission } from '../definition.ts';
16
16
  import { type DirReader, type PathSearcher } from '../views/path-complete.ts';
17
17
  import { type FileSearcher, type SessionSearcher } from '../views/at-complete.ts';
18
18
  import { type ClipboardReader, type ClipboardWriter } from '../input/clipboard.ts';
@@ -110,6 +110,7 @@ export declare class LocalTui implements TuiService {
110
110
  applyStoredPrefs(prefs: TuiPrefs): void;
111
111
  /** Called after a live `/settings` change. */
112
112
  setPrefsPersist(persist: (prefs: TuiPrefs) => void): void;
113
+ bindAgentBehaviorSettings(binding: TuiAgentBehaviorSettingsBinding): () => void;
113
114
  readInput(): Promise<TuiSubmission | null>;
114
115
  /** Compatibility helper for provider-level text editing tests and embedders. */
115
116
  readline(): Promise<string | null>;
@@ -10,7 +10,7 @@
10
10
  * printing of settled blocks.
11
11
  * @module @agi-fans/dsh-tui
12
12
  */
13
- import { TerminalNotificationController, terminalNotificationSequence } from "./terminal-notifications.js";
13
+ import { TerminalNotificationController, terminalNotificationSequence, terminalProgressSequence, } from "./terminal-notifications.js";
14
14
  import { homedir } from 'node:os';
15
15
  import { join } from 'node:path';
16
16
  import { createInterface } from 'node:readline';
@@ -28,6 +28,7 @@ import { applySettingsEvent, createSettings, } from "../views/settings-list.js";
28
28
  import { appendTrajectoryEvent, applyTrajectoryEvent, createTrajectory, } from "../views/trajectory.js";
29
29
  import { applyAgentHubEvent, createAgentHub, updateAgentHub, } from "../views/agent-hub.js";
30
30
  import { applyEvent, blockLines, initialTranscript, replayEvents, renderView, TRANSCRIPT_FAST_SCROLL, } from "../views/event-views.js";
31
+ import { nextRevealStep, revealStreamingAssistant, streamingAssistantKey, streamingAssistantUnits, } from "../views/streaming-reveal.js";
31
32
  import { flushPending, parseKeys } from "../input/keys.js";
32
33
  import { MainScreenRenderer } from "../chrome/main-screen-renderer.js";
33
34
  import { createTheme, detectTrueColor, parseThemeName } from "../chrome/theme.js";
@@ -36,7 +37,6 @@ import { defaultStatusBarConfig, resolveStatusBarConfig } from "../chrome/status
36
37
  import { HistoryStore } from "../views/history-store.js";
37
38
  import { loadKeybindings } from "../input/keybindings-config.js";
38
39
  import { editExternally } from "../input/external-editor.js";
39
- import { settingsNamespace } from '@deepseek-ai/dsh-settings';
40
40
  import { movePromptSelection, filteredPromptOptions, selectedPromptAnswer, selectedFilteredPromptAnswer, togglePromptSelection, } from "../views/prompt-selector.js";
41
41
  import { resolveProjectContext } from "../session/project-context.js";
42
42
  import { pickWelcomeTips } from "../chrome/welcome-tips.js";
@@ -45,6 +45,8 @@ import { imageMarker, imagePathCandidates, probeImageDimensions, stripComposerIm
45
45
  import { APP_NAME, APP_VERSION } from "../session/package-metadata.js";
46
46
  const DOUBLE_CTRL_C_MS = 500;
47
47
  const DOUBLE_ESCAPE_MS = 500;
48
+ const STREAMING_REVEAL_MS = 1000 / 30;
49
+ const TERMINAL_PROGRESS_KEEPALIVE_MS = 1_000;
48
50
  function shortenPath(cwd) {
49
51
  const home = homedir();
50
52
  if (cwd === home)
@@ -97,6 +99,7 @@ export class LocalTui {
97
99
  #resumeHintRequested = false;
98
100
  #lastSigintTime = 0;
99
101
  #lastEscapeTime = 0;
102
+ #inspectEscapeFenceUntil = 0;
100
103
  #interrupts = new Set();
101
104
  #queueEdits = new Set();
102
105
  #rewinds = new Set();
@@ -124,6 +127,8 @@ export class LocalTui {
124
127
  #branch;
125
128
  #spinner = 0;
126
129
  #tick = null;
130
+ #revealTick = null;
131
+ #reveal;
127
132
  #loopTick = null;
128
133
  #scrollStart = 0;
129
134
  #maxStart = 0;
@@ -131,6 +136,10 @@ export class LocalTui {
131
136
  #follow = true;
132
137
  #focusBlock;
133
138
  #expandTools = false;
139
+ #motion = 'full';
140
+ #terminalProgress = false;
141
+ #terminalProgressActive = false;
142
+ #terminalProgressTick = null;
134
143
  #checkUpdates = true;
135
144
  #startupChangelog = 'summary';
136
145
  #notifications = new TerminalNotificationController();
@@ -170,6 +179,10 @@ export class LocalTui {
170
179
  #validateImageDraft;
171
180
  #autocompleteDebounceMs;
172
181
  #persistPrefs = null;
182
+ #agentBehavior;
183
+ #updateAgentBehavior;
184
+ #offAgentBehaviorWatch;
185
+ #agentBehaviorPending = false;
173
186
  /**
174
187
  * @param term - terminal surface (injectable for tests).
175
188
  * @param model - model label for the status line.
@@ -246,12 +259,20 @@ export class LocalTui {
246
259
  }
247
260
  event(event, presentation) {
248
261
  this.#state = applyEvent(this.#state, event, presentation);
249
- this.#emitNotification(this.#notifications.event({ type: event.type, ...('reason' in event && typeof event.reason === 'string' ? { reason: event.reason } : {}) }));
262
+ this.#emitNotification(this.#notifications.event({
263
+ type: event.type,
264
+ time: event.time,
265
+ ...(event.type === 'turn/end' ? { reason: event.data.reason.kind } : {}),
266
+ }));
250
267
  if (this.#trajectory !== null)
251
268
  this.#trajectory = appendTrajectoryEvent(this.#trajectory, event);
269
+ const smoothStream = this.#syncStreamingReveal(event);
252
270
  this.#syncTick();
253
271
  if (this.#tty) {
254
- if (event.type === 'assistant/chunk' && this.#streamRenderMs > 0) {
272
+ if (smoothStream) {
273
+ // The 30 fps reveal clock owns presentation for textual deltas.
274
+ }
275
+ else if (event.type === 'assistant/chunk' && this.#streamRenderMs > 0) {
255
276
  this.#scheduleStreamRender();
256
277
  }
257
278
  else {
@@ -313,8 +334,10 @@ export class LocalTui {
313
334
  }
314
335
  setInspectedSubagent(inspected) {
315
336
  this.#inspected = inspected === undefined ? undefined : { ...inspected };
316
- if (inspected !== undefined)
337
+ if (inspected !== undefined) {
338
+ this.#inspectEscapeFenceUntil = 0;
317
339
  this.#subagentLauncherFocused = false;
340
+ }
318
341
  this.#syncTick();
319
342
  if (this.#tty)
320
343
  this.#render();
@@ -441,6 +464,8 @@ export class LocalTui {
441
464
  };
442
465
  if (!this.#tty)
443
466
  return;
467
+ if (this.#reveal !== undefined && this.#motion !== 'off')
468
+ return;
444
469
  if (this.#streamRenderMs > 0 && this.#busy())
445
470
  this.#scheduleStreamRender();
446
471
  else
@@ -448,8 +473,11 @@ export class LocalTui {
448
473
  }
449
474
  /** Apply prefs loaded from the settings document (does not persist). */
450
475
  applyStoredPrefs(prefs) {
476
+ const previousMotion = this.#motion;
451
477
  this.#themeName = prefs.theme;
452
478
  this.#colors = prefs.colors;
479
+ this.#motion = prefs.motion ?? 'full';
480
+ this.#terminalProgress = prefs.terminalProgress ?? false;
453
481
  this.#expandTools = prefs.expandTools;
454
482
  this.#checkUpdates = prefs.checkUpdates ?? true;
455
483
  this.#startupChangelog = prefs.startupChangelog ?? 'summary';
@@ -458,6 +486,11 @@ export class LocalTui {
458
486
  this.#configureNotifications();
459
487
  this.#statusBar = resolveStatusBarConfig(prefs.statusBar, prefs.statusPreset);
460
488
  this.#toolsExpanded = prefs.expandTools;
489
+ if (previousMotion !== this.#motion) {
490
+ this.#stopRevealTick();
491
+ this.#reveal = undefined;
492
+ }
493
+ this.#syncTick();
461
494
  if (this.#settings !== null)
462
495
  this.#settings = { ...this.#settings, prefs };
463
496
  if (this.#tty)
@@ -467,6 +500,29 @@ export class LocalTui {
467
500
  setPrefsPersist(persist) {
468
501
  this.#persistPrefs = persist;
469
502
  }
503
+ bindAgentBehaviorSettings(binding) {
504
+ if (this.#updateAgentBehavior !== undefined) {
505
+ throw new Error('omdsh-tui: Agent behavior settings are already bound');
506
+ }
507
+ let active = true;
508
+ this.#updateAgentBehavior = next => binding.update(next);
509
+ this.#applyStoredAgentBehavior(binding.get());
510
+ this.#offAgentBehaviorWatch = binding.watch(next => { this.#applyStoredAgentBehavior(next); });
511
+ return () => {
512
+ if (!active)
513
+ return;
514
+ active = false;
515
+ this.#offAgentBehaviorWatch?.();
516
+ this.#offAgentBehaviorWatch = undefined;
517
+ this.#updateAgentBehavior = undefined;
518
+ this.#agentBehavior = undefined;
519
+ this.#agentBehaviorPending = false;
520
+ if (this.#settings !== null)
521
+ this.#settings = createSettings(this.#prefs());
522
+ if (this.#tty && !this.#disposed)
523
+ this.#render();
524
+ };
525
+ }
470
526
  readInput() {
471
527
  if (this.#pending !== null)
472
528
  return Promise.reject(new Error('omdsh-tui: input read already in flight'));
@@ -581,6 +637,8 @@ export class LocalTui {
581
637
  clearInterval(this.#tick);
582
638
  this.#tick = null;
583
639
  }
640
+ this.#stopRevealTick();
641
+ this.#setTerminalProgress(false);
584
642
  if (this.#loopTick !== null) {
585
643
  clearInterval(this.#loopTick);
586
644
  this.#loopTick = null;
@@ -609,6 +667,8 @@ export class LocalTui {
609
667
  this.#autocompleteTimer = null;
610
668
  this.#autocompleteAbort = null;
611
669
  this.#lineReader?.close();
670
+ this.#offAgentBehaviorWatch?.();
671
+ this.#offAgentBehaviorWatch = undefined;
612
672
  this.#pending?.resolve(null);
613
673
  this.#pending = null;
614
674
  this.#finishPrompt(null);
@@ -686,7 +746,9 @@ export class LocalTui {
686
746
  #syncTick() {
687
747
  if (!this.#tty)
688
748
  return;
689
- if (this.#busy()) {
749
+ const busy = this.#busy();
750
+ this.#setTerminalProgress(this.#terminalProgress && busy);
751
+ if (busy && this.#motion !== 'off') {
690
752
  if (this.#tick === null) {
691
753
  this.#tick = setInterval(() => {
692
754
  this.#spinner += 1;
@@ -699,6 +761,74 @@ export class LocalTui {
699
761
  this.#tick = null;
700
762
  }
701
763
  }
764
+ #syncStreamingReveal(event) {
765
+ const textualDelta = event.type === 'assistant/chunk'
766
+ && (event.data.chunk.type === 'text-delta' || event.data.chunk.type === 'reasoning-delta');
767
+ const key = streamingAssistantKey(this.#state);
768
+ if (!textualDelta || this.#motion === 'off' || key === undefined) {
769
+ this.#stopRevealTick();
770
+ this.#reveal = undefined;
771
+ return false;
772
+ }
773
+ if (this.#reveal?.key !== key)
774
+ this.#reveal = { key, revealed: 0 };
775
+ this.#startRevealTick();
776
+ return true;
777
+ }
778
+ #startRevealTick() {
779
+ if (!this.#tty || this.#revealTick !== null)
780
+ return;
781
+ this.#revealTick = setInterval(() => {
782
+ const reveal = this.#reveal;
783
+ if (reveal === undefined || streamingAssistantKey(this.#state) !== reveal.key) {
784
+ this.#stopRevealTick();
785
+ this.#reveal = undefined;
786
+ return;
787
+ }
788
+ const total = streamingAssistantUnits(this.#state);
789
+ const backlog = Math.max(0, total - reveal.revealed);
790
+ if (backlog === 0) {
791
+ this.#stopRevealTick();
792
+ return;
793
+ }
794
+ reveal.revealed = Math.min(total, reveal.revealed + nextRevealStep(backlog));
795
+ this.#render();
796
+ if (reveal.revealed >= total)
797
+ this.#stopRevealTick();
798
+ }, STREAMING_REVEAL_MS);
799
+ this.#revealTick.unref?.();
800
+ }
801
+ #stopRevealTick() {
802
+ if (this.#revealTick === null)
803
+ return;
804
+ clearInterval(this.#revealTick);
805
+ this.#revealTick = null;
806
+ }
807
+ #setTerminalProgress(active) {
808
+ if (!this.#tty)
809
+ return;
810
+ if (active) {
811
+ if (this.#terminalProgressActive)
812
+ return;
813
+ this.#terminalProgressActive = true;
814
+ this.#term.output.write(terminalProgressSequence(true));
815
+ this.#terminalProgressTick = setInterval(() => {
816
+ if (!this.#disposed && this.#terminalProgressActive) {
817
+ this.#term.output.write(terminalProgressSequence(true));
818
+ }
819
+ }, TERMINAL_PROGRESS_KEEPALIVE_MS);
820
+ this.#terminalProgressTick.unref?.();
821
+ return;
822
+ }
823
+ if (this.#terminalProgressTick !== null) {
824
+ clearInterval(this.#terminalProgressTick);
825
+ this.#terminalProgressTick = null;
826
+ }
827
+ if (!this.#terminalProgressActive)
828
+ return;
829
+ this.#terminalProgressActive = false;
830
+ this.#term.output.write(terminalProgressSequence(false));
831
+ }
702
832
  #syncLoopTick() {
703
833
  if (!this.#tty)
704
834
  return;
@@ -720,8 +850,11 @@ export class LocalTui {
720
850
  if (this.#deferInitialRender)
721
851
  return;
722
852
  const width = this.#term.width();
853
+ const renderState = this.#reveal === undefined
854
+ ? this.#state
855
+ : revealStreamingAssistant(this.#state, this.#reveal.revealed);
723
856
  const frame = this.#tty
724
- ? renderView(this.#state, {
857
+ ? renderView(renderState, {
725
858
  width,
726
859
  height: this.#term.height(),
727
860
  model: this.#model,
@@ -738,6 +871,7 @@ export class LocalTui {
738
871
  version: APP_VERSION,
739
872
  appName: APP_NAME,
740
873
  spinnerFrame: this.#spinner,
874
+ motion: this.#motion,
741
875
  trueColor: this.#trueColor,
742
876
  themeName: this.#themeName,
743
877
  scrollStart: this.#follow ? Number.POSITIVE_INFINITY : this.#scrollStart,
@@ -1063,8 +1197,17 @@ export class LocalTui {
1063
1197
  this.#pasteBuf = '';
1064
1198
  return;
1065
1199
  }
1066
- if (event.type !== 'key' || event.id !== 'escape')
1200
+ const isEscape = event.type === 'key' && event.id === 'escape';
1201
+ if (!isEscape) {
1067
1202
  this.#lastEscapeTime = 0;
1203
+ this.#inspectEscapeFenceUntil = 0;
1204
+ }
1205
+ else if (this.#inspected === undefined && Date.now() < this.#inspectEscapeFenceUntil) {
1206
+ return;
1207
+ }
1208
+ else if (this.#inspected === undefined) {
1209
+ this.#inspectEscapeFenceUntil = 0;
1210
+ }
1068
1211
  if (this.#handlePrompt(event))
1069
1212
  return;
1070
1213
  if (this.#trajectory !== null) {
@@ -1460,6 +1603,9 @@ export class LocalTui {
1460
1603
  #closeInspect() {
1461
1604
  if (this.#inspected === undefined)
1462
1605
  return;
1606
+ // Keep one exit gesture inside the inspector even when repeated Escape
1607
+ // bytes are decoded after the parent view has already been restored.
1608
+ this.#inspectEscapeFenceUntil = Date.now() + DOUBLE_ESCAPE_MS;
1463
1609
  for (const listener of this.#inspectCloses)
1464
1610
  listener();
1465
1611
  }
@@ -1483,6 +1629,8 @@ export class LocalTui {
1483
1629
  return {
1484
1630
  theme: this.#themeName,
1485
1631
  colors: this.#colors,
1632
+ motion: this.#motion,
1633
+ terminalProgress: this.#terminalProgress,
1486
1634
  expandTools: this.#expandTools,
1487
1635
  checkUpdates: this.#checkUpdates,
1488
1636
  startupChangelog: this.#startupChangelog,
@@ -1503,6 +1651,9 @@ export class LocalTui {
1503
1651
  const expandChanged = prefs.expandTools !== this.#expandTools;
1504
1652
  this.#themeName = prefs.theme;
1505
1653
  this.#colors = prefs.colors;
1654
+ const previousMotion = this.#motion;
1655
+ this.#motion = prefs.motion ?? 'full';
1656
+ this.#terminalProgress = prefs.terminalProgress ?? false;
1506
1657
  this.#expandTools = prefs.expandTools;
1507
1658
  this.#checkUpdates = prefs.checkUpdates ?? true;
1508
1659
  this.#startupChangelog = prefs.startupChangelog ?? 'summary';
@@ -1512,8 +1663,41 @@ export class LocalTui {
1512
1663
  this.#statusBar = resolveStatusBarConfig(prefs.statusBar, prefs.statusPreset);
1513
1664
  if (expandChanged)
1514
1665
  this.#toolsExpanded = prefs.expandTools;
1666
+ if (previousMotion !== this.#motion) {
1667
+ this.#stopRevealTick();
1668
+ this.#reveal = undefined;
1669
+ }
1670
+ this.#syncTick();
1515
1671
  this.#persistPrefs?.(prefs);
1516
1672
  }
1673
+ #applyStoredAgentBehavior(next) {
1674
+ this.#agentBehavior = { language: next.language };
1675
+ if (this.#settings !== null) {
1676
+ this.#settings = { ...this.#settings, agent: { ...this.#agentBehavior } };
1677
+ }
1678
+ if (this.#tty && !this.#disposed)
1679
+ this.#render();
1680
+ }
1681
+ async #commitAgentBehavior(next) {
1682
+ const update = this.#updateAgentBehavior;
1683
+ if (update === undefined)
1684
+ return;
1685
+ try {
1686
+ await update(next);
1687
+ this.#applyStoredAgentBehavior(next);
1688
+ }
1689
+ catch (error) {
1690
+ if (this.#settings !== null && this.#agentBehavior !== undefined) {
1691
+ this.#settings = { ...this.#settings, agent: { ...this.#agentBehavior } };
1692
+ }
1693
+ this.notice(`Could not save Agent language: ${error instanceof Error ? error.message : String(error)}`, { level: 'error' });
1694
+ }
1695
+ finally {
1696
+ this.#agentBehaviorPending = false;
1697
+ if (this.#tty && !this.#disposed)
1698
+ this.#render();
1699
+ }
1700
+ }
1517
1701
  #applySettings(event) {
1518
1702
  if (this.#settings === null)
1519
1703
  return;
@@ -1524,6 +1708,15 @@ export class LocalTui {
1524
1708
  return;
1525
1709
  }
1526
1710
  if (command.kind === 'apply') {
1711
+ if (command.domain === 'agent') {
1712
+ if (this.#agentBehaviorPending || command.state.agent === undefined)
1713
+ return;
1714
+ this.#agentBehaviorPending = true;
1715
+ this.#settings = command.state;
1716
+ this.#render();
1717
+ void this.#commitAgentBehavior(command.state.agent);
1718
+ return;
1719
+ }
1527
1720
  this.#settings = command.state;
1528
1721
  this.#applyPrefs(command.state.prefs);
1529
1722
  this.#render();
@@ -2091,7 +2284,7 @@ export class LocalTui {
2091
2284
  }
2092
2285
  this.#search = null;
2093
2286
  this.#ac = null;
2094
- this.#settings = createSettings(this.#prefs());
2287
+ this.#settings = createSettings(this.#prefs(), undefined, this.#agentBehavior);
2095
2288
  this.#render();
2096
2289
  }
2097
2290
  #notice(text) {
@@ -2206,7 +2399,7 @@ export function apply(ctx, config) {
2206
2399
  ctx.provide(TUI_SERVICE, tui);
2207
2400
  ctx.effect(() => () => { tui.dispose(); });
2208
2401
  ctx.inject(['settings'], (settingsCtx) => {
2209
- const scope = settingsCtx.settings.register(settingsNamespace(TUI_SETTINGS_NAMESPACE), TuiSettingsSchema, { base: { theme: parseThemeName(config.theme), colors: config.colors ?? term.output.isTTY === true, expandTools: false } });
2402
+ const scope = settingsCtx.settings.register(TUI_SETTINGS_NAMESPACE, TuiSettingsSchema, { base: { theme: parseThemeName(config.theme), colors: config.colors ?? term.output.isTTY === true, expandTools: false } });
2210
2403
  tui.applyStoredPrefs(scope.get());
2211
2404
  tui.setPrefsPersist((prefs) => { void scope.update(prefs); });
2212
2405
  scope.watch((next) => { tui.applyStoredPrefs(next); });