@sagmans/dsh-tui 0.12.1 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/dsh-tui-dogfood/SKILL.md +18 -2
- package/.agents/skills/dsh-tui-dogfood/references/home-state.md +4 -4
- package/.agents/skills/dsh-tui-dogfood/scripts/clone-links.mjs +19 -11
- package/.agents/skills/dsh-tui-dogfood/scripts/run-plugin-from-worktree.sh +31 -9
- package/.agents/skills/dsh-tui-update-models/SKILL.md +1 -1
- package/.agents/skills/dsh-tui-update-models/references/model-wiring.md +6 -6
- package/.agents/skills/dsh-tui-update-models/scripts/dump-model-catalog.mjs +21 -13
- package/README.md +61 -23
- package/cordis.patch.yml +2 -0
- package/lib/agent/fork.d.ts +3 -1
- package/lib/agent/fork.d.ts.map +1 -1
- package/lib/agent/fork.js +2 -0
- package/lib/agent/fork.js.map +1 -1
- package/lib/agent/history.d.ts +14 -22
- package/lib/agent/history.d.ts.map +1 -1
- package/lib/agent/history.js +20 -14
- package/lib/agent/history.js.map +1 -1
- package/lib/agent/host.d.ts.map +1 -1
- package/lib/agent/host.js +6 -0
- package/lib/agent/host.js.map +1 -1
- package/lib/agent/model.d.ts +10 -8
- package/lib/agent/model.d.ts.map +1 -1
- package/lib/agent/model.js +9 -7
- package/lib/agent/model.js.map +1 -1
- package/lib/agent/present.d.ts +1 -1
- package/lib/agent/present.d.ts.map +1 -1
- package/lib/agent/present.js +1 -1
- package/lib/agent/present.js.map +1 -1
- package/lib/agent/presets.d.ts +4 -1
- package/lib/agent/presets.d.ts.map +1 -1
- package/lib/agent/presets.js +9 -2
- package/lib/agent/presets.js.map +1 -1
- package/lib/agent/projections.d.ts +8 -2
- package/lib/agent/projections.d.ts.map +1 -1
- package/lib/agent/projections.js +8 -2
- package/lib/agent/projections.js.map +1 -1
- package/lib/agent/prompt-history.d.ts +8 -48
- package/lib/agent/prompt-history.d.ts.map +1 -1
- package/lib/agent/prompt-history.js +34 -15
- package/lib/agent/prompt-history.js.map +1 -1
- package/lib/agent/status.d.ts +9 -24
- package/lib/agent/status.d.ts.map +1 -1
- package/lib/agent/status.js +7 -2
- package/lib/agent/status.js.map +1 -1
- package/lib/agent/undo.d.ts +2 -4
- package/lib/agent/undo.d.ts.map +1 -1
- package/lib/agent/undo.js +10 -5
- package/lib/agent/undo.js.map +1 -1
- package/lib/cards/composition.d.ts +7 -7
- package/lib/cards/composition.d.ts.map +1 -1
- package/lib/cards/composition.js +13 -12
- package/lib/cards/composition.js.map +1 -1
- package/lib/cards/presenter.d.ts +11 -14
- package/lib/cards/presenter.d.ts.map +1 -1
- package/lib/cards/presenter.js +40 -19
- package/lib/cards/presenter.js.map +1 -1
- package/lib/cards/preview.d.ts.map +1 -1
- package/lib/cards/preview.js +5 -1
- package/lib/cards/preview.js.map +1 -1
- package/lib/cards.d.ts +17 -23
- package/lib/cards.d.ts.map +1 -1
- package/lib/cards.js +27 -12
- package/lib/cards.js.map +1 -1
- package/lib/compat/probe.d.ts +2 -5
- package/lib/compat/probe.d.ts.map +1 -1
- package/lib/compat/probe.js +2 -2
- package/lib/compat/probe.js.map +1 -1
- package/lib/compat/section.d.ts +5 -4
- package/lib/compat/section.d.ts.map +1 -1
- package/lib/compat/section.js +4 -0
- package/lib/compat/section.js.map +1 -1
- package/lib/config.d.ts +0 -3
- package/lib/config.d.ts.map +1 -1
- package/lib/config.js +7 -1
- package/lib/config.js.map +1 -1
- package/lib/export.d.ts +5 -7
- package/lib/export.d.ts.map +1 -1
- package/lib/export.js +48 -10
- package/lib/export.js.map +1 -1
- package/lib/fold-cursor.d.ts +3 -3
- package/lib/fold-cursor.d.ts.map +1 -1
- package/lib/fold-cursor.js +5 -3
- package/lib/fold-cursor.js.map +1 -1
- package/lib/gates/question-card.d.ts +3 -38
- package/lib/gates/question-card.d.ts.map +1 -1
- package/lib/gates/question-card.js +13 -10
- package/lib/gates/question-card.js.map +1 -1
- package/lib/gates/questions.d.ts +14 -8
- package/lib/gates/questions.d.ts.map +1 -1
- package/lib/gates/questions.js +25 -18
- package/lib/gates/questions.js.map +1 -1
- package/lib/gates.d.ts +17 -25
- package/lib/gates.d.ts.map +1 -1
- package/lib/gates.js +2 -4
- package/lib/gates.js.map +1 -1
- package/lib/herdr/client.d.ts +10 -12
- package/lib/herdr/client.d.ts.map +1 -1
- package/lib/herdr/client.js +9 -8
- package/lib/herdr/client.js.map +1 -1
- package/lib/herdr/constants.d.ts +3 -2
- package/lib/herdr/constants.d.ts.map +1 -1
- package/lib/herdr/constants.js +3 -2
- package/lib/herdr/constants.js.map +1 -1
- package/lib/herdr/reporter.d.ts +4 -39
- package/lib/herdr/reporter.d.ts.map +1 -1
- package/lib/herdr/reporter.js +13 -19
- package/lib/herdr/reporter.js.map +1 -1
- package/lib/herdr/state.d.ts +4 -3
- package/lib/herdr/state.d.ts.map +1 -1
- package/lib/herdr/state.js +6 -5
- package/lib/herdr/state.js.map +1 -1
- package/lib/host/preset-files.d.ts +0 -17
- package/lib/host/preset-files.d.ts.map +1 -1
- package/lib/host/preset-files.js +7 -2
- package/lib/host/preset-files.js.map +1 -1
- package/lib/host/roster.d.ts +1 -1
- package/lib/host/roster.d.ts.map +1 -1
- package/lib/host/roster.js +3 -3
- package/lib/host/roster.js.map +1 -1
- package/lib/host/runner.d.ts +2 -5
- package/lib/host/runner.d.ts.map +1 -1
- package/lib/host/runner.js +2 -5
- package/lib/host/runner.js.map +1 -1
- package/lib/identity.d.ts +6 -3
- package/lib/identity.d.ts.map +1 -1
- package/lib/identity.js +18 -3
- package/lib/identity.js.map +1 -1
- package/lib/index.d.ts +2 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +42 -14
- package/lib/index.js.map +1 -1
- package/lib/injection.d.ts.map +1 -1
- package/lib/injection.js +1 -0
- package/lib/injection.js.map +1 -1
- package/lib/input/action-catalog.d.ts.map +1 -1
- package/lib/input/action-catalog.js +4 -0
- package/lib/input/action-catalog.js.map +1 -1
- package/lib/input/actions.d.ts +4 -3
- package/lib/input/actions.d.ts.map +1 -1
- package/lib/input/actions.js +8 -3
- package/lib/input/actions.js.map +1 -1
- package/lib/input/completion.d.ts +3 -11
- package/lib/input/completion.d.ts.map +1 -1
- package/lib/input/completion.js +8 -6
- package/lib/input/completion.js.map +1 -1
- package/lib/input/file-index.d.ts +1 -12
- package/lib/input/file-index.d.ts.map +1 -1
- package/lib/input/file-index.js +21 -17
- package/lib/input/file-index.js.map +1 -1
- package/lib/input/file-search.d.ts +6 -3
- package/lib/input/file-search.d.ts.map +1 -1
- package/lib/input/file-search.js +29 -10
- package/lib/input/file-search.js.map +1 -1
- package/lib/input/fuzzy.d.ts +6 -12
- package/lib/input/fuzzy.d.ts.map +1 -1
- package/lib/input/fuzzy.js +18 -27
- package/lib/input/fuzzy.js.map +1 -1
- package/lib/input/ghost.d.ts +5 -5
- package/lib/input/ghost.d.ts.map +1 -1
- package/lib/input/ghost.js +4 -3
- package/lib/input/ghost.js.map +1 -1
- package/lib/input/key-press.d.ts +8 -7
- package/lib/input/key-press.d.ts.map +1 -1
- package/lib/input/key-press.js +8 -6
- package/lib/input/key-press.js.map +1 -1
- package/lib/input/keymap-conflicts.d.ts +6 -6
- package/lib/input/keymap-conflicts.d.ts.map +1 -1
- package/lib/input/keymap-conflicts.js +6 -6
- package/lib/input/keymap-conflicts.js.map +1 -1
- package/lib/input/keymap.d.ts +6 -18
- package/lib/input/keymap.d.ts.map +1 -1
- package/lib/input/keymap.js +7 -10
- package/lib/input/keymap.js.map +1 -1
- package/lib/input/match.js +4 -4
- package/lib/input/match.js.map +1 -1
- package/lib/input/submission.d.ts +7 -3
- package/lib/input/submission.d.ts.map +1 -1
- package/lib/input/submission.js +2 -2
- package/lib/input/submission.js.map +1 -1
- package/lib/input/workspace-files.d.ts +1 -2
- package/lib/input/workspace-files.d.ts.map +1 -1
- package/lib/input/workspace-files.js +20 -11
- package/lib/input/workspace-files.js.map +1 -1
- package/lib/input.d.ts +6 -0
- package/lib/input.d.ts.map +1 -1
- package/lib/input.js +34 -1
- package/lib/input.js.map +1 -1
- package/lib/install-skills.d.ts +5 -22
- package/lib/install-skills.d.ts.map +1 -1
- package/lib/install-skills.js +18 -18
- package/lib/install-skills.js.map +1 -1
- package/lib/jobs.d.ts +10 -5
- package/lib/jobs.d.ts.map +1 -1
- package/lib/jobs.js +39 -13
- package/lib/jobs.js.map +1 -1
- package/lib/keymaps.d.ts.map +1 -1
- package/lib/keymaps.js +2 -0
- package/lib/keymaps.js.map +1 -1
- package/lib/keys-command.d.ts +1 -1
- package/lib/keys-command.d.ts.map +1 -1
- package/lib/model-list.d.ts +0 -27
- package/lib/model-list.d.ts.map +1 -1
- package/lib/model-list.js +1 -1
- package/lib/model-list.js.map +1 -1
- package/lib/moshi.d.ts +13 -0
- package/lib/moshi.d.ts.map +1 -0
- package/lib/moshi.js +130 -0
- package/lib/moshi.js.map +1 -0
- package/lib/spacing.d.ts +0 -7
- package/lib/spacing.d.ts.map +1 -1
- package/lib/spacing.js +1 -1
- package/lib/spacing.js.map +1 -1
- package/lib/startup.d.ts +1 -1
- package/lib/startup.d.ts.map +1 -1
- package/lib/startup.js +9 -1
- package/lib/startup.js.map +1 -1
- package/lib/stash/lock.d.ts +1 -37
- package/lib/stash/lock.d.ts.map +1 -1
- package/lib/stash/lock.js +41 -35
- package/lib/stash/lock.js.map +1 -1
- package/lib/stash/paths.d.ts +8 -7
- package/lib/stash/paths.d.ts.map +1 -1
- package/lib/stash/paths.js +21 -17
- package/lib/stash/paths.js.map +1 -1
- package/lib/stash/private-fs.d.ts +14 -5
- package/lib/stash/private-fs.d.ts.map +1 -1
- package/lib/stash/private-fs.js +30 -8
- package/lib/stash/private-fs.js.map +1 -1
- package/lib/stash/schema.d.ts +3 -6
- package/lib/stash/schema.d.ts.map +1 -1
- package/lib/stash/schema.js +11 -9
- package/lib/stash/schema.js.map +1 -1
- package/lib/stash/store.d.ts +9 -40
- package/lib/stash/store.d.ts.map +1 -1
- package/lib/stash/store.js +26 -24
- package/lib/stash/store.js.map +1 -1
- package/lib/stash.d.ts +7 -11
- package/lib/stash.d.ts.map +1 -1
- package/lib/stash.js +18 -11
- package/lib/stash.js.map +1 -1
- package/lib/subagents.d.ts +9 -9
- package/lib/subagents.d.ts.map +1 -1
- package/lib/subagents.js +19 -18
- package/lib/subagents.js.map +1 -1
- package/lib/surface/appearance-preferences.d.ts.map +1 -1
- package/lib/surface/appearance-preferences.js +7 -0
- package/lib/surface/appearance-preferences.js.map +1 -1
- package/lib/surface/appearance.d.ts.map +1 -1
- package/lib/surface/appearance.js +7 -2
- package/lib/surface/appearance.js.map +1 -1
- package/lib/surface/background-work.d.ts +2 -0
- package/lib/surface/background-work.d.ts.map +1 -1
- package/lib/surface/background-work.js +45 -36
- package/lib/surface/background-work.js.map +1 -1
- package/lib/surface/commands.d.ts.map +1 -1
- package/lib/surface/commands.js +17 -9
- package/lib/surface/commands.js.map +1 -1
- package/lib/surface/modal-input.d.ts +4 -0
- package/lib/surface/modal-input.d.ts.map +1 -1
- package/lib/surface/modal-input.js +81 -46
- package/lib/surface/modal-input.js.map +1 -1
- package/lib/surface/model-choice.d.ts.map +1 -1
- package/lib/surface/model-choice.js +10 -8
- package/lib/surface/model-choice.js.map +1 -1
- package/lib/surface/plugin-actions.d.ts.map +1 -1
- package/lib/surface/plugin-actions.js +4 -0
- package/lib/surface/plugin-actions.js.map +1 -1
- package/lib/surface/preset-choice.d.ts.map +1 -1
- package/lib/surface/preset-choice.js +15 -17
- package/lib/surface/preset-choice.js.map +1 -1
- package/lib/surface/prompt-input.js +1 -1
- package/lib/surface/prompt-input.js.map +1 -1
- package/lib/surface/prompt-memory.d.ts +7 -6
- package/lib/surface/prompt-memory.d.ts.map +1 -1
- package/lib/surface/prompt-memory.js +3 -3
- package/lib/surface/session-lifecycle.d.ts +7 -1
- package/lib/surface/session-lifecycle.d.ts.map +1 -1
- package/lib/surface/session-lifecycle.js +17 -12
- package/lib/surface/session-lifecycle.js.map +1 -1
- package/lib/surface/session-picker.js +1 -1
- package/lib/surface/session-picker.js.map +1 -1
- package/lib/surface/session-view.d.ts +1 -1
- package/lib/surface/session-view.d.ts.map +1 -1
- package/lib/surface/session-view.js +4 -5
- package/lib/surface/session-view.js.map +1 -1
- package/lib/surface/staged-turns.d.ts.map +1 -1
- package/lib/surface/staged-turns.js +8 -4
- package/lib/surface/staged-turns.js.map +1 -1
- package/lib/surface/terminal-lifecycle.d.ts +1 -1
- package/lib/surface/terminal-lifecycle.d.ts.map +1 -1
- package/lib/surface/terminal-lifecycle.js +8 -5
- package/lib/surface/terminal-lifecycle.js.map +1 -1
- package/lib/terminal/bell.d.ts +0 -2
- package/lib/terminal/bell.d.ts.map +1 -1
- package/lib/terminal/bell.js +2 -1
- package/lib/terminal/bell.js.map +1 -1
- package/lib/terminal/clipboard.d.ts +4 -4
- package/lib/terminal/clipboard.js +4 -4
- package/lib/terminal/external-editor.d.ts +4 -60
- package/lib/terminal/external-editor.d.ts.map +1 -1
- package/lib/terminal/external-editor.js +28 -40
- package/lib/terminal/external-editor.js.map +1 -1
- package/lib/terminal/host-writes.d.ts +7 -18
- package/lib/terminal/host-writes.d.ts.map +1 -1
- package/lib/terminal/host-writes.js +19 -18
- package/lib/terminal/host-writes.js.map +1 -1
- package/lib/terminal/input.d.ts +6 -0
- package/lib/terminal/input.d.ts.map +1 -0
- package/lib/terminal/input.js +15 -0
- package/lib/terminal/input.js.map +1 -0
- package/lib/terminal/restore.d.ts +2 -1
- package/lib/terminal/restore.d.ts.map +1 -1
- package/lib/terminal/signals.d.ts +2 -1
- package/lib/terminal/signals.d.ts.map +1 -1
- package/lib/terminal/signals.js +1 -1
- package/lib/terminal/signals.js.map +1 -1
- package/lib/terminal/title.d.ts +1 -11
- package/lib/terminal/title.d.ts.map +1 -1
- package/lib/terminal/title.js +5 -4
- package/lib/terminal/title.js.map +1 -1
- package/lib/terminal/warning-screen.d.ts +11 -2
- package/lib/terminal/warning-screen.d.ts.map +1 -1
- package/lib/terminal/warning-screen.js +166 -22
- package/lib/terminal/warning-screen.js.map +1 -1
- package/lib/terminal-text/scan.d.ts +4 -5
- package/lib/terminal-text/scan.d.ts.map +1 -1
- package/lib/terminal-text/scan.js +16 -9
- package/lib/terminal-text/scan.js.map +1 -1
- package/lib/terminal-text/sgr.d.ts +4 -3
- package/lib/terminal-text/sgr.d.ts.map +1 -1
- package/lib/terminal-text/sgr.js +9 -14
- package/lib/terminal-text/sgr.js.map +1 -1
- package/lib/terminal-text.d.ts +7 -12
- package/lib/terminal-text.d.ts.map +1 -1
- package/lib/terminal-text.js +32 -23
- package/lib/terminal-text.js.map +1 -1
- package/lib/text.d.ts +8 -14
- package/lib/text.d.ts.map +1 -1
- package/lib/text.js +14 -15
- package/lib/text.js.map +1 -1
- package/lib/theme-capability.d.ts +3 -15
- package/lib/theme-capability.d.ts.map +1 -1
- package/lib/theme-capability.js +18 -15
- package/lib/theme-capability.js.map +1 -1
- package/lib/theme-defaults.d.ts +3 -57
- package/lib/theme-defaults.d.ts.map +1 -1
- package/lib/theme-defaults.js +25 -14
- package/lib/theme-defaults.js.map +1 -1
- package/lib/theme-files.d.ts +16 -32
- package/lib/theme-files.d.ts.map +1 -1
- package/lib/theme-files.js +43 -27
- package/lib/theme-files.js.map +1 -1
- package/lib/theme-resolver.d.ts +3 -3
- package/lib/theme-resolver.d.ts.map +1 -1
- package/lib/theme-resolver.js +9 -6
- package/lib/theme-resolver.js.map +1 -1
- package/lib/theme-schema.d.ts +7 -42
- package/lib/theme-schema.d.ts.map +1 -1
- package/lib/theme-schema.js +9 -11
- package/lib/theme-schema.js.map +1 -1
- package/lib/theme-settings.d.ts +19 -10
- package/lib/theme-settings.d.ts.map +1 -1
- package/lib/theme-settings.js +23 -17
- package/lib/theme-settings.js.map +1 -1
- package/lib/theme-tokens.d.ts +6 -12
- package/lib/theme-tokens.d.ts.map +1 -1
- package/lib/theme-tokens.js +2 -2
- package/lib/theme-tokens.js.map +1 -1
- package/lib/theme.d.ts +5 -10
- package/lib/theme.d.ts.map +1 -1
- package/lib/theme.js +11 -18
- package/lib/theme.js.map +1 -1
- package/lib/todo-guard.d.ts +8 -4
- package/lib/todo-guard.d.ts.map +1 -1
- package/lib/todo-guard.js +17 -6
- package/lib/todo-guard.js.map +1 -1
- package/lib/tokens.d.ts +0 -2
- package/lib/tokens.d.ts.map +1 -1
- package/lib/tokens.js +1 -1
- package/lib/tokens.js.map +1 -1
- package/lib/tool-display.d.ts +1 -13
- package/lib/tool-display.d.ts.map +1 -1
- package/lib/tool-display.js +4 -4
- package/lib/tool-display.js.map +1 -1
- package/lib/transcript/message-content.d.ts.map +1 -1
- package/lib/transcript/message-content.js +31 -9
- package/lib/transcript/message-content.js.map +1 -1
- package/lib/transcript/tool-calls.d.ts +9 -7
- package/lib/transcript/tool-calls.d.ts.map +1 -1
- package/lib/transcript/tool-calls.js +27 -20
- package/lib/transcript/tool-calls.js.map +1 -1
- package/lib/transcript.d.ts +15 -18
- package/lib/transcript.d.ts.map +1 -1
- package/lib/transcript.js +70 -41
- package/lib/transcript.js.map +1 -1
- package/lib/ui/copy.d.ts +5 -4
- package/lib/ui/copy.d.ts.map +1 -1
- package/lib/ui/copy.js +9 -6
- package/lib/ui/copy.js.map +1 -1
- package/lib/ui/diff.d.ts +0 -30
- package/lib/ui/diff.d.ts.map +1 -1
- package/lib/ui/diff.js +16 -9
- package/lib/ui/diff.js.map +1 -1
- package/lib/ui/dock.d.ts +12 -10
- package/lib/ui/dock.d.ts.map +1 -1
- package/lib/ui/dock.js +27 -14
- package/lib/ui/dock.js.map +1 -1
- package/lib/ui/editor.d.ts +5 -4
- package/lib/ui/editor.d.ts.map +1 -1
- package/lib/ui/editor.js +17 -9
- package/lib/ui/editor.js.map +1 -1
- package/lib/ui/frame.d.ts +4 -12
- package/lib/ui/frame.d.ts.map +1 -1
- package/lib/ui/frame.js +6 -6
- package/lib/ui/frame.js.map +1 -1
- package/lib/ui/gap.d.ts +0 -4
- package/lib/ui/gap.d.ts.map +1 -1
- package/lib/ui/gap.js +4 -3
- package/lib/ui/gap.js.map +1 -1
- package/lib/ui/gate-input.d.ts +3 -3
- package/lib/ui/gate-input.d.ts.map +1 -1
- package/lib/ui/gate-input.js +9 -9
- package/lib/ui/gate-input.js.map +1 -1
- package/lib/ui/layout.d.ts +1 -8
- package/lib/ui/layout.d.ts.map +1 -1
- package/lib/ui/layout.js +10 -11
- package/lib/ui/layout.js.map +1 -1
- package/lib/ui/markdown.d.ts +3 -5
- package/lib/ui/markdown.d.ts.map +1 -1
- package/lib/ui/markdown.js +18 -7
- package/lib/ui/markdown.js.map +1 -1
- package/lib/ui/mermaid.d.ts +0 -11
- package/lib/ui/mermaid.d.ts.map +1 -1
- package/lib/ui/mermaid.js +32 -17
- package/lib/ui/mermaid.js.map +1 -1
- package/lib/ui/picker-card.d.ts +4 -8
- package/lib/ui/picker-card.d.ts.map +1 -1
- package/lib/ui/picker-card.js +17 -15
- package/lib/ui/picker-card.js.map +1 -1
- package/lib/ui/picker.d.ts +11 -17
- package/lib/ui/picker.d.ts.map +1 -1
- package/lib/ui/picker.js +36 -17
- package/lib/ui/picker.js.map +1 -1
- package/lib/ui/queue.d.ts.map +1 -1
- package/lib/ui/queue.js +11 -1
- package/lib/ui/queue.js.map +1 -1
- package/lib/ui/stash-picker.d.ts +1 -10
- package/lib/ui/stash-picker.d.ts.map +1 -1
- package/lib/ui/stash-picker.js +4 -4
- package/lib/ui/stash-picker.js.map +1 -1
- package/lib/ui/status.d.ts +2 -19
- package/lib/ui/status.d.ts.map +1 -1
- package/lib/ui/status.js +15 -17
- package/lib/ui/status.js.map +1 -1
- package/lib/ui/view/document.d.ts +33 -0
- package/lib/ui/view/document.d.ts.map +1 -0
- package/lib/ui/view/document.js +96 -0
- package/lib/ui/view/document.js.map +1 -0
- package/lib/ui/view/gate-card.d.ts +2 -0
- package/lib/ui/view/gate-card.d.ts.map +1 -1
- package/lib/ui/view/gate-card.js +12 -10
- package/lib/ui/view/gate-card.js.map +1 -1
- package/lib/ui/view/tool-card.d.ts +7 -4
- package/lib/ui/view/tool-card.d.ts.map +1 -1
- package/lib/ui/view/tool-card.js +12 -17
- package/lib/ui/view/tool-card.js.map +1 -1
- package/lib/ui/view/transcript-message.d.ts +7 -7
- package/lib/ui/view/transcript-message.d.ts.map +1 -1
- package/lib/ui/view/transcript-message.js +19 -10
- package/lib/ui/view/transcript-message.js.map +1 -1
- package/lib/ui/view.d.ts +53 -84
- package/lib/ui/view.d.ts.map +1 -1
- package/lib/ui/view.js +79 -158
- package/lib/ui/view.js.map +1 -1
- package/lib/work.d.ts +13 -10
- package/lib/work.d.ts.map +1 -1
- package/lib/work.js +30 -8
- package/lib/work.js.map +1 -1
- package/package.json +12 -7
- package/presets/cordis.patch.yml +1 -0
- package/presets/minimal.patch.yml +1 -0
- package/presets/ptc.patch.yml +1 -0
- package/presets/standard.patch.yml +1 -0
- package/themes/deepseek-blue.yaml +38 -51
- package/themes/marine-static.yaml +27 -35
- package/themes/pine-slope.yaml +13 -11
- package/themes/polar-drift.yaml +6 -0
- package/themes/violet-orbit.yaml +14 -18
- package/themes/wine-thicket.yaml +13 -13
package/lib/theme.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { type ColourMode } from './theme-capability.ts';
|
|
|
3
3
|
import type { TuiToken } from './theme-tokens.ts';
|
|
4
4
|
import { type ThemeOverrides } from './theme-settings.ts';
|
|
5
5
|
/** What a drawn fragment needs to know: the element it belongs to, and where it starts. */
|
|
6
|
-
|
|
6
|
+
interface RichTextOptions {
|
|
7
7
|
/** The element the fragment is drawn inside, whose colour is the ground it returns to. */
|
|
8
8
|
readonly token?: TuiToken;
|
|
9
9
|
/** The column the fragment starts at, so its first tab lands on the terminal's next stop. */
|
|
@@ -38,15 +38,9 @@ export interface TuiTheme {
|
|
|
38
38
|
readonly editor: EditorTheme;
|
|
39
39
|
readonly markdown: MarkdownTheme;
|
|
40
40
|
}
|
|
41
|
-
/**
|
|
42
|
-
*
|
|
43
|
-
|
|
44
|
-
* Every token is resolved once, when the theme is built, rather than per frame:
|
|
45
|
-
* a repaint walks the whole transcript and re-resolving a palette chain for
|
|
46
|
-
* every row would pay for the same answer thousands of times. A settings change
|
|
47
|
-
* builds a new theme instead, which is also what makes the swap atomic.
|
|
48
|
-
*/
|
|
49
|
-
export declare function createTheme(mode?: ColourMode, overrides?: ThemeOverrides): TuiTheme;
|
|
41
|
+
/** Cache each token on first use so rows sharing a token do not repeat palette
|
|
42
|
+
* and inheritance resolution within this theme. */
|
|
43
|
+
export declare function createTheme(mode: ColourMode, overrides?: ThemeOverrides): TuiTheme;
|
|
50
44
|
/**
|
|
51
45
|
* An editor theme that follows a moving source.
|
|
52
46
|
*
|
|
@@ -63,4 +57,5 @@ export declare function forwardEditorTheme(source: () => EditorTheme): EditorThe
|
|
|
63
57
|
* of its own keeps the library's plain rows rather than losing its code blocks.
|
|
64
58
|
*/
|
|
65
59
|
export declare function forwardMarkdownTheme(source: () => MarkdownTheme): MarkdownTheme;
|
|
60
|
+
export {};
|
|
66
61
|
//# sourceMappingURL=theme.d.ts.map
|
package/lib/theme.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2C,KAAK,WAAW,EAAE,KAAK,aAAa,EAAwB,MAAM,wBAAwB,CAAA;AAI5I,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAGvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAarE,2FAA2F;AAC3F,UAAU,eAAe;IACvB,0FAA0F;IAC1F,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAA;IACzB,6FAA6F;IAC7F,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB;AAED;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,8BAA8B;IAC9B,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;IAC5C;;;;;;;OAOG;IACH,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,MAAM,CAAA;IACpD,4EAA4E;IAC5E,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC3D,4EAA4E;IAC5E,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAA;IAC9B,0CAA0C;IAC1C,OAAO,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAA;CACjC;AAoDD;mDACmD;AACnD,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,GAAE,cAA6B,GAAG,QAAQ,CAwDhG;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,WAAW,GAAG,WAAW,CAWzE;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,aAAa,GAAG,aAAa,CAkB/E"}
|
package/lib/theme.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { truncateToWidth } from '@earendil-works/pi-tui';
|
|
1
|
+
import { stripTerminalSequences, truncateToWidth } from '@earendil-works/pi-tui';
|
|
2
2
|
import { codeBlockLines, plainCodeLines } from "./ui/diff.js";
|
|
3
3
|
import { oneRow } from "./text.js";
|
|
4
4
|
import { renderTerminalText } from "./terminal-text.js";
|
|
5
|
-
import {
|
|
6
|
-
import { DEFAULT_PALETTE
|
|
7
|
-
import {
|
|
5
|
+
import {} from "./theme-capability.js";
|
|
6
|
+
import { DEFAULT_PALETTE } from "./theme-defaults.js";
|
|
7
|
+
import { resolveToken } from "./theme-resolver.js";
|
|
8
8
|
import { themeLayer } from "./theme-settings.js";
|
|
9
9
|
/** What a caller gets when it has written no settings at all. */
|
|
10
10
|
const NO_OVERRIDES = { palette: DEFAULT_PALETTE, tokens: new Map() };
|
|
@@ -60,15 +60,9 @@ function editorTheme(style, visible) {
|
|
|
60
60
|
},
|
|
61
61
|
};
|
|
62
62
|
}
|
|
63
|
-
/**
|
|
64
|
-
*
|
|
65
|
-
|
|
66
|
-
* Every token is resolved once, when the theme is built, rather than per frame:
|
|
67
|
-
* a repaint walks the whole transcript and re-resolving a palette chain for
|
|
68
|
-
* every row would pay for the same answer thousands of times. A settings change
|
|
69
|
-
* builds a new theme instead, which is also what makes the swap atomic.
|
|
70
|
-
*/
|
|
71
|
-
export function createTheme(mode = detectColourMode(process.env), overrides = NO_OVERRIDES) {
|
|
63
|
+
/** Cache each token on first use so rows sharing a token do not repeat palette
|
|
64
|
+
* and inheritance resolution within this theme. */
|
|
65
|
+
export function createTheme(mode, overrides = NO_OVERRIDES) {
|
|
72
66
|
const resolved = new Map();
|
|
73
67
|
// Looked up once: a theme is one layer of every token's answer, not a
|
|
74
68
|
// per-token decision, and a repaint asks for all of them.
|
|
@@ -88,16 +82,15 @@ export function createTheme(mode = detectColourMode(process.env), overrides = NO
|
|
|
88
82
|
/**
|
|
89
83
|
* Truncate to a width, honouring the promise that `none` emits nothing.
|
|
90
84
|
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
* dropping them restores the contract without changing what is drawn.
|
|
85
|
+
* Incoming styling and the width helper's closing reset must not override
|
|
86
|
+
* the reader's no-colour choice; stripping terminal sequences preserves
|
|
87
|
+
* the visible cut while keeping that promise for both short and long rows.
|
|
95
88
|
*/
|
|
96
89
|
const cut = (text, width, ellipsis = '') => {
|
|
97
90
|
// A row is one row: a break that reached the cut would be written as a move
|
|
98
91
|
// to the next line, over whatever the frame put there.
|
|
99
92
|
const truncated = truncateToWidth(oneRow(text), width, ellipsis);
|
|
100
|
-
return mode === 'none' ? truncated
|
|
93
|
+
return mode === 'none' ? stripTerminalSequences(truncated) : truncated;
|
|
101
94
|
};
|
|
102
95
|
const visible = (token) => !resolve(token).hidden;
|
|
103
96
|
/**
|
package/lib/theme.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAA8D,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"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"}
|
package/lib/todo-guard.d.ts
CHANGED
|
@@ -36,7 +36,11 @@ declare module '@deepseek-ai/dsh-llm' {
|
|
|
36
36
|
} & ContextFormed;
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
-
/**
|
|
39
|
+
/**
|
|
40
|
+
* Cooldowns leave steps for useful work before another nudge; the longer
|
|
41
|
+
* missing-list wait leaves short turns alone. The cap bounds extra model steps,
|
|
42
|
+
* and the preview bounds quoted checklist rows while retaining an omitted count.
|
|
43
|
+
*/
|
|
40
44
|
export declare const TODO_GUARD_DEFAULTS: {
|
|
41
45
|
readonly staleSteps: 6;
|
|
42
46
|
readonly missingListSteps: 12;
|
|
@@ -102,9 +106,9 @@ export interface TodoObservation {
|
|
|
102
106
|
/**
|
|
103
107
|
* The decision core, free of Cordis so it can be tested directly.
|
|
104
108
|
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
107
|
-
*
|
|
109
|
+
* Count model steps rather than tool calls so a parallel batch does not
|
|
110
|
+
* spend the reminder budget on every result. Writes and reminders restart
|
|
111
|
+
* the cooldown; it is not a measurement of total time since the last write.
|
|
108
112
|
*/
|
|
109
113
|
export declare class TodoGuard {
|
|
110
114
|
private readonly config;
|
package/lib/todo-guard.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"todo-guard.d.ts","sourceRoot":"","sources":["../src/todo-guard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,CAAC,MAAM,0BAA0B,CAAA;AAGxC,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,sBAAsB,CAAA;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAsC,MAAM,wBAAwB,CAAA;AAElG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAE1C;;;;;;;;;;GAUG;AAEH,eAAO,MAAM,IAAI,mBAAmB,CAAA;AAEpC,gGAAgG;AAChG,eAAO,MAAM,MAAM,UAAY,CAAA;AAE/B,+EAA+E;AAC/E,eAAO,MAAM,eAAe,eAAe,CAAA;AAY3C;;;;;;;GAOG;AACH,OAAO,QAAQ,sBAAsB,CAAC;IACpC,UAAU,gBAAgB;QACxB,gBAAgB,EAAE;YAAE,IAAI,EAAE,gBAAgB,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,GAAG,aAAa,CAAA;KAC7E;CACF;AAQD
|
|
1
|
+
{"version":3,"file":"todo-guard.d.ts","sourceRoot":"","sources":["../src/todo-guard.ts"],"names":[],"mappings":"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"}
|
package/lib/todo-guard.js
CHANGED
|
@@ -29,7 +29,11 @@ const PLAN_KEY = 'plan';
|
|
|
29
29
|
const REMINDER_KIND = 'tui-todo-guard';
|
|
30
30
|
/** The reminder source; unlabeled context would read as a user prompt in derived history. */
|
|
31
31
|
const PLUGIN_SOURCE = { kind: REMINDER_KIND, plugin: name };
|
|
32
|
-
/**
|
|
32
|
+
/**
|
|
33
|
+
* Cooldowns leave steps for useful work before another nudge; the longer
|
|
34
|
+
* missing-list wait leaves short turns alone. The cap bounds extra model steps,
|
|
35
|
+
* and the preview bounds quoted checklist rows while retaining an omitted count.
|
|
36
|
+
*/
|
|
33
37
|
export const TODO_GUARD_DEFAULTS = {
|
|
34
38
|
staleSteps: 6,
|
|
35
39
|
missingListSteps: 12,
|
|
@@ -89,9 +93,9 @@ export function missingListReminder(steps) {
|
|
|
89
93
|
/**
|
|
90
94
|
* The decision core, free of Cordis so it can be tested directly.
|
|
91
95
|
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
96
|
+
* Count model steps rather than tool calls so a parallel batch does not
|
|
97
|
+
* spend the reminder budget on every result. Writes and reminders restart
|
|
98
|
+
* the cooldown; it is not a measurement of total time since the last write.
|
|
95
99
|
*/
|
|
96
100
|
export class TodoGuard {
|
|
97
101
|
config;
|
|
@@ -113,8 +117,8 @@ export class TodoGuard {
|
|
|
113
117
|
counters.remindedThisStep = false;
|
|
114
118
|
return;
|
|
115
119
|
}
|
|
116
|
-
//
|
|
117
|
-
//
|
|
120
|
+
// A rejected write never reaches this event, so attempting a write cannot
|
|
121
|
+
// reset the reminder cooldown.
|
|
118
122
|
if (type === TODO_WRITE_EVENT)
|
|
119
123
|
counters.steps = 0;
|
|
120
124
|
}
|
|
@@ -135,6 +139,8 @@ export class TodoGuard {
|
|
|
135
139
|
return undefined;
|
|
136
140
|
if (counters.remindedThisStep || counters.reminders >= this.config.maxRemindersPerTurn)
|
|
137
141
|
return undefined;
|
|
142
|
+
// A written list with no open work owes no update; suggest a first list only
|
|
143
|
+
// when the projection says none was written, not when its work is finished.
|
|
138
144
|
const open = observation.todos.kind === 'listed' ? observation.todos.todos.filter(isOpenTodo) : [];
|
|
139
145
|
const reminder = open.length > 0
|
|
140
146
|
? counters.steps >= this.config.staleSteps
|
|
@@ -145,6 +151,8 @@ export class TodoGuard {
|
|
|
145
151
|
: undefined;
|
|
146
152
|
if (reminder === undefined)
|
|
147
153
|
return undefined;
|
|
154
|
+
// Space reminders with a fresh cooldown; steps now measure time since a
|
|
155
|
+
// committed write or reminder, not total age since the last write.
|
|
148
156
|
counters.steps = 0;
|
|
149
157
|
counters.remindedThisStep = true;
|
|
150
158
|
counters.reminders += 1;
|
|
@@ -186,6 +194,9 @@ function readTodos(ctx, session) {
|
|
|
186
194
|
return { kind: 'absent' };
|
|
187
195
|
if (!Array.isArray(state))
|
|
188
196
|
return { kind: 'unavailable' };
|
|
197
|
+
// Keep usable siblings so one malformed item does not hide known open work.
|
|
198
|
+
// An array is not evidence of an unwritten list, even if no item is usable;
|
|
199
|
+
// only the projection's null sentinel warrants a missing-list reminder.
|
|
189
200
|
const todos = [];
|
|
190
201
|
for (const item of state) {
|
|
191
202
|
const record = asRecord(item);
|
package/lib/todo-guard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"todo-guard.js","sourceRoot":"","sources":["../src/todo-guard.ts"],"names":[],"mappings":"AACA,OAAO,CAAC,MAAM,0BAA0B,CAAA;AAExC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAIxD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAGvD;;;;;;;;;;GAUG;AAEH,MAAM,CAAC,MAAM,IAAI,GAAG,gBAAgB,CAAA;AAEpC,gGAAgG;AAChG,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,CAAA;AAE/B,+EAA+E;AAC/E,MAAM,CAAC,MAAM,eAAe,GAAG,YAAY,CAAA;AAE3C,8CAA8C;AAC9C,MAAM,UAAU,GAAG,YAAY,CAAA;AAC/B,MAAM,UAAU,GAAG,YAAY,CAAA;AAC/B,8EAA8E;AAC9E,MAAM,gBAAgB,GAAG,YAAY,CAAA;AAErC,4EAA4E;AAC5E,MAAM,SAAS,GAAG,OAAO,CAAA;AACzB,MAAM,QAAQ,GAAG,MAAM,CAAA;AAgBvB,yEAAyE;AACzE,MAAM,aAAa,GAAG,gBAAgB,CAAA;AAEtC,6FAA6F;AAC7F,MAAM,aAAa,GAAkB,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;AAE1E
|
|
1
|
+
{"version":3,"file":"todo-guard.js","sourceRoot":"","sources":["../src/todo-guard.ts"],"names":[],"mappings":"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"}
|
package/lib/tokens.d.ts
CHANGED
|
@@ -6,8 +6,6 @@
|
|
|
6
6
|
* and one definition keeps a reasoning row, a status row, and a tool card from
|
|
7
7
|
* disagreeing about the same text.
|
|
8
8
|
*/
|
|
9
|
-
/** Characters a provider bills as roughly one token. */
|
|
10
|
-
export declare const CHARS_PER_TOKEN = 4;
|
|
11
9
|
/** A thought's or a payload's size in tokens, rounded up so a non-empty text never reads as zero. */
|
|
12
10
|
export declare function countTokens(text: string): number;
|
|
13
11
|
/** Compact a token count, because the exact number changes nothing a reader decides. */
|
package/lib/tokens.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,qGAAqG;AACrG,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wFAAwF;AACxF,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMlD"}
|
package/lib/tokens.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* disagreeing about the same text.
|
|
8
8
|
*/
|
|
9
9
|
/** Characters a provider bills as roughly one token. */
|
|
10
|
-
|
|
10
|
+
const CHARS_PER_TOKEN = 4;
|
|
11
11
|
const THOUSAND = 1000;
|
|
12
12
|
const HUNDRED_THOUSAND = 100 * THOUSAND;
|
|
13
13
|
const MILLION = 1_000_000;
|
package/lib/tokens.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,wDAAwD;AACxD,MAAM,
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,wDAAwD;AACxD,MAAM,eAAe,GAAG,CAAC,CAAA;AAEzB,MAAM,QAAQ,GAAG,IAAI,CAAA;AACrB,MAAM,gBAAgB,GAAG,GAAG,GAAG,QAAQ,CAAA;AACvC,MAAM,OAAO,GAAG,SAAS,CAAA;AAEzB,qGAAqG;AACrG,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,CAAA;AACjD,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,IAAI,KAAK,IAAI,OAAO;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAA;IAC/D,0EAA0E;IAC1E,IAAI,KAAK,IAAI,gBAAgB;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAA;IACxE,IAAI,KAAK,IAAI,QAAQ;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAA;IACjE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;AACtB,CAAC"}
|
package/lib/tool-display.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ export interface ToolDisplaySpec {
|
|
|
13
13
|
/** Rows a folded card keeps when {@link ToolOutputDisplay} is `tail`. */
|
|
14
14
|
readonly tail: number;
|
|
15
15
|
}
|
|
16
|
-
/**
|
|
16
|
+
/** Preserve omitted fields during collection so resolution inherits the reader's default instead of a parser default. */
|
|
17
17
|
export type WrittenToolDisplay = {
|
|
18
18
|
-readonly [K in keyof ToolDisplaySpec]?: ToolDisplaySpec[K];
|
|
19
19
|
};
|
|
@@ -27,10 +27,6 @@ export declare const TOOL_DISPLAY_LIMITS: {
|
|
|
27
27
|
readonly max: 200;
|
|
28
28
|
};
|
|
29
29
|
};
|
|
30
|
-
/** What every tool draws when the reader has written nothing: one clipped line, no output. */
|
|
31
|
-
export declare const DEFAULT_TOOL_DISPLAY: ToolDisplaySpec;
|
|
32
|
-
/** The one name the block reserves: the row every tool without its own inherits. */
|
|
33
|
-
export declare const DEFAULT_TOOL_ENTRY = "default";
|
|
34
30
|
/** The `tools:` block once resolved: the default row, and every tool that named its own. */
|
|
35
31
|
export interface ToolDisplayTable {
|
|
36
32
|
readonly default: ToolDisplaySpec;
|
|
@@ -38,14 +34,6 @@ export interface ToolDisplayTable {
|
|
|
38
34
|
}
|
|
39
35
|
/** The display one tool draws with, falling back to the block's own default. */
|
|
40
36
|
export declare function toolDisplayFor(table: ToolDisplayTable, tool: string): ToolDisplaySpec;
|
|
41
|
-
/**
|
|
42
|
-
* Fill the fields a partial spec left out.
|
|
43
|
-
*
|
|
44
|
-
* A per-tool entry merges over the block's own `default` rather than over the
|
|
45
|
-
* shipped one, so a reader who writes `default: { output: tail }` keeps that
|
|
46
|
-
* choice for every tool that does not name its own.
|
|
47
|
-
*/
|
|
48
|
-
export declare function resolveToolDisplay(partial: Partial<ToolDisplaySpec> | undefined, fallback?: ToolDisplaySpec): ToolDisplaySpec;
|
|
49
37
|
/**
|
|
50
38
|
* Build the table a view reads.
|
|
51
39
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-display.d.ts","sourceRoot":"","sources":["../src/tool-display.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,+DAA+D;IAC/D,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,sDAAsD;IACtD,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAA;IAClC,yEAAyE;IACzE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED,
|
|
1
|
+
{"version":3,"file":"tool-display.d.ts","sourceRoot":"","sources":["../src/tool-display.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,+DAA+D;IAC/D,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,sDAAsD;IACtD,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAA;IAClC,yEAAyE;IACzE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED,yHAAyH;AACzH,MAAM,MAAM,kBAAkB,GAAG;IAAE,CAAC,UAAU,CAAC,IAAI,MAAM,eAAe,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC;CAAE,CAAA;AAEhG,iGAAiG;AACjG,eAAO,MAAM,oBAAoB,6BAA8B,CAAA;AAC/D,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAA;AAErE,4FAA4F;AAC5F,eAAO,MAAM,mBAAmB;;;;;CAEtB,CAAA;AAYV,4FAA4F;AAC5F,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAA;IACjC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAA;CAC1D;AAED,gFAAgF;AAChF,wBAAgB,cAAc,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,CAErF;AAoBD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAM,GAAG,gBAAgB,CAQjH"}
|
package/lib/tool-display.js
CHANGED
|
@@ -6,14 +6,14 @@ export const TOOL_OUTPUT_DISPLAYS = ['hidden', 'tail'];
|
|
|
6
6
|
export const TOOL_DISPLAY_LIMITS = {
|
|
7
7
|
tail: { min: 0, max: CARD_DETAIL_MAX },
|
|
8
8
|
};
|
|
9
|
-
/**
|
|
10
|
-
|
|
9
|
+
/** Fold cards and hide output initially so long reads, diffs, and searches do not bury the conversation. */
|
|
10
|
+
const DEFAULT_TOOL_DISPLAY = {
|
|
11
11
|
collapsed: true,
|
|
12
12
|
output: 'hidden',
|
|
13
13
|
tail: CARD_SHELL_PREVIEW,
|
|
14
14
|
};
|
|
15
15
|
/** The one name the block reserves: the row every tool without its own inherits. */
|
|
16
|
-
|
|
16
|
+
const DEFAULT_TOOL_ENTRY = 'default';
|
|
17
17
|
/** The display one tool draws with, falling back to the block's own default. */
|
|
18
18
|
export function toolDisplayFor(table, tool) {
|
|
19
19
|
return table.tools[tool] ?? table.default;
|
|
@@ -25,7 +25,7 @@ export function toolDisplayFor(table, tool) {
|
|
|
25
25
|
* shipped one, so a reader who writes `default: { output: tail }` keeps that
|
|
26
26
|
* choice for every tool that does not name its own.
|
|
27
27
|
*/
|
|
28
|
-
|
|
28
|
+
function resolveToolDisplay(partial, fallback = DEFAULT_TOOL_DISPLAY) {
|
|
29
29
|
return {
|
|
30
30
|
collapsed: partial?.collapsed ?? fallback.collapsed,
|
|
31
31
|
output: partial?.output ?? fallback.output,
|
package/lib/tool-display.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-display.js","sourceRoot":"","sources":["../src/tool-display.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAqBvD,iGAAiG;AACjG,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAU,CAAA;AAG/D,4FAA4F;AAC5F,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,eAAe,EAAE;CAC9B,CAAA;AAEV,
|
|
1
|
+
{"version":3,"file":"tool-display.js","sourceRoot":"","sources":["../src/tool-display.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAqBvD,iGAAiG;AACjG,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAU,CAAA;AAG/D,4FAA4F;AAC5F,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,eAAe,EAAE;CAC9B,CAAA;AAEV,4GAA4G;AAC5G,MAAM,oBAAoB,GAAoB;IAC5C,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,kBAAkB;CACzB,CAAA;AAED,oFAAoF;AACpF,MAAM,kBAAkB,GAAG,SAAS,CAAA;AAQpC,gFAAgF;AAChF,MAAM,UAAU,cAAc,CAAC,KAAuB,EAAE,IAAY;IAClE,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAA;AAC3C,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CACzB,OAA6C,EAC7C,WAA4B,oBAAoB;IAEhD,OAAO;QACL,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,QAAQ,CAAC,SAAS;QACnD,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,QAAQ,CAAC,MAAM;QAC1C,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,QAAQ,CAAC,IAAI;KACrC,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAA4D,EAAE;IAC7F,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAA;IAC1D,MAAM,KAAK,GAAoC,EAAE,CAAA;IACjD,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACpD,IAAI,IAAI,KAAK,kBAAkB;YAAE,SAAQ;QACzC,KAAK,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IACjD,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;AACjC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-content.d.ts","sourceRoot":"","sources":["../../src/transcript/message-content.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,uEAAuE;AACvE,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"message-content.d.ts","sourceRoot":"","sources":["../../src/transcript/message-content.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,uEAAuE;AACvE,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CA4BzD;AAED,sFAAsF;AACtF,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAEtD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CAqB3D"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* because reading a recorded message is the same whether the message arrived
|
|
8
8
|
* live or came back out of a log.
|
|
9
9
|
*/
|
|
10
|
-
/**
|
|
10
|
+
/** Non-object recorded blocks must not interrupt transcript reconstruction; object fields still need their own checks. */
|
|
11
11
|
function asRecord(value) {
|
|
12
12
|
return typeof value === 'object' && value !== null ? value : undefined;
|
|
13
13
|
}
|
|
@@ -16,7 +16,15 @@ export function contentLinesOf(content) {
|
|
|
16
16
|
if (!Array.isArray(content))
|
|
17
17
|
return [];
|
|
18
18
|
const lines = [];
|
|
19
|
-
|
|
19
|
+
// Heap-backed iterators retain depth-first order without consuming the JavaScript call stack.
|
|
20
|
+
const pending = [content.values()];
|
|
21
|
+
while (pending.length > 0) {
|
|
22
|
+
const item = pending[pending.length - 1].next();
|
|
23
|
+
if (item.done) {
|
|
24
|
+
pending.pop();
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
const block = item.value;
|
|
20
28
|
const record = asRecord(block);
|
|
21
29
|
if (record === undefined)
|
|
22
30
|
continue;
|
|
@@ -26,10 +34,14 @@ export function contentLinesOf(content) {
|
|
|
26
34
|
continue;
|
|
27
35
|
// Any block that carries text counts; a tool-result block also holds its
|
|
28
36
|
// model-facing content one level deeper.
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
37
|
+
// Recorded blocks can exceed the engine's argument limit; keep every line without argument spreading.
|
|
38
|
+
if (typeof record.text === 'string') {
|
|
39
|
+
for (const line of record.text.split('\n'))
|
|
40
|
+
lines.push(line);
|
|
41
|
+
}
|
|
42
|
+
if (Array.isArray(record.content)) {
|
|
43
|
+
pending.push(record.content.values());
|
|
44
|
+
}
|
|
33
45
|
}
|
|
34
46
|
return lines;
|
|
35
47
|
}
|
|
@@ -47,14 +59,24 @@ export function reasoningTextsOf(content) {
|
|
|
47
59
|
if (!Array.isArray(content))
|
|
48
60
|
return [];
|
|
49
61
|
const thoughts = [];
|
|
50
|
-
|
|
62
|
+
// Heap-backed iterators retain depth-first order without consuming the JavaScript call stack.
|
|
63
|
+
const pending = [content.values()];
|
|
64
|
+
while (pending.length > 0) {
|
|
65
|
+
const item = pending[pending.length - 1].next();
|
|
66
|
+
if (item.done) {
|
|
67
|
+
pending.pop();
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
const block = item.value;
|
|
51
71
|
const record = asRecord(block);
|
|
52
72
|
if (record === undefined)
|
|
53
73
|
continue;
|
|
54
74
|
if (record.type === 'reasoning' && typeof record.text === 'string')
|
|
55
75
|
thoughts.push(record.text);
|
|
56
|
-
|
|
57
|
-
|
|
76
|
+
// Nested recorded thoughts have the same unbounded block count as visible lines.
|
|
77
|
+
if (Array.isArray(record.content)) {
|
|
78
|
+
pending.push(record.content.values());
|
|
79
|
+
}
|
|
58
80
|
}
|
|
59
81
|
return thoughts;
|
|
60
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-content.js","sourceRoot":"","sources":["../../src/transcript/message-content.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,
|
|
1
|
+
{"version":3,"file":"message-content.js","sourceRoot":"","sources":["../../src/transcript/message-content.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type ToolCard, type ToolPresenter } from '../cards.ts';
|
|
2
2
|
import type { TranscriptEntry } from '../transcript.ts';
|
|
3
|
-
/**
|
|
3
|
+
/** Convert clock milliseconds so tool cards report elapsed time in whole seconds. */
|
|
4
4
|
export declare const SECOND_MS = 1000;
|
|
5
5
|
/**
|
|
6
6
|
* What is known about one call the fold has seen requested and not answered.
|
|
@@ -51,17 +51,19 @@ export declare class ToolCallFold {
|
|
|
51
51
|
* the row the first one drew instead of adding a second line for one call.
|
|
52
52
|
*/
|
|
53
53
|
private readonly pendingSub;
|
|
54
|
-
constructor(presenter: ToolPresenter
|
|
54
|
+
constructor(presenter: ToolPresenter, clock: () => number,
|
|
55
55
|
/** Reads back the card a settled row holds, so a dispatch or a result restates the row it drew. */
|
|
56
56
|
cardAt: (index: number) => ToolCard | undefined);
|
|
57
57
|
/** Fold one tool event, which is the only family of events that owns cross-event state. */
|
|
58
|
-
apply(type: string, data: Record<string, unknown>, landingIndex: number): ToolCallOutcome;
|
|
58
|
+
apply(type: string, data: Record<string, unknown>, landingIndex: number, at?: number): ToolCallOutcome;
|
|
59
|
+
/** Pending calls require time-only repaints even when their parent is idle. */
|
|
60
|
+
hasLiveCalls(): boolean;
|
|
59
61
|
/**
|
|
60
62
|
* How long one call has been in flight, or that it is not.
|
|
61
63
|
*
|
|
62
|
-
* The fold owns the request-
|
|
63
|
-
*
|
|
64
|
-
*
|
|
64
|
+
* The fold owns the request timestamp and pending-call lifecycle, so renderers
|
|
65
|
+
* need not maintain a second timing state. Each read samples the clock anew;
|
|
66
|
+
* reads within one frame can cross a whole-second boundary.
|
|
65
67
|
*/
|
|
66
68
|
liveCall(callId: string): LiveCallState;
|
|
67
69
|
/**
|
|
@@ -73,7 +75,7 @@ export declare class ToolCallFold {
|
|
|
73
75
|
*/
|
|
74
76
|
reset(): void;
|
|
75
77
|
/**
|
|
76
|
-
* Whole seconds
|
|
78
|
+
* Whole elapsed seconds preserve the original request clock across folds.
|
|
77
79
|
*
|
|
78
80
|
* Floored, not rounded: a duration that claims a second it has not waited yet
|
|
79
81
|
* would tick up before the call has been waiting that long.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-calls.d.ts","sourceRoot":"","sources":["../../src/transcript/tool-calls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AAE9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAGvD
|
|
1
|
+
{"version":3,"file":"tool-calls.d.ts","sourceRoot":"","sources":["../../src/transcript/tool-calls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AAE9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAGvD,qFAAqF;AACrF,eAAO,MAAM,SAAS,OAAO,CAAA;AAkB7B;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,uDAAuD;IACvD,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAA;IAC5C,kFAAkF;IAClF,QAAQ,CAAC,YAAY,EAAE,SAAS;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAA;KAAE,EAAE,CAAA;CAC9F;AAKD;;;;;;;;GAQG;AACH,qBAAa,YAAY;IAWrB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,mGAAmG;IACnG,OAAO,CAAC,QAAQ,CAAC,MAAM;IAbzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiF;gBAGzF,SAAS,EAAE,aAAa,EACxB,KAAK,EAAE,MAAM,MAAM;IACpC,mGAAmG;IAClF,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,QAAQ,GAAG,SAAS;IAGlE,2FAA2F;IAC3F,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,SAAe,GAAG,eAAe;IAe5G,+EAA+E;IAC/E,YAAY,IAAI,OAAO;IAIvB;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa;IAMvC;;;;;;OAMG;IACH,KAAK,IAAI,IAAI;IAKb;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAIpB,kFAAkF;IAClF,OAAO,CAAC,QAAQ;IAiBhB;;;;;;;OAOG;IACH,OAAO,CAAC,OAAO;IAwDf;;;;;;;;OAQG;IACH,OAAO,CAAC,aAAa;IAWrB,8FAA8F;IAC9F,OAAO,CAAC,YAAY;CAkDrB"}
|