@agi-fans/dsh-tui 0.19.0 → 0.21.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/lib/CHANGELOG.md +173 -1
- package/lib/chrome/box.js +2 -12
- package/lib/chrome/box.js.map +1 -1
- package/lib/chrome/code-highlight.d.ts +26 -18
- package/lib/chrome/code-highlight.js +114 -39
- package/lib/chrome/code-highlight.js.map +1 -1
- package/lib/chrome/diff-render.d.ts +1 -2
- package/lib/chrome/diff-render.js +41 -90
- package/lib/chrome/diff-render.js.map +1 -1
- package/lib/chrome/main-screen-renderer.d.ts +6 -32
- package/lib/chrome/main-screen-renderer.js +68 -15
- package/lib/chrome/main-screen-renderer.js.map +1 -1
- package/lib/chrome/markdown.js +128 -93
- package/lib/chrome/markdown.js.map +1 -1
- package/lib/chrome/math.d.ts +4 -0
- package/lib/chrome/math.js +340 -0
- package/lib/chrome/math.js.map +1 -0
- package/lib/chrome/md-style.d.ts +3 -0
- package/lib/chrome/md-style.js.map +1 -1
- package/lib/chrome/mermaid.d.ts +6 -0
- package/lib/chrome/mermaid.js +56 -0
- package/lib/chrome/mermaid.js.map +1 -0
- package/lib/chrome/renderer.d.ts +12 -0
- package/lib/chrome/renderer.js +1 -1
- package/lib/chrome/renderer.js.map +1 -1
- package/lib/chrome/status-config.d.ts +5 -0
- package/lib/chrome/status-config.js +3 -0
- package/lib/chrome/status-config.js.map +1 -1
- package/lib/chrome/status-line.d.ts +0 -21
- package/lib/chrome/status-line.js +8 -65
- package/lib/chrome/status-line.js.map +1 -1
- package/lib/chrome/terminal-images.d.ts +31 -0
- package/lib/chrome/terminal-images.js +34 -0
- package/lib/chrome/terminal-images.js.map +1 -0
- package/lib/chrome/theme.d.ts +5 -6
- package/lib/chrome/theme.js +225 -136
- package/lib/chrome/theme.js.map +1 -1
- package/lib/chrome/tool-args.d.ts +1 -1
- package/lib/chrome/tool-args.js +3 -1
- package/lib/chrome/tool-args.js.map +1 -1
- package/lib/chrome/tool-renderers.d.ts +2 -0
- package/lib/chrome/tool-renderers.js +10 -0
- package/lib/chrome/tool-renderers.js.map +1 -1
- package/lib/chrome/welcome-tips.d.ts +1 -0
- package/lib/chrome/welcome-tips.js +4 -3
- package/lib/chrome/welcome-tips.js.map +1 -1
- package/lib/chrome/width.d.ts +7 -3
- package/lib/chrome/width.js +78 -14
- package/lib/chrome/width.js.map +1 -1
- package/lib/commands/advisor.d.ts +15 -0
- package/lib/commands/advisor.js +200 -0
- package/lib/commands/advisor.js.map +1 -0
- package/lib/commands/auth.d.ts +4 -2
- package/lib/commands/auth.js +317 -83
- package/lib/commands/auth.js.map +1 -1
- package/lib/commands/btw.d.ts +15 -0
- package/lib/commands/btw.js +126 -0
- package/lib/commands/btw.js.map +1 -0
- package/lib/commands/diff.js +171 -5
- package/lib/commands/diff.js.map +1 -1
- package/lib/commands/export.d.ts +1 -1
- package/lib/commands/export.js +57 -8
- package/lib/commands/export.js.map +1 -1
- package/lib/commands/files.d.ts +8 -0
- package/lib/commands/files.js +185 -0
- package/lib/commands/files.js.map +1 -0
- package/lib/commands/integrations.js +18 -6
- package/lib/commands/integrations.js.map +1 -1
- package/lib/commands/model.js +1 -0
- package/lib/commands/model.js.map +1 -1
- package/lib/commands/permission.js +35 -1
- package/lib/commands/permission.js.map +1 -1
- package/lib/commands/plugins.d.ts +8 -0
- package/lib/commands/plugins.js +195 -0
- package/lib/commands/plugins.js.map +1 -0
- package/lib/commands/rate.d.ts +33 -0
- package/lib/commands/rate.js +212 -0
- package/lib/commands/rate.js.map +1 -0
- package/lib/commands/schedule.d.ts +19 -0
- package/lib/commands/schedule.js +197 -0
- package/lib/commands/schedule.js.map +1 -0
- package/lib/commands/session-configuration.d.ts +5 -1
- package/lib/commands/session-configuration.js +75 -35
- package/lib/commands/session-configuration.js.map +1 -1
- package/lib/commands/session.js +111 -60
- package/lib/commands/session.js.map +1 -1
- package/lib/commands/steer.js +2 -2
- package/lib/commands/steer.js.map +1 -1
- package/lib/commands/terminal.d.ts +21 -0
- package/lib/commands/terminal.js +202 -0
- package/lib/commands/terminal.js.map +1 -0
- package/lib/commands/worktree.d.ts +5 -0
- package/lib/commands/worktree.js +103 -0
- package/lib/commands/worktree.js.map +1 -0
- package/lib/definition.d.ts +163 -10
- package/lib/definition.js.map +1 -1
- package/lib/input/clipboard.d.ts +12 -7
- package/lib/input/clipboard.js +79 -20
- package/lib/input/clipboard.js.map +1 -1
- package/lib/input/composer-files.d.ts +26 -0
- package/lib/input/composer-files.js +50 -0
- package/lib/input/composer-files.js.map +1 -0
- package/lib/input/editor-discovery.d.ts +21 -0
- package/lib/input/editor-discovery.js +99 -0
- package/lib/input/editor-discovery.js.map +1 -0
- package/lib/input/editor.d.ts +26 -1
- package/lib/input/editor.js +126 -12
- package/lib/input/editor.js.map +1 -1
- package/lib/input/external-editor.d.ts +5 -2
- package/lib/input/external-editor.js +14 -12
- package/lib/input/external-editor.js.map +1 -1
- package/lib/input/fuzzy-search.d.ts +9 -0
- package/lib/input/fuzzy-search.js +113 -0
- package/lib/input/fuzzy-search.js.map +1 -0
- package/lib/input/keybindings-config.d.ts +6 -2
- package/lib/input/keybindings-config.js +61 -7
- package/lib/input/keybindings-config.js.map +1 -1
- package/lib/input/keys.d.ts +13 -1
- package/lib/input/keys.js +27 -8
- package/lib/input/keys.js.map +1 -1
- package/lib/input/mouse-policy.d.ts +3 -0
- package/lib/input/mouse-policy.js +14 -0
- package/lib/input/mouse-policy.js.map +1 -0
- package/lib/input/paste-burst.d.ts +16 -0
- package/lib/input/paste-burst.js +61 -0
- package/lib/input/paste-burst.js.map +1 -0
- package/lib/input/text-selection.d.ts +20 -0
- package/lib/input/text-selection.js +195 -0
- package/lib/input/text-selection.js.map +1 -0
- package/lib/runtime/agent-profile.d.ts +5 -0
- package/lib/runtime/agent-profile.js +12 -0
- package/lib/runtime/agent-profile.js.map +1 -1
- package/lib/runtime/approval-rules.d.ts +59 -0
- package/lib/runtime/approval-rules.js +179 -0
- package/lib/runtime/approval-rules.js.map +1 -0
- package/lib/runtime/btw-policy.d.ts +7 -0
- package/lib/runtime/btw-policy.js +18 -0
- package/lib/runtime/btw-policy.js.map +1 -0
- package/lib/runtime/btw.d.ts +47 -0
- package/lib/runtime/btw.js +200 -0
- package/lib/runtime/btw.js.map +1 -0
- package/lib/runtime/composer-images.d.ts +1 -0
- package/lib/runtime/composer-images.js +11 -3
- package/lib/runtime/composer-images.js.map +1 -1
- package/lib/runtime/composer-shell.d.ts +15 -0
- package/lib/runtime/composer-shell.js +84 -0
- package/lib/runtime/composer-shell.js.map +1 -0
- package/lib/runtime/file-open.d.ts +2 -0
- package/lib/runtime/file-open.js +12 -0
- package/lib/runtime/file-open.js.map +1 -0
- package/lib/runtime/file-recovery-local.d.ts +73 -0
- package/lib/runtime/file-recovery-local.js +351 -0
- package/lib/runtime/file-recovery-local.js.map +1 -0
- package/lib/runtime/file-recovery-recording.d.ts +23 -0
- package/lib/runtime/file-recovery-recording.js +131 -0
- package/lib/runtime/file-recovery-recording.js.map +1 -0
- package/lib/runtime/file-recovery-review.d.ts +4 -0
- package/lib/runtime/file-recovery-review.js +131 -0
- package/lib/runtime/file-recovery-review.js.map +1 -0
- package/lib/runtime/file-recovery-store.d.ts +83 -0
- package/lib/runtime/file-recovery-store.js +325 -0
- package/lib/runtime/file-recovery-store.js.map +1 -0
- package/lib/runtime/file-recovery-worker.d.ts +22 -0
- package/lib/runtime/file-recovery-worker.js +153 -0
- package/lib/runtime/file-recovery-worker.js.map +1 -0
- package/lib/runtime/file-review.d.ts +27 -0
- package/lib/runtime/file-review.js +225 -0
- package/lib/runtime/file-review.js.map +1 -0
- package/lib/runtime/herdr-agent.d.ts +11 -28
- package/lib/runtime/herdr-agent.js +170 -142
- package/lib/runtime/herdr-agent.js.map +1 -1
- package/lib/runtime/hook-settings.d.ts +17 -0
- package/lib/runtime/hook-settings.js +57 -0
- package/lib/runtime/hook-settings.js.map +1 -0
- package/lib/runtime/human-interaction.js +1 -1
- package/lib/runtime/human-interaction.js.map +1 -1
- package/lib/runtime/image-preview.d.ts +8 -0
- package/lib/runtime/image-preview.js +119 -0
- package/lib/runtime/image-preview.js.map +1 -0
- package/lib/runtime/plain-tui.d.ts +2 -0
- package/lib/runtime/plain-tui.js +2 -2
- package/lib/runtime/plain-tui.js.map +1 -1
- package/lib/runtime/plugin-settings.d.ts +40 -0
- package/lib/runtime/plugin-settings.js +450 -0
- package/lib/runtime/plugin-settings.js.map +1 -0
- package/lib/runtime/provider-local.d.ts +60 -10
- package/lib/runtime/provider-local.js +1640 -197
- package/lib/runtime/provider-local.js.map +1 -1
- package/lib/runtime/runner.js +50 -4
- package/lib/runtime/runner.js.map +1 -1
- package/lib/runtime/session-archive.d.ts +11 -0
- package/lib/runtime/session-archive.js +240 -0
- package/lib/runtime/session-archive.js.map +1 -0
- package/lib/runtime/session-runtime.js +1 -1
- package/lib/runtime/session-runtime.js.map +1 -1
- package/lib/runtime/settings-preferences.d.ts +5 -0
- package/lib/runtime/settings-preferences.js +34 -0
- package/lib/runtime/settings-preferences.js.map +1 -0
- package/lib/runtime/subagent-model-selection.d.ts +5 -0
- package/lib/runtime/subagent-model-selection.js +15 -0
- package/lib/runtime/subagent-model-selection.js.map +1 -0
- package/lib/runtime/terminal-notifications.d.ts +8 -0
- package/lib/runtime/terminal-notifications.js +16 -0
- package/lib/runtime/terminal-notifications.js.map +1 -1
- package/lib/runtime/terminal-reader.d.ts +11 -0
- package/lib/runtime/terminal-reader.js +87 -0
- package/lib/runtime/terminal-reader.js.map +1 -0
- package/lib/runtime/terminal-state.d.ts +29 -0
- package/lib/runtime/terminal-state.js +62 -0
- package/lib/runtime/terminal-state.js.map +1 -0
- package/lib/runtime/tool-presentation.js +50 -14
- package/lib/runtime/tool-presentation.js.map +1 -1
- package/lib/session/composer-drafts.d.ts +20 -0
- package/lib/session/composer-drafts.js +103 -0
- package/lib/session/composer-drafts.js.map +1 -0
- package/lib/session/conversation-turns.d.ts +16 -0
- package/lib/session/conversation-turns.js +33 -0
- package/lib/session/conversation-turns.js.map +1 -0
- package/lib/session/external-agents.d.ts +5 -0
- package/lib/session/external-agents.js +27 -0
- package/lib/session/external-agents.js.map +1 -0
- package/lib/session/feature-toggles.d.ts +8 -29
- package/lib/session/feature-toggles.js +15 -46
- package/lib/session/feature-toggles.js.map +1 -1
- package/lib/session/fold-policy.d.ts +0 -17
- package/lib/session/fold-policy.js +0 -11
- package/lib/session/fold-policy.js.map +1 -1
- package/lib/session/interaction-adapter.d.ts +3 -8
- package/lib/session/interaction-adapter.js +243 -34
- package/lib/session/interaction-adapter.js.map +1 -1
- package/lib/session/message-queue.d.ts +22 -0
- package/lib/session/message-queue.js +157 -0
- package/lib/session/message-queue.js.map +1 -0
- package/lib/session/model-readiness.d.ts +16 -0
- package/lib/session/model-readiness.js +43 -0
- package/lib/session/model-readiness.js.map +1 -0
- package/lib/session/project-context.d.ts +5 -0
- package/lib/session/project-context.js +36 -0
- package/lib/session/project-context.js.map +1 -1
- package/lib/session/project-file-search.js +3 -21
- package/lib/session/project-file-search.js.map +1 -1
- package/lib/session/session-controller.d.ts +11 -20
- package/lib/session/session-controller.js +287 -176
- package/lib/session/session-controller.js.map +1 -1
- package/lib/session/session-library.d.ts +11 -3
- package/lib/session/session-library.js +50 -8
- package/lib/session/session-library.js.map +1 -1
- package/lib/session/session-tree.d.ts +27 -0
- package/lib/session/session-tree.js +112 -0
- package/lib/session/session-tree.js.map +1 -0
- package/lib/session/steering.d.ts +3 -0
- package/lib/session/steering.js +9 -0
- package/lib/session/steering.js.map +1 -0
- package/lib/session/subagent-roster.d.ts +2 -1
- package/lib/session/subagent-roster.js +24 -3
- package/lib/session/subagent-roster.js.map +1 -1
- package/lib/session/subagent-tracker.d.ts +6 -2
- package/lib/session/subagent-tracker.js +49 -2
- package/lib/session/subagent-tracker.js.map +1 -1
- package/lib/session/tui-settings.d.ts +23 -1
- package/lib/session/tui-settings.js +15 -1
- package/lib/session/tui-settings.js.map +1 -1
- package/lib/session/workflow-projection.d.ts +9 -0
- package/lib/session/workflow-projection.js +44 -0
- package/lib/session/workflow-projection.js.map +1 -0
- package/lib/session/working-directory.d.ts +4 -0
- package/lib/session/working-directory.js +4 -0
- package/lib/session/working-directory.js.map +1 -0
- package/lib/session/worktrees.d.ts +13 -0
- package/lib/session/worktrees.js +49 -0
- package/lib/session/worktrees.js.map +1 -0
- package/lib/views/agent-hub.js +12 -4
- package/lib/views/agent-hub.js.map +1 -1
- package/lib/views/approval-rule.d.ts +3 -0
- package/lib/views/approval-rule.js +4 -0
- package/lib/views/approval-rule.js.map +1 -0
- package/lib/views/at-complete.d.ts +8 -0
- package/lib/views/at-complete.js +64 -2
- package/lib/views/at-complete.js.map +1 -1
- package/lib/views/autocomplete.d.ts +4 -0
- package/lib/views/autocomplete.js +33 -36
- package/lib/views/autocomplete.js.map +1 -1
- package/lib/views/copy-selector.d.ts +3 -0
- package/lib/views/copy-selector.js +46 -15
- package/lib/views/copy-selector.js.map +1 -1
- package/lib/views/copy-targets.d.ts +2 -2
- package/lib/views/copy-targets.js +31 -13
- package/lib/views/copy-targets.js.map +1 -1
- package/lib/views/document-reader.d.ts +34 -0
- package/lib/views/document-reader.js +145 -0
- package/lib/views/document-reader.js.map +1 -0
- package/lib/views/event-views.d.ts +1 -1
- package/lib/views/event-views.js +57 -2
- package/lib/views/event-views.js.map +1 -1
- package/lib/views/file-actions.d.ts +12 -0
- package/lib/views/file-actions.js +72 -0
- package/lib/views/file-actions.js.map +1 -0
- package/lib/views/hotkeys.d.ts +1 -0
- package/lib/views/hotkeys.js +18 -7
- package/lib/views/hotkeys.js.map +1 -1
- package/lib/views/prompt-selector.d.ts +36 -4
- package/lib/views/prompt-selector.js +316 -60
- package/lib/views/prompt-selector.js.map +1 -1
- package/lib/views/prompt-tree.d.ts +11 -0
- package/lib/views/prompt-tree.js +74 -0
- package/lib/views/prompt-tree.js.map +1 -0
- package/lib/views/session-files.d.ts +7 -0
- package/lib/views/session-files.js +62 -0
- package/lib/views/session-files.js.map +1 -0
- package/lib/views/settings-list.d.ts +63 -2
- package/lib/views/settings-list.js +269 -62
- package/lib/views/settings-list.js.map +1 -1
- package/lib/views/transcript-export.js +9 -0
- package/lib/views/transcript-export.js.map +1 -1
- package/lib/views/transcript-render.d.ts +25 -39
- package/lib/views/transcript-render.js +146 -217
- package/lib/views/transcript-render.js.map +1 -1
- package/lib/views/transcript-types.d.ts +1 -1
- package/package.json +126 -42
- package/lib/chrome/style.d.ts +0 -22
- package/lib/chrome/style.js +0 -23
- package/lib/chrome/style.js.map +0 -1
package/lib/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,175 @@ The format is based on [Keep a Changelog], and this project adheres to [Semantic
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.21.0] - 2026-10-19
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- Standard, PTC, and Cordis presets mount the upstream `dsh-time-context` clock (Minimal does not), so date-sensitive requests no longer depend on the model guessing the current time; transcript exports skip clock and plugin snapshots.
|
|
14
|
+
- The DeepSeek account route (`deepseek-account`) is mounted beside the API-key route. `/login` can start the DeepSeek browser sign-in through a loopback-only callback host, reuse a grant established by DSH Web/Desktop, report account state, and sign out; `/model` lists the account route.
|
|
15
|
+
|
|
16
|
+
- Optional File recovery snapshots in Settings → Tools retain durable Turn file contents. Session Tree’s Alt+R selects and previews files, confirms confined restoration, preserves later edits, and reports partial results and backups without rewinding messages or the Git index.
|
|
17
|
+
|
|
18
|
+
- Approval prompts can remember an exact invocation decision for a session or workspace; `/permission` previews and revokes rules while Harness retains approval audit, cancellation and independent protections.
|
|
19
|
+
|
|
20
|
+
- `/btw` opens tool-free side consultations from a fixed conversation snapshot. Saved topics support follow-ups and separate request usage; responses stay outside the primary model context until explicitly handed back with **Share to conversation** or **Quote to composer**, and cancelling the reader leaves the main Turn running.
|
|
21
|
+
|
|
22
|
+
- `omdsh exec --json` runs prompts through an independent script consumer, with versioned NDJSON events, a final result, durable resume, Harness telemetry, explicit exit codes and managed-child draining. Human questions and approvals fail closed, while diagnostics stay on stderr.
|
|
23
|
+
|
|
24
|
+
- Composer `!command` opens a session-owned persistent Shell with live output, an interrupt hint and explicit separation from model context, while `!!command` (or pressing `S` / **Share to conversation** in `/terminal`) posts the shell output to the main transcript and session context. Marked pasted commands remain message text, Esc detaches, and Ctrl+C interrupts without cancelling an unrelated model Turn.
|
|
25
|
+
|
|
26
|
+
- Tool cards and Changed files open current file previews and the configured Editor through right-click; `Alt+V` also previews a tool’s declared files. Paths retain their invocation or summary directory, text selections keep right-click copying, and approvals take priority over previews.
|
|
27
|
+
- `omdsh doctor` provides read-only local diagnostics with text or versioned JSON output, explicit failed/unconfigured/unchecked states, secret-free reports and actionable fixes.
|
|
28
|
+
- Settings configures terminal titles and program status, sharing the root lifecycle with Herdr and keeping pending-input, completion and failure states visible without exporting prompt bodies.
|
|
29
|
+
- `/review` selects current changes, a base branch or one commit (either interactively or directly via `/review changes`, `/review base <branch>` or `/review [commit] <rev>`) and steers a review request to the current Agent, retaining its model, Access and Plan state.
|
|
30
|
+
- `/advisor` and `consult_advisor` request independently attributed Codex or Claude Code opinions with read-only workspace inspection, rendering a live `Advisor · Codex` or `Advisor · Claude Code` subagent card with streaming inspection progress in the transcript, tracking the external run and its live activity in the subagent bar and Agent Hub (`Alt+A`), offering one-step interactive bundle enablement when a shipped provider is disabled, and recording completed advice into the session context for follow-up turns. Consultations reuse managed child lifecycles, isolate native processes from workspace writes via outer OS confinement, support `Ctrl+C` cancellation, and can be disabled for model calls in Settings.
|
|
31
|
+
- The `working_directory` tool changes the session’s current directory. File browsing, diffs, attachments, completion, new terminals and the footer follow it while the original project and Access remain unchanged.
|
|
32
|
+
- `/plugins` offers Install and Reinstall for official on-demand bundles at the running Harness version, retaining installation consent, cancellation and build-script approval.
|
|
33
|
+
- `/worktree` creates, enters and switches retained Git checkouts, or returns to the session’s original directory. Creation uses the optional Git Worktrees bundle, off by default, and preserves the current Access policy and source changes.
|
|
34
|
+
- Native Codex and Claude Code bundles offer model and permission settings plus profile diagnostics in Settings, with the same form accessible from `/plugins`. Guidance explains their bundled runtimes, native authentication and independent permission policies.
|
|
35
|
+
- `/import <archive.zip>` imports a portable `/export archive` bundle into local storage, remapping attachment references, rejecting session ID collisions or oversized archives, and resuming the imported root session.
|
|
36
|
+
- `Ctrl+S` (`stash-draft`) stashes or swaps the current composer draft and automatically restores it after sending an intervening message; `Ctrl+-` restores a draft cleared with `Ctrl+C`, and `Alt+Up` recalls the latest queued message into the composer even when an unsent draft is present.
|
|
37
|
+
- Source and diff readers add a `Quote` (`Q`) action that inserts `@path:line` at the current reading line into the composer, `/terminal` adds `Share to conversation` (`S`), `Quote to composer` (`Q`) and `Copy output` (`Y`), `/mcp` renders formatted Markdown tables directly in the main transcript, and Plan Review supports `Ctrl+X` to edit multiline revision feedback in the configured external editor.
|
|
38
|
+
- Interactive Keybindings in `/settings` (**Interface → Input → Keybindings**) remaps or unbinds shortcuts and reloads `keybindings.json` without restarting.
|
|
39
|
+
- `@` autocomplete offers `@diff`, `@staged` and `@git` workspace context shortcuts to insert all modified or staged Git file mentions at once, `/copy` supports live type-to-filter search and `/copy output` (`out`) for tool outputs, and `/files` supports workspace-wide fuzzy search via `Shift+F` or `/files <query>`.
|
|
40
|
+
- `/rate` records per-reply feedback for a finalized Assistant message: positive or negative, a fixed category and an optional note, or clears an existing rating. Ratings are versioned log-only Session records that never enter model context; version conflicts retry once against the current value.
|
|
41
|
+
- `/schedule` lists this session's durable reminders, opens retained delivery records, renames or re-instructs one, and deletes it after confirmation; creating and retiming reminders stays with the model's `schedule_*` tools. Due reminders deliver as follow-up messages after restart, resuming a cold session in the background without switching the visible one.
|
|
42
|
+
- The composer shows an empty-state hint (`Ask anything · / commands · @ files`), while an unconnected session points at `/login` in both the composer and the welcome card instead of leaving only a cursor.
|
|
43
|
+
|
|
44
|
+
### Changed
|
|
45
|
+
|
|
46
|
+
- `/login` now stores a DeepSeek API key under the upstream `DEEPSEEK_API_KEY` reference instead of `OMDSH_DEEPSEEK_API_KEY`; an existing product-era key is migrated once, and an environment-owned reference is never overwritten. Web search and fetch share the same reference and prefer the account token on a `deepseek-account` session.
|
|
47
|
+
|
|
48
|
+
- Web search and page fetch use DeepSeek's Search and Fetch APIs by default and share the upstream `DEEPSEEK_API_KEY` reference, or the account token on a `deepseek-account` session; the Messages search and local HTTP fetch providers remain selectable fallbacks. This removes the separate search key requirement and the fake-IP DNS rejection in page fetch.
|
|
49
|
+
|
|
50
|
+
- `/resume` now opens the Session Library, searches durable session content with a query, or resumes an id directly; the duplicate `/sessions` entry point is removed.
|
|
51
|
+
|
|
52
|
+
- Multi-question prompts support `Alt+Left` to step back to the previous question and rescue any unsent custom answer draft into the composer if cancelled or timed out. Approval prompts guard against accidental confirmation for 500ms after opening and add **Reject with note** to deny an action and steer the next model step in one flow.
|
|
53
|
+
- Per-turn `Changed files` summaries are persisted as ignorable session records so resumed sessions retain changed-file cards, file previews and `/diff turn` navigation; terminal transcripts also emit `OSC 133;A` semantic prompt markers on user turns.
|
|
54
|
+
- Command discovery prioritizes common tasks, searches description keywords and groups help by task. Session Library content search retains pin, rename and archive actions.
|
|
55
|
+
- Allowed subagent models use a searchable, preselected multi-select list instead of JSON. Native integration Model and Permissions open directly, and Installation status explicitly reports registration only. Worktree creation can be enabled from its own picker.
|
|
56
|
+
- Approval readers preserve multi-line tool input and reasons without compressing them into one row. MCP diagnostics distinguish plugin registration from available tools and do not infer connection health.
|
|
57
|
+
- Settings adds cross-category search, visible narrow-screen category navigation, current-value preselection and prefilled input with readable duration and byte units. Agent links reuse model, Access and preset selectors and return to `/settings` with refreshed values; integration summaries show registration state and help explains dependencies and effect scope.
|
|
58
|
+
- Settings saves only edited preference fields and offers confirmed restoration of inherited values, including individual status colors or the complete footer layout. Searching and editing retain the selected result.
|
|
59
|
+
- Settings groups built-in capabilities under Interface, Agent, Tools, Status line and Integrations, with native-provider enablement and configuration. Advanced retains unclaimed fields and installed plugins, honors automatic-form policy, and omits duplicate and deprecated controls. Common switches and Hook compatibility show their current values and change directly; returning from forms preserves the selected row as available settings change. Bash and PowerShell share the Shell form, and Web search keeps connection and credential fields in Advanced.
|
|
60
|
+
- Bundle management offers a confirmed Uninstall for profile-owned packages and explains why shipped integrations use Disable instead.
|
|
61
|
+
- Codex and Claude Code bundles ship with omdsh, disabled until enabled in Integration settings; package availability and profile enablement are shown separately.
|
|
62
|
+
|
|
63
|
+
- Upgrade the published DeepSeek Harness packages to `0.2.1-alpha.2` and adapt delegation to runtime-managed activations. External executions show lifecycle state and deliver results to the parent without a local transcript. Pipe-mode exit waits for progressing children; session teardown drains descendants first.
|
|
64
|
+
- The default dark and light palettes now follow the DeepSeek brand blue and cyan from the public site instead of the inherited amber theme, and the welcome logo uses the same brand ramp.
|
|
65
|
+
- Settings → Advanced is empty in a default profile and stays hidden until a plugin exposes unclaimed fields: the shell executor's `cwd` is no longer offered, and Web provider selection plus Web search credentials moved into Integrations → Web search.
|
|
66
|
+
- Upgrade the published DeepSeek Harness packages to `0.2.1-rc.2` with the matching stable Cordis cohort. Plugin compatibility follows a declared `engines.dsh` range before DSH peers, `/plugins` reports why a change needs a restart, and the JSONL persistence backend mounts as a plugin; stored sessions keep the v4 format.
|
|
67
|
+
- Session Library browsing shows migration-required logs without opening or upgrading them. Interactive resume asks before migration; explicit line-input and CLI resume remain supported. Startup no longer migrates the entire stored corpus.
|
|
68
|
+
|
|
69
|
+
### Removed
|
|
70
|
+
|
|
71
|
+
- `/feedback`; session-level notes were write-only in the TUI, with no list, export, or delivery path. Reply feedback remains under `/rate`.
|
|
72
|
+
|
|
73
|
+
- `/workflow`; use `/plan` to enter planning and `/plan off` to leave.
|
|
74
|
+
- `/reasoning` and experimental reasoning translation; reasoning remains available in Turn history.
|
|
75
|
+
|
|
76
|
+
### Fixed
|
|
77
|
+
|
|
78
|
+
- Plugin console diagnostics no longer write into the TUI composer; the interactive terminal routes them to `$OMDSH_HOME/omdsh/logs/omdsh.log`.
|
|
79
|
+
|
|
80
|
+
- The startup welcome card no longer keeps a stale "Not connected · /login" line after signing in; first-run readiness now lives only in the live composer placeholder, which is re-read after startup and updates on credential and account changes.
|
|
81
|
+
|
|
82
|
+
- The shared DeepSeek account now appears in `/logout` and can be signed out there, instead of only from the `/login` account prompt.
|
|
83
|
+
|
|
84
|
+
- Herdr agent state reporting ignores user-initiated UI pickers, settings forms, file/diff/terminal readers and idle session rehydrations so opening or closing dialogs no longer triggers false `blocked` or `done` notifications, and advertises `resume_argv` (`omdsh --resume <id>`) for session recovery.
|
|
85
|
+
- File previews recognize invalid UTF-8 as binary and retain source syntax when viewing cached snapshot content.
|
|
86
|
+
|
|
87
|
+
- Source-reader shortcut hints omit empty separators when a document has no custom actions.
|
|
88
|
+
|
|
89
|
+
- Terminal input and close dialogs yield to background approvals, and input failures remain visible in the TUI.
|
|
90
|
+
- File shortcuts find visible tools in short expanded turns even when welcome chrome and startup notices remain above the call, instead of falling back to an unrelated workspace diff.
|
|
91
|
+
- Partial TUI preference patches no longer crash the welcome card when the initial model label is omitted. The first session frame uses its effective model and reasoning effort.
|
|
92
|
+
- Redirected output no longer activates raw terminal rendering or emits title and program-state control sequences.
|
|
93
|
+
- Settings show save and integration errors before returning to their forms, restore unsaved preferences, and keep feature switches unchanged on write failure. Unreadable Profile patches are no longer replaced as empty files.
|
|
94
|
+
- Codex and Claude Code status checks stay open in a scrollable reading page until dismissed, then return to their settings or bundle picker.
|
|
95
|
+
- Plugin installation ignores Enter while waiting, preventing accidental cancellation. Failed and cancelled attempts no longer claim enablement, and progress updates stay in one card.
|
|
96
|
+
|
|
97
|
+
## [0.20.0] - 2026-10-09
|
|
98
|
+
|
|
99
|
+
### Added
|
|
100
|
+
|
|
101
|
+
- Mermaid in replies draws complete supported diagrams with theme-aware terminal characters. Settings switches between Auto and Source; unsupported, incomplete, truncated or oversized diagrams retain Mermaid code. Copy and export keep the original Markdown.
|
|
102
|
+
- Math in replies supports terminal text layouts for fractions, roots, scripts, limits, matrices, cases and aligned equations. Settings switches between automatic formatting and LaTeX source; unsupported or oversized formulas retain their complete source.
|
|
103
|
+
- Source readers toggle wrapping with `W` and pan horizontally with `Alt+Left`/`Alt+Right`, retaining line numbers, syntax colors and reading positions across actions.
|
|
104
|
+
|
|
105
|
+
- Image preview pages for composer drafts (`Alt+M`), workspace files, deliverables and stored attachments, with Kitty/iTerm2 graphics on supported direct terminals, original-file opening and a text fallback elsewhere. PNG, JPEG, WebP and GIF previews fit the viewport without changing attachment bytes.
|
|
106
|
+
|
|
107
|
+
- `/terminal` searches retained output, navigates matching lines, and loads older history in bounded pages. Pausing freezes the reading snapshot; console actions retain position and search, and End resumes following the latest output.
|
|
108
|
+
|
|
109
|
+
- `/queue` and configurable `Alt+Q` manage individual guidance, follow-ups, and waiting submissions with live previews, text editing, deletion, and reordering. Edits retain attachments and the composer draft; tool questions take priority, and raced edits return as unsent drafts.
|
|
110
|
+
|
|
111
|
+
- Unsent composer drafts survive session switches and restarts, retaining cursor positions, folded pastes, images, and file references. Sending or clearing input removes its saved draft; question answers and queued messages stay separate.
|
|
112
|
+
|
|
113
|
+
- File and Diff source readers show line numbers, search loaded text, jump to file lines or diff hunks, retain reading positions across navigation and editor actions, and load text previews beyond 128 KiB up to 4 MiB. Markdown previews switch between source and rendered views.
|
|
114
|
+
|
|
115
|
+
- Session Tree supports searchable local labels and a marked-node view that preserves ancestor paths. Session Library archives and restores sessions without deleting their logs or attachments; archived sessions stay available through direct resume and content search.
|
|
116
|
+
|
|
117
|
+
- Long text pastes fold into editable blocks with original content retained through copying, undo, questions, and queued-message editing. Paste protection prevents embedded Enter keys from submitting recognized unmarked pastes.
|
|
118
|
+
- `Alt+S` sends text guidance to the active Turn’s next model step, keeps rejected drafts, and distinguishes guidance from next-turn follow-ups. `Alt+I` expands pasted blocks; both shortcuts are configurable.
|
|
119
|
+
- Notifications can be limited to unfocused terminals, coalesce event bursts, and prioritize requests for input and failures over completion.
|
|
120
|
+
|
|
121
|
+
- Mouse text selection works alongside transcript scrolling in folded and expanded views, with word/line selection and optional copying on release. Settings controls mouse ownership and automatic copying; Auto respects tmux mouse off.
|
|
122
|
+
- Context style in Settings selects percentage, an occupancy bar, used/window tokens, or detailed values. Context occupancy defaults to percentage only.
|
|
123
|
+
- Double Escape and `/tree` open a searchable Session Tree with forks at their conversation boundaries, current-branch markers, and responsive content previews. Enter prepares a branch from a historical Turn or continues a branch; `Alt+Enter` continues the selected node’s branch. Browsing and cancellation preserve the active conversation and draft.
|
|
124
|
+
|
|
125
|
+
- Settings includes a persistent Editor choice shared by file previews and `Ctrl+X`, with automatic detection of installed editors and compatibility with existing `$VISUAL` or `$EDITOR` preferences.
|
|
126
|
+
- Timed questions show a countdown, pause while editing or with `Ctrl+T`, and remain answerable through `/questions` after the wait ends. `Ctrl+S` skips one question; `Esc` leaves a finite timed question pending, and `Ctrl+C` interrupts. Resumed sessions retain pending questions and display late answers in the transcript.
|
|
127
|
+
- `/plugins` manages running-profile entries and bundles, with installation progress, cancellation, diagnostic logs, and explicit dependency-script approval. Configuration patches are watched; replacing installed package code still requires a restart.
|
|
128
|
+
- `/settings` includes a Plugins section for live configuration, inheritance, resetting overrides, and rejecting stale writes. Enter opens the selected plugin; Esc returns to Settings. API keys with a credential-reference field use the Harness credential store.
|
|
129
|
+
- Subagent model selection can be enabled with an exact provider/model allowlist for new sessions. It defaults off; forked delegation continues to inherit its parent route.
|
|
130
|
+
- Cordis includes the published Harness authoring Skills and permission-gated `plugin_manager` tool. `/agent` shows unavailable presets, and `/agent inspect [preset-id]` reports declarations, failures, and the composition retained by the current session.
|
|
131
|
+
|
|
132
|
+
- Interactive `/diff` reviews staged, unstaged, untracked, and retained Turn changes with per-file navigation, previews, and external opening; `Alt+V` opens the current Turn’s review.
|
|
133
|
+
- `/terminal` lists session-owned persistent shells with live output, line input, interruption, and confirmed closure. Leaving the console keeps the shell running.
|
|
134
|
+
- `/attach` stages general files in the composer; `/attachments` previews stored originals and `/files` browses the workspace and session deliverables.
|
|
135
|
+
- Agent Hub displays recent Workflow runs, recorded phases, member outcomes, and links to available child transcripts, including after resume.
|
|
136
|
+
- Settings offers opt-in Codex or Claude Code command hooks with a configurable JSON path. Hook failures and blocking decisions appear in the transcript.
|
|
137
|
+
- `/export archive [path]` writes a ZIP containing logical session logs, descendant sessions, and verified original attachments without overwriting existing files.
|
|
138
|
+
|
|
139
|
+
### Changed
|
|
140
|
+
|
|
141
|
+
- **Compatibility:** Upgrade the published DeepSeek Harness runtime to `0.2.1-alpha.1` with its matching Cordis, loader, timer, and schemastery releases. Plugin consumers must upgrade to Cordis `~4.0.5-alpha.1`. Goal cancellation withdraws queued follow-up messages so subsequent input can proceed.
|
|
142
|
+
|
|
143
|
+
- Tables that cannot fit useful columns on narrow terminals show labelled records.
|
|
144
|
+
|
|
145
|
+
- Completed Turn summaries show the configured expansion shortcut when space allows, keeping duration and failures visible at narrow widths.
|
|
146
|
+
|
|
147
|
+
- Searchable choice lists prioritize exact names and prefixes and support multiword queries and short word abbreviations. Command and project-path completion favor compact matches at word boundaries.
|
|
148
|
+
- File-edit tool previews highlight changed identifiers, punctuation, and spacing more precisely, preserve emoji and combining sequences, and retain context in large hunks with small edits.
|
|
149
|
+
- Code previews, fenced replies, and tool diff context use Prism syntax grammars with theme-aware colors, including multiline comments and strings, TSX, configuration files, and PowerShell. Diff documents color added and removed lines.
|
|
150
|
+
- The default PTC execution budget is 180 seconds, leaving time for the default 120-second question wait and its result. Taking time on a question does not pause the outer program deadline.
|
|
151
|
+
- CLI and runtime plugin operations share the profile write lock. Feature toggles apply after the running profile reloads its patch; existing sessions retain their Agent preset revision.
|
|
152
|
+
|
|
153
|
+
### Fixed
|
|
154
|
+
|
|
155
|
+
- Returning from file previews and other full-screen pages repaints the live transcript and composer, preventing stale borders and displaced input rows.
|
|
156
|
+
|
|
157
|
+
- Markdown code retains literal HTML tags, entities and emphasis characters. Incomplete formulas remain readable while streaming, and compound exponents no longer convert only their first digit.
|
|
158
|
+
|
|
159
|
+
- Herdr status follows the root Agent during session updates and subagent inspection, includes `resume_argv` for session restore, retries failed reports, and waits briefly for release on exit. User-initiated settings and command pickers no longer trigger false `blocked` / `done` status transitions or notification sounds, and background runs and smoke-test terminals no longer claim their caller's Herdr pane.
|
|
160
|
+
|
|
161
|
+
- Pasting a search term into a source reader updates matching lines immediately.
|
|
162
|
+
|
|
163
|
+
- Themes pair prompt and tool-card text with their fixed backgrounds, improve tool output, code, and hint contrast, and keep error text visible in 16-color terminals. Nested color resets preserve the surrounding card colors.
|
|
164
|
+
- Returning from transcript browsing keeps floating controls out of tmux scrollback even when `scroll-on-clear` is enabled.
|
|
165
|
+
- Clipboard copying forwards to tmux clients and remote terminals when needed, distinguishing confirmed local copies from unacknowledged terminal requests.
|
|
166
|
+
- Status line settings accurately name the telemetry toggle and context label; disabling telemetry keeps model and workspace metadata visible in the preview.
|
|
167
|
+
- Folding a completed Turn or returning from expanded tool details no longer leaves a large blank gap above the reply when the prompt has entered terminal scrollback.
|
|
168
|
+
|
|
169
|
+
- Markdown tables honor left, center, and right alignment, keep wide characters within column budgets, and isolate wrapped cell styles and hyperlinks from neighboring cells and borders. Views narrower than eight display cells retain the original Markdown table syntax.
|
|
170
|
+
- File browsing reviews sibling files, accepts uppercase document shortcuts, keeps all action buttons visible at narrow widths, and shows external-open and editor results in the preview. User-initiated file navigation no longer emits attention notifications.
|
|
171
|
+
- Wrapped code preserves indentation, repeated spaces, and syntax colors across continuation rows.
|
|
172
|
+
- Interactive `/diff` resolves listed changes from the Git repository root when launched in a subdirectory, keeping patches, previews, and external file actions on the same file.
|
|
173
|
+
- Persistent terminal tools use PowerShell on Windows and Bash on POSIX.
|
|
174
|
+
- Enabling the Ralph loop in `/settings` now persists across launches. Feature overrides support both enabling a default-off tool and disabling a default-on feature.
|
|
175
|
+
|
|
176
|
+
## [0.19.0] - 2026-10-03
|
|
177
|
+
|
|
9
178
|
### Added
|
|
10
179
|
|
|
11
180
|
- `Alt+O` toggles complete tool inputs and results for the turn being read, including running turns and PTC sub-calls. New calls in an inspected live turn inherit the setting. `Ctrl+O` or returning to the live tail resets tool details; the shortcut is configurable as `toggle-tool-details`.
|
|
@@ -460,7 +629,10 @@ The format is based on [Keep a Changelog], and this project adheres to [Semantic
|
|
|
460
629
|
- Preserved terminal-cell alignment and right padding for long commands, CJK text, emoji, ANSI styling, and narrow viewports.
|
|
461
630
|
- Stabilized incremental rendering, transcript scrolling, cursor placement, tool-output folding, and queued input during active turns.
|
|
462
631
|
|
|
463
|
-
[Unreleased]: https://github.com/agi-fans/oh-my-dsh/compare/v0.
|
|
632
|
+
[Unreleased]: https://github.com/agi-fans/oh-my-dsh/compare/v0.21.0...HEAD
|
|
633
|
+
[0.21.0]: https://github.com/agi-fans/oh-my-dsh/compare/v0.20.0...v0.21.0
|
|
634
|
+
[0.20.0]: https://github.com/agi-fans/oh-my-dsh/compare/v0.19.0...v0.20.0
|
|
635
|
+
[0.19.0]: https://github.com/agi-fans/oh-my-dsh/compare/v0.18.0...v0.19.0
|
|
464
636
|
[0.18.0]: https://github.com/agi-fans/oh-my-dsh/compare/v0.17.0...v0.18.0
|
|
465
637
|
[0.17.0]: https://github.com/agi-fans/oh-my-dsh/compare/v0.16.0...v0.17.0
|
|
466
638
|
[0.16.0]: https://github.com/agi-fans/oh-my-dsh/compare/v0.15.0...v0.16.0
|
package/lib/chrome/box.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* card and the framed editor whose top border carries its compact label.
|
|
4
4
|
* @module @agi-fans/dsh-tui
|
|
5
5
|
*/
|
|
6
|
-
import { BOX, DEEPSEEK_LOGO, SYMBOL, gradientLogo } from "./theme.js";
|
|
6
|
+
import { BOX, DEEPSEEK_LOGO, SYMBOL, gradientLogo, paintSurface } from "./theme.js";
|
|
7
7
|
import { expandTabs, padToWidth, padding, truncateToWidth, visibleWidth, wrapIndexed, wrapText, cursorOnWrapped } from "./width.js";
|
|
8
8
|
import { formatRelativeAge } from "./relative-time.js";
|
|
9
9
|
import { WELCOME_TIPS } from "./welcome-tips.js";
|
|
@@ -27,16 +27,6 @@ function bgColorFor(state) {
|
|
|
27
27
|
return 'toolSuccessBg';
|
|
28
28
|
return undefined;
|
|
29
29
|
}
|
|
30
|
-
function applyBg(line, theme, color, width) {
|
|
31
|
-
const ansi = theme.getBgAnsi(color);
|
|
32
|
-
if (ansi === '')
|
|
33
|
-
return padToWidth(line, width);
|
|
34
|
-
const padded = padToWidth(line, width);
|
|
35
|
-
const restabilized = padded
|
|
36
|
-
.replace(/\x1b\[(?:0)?m/g, (match) => match + ansi)
|
|
37
|
-
.replace(/\x1b\[49m/g, (match) => match + ansi);
|
|
38
|
-
return ansi + restabilized + '\x1b[49m';
|
|
39
|
-
}
|
|
40
30
|
function centerText(text, width) {
|
|
41
31
|
const vis = visibleWidth(text);
|
|
42
32
|
if (vis >= width)
|
|
@@ -63,7 +53,7 @@ export function renderFramedBlock(options, theme) {
|
|
|
63
53
|
const bg = options.applyBg === false ? undefined : bgColorFor(options.state);
|
|
64
54
|
const paint = (line) => {
|
|
65
55
|
const indented = inset === '' ? line : inset + line;
|
|
66
|
-
return bg ?
|
|
56
|
+
return bg ? paintSurface(theme, bg, 'toolOutput', padToWidth(indented, width)) : padToWidth(indented, width);
|
|
67
57
|
};
|
|
68
58
|
const cap = h.repeat(3);
|
|
69
59
|
const bar = (left, right, labelParts) => {
|
package/lib/chrome/box.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"box.js","sourceRoot":"","sources":["../../src/chrome/box.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"box.js","sourceRoot":"","sources":["../../src/chrome/box.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,28 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
1
|
+
/** Whole-block Prism tokenization painted with terminal theme colors before wrapping. */
|
|
2
|
+
import 'prismjs/components/prism-typescript.js';
|
|
3
|
+
import 'prismjs/components/prism-jsx.js';
|
|
4
|
+
import 'prismjs/components/prism-tsx.js';
|
|
5
|
+
import 'prismjs/components/prism-json.js';
|
|
6
|
+
import 'prismjs/components/prism-json5.js';
|
|
7
|
+
import 'prismjs/components/prism-python.js';
|
|
8
|
+
import 'prismjs/components/prism-bash.js';
|
|
9
|
+
import 'prismjs/components/prism-rust.js';
|
|
10
|
+
import 'prismjs/components/prism-go.js';
|
|
11
|
+
import 'prismjs/components/prism-java.js';
|
|
12
|
+
import 'prismjs/components/prism-c.js';
|
|
13
|
+
import 'prismjs/components/prism-cpp.js';
|
|
14
|
+
import 'prismjs/components/prism-csharp.js';
|
|
15
|
+
import 'prismjs/components/prism-powershell.js';
|
|
16
|
+
import 'prismjs/components/prism-yaml.js';
|
|
17
|
+
import 'prismjs/components/prism-toml.js';
|
|
18
|
+
import 'prismjs/components/prism-ini.js';
|
|
19
|
+
import 'prismjs/components/prism-sql.js';
|
|
20
|
+
import 'prismjs/components/prism-docker.js';
|
|
21
|
+
import 'prismjs/components/prism-makefile.js';
|
|
22
|
+
import 'prismjs/components/prism-diff.js';
|
|
23
|
+
import 'prismjs/components/prism-ruby.js';
|
|
24
|
+
import 'prismjs/components/prism-kotlin.js';
|
|
25
|
+
import 'prismjs/components/prism-swift.js';
|
|
17
26
|
import { type MarkdownStyle } from './md-style.ts';
|
|
18
27
|
import type { Theme } from './theme.ts';
|
|
19
28
|
/** Canonical id for a supported language, or `undefined` when unrecognized. */
|
|
@@ -35,8 +44,7 @@ export declare function highlightCacheSize(): number;
|
|
|
35
44
|
/** Total source characters retained across all cached entries. Intended for tests. */
|
|
36
45
|
export declare function highlightCacheTotalChars(): number;
|
|
37
46
|
/**
|
|
38
|
-
* Paint every line of a code block.
|
|
39
|
-
* literals; unsupported or empty languages paint the whole run in the block
|
|
47
|
+
* Paint every line of a code block. Unknown languages paint the whole run in the block
|
|
40
48
|
* color. Output is plain text when colors are off. Results for supported
|
|
41
49
|
* languages are cached by theme, style, language, and source (never by width).
|
|
42
50
|
* Blocks larger than the per-entry cap are highlighted but bypass the cache,
|
|
@@ -1,31 +1,50 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
1
|
+
/** Whole-block Prism tokenization painted with terminal theme colors before wrapping. */
|
|
2
|
+
import Prism from 'prismjs';
|
|
3
|
+
import 'prismjs/components/prism-typescript.js';
|
|
4
|
+
import 'prismjs/components/prism-jsx.js';
|
|
5
|
+
import 'prismjs/components/prism-tsx.js';
|
|
6
|
+
import 'prismjs/components/prism-json.js';
|
|
7
|
+
import 'prismjs/components/prism-json5.js';
|
|
8
|
+
import 'prismjs/components/prism-python.js';
|
|
9
|
+
import 'prismjs/components/prism-bash.js';
|
|
10
|
+
import 'prismjs/components/prism-rust.js';
|
|
11
|
+
import 'prismjs/components/prism-go.js';
|
|
12
|
+
import 'prismjs/components/prism-java.js';
|
|
13
|
+
import 'prismjs/components/prism-c.js';
|
|
14
|
+
import 'prismjs/components/prism-cpp.js';
|
|
15
|
+
import 'prismjs/components/prism-csharp.js';
|
|
16
|
+
import 'prismjs/components/prism-powershell.js';
|
|
17
|
+
import 'prismjs/components/prism-yaml.js';
|
|
18
|
+
import 'prismjs/components/prism-toml.js';
|
|
19
|
+
import 'prismjs/components/prism-ini.js';
|
|
20
|
+
import 'prismjs/components/prism-sql.js';
|
|
21
|
+
import 'prismjs/components/prism-docker.js';
|
|
22
|
+
import 'prismjs/components/prism-makefile.js';
|
|
23
|
+
import 'prismjs/components/prism-diff.js';
|
|
24
|
+
import 'prismjs/components/prism-ruby.js';
|
|
25
|
+
import 'prismjs/components/prism-kotlin.js';
|
|
26
|
+
import 'prismjs/components/prism-swift.js';
|
|
17
27
|
import { ink, paintBase, paintFg } from "./md-style.js";
|
|
18
|
-
/** Languages the built-in tokenizer recognizes. Aliases are accepted verbatim. */
|
|
19
|
-
const SUPPORTED_LANGS = /^(?:js|jsx|ts|tsx|javascript|typescript|json|python|py|bash|sh|shell|rust|go|java|css|html)$/u;
|
|
20
|
-
const KEYWORDS = /^(?:const|let|var|function|class|interface|type|return|if|else|for|while|async|await|import|export|from|def|fn|struct|package|func|true|false|null|undefined)$/u;
|
|
21
|
-
const LITERALS = /^(?:\d+(?:\.\d+)?|"[^"]*"|'[^']*')$/u;
|
|
22
28
|
/** True when a language token (fence info or resolved id) is highlightable. */
|
|
23
29
|
export function isSupportedLanguage(lang) {
|
|
24
|
-
return
|
|
30
|
+
return grammarFor(normalizeLanguage(lang)) !== undefined;
|
|
25
31
|
}
|
|
26
32
|
/** Lowercase and trim a fence info string or raw language token. */
|
|
27
33
|
export function normalizeLanguage(lang) {
|
|
28
|
-
|
|
34
|
+
const token = lang.trim().split(/\s+/u)[0]?.toLowerCase() ?? '';
|
|
35
|
+
return Object.hasOwn(LANGUAGE_ALIASES, token) ? LANGUAGE_ALIASES[token] ?? token : token;
|
|
36
|
+
}
|
|
37
|
+
const LANGUAGE_ALIASES = {
|
|
38
|
+
javascript: 'js', typescript: 'ts', py: 'python', sh: 'bash', shell: 'bash', zsh: 'bash',
|
|
39
|
+
yml: 'yaml', html: 'html', xml: 'html', svg: 'html', csharp: 'csharp', cs: 'csharp',
|
|
40
|
+
'c#': 'csharp', 'c++': 'cpp', pwsh: 'powershell', ps1: 'powershell', dockerfile: 'docker', patch: 'diff',
|
|
41
|
+
};
|
|
42
|
+
function grammarFor(lang) {
|
|
43
|
+
// Languages also contains utility functions; own object entries are grammars.
|
|
44
|
+
if (!Object.hasOwn(Prism.languages, lang))
|
|
45
|
+
return undefined;
|
|
46
|
+
const grammar = Prism.languages[lang];
|
|
47
|
+
return typeof grammar === 'object' ? grammar : undefined;
|
|
29
48
|
}
|
|
30
49
|
const PATH_EXTENSION = /\.([^.]+)$/u;
|
|
31
50
|
/** Map common source extensions to a canonical, supported language id. */
|
|
@@ -42,6 +61,11 @@ const EXTENSION_TO_LANG = {
|
|
|
42
61
|
java: 'java',
|
|
43
62
|
css: 'css',
|
|
44
63
|
html: 'html', htm: 'html',
|
|
64
|
+
xml: 'html', svg: 'html', vue: 'html',
|
|
65
|
+
json5: 'json5', yaml: 'yaml', yml: 'yaml', toml: 'toml', ini: 'ini',
|
|
66
|
+
c: 'c', h: 'c', cpp: 'cpp', cc: 'cpp', cxx: 'cpp', hpp: 'cpp', cs: 'csharp',
|
|
67
|
+
ps1: 'powershell', psm1: 'powershell', psd1: 'powershell', sql: 'sql',
|
|
68
|
+
rb: 'ruby', kt: 'kotlin', kts: 'kotlin', swift: 'swift', diff: 'diff', patch: 'diff',
|
|
45
69
|
};
|
|
46
70
|
/**
|
|
47
71
|
* Resolve a highlightable language from a file path, or `undefined` when the
|
|
@@ -49,27 +73,71 @@ const EXTENSION_TO_LANG = {
|
|
|
49
73
|
* tokenizer for context lines without parsing a unified diff.
|
|
50
74
|
*/
|
|
51
75
|
export function languageFromPath(path) {
|
|
76
|
+
const name = path.split(/[\\/]/u).at(-1)?.toLowerCase() ?? '';
|
|
77
|
+
if (/^(?:dockerfile|containerfile)(?:\.|$)/u.test(name))
|
|
78
|
+
return 'docker';
|
|
79
|
+
if (/^(?:makefile|gnumakefile)$/u.test(name) || name.endsWith('.mk'))
|
|
80
|
+
return 'makefile';
|
|
81
|
+
if (name === '.bashrc' || name === '.bash_profile')
|
|
82
|
+
return 'bash';
|
|
52
83
|
const match = PATH_EXTENSION.exec(path);
|
|
53
84
|
const ext = match?.[1]?.toLowerCase();
|
|
54
85
|
if (ext === undefined)
|
|
55
86
|
return undefined;
|
|
56
|
-
const lang = EXTENSION_TO_LANG[ext];
|
|
87
|
+
const lang = Object.hasOwn(EXTENSION_TO_LANG, ext) ? EXTENSION_TO_LANG[ext] : undefined;
|
|
57
88
|
return lang === undefined ? undefined : lang;
|
|
58
89
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
90
|
+
const TOKEN_COLORS = {
|
|
91
|
+
keyword: 'mdKeyword', boolean: 'mdKeyword', builtin: 'syntaxType', 'class-name': 'syntaxType',
|
|
92
|
+
comment: 'mdQuote', prolog: 'mdQuote', doctype: 'mdQuote',
|
|
93
|
+
string: 'syntaxString', char: 'syntaxString', regex: 'syntaxString', 'attr-value': 'syntaxString',
|
|
94
|
+
number: 'syntaxNumber', function: 'syntaxFunction', 'function-variable': 'syntaxFunction',
|
|
95
|
+
tag: 'mdKeyword', 'attr-name': 'syntaxType', property: 'mdCodeBlock', symbol: 'syntaxType',
|
|
96
|
+
deleted: 'toolDiffRemoved', inserted: 'toolDiffAdded', coord: 'mdLink', unchanged: 'toolDiffContext',
|
|
97
|
+
};
|
|
98
|
+
/** Split token leaves at line boundaries before painting, so SGR never bleeds between rows. */
|
|
99
|
+
function tokenizeLines(lines, grammar, theme, style) {
|
|
100
|
+
const result = [''];
|
|
101
|
+
const append = (text, color) => {
|
|
102
|
+
const pieces = text.split('\n');
|
|
103
|
+
for (let i = 0; i < pieces.length; i += 1) {
|
|
104
|
+
if (i > 0)
|
|
105
|
+
result.push('');
|
|
106
|
+
const at = result.length - 1;
|
|
107
|
+
const value = pieces[i] ?? '';
|
|
108
|
+
result[at] += color === undefined ? paintBase(theme, value, style) : paintFg(theme, ink(style, color), value, style);
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
const visit = (value, color) => {
|
|
112
|
+
if (typeof value === 'string') {
|
|
113
|
+
append(value, color);
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
if (Array.isArray(value)) {
|
|
117
|
+
for (const token of value)
|
|
118
|
+
visit(token, color);
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
const aliases = typeof value.alias === 'string' ? [value.alias] : value.alias ?? [];
|
|
122
|
+
const tokenColor = TOKEN_COLORS[value.type] ?? aliases.map(alias => TOKEN_COLORS[alias]).find(color => color !== undefined) ?? color;
|
|
123
|
+
visit(value.content, tokenColor);
|
|
124
|
+
};
|
|
125
|
+
visit(Prism.tokenize(lines.join('\n'), grammar));
|
|
126
|
+
// Preserve the batch contract even if an input row contains embedded newlines.
|
|
127
|
+
let cursor = 0;
|
|
128
|
+
return lines.map(line => {
|
|
129
|
+
const count = line.split('\n').length;
|
|
130
|
+
const painted = result.slice(cursor, cursor + count).join('\n');
|
|
131
|
+
cursor += count;
|
|
132
|
+
return painted;
|
|
133
|
+
});
|
|
68
134
|
}
|
|
69
135
|
/** Maximum cached highlight results before the oldest entry is evicted. */
|
|
70
136
|
const HIGHLIGHT_CACHE_CAP = 32;
|
|
71
137
|
/** A single block larger than this is highlighted but never cached. */
|
|
72
138
|
const HIGHLIGHT_CACHE_MAX_ENTRY_CHARS = 64 * 1024;
|
|
139
|
+
/** Bound synchronous grammar work; larger source previews retain plain text. */
|
|
140
|
+
const HIGHLIGHT_MAX_SOURCE_CHARS = 256 * 1024;
|
|
73
141
|
/** Total source characters retained across all cached entries before eviction. */
|
|
74
142
|
const HIGHLIGHT_CACHE_TOTAL_BUDGET = 512 * 1024;
|
|
75
143
|
const highlightCache = new Map();
|
|
@@ -112,8 +180,7 @@ function evictToBudget() {
|
|
|
112
180
|
}
|
|
113
181
|
}
|
|
114
182
|
/**
|
|
115
|
-
* Paint every line of a code block.
|
|
116
|
-
* literals; unsupported or empty languages paint the whole run in the block
|
|
183
|
+
* Paint every line of a code block. Unknown languages paint the whole run in the block
|
|
117
184
|
* color. Output is plain text when colors are off. Results for supported
|
|
118
185
|
* languages are cached by theme, style, language, and source (never by width).
|
|
119
186
|
* Blocks larger than the per-entry cap are highlighted but bypass the cache,
|
|
@@ -121,13 +188,13 @@ function evictToBudget() {
|
|
|
121
188
|
*/
|
|
122
189
|
export function highlightCodeLines(lines, language, theme, style) {
|
|
123
190
|
const lang = normalizeLanguage(language);
|
|
124
|
-
|
|
191
|
+
const grammar = grammarFor(lang);
|
|
192
|
+
if (!theme.colors || grammar === undefined) {
|
|
125
193
|
return lines.map(line => paintFg(theme, ink(style, 'mdCodeBlock'), line, style));
|
|
126
194
|
}
|
|
127
195
|
const source = lines.join('\n');
|
|
128
|
-
if (source.length >
|
|
129
|
-
return lines.map(line =>
|
|
130
|
-
}
|
|
196
|
+
if (source.length > HIGHLIGHT_MAX_SOURCE_CHARS)
|
|
197
|
+
return lines.map(line => paintFg(theme, ink(style, 'mdCodeBlock'), line, style));
|
|
131
198
|
const key = cacheKey(theme, style, lang, source);
|
|
132
199
|
const cached = highlightCache.get(key);
|
|
133
200
|
if (cached !== undefined) {
|
|
@@ -136,7 +203,15 @@ export function highlightCodeLines(lines, language, theme, style) {
|
|
|
136
203
|
highlightCache.set(key, cached);
|
|
137
204
|
return [...cached.result];
|
|
138
205
|
}
|
|
139
|
-
|
|
206
|
+
let result;
|
|
207
|
+
try {
|
|
208
|
+
result = tokenizeLines(lines, grammar, theme, style);
|
|
209
|
+
}
|
|
210
|
+
catch {
|
|
211
|
+
return lines.map(line => paintFg(theme, ink(style, 'mdCodeBlock'), line, style));
|
|
212
|
+
}
|
|
213
|
+
if (source.length > HIGHLIGHT_CACHE_MAX_ENTRY_CHARS)
|
|
214
|
+
return result;
|
|
140
215
|
const entry = { result, sourceChars: source.length };
|
|
141
216
|
highlightCache.set(key, entry);
|
|
142
217
|
cacheTotalChars += entry.sourceChars;
|