@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/ui/view.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TranscriptDocument } from "./view/document.js";
|
|
2
2
|
import {} from "./picker.js";
|
|
3
3
|
import { pickerCardLines } from "./picker-card.js";
|
|
4
4
|
import { ANSWER_FACE } from "./markdown.js";
|
|
5
5
|
import {} from "./frame.js";
|
|
6
|
-
import { gapRows,
|
|
6
|
+
import { gapRows, pushGap } from "./gap.js";
|
|
7
7
|
import {} from "../theme.js";
|
|
8
8
|
import {} from "../theme-tokens.js";
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
9
|
+
import {} from "../tool-display.js";
|
|
10
|
+
import {} from "../spacing.js";
|
|
11
11
|
import { SECOND_MS } from "../transcript/tool-calls.js";
|
|
12
12
|
import {} from "../transcript.js";
|
|
13
13
|
import {} from "../gates.js";
|
|
14
|
-
import {
|
|
14
|
+
import { hintKeys } from "../input/actions.js";
|
|
15
15
|
import { visibleWidth, wrapTextWithAnsi } from '@earendil-works/pi-tui';
|
|
16
16
|
import { GateCards } from "./view/gate-card.js";
|
|
17
17
|
import { Messages } from "./view/transcript-message.js";
|
|
@@ -20,7 +20,7 @@ import { ToolCards } from "./view/tool-card.js";
|
|
|
20
20
|
const REASONING_FOLD_FALLBACK = 'shift+tab';
|
|
21
21
|
const CARD_OPEN_FALLBACK = 'ctrl+o';
|
|
22
22
|
/**
|
|
23
|
-
* The state a reader gets before opening anything
|
|
23
|
+
* The state a reader gets before opening anything.
|
|
24
24
|
*
|
|
25
25
|
* Thoughts start folded because they can be long enough to push the answer off
|
|
26
26
|
* the screen. Cards start from the reader's own `tools:` settings, which ship
|
|
@@ -49,40 +49,14 @@ export class TranscriptView {
|
|
|
49
49
|
theme;
|
|
50
50
|
markdown;
|
|
51
51
|
options;
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Fold choices the reader made by clicking, per message.
|
|
55
|
-
*
|
|
56
|
-
* Absent means the key or the tool's own policy decides, so a settings edit
|
|
57
|
-
* stays in charge of messages nobody clicked. Keyed by the call or thought id
|
|
58
|
-
* rather than by the entry, because a result replaces the entry a click was
|
|
59
|
-
* made on and a thought outlives the live row that streamed it.
|
|
60
|
-
*/
|
|
52
|
+
document;
|
|
61
53
|
clicked = new Map();
|
|
62
|
-
|
|
63
|
-
spans = [];
|
|
64
|
-
/** The same spans relative to their entry, so a cached entry still answers clicks. */
|
|
65
|
-
entrySpans = new WeakMap();
|
|
66
|
-
/**
|
|
67
|
-
* The framed rows each entry drew last render, for reading a copy back out.
|
|
68
|
-
*
|
|
69
|
-
* Relative to the entry for the same reason the spans are: a cached entry draws
|
|
70
|
-
* no rows this frame and still has to answer for what it drew before.
|
|
71
|
-
*/
|
|
72
|
-
entryCopy = new WeakMap();
|
|
73
|
-
/**
|
|
74
|
-
* The framed rows the in-flight entries drew this frame.
|
|
75
|
-
*
|
|
76
|
-
* They cannot be kept by entry the way the settled ones are: every frame builds
|
|
77
|
-
* a live entry as a fresh object, so a map keyed by it would never answer. A copy
|
|
78
|
-
* is read against the last frame, so it is the render that keeps them.
|
|
79
|
-
*/
|
|
80
|
-
liveCopy = [];
|
|
54
|
+
presentationRevision = 0;
|
|
81
55
|
cards;
|
|
82
56
|
messages;
|
|
83
57
|
gates;
|
|
84
|
-
/**
|
|
85
|
-
constructor(model, theme, markdown, options
|
|
58
|
+
/** Presentation policy stays here; the document retains rows with their hit and copy metadata. */
|
|
59
|
+
constructor(model, theme, markdown, options) {
|
|
86
60
|
this.model = model;
|
|
87
61
|
this.theme = theme;
|
|
88
62
|
this.markdown = markdown;
|
|
@@ -90,26 +64,31 @@ export class TranscriptView {
|
|
|
90
64
|
this.cards = new ToolCards({ theme: this.theme, keymap: () => this.keymap(), toolDisplay: tool => this.toolDisplay(tool), expansionOf: entry => this.expansionOf(entry), subCallsOpen: entry => this.subCallsOpen(entry), liveCall: callId => this.model.liveCall(callId), cardOpenHint: () => hintKeys(this.keymap(), 'surface.toolDetail') || CARD_OPEN_FALLBACK, toolKey: id => toolClickKey(id), subCallsKey: id => nestedCallsClickKey(id), subCallKey: (parentId, id) => subCallClickKey(parentId, id), subCallOpen: (parentId, id) => this.subCallOpen(parentId, id) });
|
|
91
65
|
this.messages = new Messages({ theme: this.theme, markdown: this.markdown, reasoningOpen: entry => this.reasoningOpen(entry), reasoningFoldHint: () => this.reasoningFoldHint(), reasoningKey: id => reasoningClickKey(id), spacing: () => this.air(), pushWrapped: (lines, text, width, prefix, token) => this.pushWrapped(lines, text, width, prefix, token) });
|
|
92
66
|
this.gates = new GateCards({ theme: this.theme, pushWrapped: (lines, text, width, prefix, token) => this.pushWrapped(lines, text, width, prefix, token) });
|
|
93
|
-
this.
|
|
67
|
+
this.document = new TranscriptDocument({
|
|
68
|
+
model,
|
|
69
|
+
entryTag: (entry, base) => this.entryTag(entry, base),
|
|
70
|
+
clocked: entry => this.isLive(entry) || (entry.kind === 'reasoning' && entry.live),
|
|
71
|
+
renderEntry: (entry, lines, width, live, spans, copy) => this.renderEntry(entry, lines, width, live, spans, copy),
|
|
72
|
+
});
|
|
94
73
|
}
|
|
95
74
|
get viewState() {
|
|
96
|
-
return this.options.state
|
|
75
|
+
return this.options.state();
|
|
97
76
|
}
|
|
98
77
|
/** The display the reader configured for a tool, or the shipped one. */
|
|
99
78
|
toolDisplay(tool) {
|
|
100
|
-
return this.options.toolDisplay
|
|
79
|
+
return this.options.toolDisplay(tool);
|
|
101
80
|
}
|
|
102
81
|
/** The air in force, or the shipped spacing for a caller that lent none. */
|
|
103
82
|
air() {
|
|
104
|
-
return this.options.spacing
|
|
83
|
+
return this.options.spacing();
|
|
105
84
|
}
|
|
106
85
|
/**
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
86
|
+
* Whether one tool message draws open.
|
|
87
|
+
*
|
|
88
|
+
* A click outranks the key, which outranks the tool's start state: Ctrl+O
|
|
89
|
+
* stays "show me everything", while one clicked message keeps the state the
|
|
90
|
+
* reader gave it.
|
|
91
|
+
*/
|
|
113
92
|
expansionOf(entry) {
|
|
114
93
|
const key = toolClickKey(entry.id);
|
|
115
94
|
const clicked = key === undefined ? undefined : this.clicked.get(key);
|
|
@@ -147,19 +126,19 @@ export class TranscriptView {
|
|
|
147
126
|
return clicked ?? this.viewState.expandSubCalls;
|
|
148
127
|
}
|
|
149
128
|
/**
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
129
|
+
* Answer a click on a message by folding or unfolding that one row.
|
|
130
|
+
*
|
|
131
|
+
* The tightest span under the point wins, so a click on a dispatched call
|
|
132
|
+
* opens that call rather than the card around it. Only a left click is
|
|
133
|
+
* consumed: a press, a drag, and a wheel belong to the surface's own
|
|
134
|
+
* selection and scrolling, and a row that swallowed them would cost the
|
|
135
|
+
* reader the ability to copy the command it just drew.
|
|
136
|
+
*/
|
|
158
137
|
handleMouse(event) {
|
|
159
138
|
if (event.type !== 'click' || event.button !== 'left')
|
|
160
139
|
return undefined;
|
|
161
140
|
let span;
|
|
162
|
-
for (const candidate of this.spans) {
|
|
141
|
+
for (const candidate of this.document.spans) {
|
|
163
142
|
if (event.y < candidate.start || event.y >= candidate.end)
|
|
164
143
|
continue;
|
|
165
144
|
if (span === undefined || candidate.end - candidate.start < span.end - span.start)
|
|
@@ -167,6 +146,7 @@ export class TranscriptView {
|
|
|
167
146
|
}
|
|
168
147
|
if (span === undefined)
|
|
169
148
|
return undefined;
|
|
149
|
+
this.presentationRevision++;
|
|
170
150
|
// One click on a program's header opens the one level under it: the calls the
|
|
171
151
|
// program dispatched, each still the single row it is read at. The program's
|
|
172
152
|
// own body is the level below that, and it stays folded here because a click
|
|
@@ -180,18 +160,16 @@ export class TranscriptView {
|
|
|
180
160
|
return { handled: true, render: true };
|
|
181
161
|
}
|
|
182
162
|
invalidate() {
|
|
183
|
-
|
|
184
|
-
// anyway; an explicit invalidate means the caller wants them rebuilt.
|
|
185
|
-
this.rows.clear();
|
|
163
|
+
this.document.invalidate();
|
|
186
164
|
}
|
|
187
165
|
/**
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
166
|
+
* Wrap one text block under a prefix, keeping the prefix's column budget.
|
|
167
|
+
*
|
|
168
|
+
* The block is drawn before it is wrapped: a sequence a terminal would have
|
|
169
|
+
* acted on has to be gone before pi-tui measures the row, and a tab has to
|
|
170
|
+
* land on the stop the writer saw rather than one a wrapper would guess at.
|
|
171
|
+
* The prefix seeds that stop, because it is already on the row.
|
|
172
|
+
*/
|
|
195
173
|
pushWrapped(lines, text, width, prefix, token) {
|
|
196
174
|
const lead = visibleWidth(prefix);
|
|
197
175
|
const indent = ' '.repeat(lead);
|
|
@@ -202,18 +180,18 @@ export class TranscriptView {
|
|
|
202
180
|
}
|
|
203
181
|
/** The live map, or the shipped one for a caller that did not lend one. */
|
|
204
182
|
keymap() {
|
|
205
|
-
return this.options.keys
|
|
183
|
+
return this.options.keys();
|
|
206
184
|
}
|
|
207
185
|
reasoningFoldHint() {
|
|
208
186
|
return hintKeys(this.keymap(), 'surface.reasoning') || REASONING_FOLD_FALLBACK;
|
|
209
187
|
}
|
|
210
188
|
/**
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
189
|
+
* Whether any part of one card is still in flight.
|
|
190
|
+
*
|
|
191
|
+
* Only a card with work outstanding has a clock attached to its cache, so the
|
|
192
|
+
* moment the last call settles the row stops being rebuilt: a program that
|
|
193
|
+
* came back must not keep spending the cache its result is now stored in.
|
|
194
|
+
*/
|
|
217
195
|
isLive(entry) {
|
|
218
196
|
if (entry.kind !== 'tool')
|
|
219
197
|
return false;
|
|
@@ -271,105 +249,48 @@ export class TranscriptView {
|
|
|
271
249
|
return;
|
|
272
250
|
}
|
|
273
251
|
}
|
|
252
|
+
/** Entry folds remain local so a click does not spend every settled row's cache. */
|
|
253
|
+
entryTag(entry, base) {
|
|
254
|
+
const open = entry.kind === 'tool' ? this.expansionOf(entry) : entry.kind === 'reasoning' ? this.reasoningOpen(entry) : undefined;
|
|
255
|
+
const shape = entry.kind === 'tool' && this.subCallsOpen(entry) ? 'P' : 'p';
|
|
256
|
+
const marks = entry.kind === 'tool'
|
|
257
|
+
? `${open === true ? '+' : '-'}${shape}${(entry.card.subCalls ?? []).map(call => (this.subCallOpen(entry.id, call.id) ? '1' : '0')).join('')}`
|
|
258
|
+
: open === true ? '+' : '-';
|
|
259
|
+
const clock = this.isLive(entry) ? `|${Math.floor(this.model.now() / SECOND_MS)}` : '';
|
|
260
|
+
return `${base}|${marks}${clock}`;
|
|
261
|
+
}
|
|
274
262
|
render(width) {
|
|
275
263
|
if (width <= 0)
|
|
276
264
|
return [];
|
|
277
265
|
const state = this.viewState;
|
|
278
|
-
// The revision is part of the key: rows drawn under an older theme table
|
|
279
|
-
// must miss, or a settings change would restyle only the rows that happened
|
|
280
|
-
// to be redrawn for another reason.
|
|
281
|
-
// The air the reader asked for is part of the key for the same reason: the rows
|
|
282
|
-
// an entry holds are its own air plus its own body.
|
|
283
266
|
const gaps = this.air();
|
|
284
|
-
const
|
|
285
|
-
|
|
286
|
-
const
|
|
287
|
-
const
|
|
288
|
-
const
|
|
289
|
-
const
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
const open = entry.kind === 'tool' ? this.expansionOf(entry) : entry.kind === 'reasoning' ? this.reasoningOpen(entry) : undefined;
|
|
296
|
-
// Whether a program's calls are drawn is part of the key, because it moves
|
|
297
|
-
// rows the card's own fold does not: the calls come and go under a header
|
|
298
|
-
// that stays where it is, and a cached entry would keep answering with what
|
|
299
|
-
// the reader had already clicked away from.
|
|
300
|
-
const shape = entry.kind === 'tool' && this.subCallsOpen(entry) ? 'P' : 'p';
|
|
301
|
-
const marks = entry.kind === 'tool'
|
|
302
|
-
? `${open === true ? '+' : '-'}${shape}${(entry.card.subCalls ?? []).map(call => (this.subCallOpen(entry.id, call.id) ? '1' : '0')).join('')}`
|
|
303
|
-
: open === true ? '+' : '-';
|
|
304
|
-
// A running row is drawn from a clock the rest of the row is not, so its
|
|
305
|
-
// cache is spent every second: the entries after it stay put, and a card
|
|
306
|
-
// waiting out a two-minute run keeps saying so instead of freezing at the
|
|
307
|
-
// first second it was drawn.
|
|
308
|
-
const tag = `${baseTag}|${marks}${this.isLive(entry) ? `|${Math.floor(this.model.now() / SECOND_MS)}` : ''}`;
|
|
309
|
-
const local = [];
|
|
310
|
-
const copy = [];
|
|
311
|
-
const rows = [];
|
|
312
|
-
// The in-flight rows change on every frame, so caching them would only
|
|
313
|
-
// fill the cache with objects nobody will ask for again.
|
|
314
|
-
if (index >= settled) {
|
|
315
|
-
this.renderEntry(entry, rows, width, true, local, copy);
|
|
316
|
-
// A row still arriving is drawn every frame, so it is never cached: its
|
|
317
|
-
// copy account goes to the frame rather than to an entry nobody can name.
|
|
318
|
-
liveCopy.push(...copy);
|
|
319
|
-
}
|
|
320
|
-
else {
|
|
321
|
-
const cached = this.rows.lookup(entry, tag);
|
|
322
|
-
const saved = this.entrySpans.get(entry);
|
|
323
|
-
const savedCopy = this.entryCopy.get(entry);
|
|
324
|
-
if (cached !== undefined && saved !== undefined && savedCopy !== undefined) {
|
|
325
|
-
rows.push(...cached);
|
|
326
|
-
local.push(...saved);
|
|
327
|
-
}
|
|
328
|
-
else {
|
|
329
|
-
this.renderEntry(entry, rows, width, false, local, copy);
|
|
330
|
-
this.rows.store(entry, tag, rows);
|
|
331
|
-
this.entrySpans.set(entry, local);
|
|
332
|
-
this.entryCopy.set(entry, copy);
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
// The entry goes in through the seam rather than straight onto the rows drawn
|
|
336
|
-
// so far: the air it opens with is given up when the row above is already air,
|
|
337
|
-
// so a break between two things stays one break however many asked for one.
|
|
338
|
-
const base = start - placeGap(lines, rows);
|
|
339
|
-
// A span is kept relative to its entry so a cached entry can still hand it
|
|
340
|
-
// back, and the row of air a seam dropped moves it with the rows that stayed.
|
|
341
|
-
for (const span of local) {
|
|
342
|
-
spans.push({ ...span, start: span.start + base, end: span.end + base });
|
|
343
|
-
}
|
|
344
|
-
}
|
|
345
|
-
this.spans = spans;
|
|
346
|
-
this.liveCopy = liveCopy;
|
|
347
|
-
const picker = this.options.picker?.();
|
|
267
|
+
const keys = this.keymap();
|
|
268
|
+
// Width, folds, theme, spacing, and key hints can change without a transcript event.
|
|
269
|
+
const base = `${width}|${state.expandCards ? 'c' : '-'}${state.expandReasoning ? 'r' : '-'}${state.expandSubCalls ? 'p' : '-'}|${this.theme.revision}|${gaps.messages}:${gaps.steps}|${hintKeys(keys, 'surface.toolDetail')}|${hintKeys(keys, 'surface.reasoning')}`;
|
|
270
|
+
const retained = this.document.render(width, base, this.presentationRevision);
|
|
271
|
+
const picker = this.options.picker();
|
|
272
|
+
const gate = this.options.gate();
|
|
273
|
+
// pi-tui requires string[] but borrows child rows; the native PTY gate protects this pinned boundary.
|
|
274
|
+
if (picker === undefined && gate === undefined)
|
|
275
|
+
return retained;
|
|
276
|
+
// Overlays have independent mutable state and must never enter the retained conversation.
|
|
277
|
+
const lines = [...retained];
|
|
348
278
|
if (picker !== undefined)
|
|
349
279
|
this.pushPicker(lines, picker, width);
|
|
350
|
-
const gate = this.options.gate?.();
|
|
351
280
|
if (gate !== undefined)
|
|
352
281
|
this.gates.pushGate(lines, gate, width);
|
|
353
282
|
return lines;
|
|
354
283
|
}
|
|
355
284
|
/**
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
285
|
+
* The framed rows the last render drew, in the order the transcript reads.
|
|
286
|
+
*
|
|
287
|
+
* A copy of a selection is read off the screen, so it carries the frame the
|
|
288
|
+
* surface drew around a message — the sides, the padding beside them, and the
|
|
289
|
+
* rules above and below. This is the account that lets the surface take its own
|
|
290
|
+
* frame back out of a copy without ever touching a character the reader wrote.
|
|
291
|
+
*/
|
|
363
292
|
copyRows() {
|
|
364
|
-
|
|
365
|
-
for (const entry of this.model.entries()) {
|
|
366
|
-
const saved = this.entryCopy.get(entry);
|
|
367
|
-
if (saved !== undefined)
|
|
368
|
-
rows.push(...saved);
|
|
369
|
-
}
|
|
370
|
-
// The rows still arriving are not kept by entry, so they come from the frame.
|
|
371
|
-
rows.push(...this.liveCopy);
|
|
372
|
-
return rows;
|
|
293
|
+
return this.document.copyRows();
|
|
373
294
|
}
|
|
374
295
|
}
|
|
375
296
|
//# sourceMappingURL=view.js.map
|
package/lib/ui/view.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/ui/view.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/ui/view.ts"],"names":[],"mappings":"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"}
|
package/lib/work.d.ts
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import type { FoldableEvent } from './transcript.ts';
|
|
2
|
-
/**
|
|
2
|
+
/** Keep provenance separate from rendering so empty boards do not claim an unwritten history. */
|
|
3
|
+
declare const TODO_STATES: {
|
|
4
|
+
readonly neverWritten: "never-written";
|
|
5
|
+
readonly written: "written";
|
|
6
|
+
readonly turnCleared: "turn-cleared";
|
|
7
|
+
};
|
|
8
|
+
type TodoState = typeof TODO_STATES[keyof typeof TODO_STATES];
|
|
9
|
+
/** Share the surface's content/status contract between the durable fold, dock, and guard without importing the agent-owned tool. */
|
|
3
10
|
export interface TodoEntry {
|
|
4
11
|
readonly content: string;
|
|
5
12
|
readonly status: 'pending' | 'in_progress' | 'completed';
|
|
@@ -22,12 +29,12 @@ export interface GoalState {
|
|
|
22
29
|
export interface WorkState {
|
|
23
30
|
readonly planMode: boolean;
|
|
24
31
|
readonly todos: readonly TodoEntry[] | undefined;
|
|
32
|
+
/** Retain why the board is absent so commands cannot mistake a turn boundary for unwritten history. */
|
|
33
|
+
readonly todoState: TodoState;
|
|
25
34
|
readonly goal: GoalState | undefined;
|
|
26
35
|
}
|
|
27
|
-
/** What the reader most needs to see first: work in flight, then work left. */
|
|
28
|
-
export declare function orderTodos(todos: readonly TodoEntry[]): readonly TodoEntry[];
|
|
29
36
|
/** The todo list as plain lines, for a reader who asked for it by name. */
|
|
30
|
-
export declare function describeTodos(todos: readonly TodoEntry[] | undefined): string;
|
|
37
|
+
export declare function describeTodos(todos: readonly TodoEntry[] | undefined, todoState: TodoState): string;
|
|
31
38
|
/**
|
|
32
39
|
* Plan mode as the package that owns it reports it.
|
|
33
40
|
*
|
|
@@ -41,12 +48,6 @@ export interface PlanModeState {
|
|
|
41
48
|
/** A selection waiting for the next turn boundary; absent once it is applied. */
|
|
42
49
|
readonly pending?: boolean;
|
|
43
50
|
}
|
|
44
|
-
/** The plan controller, described structurally so the surface needs no import of it. */
|
|
45
|
-
export interface PlanModeController {
|
|
46
|
-
get(agent: unknown): unknown;
|
|
47
|
-
}
|
|
48
|
-
/** The name the plan package registers under, in the container and in a preset scope. */
|
|
49
|
-
export declare const PLAN_SERVICE = "planMode";
|
|
50
51
|
/**
|
|
51
52
|
* Where the surface asks for a service.
|
|
52
53
|
*
|
|
@@ -89,9 +90,11 @@ export declare function planToggleLine(active: boolean): string;
|
|
|
89
90
|
export declare class WorkFold {
|
|
90
91
|
private planMode;
|
|
91
92
|
private todos;
|
|
93
|
+
private todoState;
|
|
92
94
|
private goal;
|
|
93
95
|
state(): WorkState;
|
|
94
96
|
reset(): void;
|
|
95
97
|
apply(event: FoldableEvent): void;
|
|
96
98
|
}
|
|
99
|
+
export {};
|
|
97
100
|
//# sourceMappingURL=work.d.ts.map
|
package/lib/work.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"work.d.ts","sourceRoot":"","sources":["../src/work.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAEpD,
|
|
1
|
+
{"version":3,"file":"work.d.ts","sourceRoot":"","sources":["../src/work.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAEpD,iGAAiG;AACjG,QAAA,MAAM,WAAW;;;;CAIP,CAAA;AAQV,KAAK,SAAS,GAAG,OAAO,WAAW,CAAC,MAAM,OAAO,WAAW,CAAC,CAAA;AAE7D,oIAAoI;AACpI,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,CAAA;CACzD;AAED,gEAAgE;AAChE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IACtC;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;CAChD;AAED,gEAAgE;AAChE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,GAAG,SAAS,CAAA;IAChD,uGAAuG;IACvG,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;IAC7B,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,CAAA;CACrC;AAqCD,2EAA2E;AAC3E,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,GAAG,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,MAAM,CAOnG;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,wBAAwB;IACxB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,iFAAiF;IACjF,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAC3B;AAUD;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;IAC1C,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;CAC7D;AAgBD,0FAA0F;AAC1F,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,GAAG,aAAa,GAAG,SAAS,CAI9F;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAG/F;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAEtD;AAED;;;;;;;;;GASG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,KAAK,CAAkC;IAC/C,OAAO,CAAC,SAAS,CAAsC;IACvD,OAAO,CAAC,IAAI,CAAuB;IAEnC,KAAK,IAAI,SAAS;IAMlB,KAAK,IAAI,IAAI;IAOb,KAAK,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;CAuDlC"}
|
package/lib/work.js
CHANGED
|
@@ -1,8 +1,22 @@
|
|
|
1
|
-
|
|
1
|
+
/** Keep provenance separate from rendering so empty boards do not claim an unwritten history. */
|
|
2
|
+
const TODO_STATES = {
|
|
3
|
+
neverWritten: 'never-written',
|
|
4
|
+
written: 'written',
|
|
5
|
+
turnCleared: 'turn-cleared',
|
|
6
|
+
};
|
|
7
|
+
/** A turn boundary is not an explicit empty write; the command must name the actual cause. */
|
|
8
|
+
const TODO_EMPTY_DESCRIPTIONS = {
|
|
9
|
+
[TODO_STATES.neverWritten]: 'no todo list has been written in this session',
|
|
10
|
+
[TODO_STATES.written]: 'the todo list is empty',
|
|
11
|
+
[TODO_STATES.turnCleared]: 'the todo list was cleared when this turn started',
|
|
12
|
+
};
|
|
13
|
+
const EMPTY = { planMode: false, todos: undefined, todoState: TODO_STATES.neverWritten, goal: undefined };
|
|
2
14
|
function asRecord(value) {
|
|
3
15
|
return typeof value === 'object' && value !== null ? value : undefined;
|
|
4
16
|
}
|
|
5
17
|
const TODO_STATUSES = new Set(['pending', 'in_progress', 'completed']);
|
|
18
|
+
/** Recover displayable entries from the current snapshot so one malformed item
|
|
19
|
+
* does not hide valid siblings or leave an older checklist on screen. */
|
|
6
20
|
function todoEntries(value) {
|
|
7
21
|
if (!Array.isArray(value))
|
|
8
22
|
return [];
|
|
@@ -24,20 +38,21 @@ const TODO_GLYPHS = {
|
|
|
24
38
|
completed: '☑',
|
|
25
39
|
};
|
|
26
40
|
/** What the reader most needs to see first: work in flight, then work left. */
|
|
27
|
-
|
|
41
|
+
function orderTodos(todos) {
|
|
28
42
|
const rank = { in_progress: 0, pending: 1, completed: 2 };
|
|
29
43
|
return [...todos].sort((left, right) => rank[left.status] - rank[right.status]);
|
|
30
44
|
}
|
|
31
45
|
/** The todo list as plain lines, for a reader who asked for it by name. */
|
|
32
|
-
export function describeTodos(todos) {
|
|
33
|
-
if (todos === undefined || todos.length === 0)
|
|
34
|
-
return
|
|
46
|
+
export function describeTodos(todos, todoState) {
|
|
47
|
+
if (todos === undefined || todos.length === 0) {
|
|
48
|
+
return TODO_EMPTY_DESCRIPTIONS[todoState];
|
|
49
|
+
}
|
|
35
50
|
const done = todos.filter(todo => todo.status === 'completed').length;
|
|
36
51
|
const rows = orderTodos(todos).map(todo => ` ${TODO_GLYPHS[todo.status]} ${todo.content}`);
|
|
37
52
|
return [`todos · ${done}/${todos.length} done`, ...rows].join('\n');
|
|
38
53
|
}
|
|
39
54
|
/** The name the plan package registers under, in the container and in a preset scope. */
|
|
40
|
-
|
|
55
|
+
const PLAN_SERVICE = 'planMode';
|
|
41
56
|
function asController(value) {
|
|
42
57
|
const record = asRecord(value);
|
|
43
58
|
if (typeof record?.get !== 'function')
|
|
@@ -93,15 +108,17 @@ export function planToggleLine(active) {
|
|
|
93
108
|
export class WorkFold {
|
|
94
109
|
planMode = false;
|
|
95
110
|
todos;
|
|
111
|
+
todoState = TODO_STATES.neverWritten;
|
|
96
112
|
goal;
|
|
97
113
|
state() {
|
|
98
|
-
return this.planMode || this.
|
|
99
|
-
? { planMode: this.planMode, todos: this.todos, goal: this.goal }
|
|
114
|
+
return this.planMode || this.todoState !== TODO_STATES.neverWritten || this.goal !== undefined
|
|
115
|
+
? { planMode: this.planMode, todos: this.todos, todoState: this.todoState, goal: this.goal }
|
|
100
116
|
: EMPTY;
|
|
101
117
|
}
|
|
102
118
|
reset() {
|
|
103
119
|
this.planMode = false;
|
|
104
120
|
this.todos = undefined;
|
|
121
|
+
this.todoState = TODO_STATES.neverWritten;
|
|
105
122
|
this.goal = undefined;
|
|
106
123
|
}
|
|
107
124
|
apply(event) {
|
|
@@ -115,10 +132,15 @@ export class WorkFold {
|
|
|
115
132
|
// because a new task must not inherit the previous turn's checklist; the
|
|
116
133
|
// fold follows the same rule or every surface disagrees.
|
|
117
134
|
this.todos = undefined;
|
|
135
|
+
// A boundary cannot clear a checklist that this session never wrote.
|
|
136
|
+
if (this.todoState !== TODO_STATES.neverWritten)
|
|
137
|
+
this.todoState = TODO_STATES.turnCleared;
|
|
118
138
|
return;
|
|
119
139
|
case 'todo/write': {
|
|
120
140
|
const entries = todoEntries(data.todos);
|
|
141
|
+
// Keep the existing board projection; provenance prevents commands from mistaking emptiness for no writes.
|
|
121
142
|
this.todos = entries.length === 0 ? undefined : entries;
|
|
143
|
+
this.todoState = TODO_STATES.written;
|
|
122
144
|
return;
|
|
123
145
|
}
|
|
124
146
|
case 'goal/change': {
|
package/lib/work.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"work.js","sourceRoot":"","sources":["../src/work.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"work.js","sourceRoot":"","sources":["../src/work.ts"],"names":[],"mappings":"AAEA,iGAAiG;AACjG,MAAM,WAAW,GAAG;IAClB,YAAY,EAAE,eAAe;IAC7B,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,cAAc;CACnB,CAAA;AACV,8FAA8F;AAC9F,MAAM,uBAAuB,GAAG;IAC9B,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,+CAA+C;IAC3E,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,wBAAwB;IAC/C,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,kDAAkD;CACrE,CAAA;AAkCV,MAAM,KAAK,GAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;AAEpH,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAE,KAAiC,CAAC,CAAC,CAAC,SAAS,CAAA;AACrG,CAAC;AAED,MAAM,aAAa,GAAG,IAAI,GAAG,CAAsB,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAA;AAE3F;yEACyE;AACzE,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACpC,MAAM,OAAO,GAAgB,EAAE,CAAA;IAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC7B,MAAM,MAAM,GAAG,MAAM,EAAE,MAAM,CAAA;QAC7B,IAAI,OAAO,MAAM,EAAE,OAAO,KAAK,QAAQ;YAAE,SAAQ;QACjD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAA6B,CAAC;YAAE,SAAQ;QAC7F,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAA6B,EAAE,CAAC,CAAA;IAClF,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,WAAW,GAAkD;IACjE,OAAO,EAAE,GAAG;IACZ,WAAW,EAAE,GAAG;IAChB,SAAS,EAAE,GAAG;CACf,CAAA;AAED,+EAA+E;AAC/E,SAAS,UAAU,CAAC,KAA2B;IAC7C,MAAM,IAAI,GAAwC,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAA;IAC9F,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;AACjF,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,aAAa,CAAC,KAAuC,EAAE,SAAoB;IACzF,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9C,OAAO,uBAAuB,CAAC,SAAS,CAAC,CAAA;IAC3C,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,MAAM,CAAA;IACrE,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;IAC3F,OAAO,CAAC,WAAW,IAAI,IAAI,KAAK,CAAC,MAAM,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACrE,CAAC;AAqBD,yFAAyF;AACzF,MAAM,YAAY,GAAG,UAAU,CAAA;AAe/B,SAAS,YAAY,CAAC,KAAc;IAClC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC9B,IAAI,OAAO,MAAM,EAAE,GAAG,KAAK,UAAU;QAAE,OAAO,SAAS,CAAA;IACvD,OAAO,MAAuC,CAAA;AAChD,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC9B,IAAI,OAAO,MAAM,EAAE,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACzD,OAAO,OAAO,MAAM,CAAC,OAAO,KAAK,SAAS;QACxC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE;QACpD,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAA;AAC/B,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,aAAa,CAAC,MAAqB,EAAE,KAAc;IACjE,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAA;IACpG,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IAC9C,OAAO,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;AAC3C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAgC,EAAE,QAAiB;IACpF,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAA;IACxC,OAAO,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,CAAA;AACtC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,MAAe;IAC5C,OAAO,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAA;AACvC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,OAAO,QAAQ;IACX,QAAQ,GAAG,KAAK,CAAA;IAChB,KAAK,CAAkC;IACvC,SAAS,GAAc,WAAW,CAAC,YAAY,CAAA;IAC/C,IAAI,CAAuB;IAEnC,KAAK;QACH,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,KAAK,WAAW,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;YAC5F,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;YAC5F,CAAC,CAAC,KAAK,CAAA;IACX,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;QACrB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;QACtB,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,YAAY,CAAA;QACzC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAA;IACvB,CAAC;IAED,KAAK,CAAC,KAAoB;QACxB,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;QACvC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,WAAW;gBACd,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,CAAA;gBACpC,OAAM;YACR,KAAK,YAAY;gBACf,wEAAwE;gBACxE,yEAAyE;gBACzE,yDAAyD;gBACzD,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;gBACtB,qEAAqE;gBACrE,IAAI,IAAI,CAAC,SAAS,KAAK,WAAW,CAAC,YAAY;oBAAE,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,WAAW,CAAA;gBACzF,OAAM;YACR,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACvC,2GAA2G;gBAC3G,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAA;gBACvD,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,OAAO,CAAA;gBACpC,OAAM;YACR,CAAC;YACD,KAAK,aAAa,CAAC,CAAC,CAAC;gBACnB,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC1D,IAAI,CAAC,IAAI,GAAG,SAAS,CAAA;oBACrB,OAAM;gBACR,CAAC;gBACD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAChC,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,CAAA;gBACjC,IAAI,OAAO,SAAS,KAAK,QAAQ;oBAAE,OAAM;gBACzC,sEAAsE;gBACtE,uEAAuE;gBACvE,2DAA2D;gBAC3D,IAAI,IAAI,CAAC,SAAS,KAAK,UAAU,IAAI,IAAI,EAAE,KAAK,KAAK,UAAU,EAAE,CAAC;oBAChE,IAAI,CAAC,IAAI,GAAG,SAAS,CAAA;oBACrB,OAAM;gBACR,CAAC;gBACD,MAAM,SAAS,GAAG,IAAI,EAAE,aAAa,CAAA;gBACrC,MAAM,aAAa,GAAG,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ;oBAC1D,CAAC,CAAC,IAAI,CAAC,aAAa;oBACpB,CAAC,CAAC,OAAO,IAAI,EAAE,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;gBACpE,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,CAAA;gBACzB,IAAI,CAAC,IAAI,GAAG;oBACV,SAAS;oBACT,aAAa;oBACb,SAAS,EAAE,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;oBAChE,uEAAuE;oBACvE,0EAA0E;oBAC1E,KAAK,EAAE,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ;iBACpE,CAAA;gBACD,OAAM;YACR,CAAC;YACD;gBACE,OAAM;QACV,CAAC;IACH,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sagmans/dsh-tui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.0",
|
|
4
4
|
"description": "Terminal (CLI TUI) surface for DeepSeek Harness: interactive dsh in a terminal, no browser required",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"deepseek-harness",
|
|
@@ -82,12 +82,18 @@
|
|
|
82
82
|
"scripts": {
|
|
83
83
|
"build": "tsc -p tsconfig.json",
|
|
84
84
|
"typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json",
|
|
85
|
-
"test": "
|
|
86
|
-
"
|
|
87
|
-
"
|
|
85
|
+
"test": "pnpm test:golden && pnpm dogfood",
|
|
86
|
+
"test:golden": "vitest run",
|
|
87
|
+
"dogfood": "pnpm run build && node tools/dogfood.mjs",
|
|
88
|
+
"dogfood:paid": "pnpm run build && node tools/dogfood.mjs --paid",
|
|
89
|
+
"verify": "pnpm typecheck && pnpm test && node tools/pack-smoke.mjs && node tools/harness-matrix.mjs",
|
|
90
|
+
"check:unused": "tsc -p tsconfig.json --noEmit --noUnusedLocals --noUnusedParameters",
|
|
91
|
+
"check:deadcode": "knip --production --no-progress",
|
|
92
|
+
"check:local": "pnpm run check:unused && pnpm run check:deadcode",
|
|
93
|
+
"test:terminal": "pnpm run build && node tools/terminal-behavior.mjs",
|
|
88
94
|
"prepare": "npm run build",
|
|
89
95
|
"prepack": "npm run build",
|
|
90
|
-
"prepublishOnly": "npm run typecheck && npm test",
|
|
96
|
+
"prepublishOnly": "npm run typecheck && npm run test:golden",
|
|
91
97
|
"drive": "node tools/pty-drive.mjs"
|
|
92
98
|
},
|
|
93
99
|
"dependencies": {
|
|
@@ -152,7 +158,6 @@
|
|
|
152
158
|
"@deepseek-ai/dsh-agent-loop": "0.2.0-rc.2",
|
|
153
159
|
"@deepseek-ai/dsh-cmdline": "0.2.0-rc.2",
|
|
154
160
|
"@deepseek-ai/dsh-commands": "0.2.0-rc.2",
|
|
155
|
-
"@deepseek-ai/dsh-home-paths": "0.2.0-rc.2",
|
|
156
161
|
"@deepseek-ai/dsh-llm": "0.2.0-rc.2",
|
|
157
162
|
"@deepseek-ai/dsh-sandbox": "0.2.0-rc.2",
|
|
158
163
|
"@deepseek-ai/dsh-scope": "0.2.0-rc.2",
|
|
@@ -163,7 +168,7 @@
|
|
|
163
168
|
"@deepseek-ai/dsh-user-approval": "0.2.0-rc.2",
|
|
164
169
|
"@deepseek-ai/dsh-user-questions": "0.2.0-rc.2",
|
|
165
170
|
"@types/node": "^24.0.0",
|
|
166
|
-
"
|
|
171
|
+
"knip": "6.37.0",
|
|
167
172
|
"node-pty": "1.1.0",
|
|
168
173
|
"typescript": "^5.9.0",
|
|
169
174
|
"vitest": "^4.1.0"
|