@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-highlight.js","sourceRoot":"","sources":["../../src/chrome/code-highlight.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"code-highlight.js","sourceRoot":"","sources":["../../src/chrome/code-highlight.ts"],"names":[],"mappings":"AAAA,yFAAyF;AAEzF,OAAO,KAAK,MAAM,SAAS,CAAA;AAC3B,OAAO,wCAAwC,CAAA;AAC/C,OAAO,iCAAiC,CAAA;AACxC,OAAO,iCAAiC,CAAA;AACxC,OAAO,kCAAkC,CAAA;AACzC,OAAO,mCAAmC,CAAA;AAC1C,OAAO,oCAAoC,CAAA;AAC3C,OAAO,kCAAkC,CAAA;AACzC,OAAO,kCAAkC,CAAA;AACzC,OAAO,gCAAgC,CAAA;AACvC,OAAO,kCAAkC,CAAA;AACzC,OAAO,+BAA+B,CAAA;AACtC,OAAO,iCAAiC,CAAA;AACxC,OAAO,oCAAoC,CAAA;AAC3C,OAAO,wCAAwC,CAAA;AAC/C,OAAO,kCAAkC,CAAA;AACzC,OAAO,kCAAkC,CAAA;AACzC,OAAO,iCAAiC,CAAA;AACxC,OAAO,iCAAiC,CAAA;AACxC,OAAO,oCAAoC,CAAA;AAC3C,OAAO,sCAAsC,CAAA;AAC7C,OAAO,kCAAkC,CAAA;AACzC,OAAO,kCAAkC,CAAA;AACzC,OAAO,oCAAoC,CAAA;AAC3C,OAAO,mCAAmC,CAAA;AAC1C,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAsB,MAAM,eAAe,CAAA;AAM3E,+EAA+E;AAC/E,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,KAAK,SAAS,CAAA;AAC1D,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;IAC/D,OAAO,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAA;AAC1F,CAAC;AAED,MAAM,gBAAgB,GAAqC;IACzD,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IACxF,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ;IACnF,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM;CACzG,CAAA;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,8EAA8E;IAC9E,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC;QAAE,OAAO,SAAS,CAAA;IAC3D,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IACrC,OAAO,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAwB,CAAC,CAAC,CAAC,SAAS,CAAA;AAC3E,CAAC;AAED,MAAM,cAAc,GAAG,aAAa,CAAA;AAEpC,0EAA0E;AAC1E,MAAM,iBAAiB,GAAyC;IAC9D,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI;IAC9B,GAAG,EAAE,KAAK;IACV,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI;IAC9B,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ;IAC3B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IACxB,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,IAAI;IACR,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IACzB,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IACrC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK;IACnE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ;IAC3E,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,KAAK;IACrE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CACrF,CAAA;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;IAC7D,IAAI,wCAAwC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAA;IACxE,IAAI,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,UAAU,CAAA;IACvF,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,eAAe;QAAE,OAAO,MAAM,CAAA;IACjE,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACvC,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAA;IACrC,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACvC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACvF,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAA;AAC9C,CAAC;AAED,MAAM,YAAY,GAAyC;IACzD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY;IAC7F,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS;IACzD,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc;IACjG,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB;IACzF,GAAG,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY;IAC1F,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB;CACrG,CAAA;AAED,+FAA+F;AAC/F,SAAS,aAAa,CAAC,KAAwB,EAAE,OAAsB,EAAE,KAAY,EAAE,KAAqB;IAC1G,MAAM,MAAM,GAAG,CAAC,EAAE,CAAC,CAAA;IACnB,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,KAA6B,EAAQ,EAAE;QACnE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,GAAG,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA;YAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;YAC7B,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;QACtH,CAAC;IACH,CAAC,CAAA;IACD,MAAM,KAAK,GAAG,CAAC,KAAsD,EAAE,KAAkB,EAAQ,EAAE;QACjG,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAAC,OAAM;QAAC,CAAC;QAC/D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAAC,KAAK,MAAM,KAAK,IAAI,KAAK;gBAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAAC,OAAM;QAAC,CAAC;QACpF,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAA;QACnF,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,IAAI,KAAK,CAAA;QACpI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;IAClC,CAAC,CAAA;IACD,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAA;IAChD,+EAA+E;IAC/E,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAA;QACrC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC/D,MAAM,IAAI,KAAK,CAAA;QACf,OAAO,OAAO,CAAA;IAChB,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,2EAA2E;AAC3E,MAAM,mBAAmB,GAAG,EAAE,CAAA;AAE9B,uEAAuE;AACvE,MAAM,+BAA+B,GAAG,EAAE,GAAG,IAAI,CAAA;AAEjD,gFAAgF;AAChF,MAAM,0BAA0B,GAAG,GAAG,GAAG,IAAI,CAAA;AAE7C,kFAAkF;AAClF,MAAM,4BAA4B,GAAG,GAAG,GAAG,IAAI,CAAA;AAO/C,MAAM,cAAc,GAAG,IAAI,GAAG,EAAsB,CAAA;AAEpD,IAAI,eAAe,GAAG,CAAC,CAAA;AAEvB,8EAA8E;AAC9E,MAAM,UAAU,mBAAmB;IACjC,cAAc,CAAC,KAAK,EAAE,CAAA;IACtB,eAAe,GAAG,CAAC,CAAA;AACrB,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,kBAAkB;IAChC,OAAO,cAAc,CAAC,IAAI,CAAA;AAC5B,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,wBAAwB;IACtC,OAAO,eAAe,CAAA;AACxB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAY;IACpC,OAAO,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;AAC3E,CAAC;AAED,SAAS,QAAQ,CAAC,KAAgC;IAChD,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;AACtF,CAAC;AAED,SAAS,QAAQ,CAAC,KAAY,EAAE,KAAgC,EAAE,IAAY,EAAE,MAAc;IAC5F,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,MAAM,EAAE,CAAA;AAC7E,CAAC;AAED,0EAA0E;AAC1E,SAAS,aAAa;IACpB,OAAO,eAAe,GAAG,4BAA4B,IAAI,cAAc,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACjF,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;QAC3C,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC9C,IAAI,KAAK,KAAK,SAAS;gBAAE,eAAe,IAAI,KAAK,CAAC,WAAW,CAAA;YAC7D,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACrC,CAAC;aAAM,CAAC;YACN,MAAK;QACP,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAwB,EACxB,QAAgB,EAChB,KAAY,EACZ,KAAqB;IAErB,MAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IACxC,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;IAChC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;IAClF,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC/B,IAAI,MAAM,CAAC,MAAM,GAAG,0BAA0B;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;IAChI,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IAChD,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACtC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,yDAAyD;QACzD,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAC1B,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QAC/B,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;IAC3B,CAAC;IACD,IAAI,MAAgB,CAAA;IACpB,IAAI,CAAC;QAAC,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;IAAC,CAAC;IAC5D,MAAM,CAAC;QAAC,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;IAAC,CAAC;IAC1F,IAAI,MAAM,CAAC,MAAM,GAAG,+BAA+B;QAAE,OAAO,MAAM,CAAA;IAClE,MAAM,KAAK,GAAe,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,CAAA;IAChE,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAC9B,eAAe,IAAI,KAAK,CAAC,WAAW,CAAA;IACpC,aAAa,EAAE,CAAA;IACf,IAAI,cAAc,CAAC,IAAI,GAAG,mBAAmB,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;QAC3C,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAChD,IAAI,OAAO,KAAK,SAAS;gBAAE,eAAe,IAAI,OAAO,CAAC,WAAW,CAAA;YACjE,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACrC,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Align Harness FileDiff hunks and paint them as a terminal edit card.
|
|
3
|
-
* Line
|
|
3
|
+
* Line alignment recovers context that the presenter stores on both sides; a 1:1
|
|
4
4
|
* replacement also marks changed tokens with inverse video.
|
|
5
5
|
*/
|
|
6
6
|
import type { FileDiff } from '@deepseek-ai/dsh-tools';
|
|
@@ -34,7 +34,6 @@ export declare function formatDiffStats(added: number, removed: number): string
|
|
|
34
34
|
export declare function formatDiffRow(row: DiffRow): string;
|
|
35
35
|
export declare function formatDiffRows(rows: readonly DiffRow[]): string[];
|
|
36
36
|
/** Color a already-prefixed plain diff line (`- `, `+ `, ` `, path, or gap). */
|
|
37
|
-
export declare function paintPrefixedDiffLine(line: string, theme: Theme): string;
|
|
38
37
|
export declare function paintDiffRow(row: DiffRow, theme: Theme): string;
|
|
39
38
|
export declare function paintDiffStats(added: number, removed: number, theme: Theme): string;
|
|
40
39
|
/** Paint, expand tabs, wrap to the framed-body width, and close inverse and foreground per row. */
|
|
@@ -1,25 +1,37 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Align Harness FileDiff hunks and paint them as a terminal edit card.
|
|
3
|
-
* Line
|
|
3
|
+
* Line alignment recovers context that the presenter stores on both sides; a 1:1
|
|
4
4
|
* replacement also marks changed tokens with inverse video.
|
|
5
5
|
*/
|
|
6
|
+
import { diffArrays } from 'diff';
|
|
6
7
|
import { highlightCodeLines, languageFromPath } from "./code-highlight.js";
|
|
7
|
-
import { expandTabs,
|
|
8
|
-
/**
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
* 3 000 tokens, and the running tool card re-renders on every spinner frame.
|
|
15
|
-
* Past this ceiling the row keeps its added/removed marking and loses only the
|
|
16
|
-
* intra-line highlighting.
|
|
17
|
-
*/
|
|
18
|
-
const TOKEN_ALIGN_LIMIT = 400;
|
|
8
|
+
import { expandTabs, wrapCode } from "./width.js";
|
|
9
|
+
/** Bound work by edit distance so large, mostly unchanged hunks still align. */
|
|
10
|
+
const MAX_LINE_EDITS = 400;
|
|
11
|
+
const ALIGN_LINE_LIMIT = 10_000;
|
|
12
|
+
/** Minified or extensively rewritten lines keep their red/green row marking. */
|
|
13
|
+
const INTRA_LINE_CHAR_LIMIT = 8_192;
|
|
14
|
+
const MAX_WORD_EDITS = 200;
|
|
19
15
|
/** Inverse-off after each wrapped visual row so frame padding cannot inherit it. */
|
|
20
16
|
const INVERSE_OFF = '\x1b[27m';
|
|
21
17
|
/** Foreground-off after each wrapped visual row so syntax colors cannot leak into borders. */
|
|
22
18
|
const FG_RESET = '\x1b[39m';
|
|
19
|
+
const diffSegmenter = new Intl.Segmenter(undefined, { granularity: 'grapheme' });
|
|
20
|
+
/** Keep identifiers and spacing intact, with punctuation as separate tokens.
|
|
21
|
+
* Emoji and combining sequences must not acquire ANSI inside one grapheme. */
|
|
22
|
+
function wordTokens(text) {
|
|
23
|
+
const tokens = [];
|
|
24
|
+
let previousKind = '';
|
|
25
|
+
for (const { segment } of diffSegmenter.segment(text)) {
|
|
26
|
+
const kind = /^[\p{L}\p{M}\p{N}_]+$/u.test(segment) ? 'word' : /^\s+$/u.test(segment) ? 'space' : 'punctuation';
|
|
27
|
+
if (kind !== 'punctuation' && previousKind === kind)
|
|
28
|
+
tokens[tokens.length - 1] += segment;
|
|
29
|
+
else
|
|
30
|
+
tokens.push(segment);
|
|
31
|
+
previousKind = kind;
|
|
32
|
+
}
|
|
33
|
+
return tokens;
|
|
34
|
+
}
|
|
23
35
|
function plainRow(kind, text) {
|
|
24
36
|
return { kind, tokens: [{ text }] };
|
|
25
37
|
}
|
|
@@ -39,81 +51,26 @@ export function contentLines(text) {
|
|
|
39
51
|
export function rowText(row) {
|
|
40
52
|
return row.tokens.map(token => token.text).join('');
|
|
41
53
|
}
|
|
42
|
-
/**
|
|
43
|
-
* Longest common subsequence walk. Equal remaining scores prefer a deletion so
|
|
44
|
-
* replacements emit as a deleted run followed by an added run.
|
|
45
|
-
*/
|
|
46
|
-
function alignSequences(oldItems, newItems) {
|
|
47
|
-
const oldCount = oldItems.length;
|
|
48
|
-
const newCount = newItems.length;
|
|
49
|
-
const table = Array.from({ length: oldCount + 1 }, () => new Uint16Array(newCount + 1));
|
|
50
|
-
for (let oldIndex = oldCount - 1; oldIndex >= 0; oldIndex -= 1) {
|
|
51
|
-
const oldRow = table[oldIndex];
|
|
52
|
-
const nextRow = table[oldIndex + 1];
|
|
53
|
-
if (oldRow === undefined || nextRow === undefined)
|
|
54
|
-
continue;
|
|
55
|
-
for (let newIndex = newCount - 1; newIndex >= 0; newIndex -= 1) {
|
|
56
|
-
oldRow[newIndex] = oldItems[oldIndex] === newItems[newIndex]
|
|
57
|
-
? (nextRow[newIndex + 1] ?? 0) + 1
|
|
58
|
-
: Math.max(nextRow[newIndex] ?? 0, oldRow[newIndex + 1] ?? 0);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
const rows = [];
|
|
62
|
-
let oldIndex = 0;
|
|
63
|
-
let newIndex = 0;
|
|
64
|
-
while (oldIndex < oldCount && newIndex < newCount) {
|
|
65
|
-
if (oldItems[oldIndex] === newItems[newIndex]) {
|
|
66
|
-
rows.push({ kind: 'ctx', text: oldItems[oldIndex] ?? '' });
|
|
67
|
-
oldIndex += 1;
|
|
68
|
-
newIndex += 1;
|
|
69
|
-
continue;
|
|
70
|
-
}
|
|
71
|
-
const down = table[oldIndex + 1]?.[newIndex] ?? 0;
|
|
72
|
-
const right = table[oldIndex]?.[newIndex + 1] ?? 0;
|
|
73
|
-
if (down >= right) {
|
|
74
|
-
rows.push({ kind: 'del', text: oldItems[oldIndex] ?? '' });
|
|
75
|
-
oldIndex += 1;
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
rows.push({ kind: 'add', text: newItems[newIndex] ?? '' });
|
|
79
|
-
newIndex += 1;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
while (oldIndex < oldCount) {
|
|
83
|
-
rows.push({ kind: 'del', text: oldItems[oldIndex] ?? '' });
|
|
84
|
-
oldIndex += 1;
|
|
85
|
-
}
|
|
86
|
-
while (newIndex < newCount) {
|
|
87
|
-
rows.push({ kind: 'add', text: newItems[newIndex] ?? '' });
|
|
88
|
-
newIndex += 1;
|
|
89
|
-
}
|
|
90
|
-
return rows;
|
|
91
|
-
}
|
|
92
|
-
function tokenize(text) {
|
|
93
|
-
return text.split(/(\s+)/u).filter(part => part !== '');
|
|
94
|
-
}
|
|
95
54
|
function highlightPair(oldText, newText) {
|
|
96
|
-
|
|
97
|
-
const newTokens = tokenize(newText);
|
|
98
|
-
if (oldTokens.length === 0 && newTokens.length === 0) {
|
|
55
|
+
if (oldText.length > INTRA_LINE_CHAR_LIMIT || newText.length > INTRA_LINE_CHAR_LIMIT) {
|
|
99
56
|
return { removed: plainRow('del', oldText), added: plainRow('add', newText) };
|
|
100
57
|
}
|
|
101
|
-
|
|
58
|
+
const aligned = diffArrays(wordTokens(oldText), wordTokens(newText), { maxEditLength: MAX_WORD_EDITS });
|
|
59
|
+
if (aligned === undefined)
|
|
102
60
|
return { removed: plainRow('del', oldText), added: plainRow('add', newText) };
|
|
103
|
-
}
|
|
104
|
-
const aligned = alignSequences(oldTokens, newTokens);
|
|
105
61
|
const removed = [];
|
|
106
62
|
const added = [];
|
|
107
63
|
for (const part of aligned) {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
64
|
+
const text = part.value.join('');
|
|
65
|
+
if (part.removed) {
|
|
66
|
+
removed.push({ text, changed: true });
|
|
111
67
|
}
|
|
112
|
-
else if (part.
|
|
113
|
-
|
|
68
|
+
else if (part.added) {
|
|
69
|
+
added.push({ text, changed: true });
|
|
114
70
|
}
|
|
115
71
|
else {
|
|
116
|
-
|
|
72
|
+
removed.push({ text });
|
|
73
|
+
added.push({ text });
|
|
117
74
|
}
|
|
118
75
|
}
|
|
119
76
|
return {
|
|
@@ -161,13 +118,16 @@ function alignHunk(oldText, newText, language) {
|
|
|
161
118
|
return contentLines(newText).map(line => plainRow('add', line));
|
|
162
119
|
const oldLines = contentLines(oldText);
|
|
163
120
|
const newLines = contentLines(newText);
|
|
164
|
-
|
|
121
|
+
const changes = oldLines.length > ALIGN_LINE_LIMIT || newLines.length > ALIGN_LINE_LIMIT
|
|
122
|
+
? undefined
|
|
123
|
+
: diffArrays(oldLines, newLines, { maxEditLength: MAX_LINE_EDITS });
|
|
124
|
+
if (changes === undefined) {
|
|
165
125
|
return [
|
|
166
126
|
...oldLines.map(line => plainRow('del', line)),
|
|
167
127
|
...newLines.map(line => plainRow('add', line)),
|
|
168
128
|
];
|
|
169
129
|
}
|
|
170
|
-
const aligned =
|
|
130
|
+
const aligned = changes.flatMap(part => part.value.map(text => part.removed ? plainRow('del', text) : part.added ? plainRow('add', text) : ctxRow(text, language)));
|
|
171
131
|
return applyIntraLine(aligned);
|
|
172
132
|
}
|
|
173
133
|
/** Align every hunk, inserting a path header or a same-file gap. */
|
|
@@ -247,15 +207,6 @@ function paintTokens(tokens, theme) {
|
|
|
247
207
|
return out;
|
|
248
208
|
}
|
|
249
209
|
/** Color a already-prefixed plain diff line (`- `, `+ `, ` `, path, or gap). */
|
|
250
|
-
export function paintPrefixedDiffLine(line, theme) {
|
|
251
|
-
if (line.startsWith('- '))
|
|
252
|
-
return theme.fg('toolDiffRemoved', line);
|
|
253
|
-
if (line.startsWith('+ '))
|
|
254
|
-
return theme.fg('toolDiffAdded', line);
|
|
255
|
-
if (line.startsWith(' '))
|
|
256
|
-
return theme.fg('toolDiffContext', line);
|
|
257
|
-
return theme.fg('dim', line);
|
|
258
|
-
}
|
|
259
210
|
export function paintDiffRow(row, theme) {
|
|
260
211
|
const body = paintTokens(row.tokens, theme);
|
|
261
212
|
switch (row.kind) {
|
|
@@ -341,7 +292,7 @@ export function wrapPaintedDiffRows(rows, theme, width) {
|
|
|
341
292
|
const ctxBody = ctxBodies.get(i);
|
|
342
293
|
const painted = ctxBody === undefined ? paintDiffRow(row, theme) : paintContextRow(ctxBody, theme);
|
|
343
294
|
const expanded = expandTabs(painted, 8, 2);
|
|
344
|
-
for (const segment of
|
|
295
|
+
for (const segment of wrapCode(expanded, inner)) {
|
|
345
296
|
lines.push(theme.colors ? segment + INVERSE_OFF + FG_RESET : segment);
|
|
346
297
|
}
|
|
347
298
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff-render.js","sourceRoot":"","sources":["../../src/chrome/diff-render.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"diff-render.js","sourceRoot":"","sources":["../../src/chrome/diff-render.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Main-screen renderer.
|
|
3
|
-
*
|
|
4
|
-
* The terminal owns native scrollback. This renderer owns only the current
|
|
5
|
-
* screen and a logical boundary for rows already frozen above it. Routine
|
|
6
|
-
* updates treat native history as append-only, and so does a transcript epoch:
|
|
7
|
-
* replacing the document replays the new frame into a fresh index space and
|
|
8
|
-
* leaves the earlier output above, where the terminal keeps it.
|
|
9
|
-
*
|
|
10
|
-
* Finalized rows cross the boundary by being painted at the top of the screen
|
|
11
|
-
* immediately before a newline scrolls them into history. Pending rows remain
|
|
12
|
-
* in the mutable screen tail. A terminal height change is the one exception:
|
|
13
|
-
* the terminal itself can move visible rows across the scrollback boundary, so
|
|
14
|
-
* the renderer adopts that new physical boundary instead of emitting the rows
|
|
15
|
-
* again.
|
|
16
|
-
*
|
|
17
|
-
* reset() repairs the visible screen without replaying history. A logical
|
|
18
|
-
* conversation replacement must call startEpoch() so the replacement frame is
|
|
19
|
-
* laid out from a clean index space rather than diffed against rows that
|
|
20
|
-
* described a different document.
|
|
21
|
-
*
|
|
22
|
-
* Nothing here erases native scrollback. It holds the reader's shell output
|
|
23
|
-
* from before this process started, and a routine replacement has no business
|
|
24
|
-
* destroying it; the seam between the two documents is content, and the
|
|
25
|
-
* transcript renders it.
|
|
26
|
-
*
|
|
27
|
-
* The terminal provider owns input modes, including mouse tracking; the
|
|
28
|
-
* renderer wraps every paint in one DEC 2026 synchronized write.
|
|
29
|
-
* @module @agi-fans/dsh-tui
|
|
30
|
-
*/
|
|
31
1
|
import { type Frame, type RenderSink } from './renderer.ts';
|
|
32
2
|
export interface MainScreenRendererOptions {
|
|
33
3
|
/** Terminal height in rows. */
|
|
@@ -100,6 +70,10 @@ export declare class MainScreenRenderer {
|
|
|
100
70
|
startEpoch(options?: EpochOptions): void;
|
|
101
71
|
/** Put the cursor below the UI before terminal ownership is released. */
|
|
102
72
|
finish(): void;
|
|
103
|
-
/**
|
|
104
|
-
|
|
73
|
+
/** Canonical physical rows, including viewport-only prompt headers. */
|
|
74
|
+
viewport(): readonly string[];
|
|
75
|
+
/** Physical transcript rows only; chrome, sticky labels and alternate overlays have no source. */
|
|
76
|
+
documentRowAt(row: number): number | undefined;
|
|
77
|
+
/** Render canonical content, then decorate the viewport without changing history. */
|
|
78
|
+
render(frame: Frame, decorate?: (rows: readonly string[]) => readonly string[]): void;
|
|
105
79
|
}
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
* renderer wraps every paint in one DEC 2026 synchronized write.
|
|
29
29
|
* @module @agi-fans/dsh-tui
|
|
30
30
|
*/
|
|
31
|
+
import { deleteImage, imageSequence } from "./terminal-images.js";
|
|
31
32
|
import { sanitizeDisplayLine } from "./renderer.js";
|
|
32
33
|
import { visibleWidth } from "./width.js";
|
|
33
34
|
const DISABLE_AUTOWRAP = '\x1b[?7l';
|
|
@@ -175,6 +176,9 @@ export function mapBlockSpan(input) {
|
|
|
175
176
|
export class MainScreenRenderer {
|
|
176
177
|
#sink;
|
|
177
178
|
#synchronized;
|
|
179
|
+
#image;
|
|
180
|
+
#imageId = Math.floor(Math.random() * 0x7ffffffe) + 1;
|
|
181
|
+
#imageChanged = false;
|
|
178
182
|
#alternateScreenOverlays;
|
|
179
183
|
#width;
|
|
180
184
|
#height;
|
|
@@ -215,6 +219,7 @@ export class MainScreenRenderer {
|
|
|
215
219
|
*/
|
|
216
220
|
/** Exact visible rows expected on the physical screen. */
|
|
217
221
|
#screen;
|
|
222
|
+
#decoratedRows;
|
|
218
223
|
#transient = false;
|
|
219
224
|
#altActive = false;
|
|
220
225
|
#altScreen;
|
|
@@ -391,7 +396,10 @@ export class MainScreenRenderer {
|
|
|
391
396
|
/** Put the cursor below the UI before terminal ownership is released. */
|
|
392
397
|
finish() {
|
|
393
398
|
const targetRow = Math.max(0, this.#height - 1);
|
|
394
|
-
let out = '';
|
|
399
|
+
let out = this.#image?.protocol === 'kitty' ? deleteImage(this.#imageId) : '';
|
|
400
|
+
this.#image = undefined;
|
|
401
|
+
out += this.#decoratedRows === undefined ? '' : this.#paintDiff(this.#screen, this.#decoratedRows);
|
|
402
|
+
this.#decoratedRows = undefined;
|
|
395
403
|
if (this.#altActive) {
|
|
396
404
|
out += EXIT_ALT_SCREEN;
|
|
397
405
|
this.#altActive = false;
|
|
@@ -406,14 +414,36 @@ export class MainScreenRenderer {
|
|
|
406
414
|
this.#cursorCol = 0;
|
|
407
415
|
this.#cursorVisible = true;
|
|
408
416
|
}
|
|
409
|
-
/**
|
|
410
|
-
|
|
417
|
+
/** Canonical physical rows, including viewport-only prompt headers. */
|
|
418
|
+
viewport() { return [...(this.#altActive ? this.#altScreen : this.#screen)]; }
|
|
419
|
+
/** Physical transcript rows only; chrome, sticky labels and alternate overlays have no source. */
|
|
420
|
+
documentRowAt(row) {
|
|
421
|
+
return this.#altActive || !this.#screenSourceKnown || this.#screenSource === null || !Number.isInteger(row) || row < 0
|
|
422
|
+
? undefined : this.#screenRowSource[row];
|
|
423
|
+
}
|
|
424
|
+
/** Render canonical content, then decorate the viewport without changing history. */
|
|
425
|
+
render(frame, decorate) {
|
|
426
|
+
// Remove the previous selection before any canonical rows can cross into history.
|
|
427
|
+
// A resize invalidates its physical coordinates; repaint the new viewport instead.
|
|
428
|
+
const hadDecoration = this.#decoratedRows !== undefined;
|
|
429
|
+
const resizedDecoration = hadDecoration && this.#resize !== undefined;
|
|
430
|
+
const undecorate = hadDecoration && !resizedDecoration
|
|
431
|
+
? this.#paintDiff(this.#screen, this.#decoratedRows) : '';
|
|
432
|
+
this.#decoratedRows = undefined;
|
|
411
433
|
// The event slot is per-frame. A frame that prepares no move must not inherit the last
|
|
412
434
|
// one's record: the confirmation steps are written against "the move this frame made",
|
|
413
435
|
// and a leftover slot would let them check against rows a previous frame moved. A move
|
|
414
436
|
// that still needs confirming lives in the pending queue, which is what the retry reads —
|
|
415
437
|
// that lifecycle is explicit and not a side effect of this field.
|
|
416
438
|
this.#pendingEvent = undefined;
|
|
439
|
+
const graphic = frame.transientSurface === 'scroll' || (frame.liveStart ?? 0) !== 0 ? undefined : frame.image;
|
|
440
|
+
const oldGraphic = this.#image;
|
|
441
|
+
this.#imageChanged = oldGraphic?.image !== graphic?.image || oldGraphic?.protocol !== graphic?.protocol
|
|
442
|
+
|| oldGraphic?.row !== graphic?.row || oldGraphic?.column !== graphic?.column
|
|
443
|
+
|| oldGraphic?.columns !== graphic?.columns || oldGraphic?.rows !== graphic?.rows || this.#resize !== undefined
|
|
444
|
+
|| (graphic !== undefined && (this.#reanchor || !this.#altActive));
|
|
445
|
+
const removeGraphic = this.#imageChanged && oldGraphic?.protocol === 'kitty' ? deleteImage(this.#imageId) : '';
|
|
446
|
+
this.#image = graphic;
|
|
417
447
|
const next = frame.lines.map(line => sanitizeDisplayLine(String(line)));
|
|
418
448
|
const liveStart = Math.max(0, Math.min(frame.liveStart ?? 0, next.length));
|
|
419
449
|
const livePinned = frame.livePinned !== false;
|
|
@@ -440,7 +470,7 @@ export class MainScreenRenderer {
|
|
|
440
470
|
// one that painted this one. An alternate frame may still apply a normal resize event;
|
|
441
471
|
// what it must not do is confirm main-screen sources from overlay text.
|
|
442
472
|
const drawsAlternate = liveStart === 0
|
|
443
|
-
&& this.#alternateScreenOverlays
|
|
473
|
+
&& (this.#alternateScreenOverlays || graphic !== undefined)
|
|
444
474
|
&& frame.transientSurface !== 'scroll';
|
|
445
475
|
// Fixed and applied once, after the target buffer is known and before the queue is read, so
|
|
446
476
|
// this frame's own move is part of its own comparison. The draw paths receive the result
|
|
@@ -578,7 +608,16 @@ export class MainScreenRenderer {
|
|
|
578
608
|
this.#exitOwnedByCaller = false;
|
|
579
609
|
// One packaging for the whole frame: the reverse prefix and the body are wrapped together
|
|
580
610
|
// rather than the body being wrapped on its own and the prefix left outside it.
|
|
581
|
-
const
|
|
611
|
+
const viewport = this.#altActive ? this.#altScreen : this.#screen;
|
|
612
|
+
const decorated = decorate?.(viewport) ?? viewport;
|
|
613
|
+
const decoration = this.#paintDiff(decorated, viewport);
|
|
614
|
+
if (decoration !== '')
|
|
615
|
+
this.#decoratedRows = decorated;
|
|
616
|
+
const repaint = resizedDecoration ? this.#writeRun(viewport, 0, this.#height - 1) : '';
|
|
617
|
+
const restoreCursor = undecorate !== '' || decoration !== '' || repaint !== ''
|
|
618
|
+
? csi(this.#cursorRow, this.#cursorCol) : '';
|
|
619
|
+
const graphics = graphic !== undefined && this.#imageChanged ? imageSequence(graphic, this.#imageId) + csi(this.#cursorRow, this.#cursorCol) : '';
|
|
620
|
+
const frameBytes = removeGraphic + undecorate + restoreBytes + paint + repaint + decoration + restoreCursor + graphics;
|
|
582
621
|
if (frameBytes !== '')
|
|
583
622
|
this.#sink.write(this.#wrap(frameBytes));
|
|
584
623
|
}
|
|
@@ -591,10 +630,10 @@ export class MainScreenRenderer {
|
|
|
591
630
|
// Browsing history is not an overlay: the alternate buffer would hide the
|
|
592
631
|
// terminal's own scrollback, which is exactly what the user is scrolling
|
|
593
632
|
// through, so a scroll frame repaints the main screen instead.
|
|
594
|
-
if (this.#alternateScreenOverlays && surface !== 'scroll') {
|
|
633
|
+
if ((this.#alternateScreenOverlays || frame.image !== undefined) && surface !== 'scroll') {
|
|
595
634
|
// A transition present here is the overlay's own: the main screen's is parked
|
|
596
635
|
// on `#mainResizeRecord`, so a restore never re-arms this clear.
|
|
597
|
-
const clear = !this.#altActive || transitionForAlt !== undefined;
|
|
636
|
+
const clear = !this.#altActive || transitionForAlt !== undefined || this.#imageChanged;
|
|
598
637
|
let body = this.#altActive ? '' : ENTER_ALT_SCREEN;
|
|
599
638
|
body += this.#paintScreen(target.rows, clear ? this.#blankScreen() : this.#altScreen, clear);
|
|
600
639
|
const targetRow = this.#screenRow(cursor.row, target, next.length);
|
|
@@ -720,13 +759,18 @@ export class MainScreenRenderer {
|
|
|
720
759
|
}
|
|
721
760
|
#paintFollow(next, liveStart, livePinned, cursor, cursorVisible, frame) {
|
|
722
761
|
const transcript = frame.transcript;
|
|
723
|
-
const
|
|
724
|
-
|
|
762
|
+
const leavingAlt = this.#altActive;
|
|
763
|
+
const exitAlt = leavingAlt && !this.#exitOwnedByCaller ? EXIT_ALT_SCREEN : '';
|
|
764
|
+
if (leavingAlt) {
|
|
725
765
|
this.#altActive = false;
|
|
726
766
|
this.#altScreen = this.#blankScreen();
|
|
727
767
|
}
|
|
728
768
|
const viewStart = Math.max(0, next.length - this.#height);
|
|
729
769
|
const candidatePhysical = livePinned ? Math.min(liveStart, viewStart) : viewStart;
|
|
770
|
+
// A fold can start exactly at the frozen boundary: its unchanged prefix
|
|
771
|
+
// remains in history, but now fits in the live viewport again.
|
|
772
|
+
const reshaped = this.#reflowFrom !== undefined && (this.#reflowFrom < this.#physical
|
|
773
|
+
|| (this.#reflowFrom === this.#physical && candidatePhysical < this.#physical));
|
|
730
774
|
let effectiveStart = viewStart;
|
|
731
775
|
let target = this.#target(next, effectiveStart, 'bottom');
|
|
732
776
|
let body = '';
|
|
@@ -768,7 +812,6 @@ export class MainScreenRenderer {
|
|
|
768
812
|
// shape against itself and skip the rows between the stale boundary and
|
|
769
813
|
// the real one — rows that had never been shown and never committed.
|
|
770
814
|
// So the mapping happens here, and this frame counts as the reflow.
|
|
771
|
-
const reshaped = this.#reflowFrom !== undefined && this.#reflowFrom < this.#physical;
|
|
772
815
|
// The move's physical effect on history happens **once**, before the branches
|
|
773
816
|
// decide anything, and whichever branch this frame then takes works from the
|
|
774
817
|
// same history. Applying it inside one branch meant a frame that took another
|
|
@@ -910,7 +953,7 @@ export class MainScreenRenderer {
|
|
|
910
953
|
// leave two records for one move and two chances to confirm it.
|
|
911
954
|
this.#resize = undefined;
|
|
912
955
|
}
|
|
913
|
-
else if (
|
|
956
|
+
else if (reshaped) {
|
|
914
957
|
body = this.#paintScreen(target.rows, this.#screen, true);
|
|
915
958
|
// Preserve unchanged frozen rows in their new index space. A shrink may
|
|
916
959
|
// bring them onto screen; repainting them does not make them unfrozen.
|
|
@@ -998,7 +1041,9 @@ export class MainScreenRenderer {
|
|
|
998
1041
|
if (!this.#frozenViewport && candidatePhysical < this.#physical)
|
|
999
1042
|
effectiveStart = Math.max(this.#physical, viewStart);
|
|
1000
1043
|
target = this.#target(next, effectiveStart, 'bottom');
|
|
1001
|
-
|
|
1044
|
+
// The hidden normal buffer may no longer match the last painted snapshot.
|
|
1045
|
+
// Restore the live viewport explicitly, even when its logical rows are unchanged.
|
|
1046
|
+
body = this.#paintScreen(target.rows, this.#screen, leavingAlt);
|
|
1002
1047
|
}
|
|
1003
1048
|
this.#transient = false;
|
|
1004
1049
|
const header = this.#paintStickyHeader(frame, target);
|
|
@@ -1077,7 +1122,7 @@ export class MainScreenRenderer {
|
|
|
1077
1122
|
...next.slice(viewStart, viewStart + this.#height),
|
|
1078
1123
|
];
|
|
1079
1124
|
this.#noteFlushed(next, ranges.flatMap(([from, to]) => Array.from({ length: Math.max(0, to - from) }, (_, i) => from + i)));
|
|
1080
|
-
let out =
|
|
1125
|
+
let out = this.#clearViewport();
|
|
1081
1126
|
if (rows.length < this.#height)
|
|
1082
1127
|
out += csi(this.#height - rows.length, 0);
|
|
1083
1128
|
for (let i = 0; i < rows.length; i += 1) {
|
|
@@ -1094,7 +1139,7 @@ export class MainScreenRenderer {
|
|
|
1094
1139
|
...next.slice(viewStart, viewStart + this.#height),
|
|
1095
1140
|
];
|
|
1096
1141
|
this.#noteFlushed(next, Array.from({ length: Math.max(0, committedEnd - start) }, (_, i) => start + i));
|
|
1097
|
-
let out = clearScreen ?
|
|
1142
|
+
let out = clearScreen ? this.#clearViewport() : csi(0, 0);
|
|
1098
1143
|
if (rows.length < this.#height)
|
|
1099
1144
|
out += csi(this.#height - rows.length, 0);
|
|
1100
1145
|
for (let i = 0; i < rows.length; i += 1) {
|
|
@@ -1105,8 +1150,16 @@ export class MainScreenRenderer {
|
|
|
1105
1150
|
}
|
|
1106
1151
|
return out;
|
|
1107
1152
|
}
|
|
1153
|
+
/** ED2 can append the entire screen to tmux history (scroll-on-clear). */
|
|
1154
|
+
#clearViewport() {
|
|
1155
|
+
// The initial clear may preserve pre-existing shell output, and alternate
|
|
1156
|
+
// buffers have no scrollback. Later main-screen clears are strictly local.
|
|
1157
|
+
if (!this.#hasFrame || this.#altActive)
|
|
1158
|
+
return CLEAR_SCREEN;
|
|
1159
|
+
return Array.from({ length: this.#height }, (_, row) => csi(row, 0) + CLEAR_LINE).join('') + csi(0, 0);
|
|
1160
|
+
}
|
|
1108
1161
|
#paintScreen(next, old, clear) {
|
|
1109
|
-
return (clear ?
|
|
1162
|
+
return (clear ? this.#clearViewport() : '') + this.#paintDiff(next, clear ? this.#blankScreen() : old);
|
|
1110
1163
|
}
|
|
1111
1164
|
#paintDiff(next, old) {
|
|
1112
1165
|
let out = '';
|