@agi-fans/dsh-tui 0.20.0 → 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/CHANGELOG.md +249 -3
- package/lib/chrome/box.d.ts +47 -16
- package/lib/chrome/box.js +172 -130
- package/lib/chrome/box.js.map +1 -1
- package/lib/chrome/code-highlight.d.ts +15 -0
- package/lib/chrome/code-highlight.js +60 -4
- package/lib/chrome/code-highlight.js.map +1 -1
- package/lib/chrome/command-output.d.ts +29 -2
- package/lib/chrome/command-output.js +100 -4
- package/lib/chrome/command-output.js.map +1 -1
- package/lib/chrome/main-screen-renderer.d.ts +18 -0
- package/lib/chrome/main-screen-renderer.js +58 -5
- package/lib/chrome/main-screen-renderer.js.map +1 -1
- package/lib/chrome/markdown.js +30 -10
- package/lib/chrome/markdown.js.map +1 -1
- package/lib/chrome/relative-time.d.ts +17 -0
- package/lib/chrome/relative-time.js +36 -0
- package/lib/chrome/relative-time.js.map +1 -1
- package/lib/chrome/renderer.d.ts +9 -0
- package/lib/chrome/renderer.js +1 -1
- package/lib/chrome/renderer.js.map +1 -1
- package/lib/chrome/secret-mask.d.ts +35 -0
- package/lib/chrome/secret-mask.js +180 -0
- package/lib/chrome/secret-mask.js.map +1 -0
- package/lib/chrome/status-config.d.ts +161 -51
- package/lib/chrome/status-config.js +237 -126
- package/lib/chrome/status-config.js.map +1 -1
- package/lib/chrome/status-line.d.ts +3 -2
- package/lib/chrome/status-line.js +105 -63
- package/lib/chrome/status-line.js.map +1 -1
- package/lib/chrome/terminal-colors.d.ts +85 -0
- package/lib/chrome/terminal-colors.js +230 -0
- package/lib/chrome/terminal-colors.js.map +1 -0
- package/lib/chrome/terminal-images.d.ts +9 -1
- package/lib/chrome/terminal-images.js +27 -4
- package/lib/chrome/terminal-images.js.map +1 -1
- package/lib/chrome/theme.d.ts +32 -9
- package/lib/chrome/theme.js +616 -520
- package/lib/chrome/theme.js.map +1 -1
- package/lib/chrome/tool-args.d.ts +1 -1
- package/lib/chrome/tool-args.js +3 -1
- package/lib/chrome/tool-args.js.map +1 -1
- package/lib/chrome/tool-renderers.d.ts +2 -0
- package/lib/chrome/tool-renderers.js +69 -3
- package/lib/chrome/tool-renderers.js.map +1 -1
- package/lib/chrome/tools-list.d.ts +1 -4
- package/lib/chrome/tools-list.js +1 -41
- package/lib/chrome/tools-list.js.map +1 -1
- package/lib/chrome/welcome-tips.d.ts +20 -7
- package/lib/chrome/welcome-tips.js +22 -41
- package/lib/chrome/welcome-tips.js.map +1 -1
- package/lib/commands/auth-ids.d.ts +25 -0
- package/lib/commands/auth-ids.js +27 -0
- package/lib/commands/auth-ids.js.map +1 -0
- package/lib/commands/auth-input.d.ts +34 -0
- package/lib/commands/auth-input.js +96 -0
- package/lib/commands/auth-input.js.map +1 -0
- package/lib/commands/auth-providers.d.ts +39 -0
- package/lib/commands/auth-providers.js +125 -0
- package/lib/commands/auth-providers.js.map +1 -0
- package/lib/commands/auth.d.ts +16 -22
- package/lib/commands/auth.js +346 -299
- package/lib/commands/auth.js.map +1 -1
- package/lib/commands/btw.d.ts +27 -0
- package/lib/commands/btw.js +59 -0
- package/lib/commands/btw.js.map +1 -0
- package/lib/commands/diff.js +30 -5
- package/lib/commands/diff.js.map +1 -1
- package/lib/commands/export.d.ts +1 -1
- package/lib/commands/export.js +5 -3
- package/lib/commands/export.js.map +1 -1
- package/lib/commands/files.d.ts +17 -1
- package/lib/commands/files.js +69 -61
- package/lib/commands/files.js.map +1 -1
- package/lib/commands/integrations.js +18 -6
- package/lib/commands/integrations.js.map +1 -1
- package/lib/commands/jobs.d.ts +19 -4
- package/lib/commands/jobs.js +50 -7
- package/lib/commands/jobs.js.map +1 -1
- package/lib/commands/model.js +109 -76
- package/lib/commands/model.js.map +1 -1
- package/lib/commands/permission.js +46 -13
- package/lib/commands/permission.js.map +1 -1
- package/lib/commands/plugins.js +196 -42
- package/lib/commands/plugins.js.map +1 -1
- package/lib/commands/schedule.d.ts +29 -0
- package/lib/commands/schedule.js +228 -0
- package/lib/commands/schedule.js.map +1 -0
- package/lib/commands/session-configuration.d.ts +1 -1
- package/lib/commands/session-configuration.js +29 -28
- package/lib/commands/session-configuration.js.map +1 -1
- package/lib/commands/session.js +75 -80
- package/lib/commands/session.js.map +1 -1
- package/lib/commands/terminal.d.ts +24 -4
- package/lib/commands/terminal.js +38 -94
- package/lib/commands/terminal.js.map +1 -1
- package/lib/commands/trajectory.js +4 -1
- package/lib/commands/trajectory.js.map +1 -1
- package/lib/definition.d.ts +150 -11
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/input/actions.d.ts +51 -0
- package/lib/input/actions.js +120 -0
- package/lib/input/actions.js.map +1 -0
- package/lib/input/editor-discovery.js +2 -2
- package/lib/input/editor-discovery.js.map +1 -1
- package/lib/input/editor.d.ts +0 -10
- package/lib/input/editor.js +11 -9
- package/lib/input/editor.js.map +1 -1
- package/lib/input/image-paste.d.ts +19 -1
- package/lib/input/image-paste.js +82 -1
- package/lib/input/image-paste.js.map +1 -1
- package/lib/input/keybindings-config.d.ts +15 -4
- package/lib/input/keybindings-config.js +57 -35
- package/lib/input/keybindings-config.js.map +1 -1
- package/lib/input/keys.d.ts +18 -0
- package/lib/input/keys.js +48 -3
- package/lib/input/keys.js.map +1 -1
- package/lib/input/wheel-scroll.d.ts +46 -0
- package/lib/input/wheel-scroll.js +69 -0
- package/lib/input/wheel-scroll.js.map +1 -0
- package/lib/prompt-intents.d.ts +182 -0
- package/lib/prompt-intents.js +127 -0
- package/lib/prompt-intents.js.map +1 -0
- package/lib/runtime/agent-profile.d.ts +5 -0
- package/lib/runtime/agent-profile.js +12 -0
- package/lib/runtime/agent-profile.js.map +1 -1
- package/lib/runtime/approval-rules.d.ts +59 -0
- package/lib/runtime/approval-rules.js +179 -0
- package/lib/runtime/approval-rules.js.map +1 -0
- package/lib/runtime/btw-policy.d.ts +7 -0
- package/lib/runtime/btw-policy.js +18 -0
- package/lib/runtime/btw-policy.js.map +1 -0
- package/lib/runtime/btw.d.ts +47 -0
- package/lib/runtime/btw.js +200 -0
- package/lib/runtime/btw.js.map +1 -0
- package/lib/runtime/cancellable.d.ts +75 -0
- package/lib/runtime/cancellable.js +76 -0
- package/lib/runtime/cancellable.js.map +1 -0
- package/lib/runtime/composer-images.js +5 -4
- package/lib/runtime/composer-images.js.map +1 -1
- package/lib/runtime/composer-shell.d.ts +30 -0
- package/lib/runtime/composer-shell.js +150 -0
- package/lib/runtime/composer-shell.js.map +1 -0
- package/lib/runtime/file-recovery-local.d.ts +73 -0
- package/lib/runtime/file-recovery-local.js +351 -0
- package/lib/runtime/file-recovery-local.js.map +1 -0
- package/lib/runtime/file-recovery-recording.d.ts +23 -0
- package/lib/runtime/file-recovery-recording.js +131 -0
- package/lib/runtime/file-recovery-recording.js.map +1 -0
- package/lib/runtime/file-recovery-review.d.ts +3 -0
- package/lib/runtime/file-recovery-review.js +130 -0
- package/lib/runtime/file-recovery-review.js.map +1 -0
- package/lib/runtime/file-recovery-store.d.ts +83 -0
- package/lib/runtime/file-recovery-store.js +329 -0
- package/lib/runtime/file-recovery-store.js.map +1 -0
- package/lib/runtime/file-recovery-worker.d.ts +22 -0
- package/lib/runtime/file-recovery-worker.js +153 -0
- package/lib/runtime/file-recovery-worker.js.map +1 -0
- package/lib/runtime/file-review.d.ts +6 -3
- package/lib/runtime/file-review.js +44 -7
- package/lib/runtime/file-review.js.map +1 -1
- package/lib/runtime/herdr-agent.d.ts +4 -13
- package/lib/runtime/herdr-agent.js +19 -63
- package/lib/runtime/herdr-agent.js.map +1 -1
- package/lib/runtime/plain-tui.d.ts +2 -0
- package/lib/runtime/plain-tui.js +7 -1
- package/lib/runtime/plain-tui.js.map +1 -1
- package/lib/runtime/plugin-settings.d.ts +25 -2
- package/lib/runtime/plugin-settings.js +329 -31
- package/lib/runtime/plugin-settings.js.map +1 -1
- package/lib/runtime/provider-local.d.ts +81 -24
- package/lib/runtime/provider-local.js +1807 -608
- package/lib/runtime/provider-local.js.map +1 -1
- package/lib/runtime/runner.js +52 -12
- package/lib/runtime/runner.js.map +1 -1
- package/lib/runtime/session-archive.d.ts +6 -0
- package/lib/runtime/session-archive.js +129 -3
- package/lib/runtime/session-archive.js.map +1 -1
- package/lib/runtime/session-runtime.js +1 -1
- package/lib/runtime/session-runtime.js.map +1 -1
- package/lib/runtime/settings-preferences.d.ts +5 -0
- package/lib/runtime/settings-preferences.js +34 -0
- package/lib/runtime/settings-preferences.js.map +1 -0
- package/lib/runtime/startup-notices.js +2 -0
- package/lib/runtime/startup-notices.js.map +1 -1
- package/lib/runtime/terminal-modes.d.ts +47 -0
- package/lib/runtime/terminal-modes.js +86 -0
- package/lib/runtime/terminal-modes.js.map +1 -0
- package/lib/runtime/terminal-notifications.d.ts +3 -5
- package/lib/runtime/terminal-notifications.js +4 -8
- package/lib/runtime/terminal-notifications.js.map +1 -1
- package/lib/runtime/terminal-probe.d.ts +36 -0
- package/lib/runtime/terminal-probe.js +37 -0
- package/lib/runtime/terminal-probe.js.map +1 -0
- package/lib/runtime/terminal-session.d.ts +57 -0
- package/lib/runtime/terminal-session.js +164 -0
- package/lib/runtime/terminal-session.js.map +1 -0
- package/lib/runtime/terminal-state.d.ts +29 -0
- package/lib/runtime/terminal-state.js +62 -0
- package/lib/runtime/terminal-state.js.map +1 -0
- package/lib/runtime/tool-presentation.js +50 -14
- package/lib/runtime/tool-presentation.js.map +1 -1
- package/lib/session/external-agents.d.ts +5 -0
- package/lib/session/external-agents.js +27 -0
- package/lib/session/external-agents.js.map +1 -0
- package/lib/session/feature-toggles.d.ts +1 -1
- package/lib/session/feature-toggles.js +1 -1
- package/lib/session/interaction-adapter.d.ts +1 -6
- package/lib/session/interaction-adapter.js +95 -18
- package/lib/session/interaction-adapter.js.map +1 -1
- package/lib/session/message-queue.js +1 -1
- package/lib/session/message-queue.js.map +1 -1
- package/lib/session/model-readiness.d.ts +16 -0
- package/lib/session/model-readiness.js +43 -0
- package/lib/session/model-readiness.js.map +1 -0
- package/lib/session/package-metadata.d.ts +8 -0
- package/lib/session/package-metadata.js +8 -0
- package/lib/session/package-metadata.js.map +1 -1
- package/lib/session/project-context.d.ts +5 -0
- package/lib/session/project-context.js +36 -0
- package/lib/session/project-context.js.map +1 -1
- package/lib/session/session-controller.d.ts +10 -13
- package/lib/session/session-controller.js +183 -98
- package/lib/session/session-controller.js.map +1 -1
- package/lib/session/session-library.js +2 -0
- package/lib/session/session-library.js.map +1 -1
- package/lib/session/session-tree.d.ts +3 -0
- package/lib/session/session-tree.js +3 -1
- package/lib/session/session-tree.js.map +1 -1
- package/lib/session/subagent-roster.d.ts +2 -1
- package/lib/session/subagent-roster.js +24 -3
- package/lib/session/subagent-roster.js.map +1 -1
- package/lib/session/subagent-tracker.d.ts +6 -2
- package/lib/session/subagent-tracker.js +49 -2
- package/lib/session/subagent-tracker.js.map +1 -1
- package/lib/session/tui-settings.d.ts +47 -13
- package/lib/session/tui-settings.js +76 -34
- package/lib/session/tui-settings.js.map +1 -1
- package/lib/session/working-directory.d.ts +4 -0
- package/lib/session/working-directory.js +4 -0
- package/lib/session/working-directory.js.map +1 -0
- package/lib/session/worktrees.d.ts +13 -0
- package/lib/session/worktrees.js +49 -0
- package/lib/session/worktrees.js.map +1 -0
- package/lib/views/approval-rule.d.ts +3 -0
- package/lib/views/approval-rule.js +4 -0
- package/lib/views/approval-rule.js.map +1 -0
- package/lib/views/at-complete.d.ts +8 -0
- package/lib/views/at-complete.js +64 -2
- package/lib/views/at-complete.js.map +1 -1
- package/lib/views/autocomplete.d.ts +22 -2
- package/lib/views/autocomplete.js +70 -40
- package/lib/views/autocomplete.js.map +1 -1
- package/lib/views/copy-targets.d.ts +13 -14
- package/lib/views/copy-targets.js +42 -54
- package/lib/views/copy-targets.js.map +1 -1
- package/lib/views/document-reader.js +18 -5
- package/lib/views/document-reader.js.map +1 -1
- package/lib/views/event-views.d.ts +1 -1
- package/lib/views/event-views.js +60 -6
- package/lib/views/event-views.js.map +1 -1
- package/lib/views/file-actions.d.ts +12 -0
- package/lib/views/file-actions.js +72 -0
- package/lib/views/file-actions.js.map +1 -0
- package/lib/views/history-search.js +15 -21
- package/lib/views/history-search.js.map +1 -1
- package/lib/views/hotkeys.d.ts +8 -1
- package/lib/views/hotkeys.js +53 -26
- package/lib/views/hotkeys.js.map +1 -1
- package/lib/views/list-navigation.d.ts +62 -0
- package/lib/views/list-navigation.js +73 -0
- package/lib/views/list-navigation.js.map +1 -0
- package/lib/views/list-view.d.ts +99 -0
- package/lib/views/list-view.js +165 -0
- package/lib/views/list-view.js.map +1 -0
- package/lib/views/prompt-selector.d.ts +34 -4
- package/lib/views/prompt-selector.js +270 -134
- package/lib/views/prompt-selector.js.map +1 -1
- package/lib/views/session-files.d.ts +1 -2
- package/lib/views/session-files.js +1 -11
- package/lib/views/session-files.js.map +1 -1
- package/lib/views/settings-list.d.ts +51 -10
- package/lib/views/settings-list.js +267 -315
- package/lib/views/settings-list.js.map +1 -1
- package/lib/views/trajectory-timeline.d.ts +72 -0
- package/lib/views/trajectory-timeline.js +133 -0
- package/lib/views/trajectory-timeline.js.map +1 -0
- package/lib/views/trajectory.d.ts +15 -4
- package/lib/views/trajectory.js +557 -123
- package/lib/views/trajectory.js.map +1 -1
- package/lib/views/transcript-export.js +9 -0
- package/lib/views/transcript-export.js.map +1 -1
- package/lib/views/transcript-render.d.ts +97 -25
- package/lib/views/transcript-render.js +542 -170
- package/lib/views/transcript-render.js.map +1 -1
- package/lib/views/transcript-search.d.ts +39 -6
- package/lib/views/transcript-search.js +46 -11
- package/lib/views/transcript-search.js.map +1 -1
- package/lib/views/transcript-types.d.ts +63 -5
- package/lib/views/transcript-types.js +23 -11
- package/lib/views/transcript-types.js.map +1 -1
- package/package.json +95 -65
- package/lib/commands/loop.d.ts +0 -52
- package/lib/commands/loop.js +0 -307
- package/lib/commands/loop.js.map +0 -1
- package/lib/commands/steer.d.ts +0 -5
- package/lib/commands/steer.js +0 -24
- package/lib/commands/steer.js.map +0 -1
- package/lib/runtime/terminal-reader.d.ts +0 -11
- package/lib/runtime/terminal-reader.js +0 -87
- package/lib/runtime/terminal-reader.js.map +0 -1
- package/lib/views/agent-hub.d.ts +0 -32
- package/lib/views/agent-hub.js +0 -206
- package/lib/views/agent-hub.js.map +0 -1
- package/lib/views/copy-selector.d.ts +0 -51
- package/lib/views/copy-selector.js +0 -139
- package/lib/views/copy-selector.js.map +0 -1
package/lib/runtime/runner.js
CHANGED
|
@@ -4,8 +4,9 @@
|
|
|
4
4
|
* @module @agi-fans/dsh-tui/runner
|
|
5
5
|
*/
|
|
6
6
|
import { looksLikeSlashCommand, stripComposerImageMarkers } from "../input/image-paste.js";
|
|
7
|
+
import { composerShellCommand, composerShellShare, runComposerShell } from "./composer-shell.js";
|
|
7
8
|
export const name = 'omdsh-runner';
|
|
8
|
-
export const inject = ['tui', 'omdshSession', 'omdshStartup'
|
|
9
|
+
export const inject = ['tui', 'omdshSession', 'omdshStartup'];
|
|
9
10
|
function fail(error, exit) {
|
|
10
11
|
console.error('omdsh: ' + (error instanceof Error ? error.message : String(error)));
|
|
11
12
|
exit(1);
|
|
@@ -15,7 +16,6 @@ async function run(ctx, tui, cancelled) {
|
|
|
15
16
|
const controller = ctx.get('omdshSession');
|
|
16
17
|
if (controller === undefined)
|
|
17
18
|
return;
|
|
18
|
-
const loop = ctx.get('omdshLoop');
|
|
19
19
|
await controller.start();
|
|
20
20
|
// The unmount may have landed while startup was pending; nothing may start
|
|
21
21
|
// after the lifetime signal aborted.
|
|
@@ -23,14 +23,18 @@ async function run(ctx, tui, cancelled) {
|
|
|
23
23
|
return;
|
|
24
24
|
void ctx.get('omdshStartup')?.afterSessionStart().catch(() => { });
|
|
25
25
|
let operation;
|
|
26
|
+
let shellActive = false;
|
|
26
27
|
// An unmount must also cancel an in-flight slash command, not just the read.
|
|
27
28
|
const onCancelled = () => { operation?.abort(new Error('runner unloaded')); };
|
|
28
29
|
cancelled.addEventListener('abort', onCancelled, { once: true });
|
|
29
30
|
const offInterrupt = tui.onInterrupt(() => {
|
|
31
|
+
if (shellActive) {
|
|
32
|
+
operation?.abort(new Error('Shell interrupted by user'));
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
30
35
|
if (controller.interruptVisible())
|
|
31
36
|
return;
|
|
32
37
|
operation?.abort(new Error('cancelled by user'));
|
|
33
|
-
loop?.pause(controller.agent);
|
|
34
38
|
controller.agent?.cancel({ kind: 'user' });
|
|
35
39
|
});
|
|
36
40
|
let queueEditInFlight = false;
|
|
@@ -72,7 +76,6 @@ async function run(ctx, tui, cancelled) {
|
|
|
72
76
|
}
|
|
73
77
|
finally {
|
|
74
78
|
operation = undefined;
|
|
75
|
-
loop?.syncAgent(controller.agent);
|
|
76
79
|
}
|
|
77
80
|
}
|
|
78
81
|
else if (args.length > 0) {
|
|
@@ -87,7 +90,28 @@ async function run(ctx, tui, cancelled) {
|
|
|
87
90
|
break;
|
|
88
91
|
if (submission.text.trim() === '' && submission.images.length === 0 && !submission.files?.length)
|
|
89
92
|
continue;
|
|
90
|
-
|
|
93
|
+
const shellCommand = composerShellCommand(submission);
|
|
94
|
+
if (shellCommand !== undefined) {
|
|
95
|
+
operation = new AbortController();
|
|
96
|
+
shellActive = true;
|
|
97
|
+
try {
|
|
98
|
+
const agent = controller.agent;
|
|
99
|
+
if (agent === undefined)
|
|
100
|
+
throw new Error('Start a session before running a Shell command.');
|
|
101
|
+
await runComposerShell(ctx, agent, shellCommand, operation.signal, { share: composerShellShare(submission) });
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
if (!operation.signal.aborted) {
|
|
105
|
+
tui.restoreInput(submission);
|
|
106
|
+
tui.notice(error instanceof Error ? error.message : String(error), { level: 'error' });
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
finally {
|
|
110
|
+
shellActive = false;
|
|
111
|
+
operation = undefined;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
else if (!submission.literal && !submission.files?.length && looksLikeSlashCommand(submission.text, submission.images)) {
|
|
91
115
|
operation = new AbortController();
|
|
92
116
|
try {
|
|
93
117
|
const handled = await controller.execute(submission.text, operation.signal, submission.images);
|
|
@@ -107,15 +131,14 @@ async function run(ctx, tui, cancelled) {
|
|
|
107
131
|
}
|
|
108
132
|
finally {
|
|
109
133
|
operation = undefined;
|
|
110
|
-
loop?.syncAgent(controller.agent);
|
|
111
134
|
}
|
|
112
135
|
}
|
|
113
136
|
else {
|
|
114
137
|
try {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
138
|
+
// `/loop` used to intercept submissions here. The command is gone: a
|
|
139
|
+
// repeated prompt is what the agent's own turns are for, and a
|
|
140
|
+
// process-local resender could run unattended through a token budget.
|
|
141
|
+
await controller.send(submission);
|
|
119
142
|
}
|
|
120
143
|
catch (error) {
|
|
121
144
|
tui.restoreInput(submission);
|
|
@@ -127,7 +150,25 @@ async function run(ctx, tui, cancelled) {
|
|
|
127
150
|
// EOF means "no more input", not "discard the accepted work". Let the
|
|
128
151
|
// active turn and every queued follow-up settle so pipe/CI mode observes
|
|
129
152
|
// the same transcript and errors as an interactive terminal.
|
|
130
|
-
|
|
153
|
+
const agent = controller.agent;
|
|
154
|
+
if (agent !== undefined) {
|
|
155
|
+
const stopped = Promise.withResolvers();
|
|
156
|
+
const stop = () => { stopped.resolve(false); };
|
|
157
|
+
cancelled.addEventListener('abort', stop, { once: true });
|
|
158
|
+
try {
|
|
159
|
+
while (!cancelled.aborted) {
|
|
160
|
+
await Promise.race([agent.whenIdle(), stopped.promise]);
|
|
161
|
+
if (cancelled.aborted)
|
|
162
|
+
break;
|
|
163
|
+
const joined = await Promise.race([ctx.get('subagents')?.waitForChildren(agent), stopped.promise]);
|
|
164
|
+
if (!joined)
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
finally {
|
|
169
|
+
cancelled.removeEventListener('abort', stop);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
131
172
|
}
|
|
132
173
|
else {
|
|
133
174
|
// An unmount cancel aborts the in-flight command instead of waiting.
|
|
@@ -137,7 +178,6 @@ async function run(ctx, tui, cancelled) {
|
|
|
137
178
|
finally {
|
|
138
179
|
cancelled.removeEventListener('abort', onCancelled);
|
|
139
180
|
operation?.abort(new Error('runner disposed'));
|
|
140
|
-
loop?.disable();
|
|
141
181
|
offQueueEdit();
|
|
142
182
|
offRewind();
|
|
143
183
|
offInterrupt();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/runtime/runner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/runtime/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,4 +2,10 @@
|
|
|
2
2
|
import type { Context } from '@deepseek-ai/cordis';
|
|
3
3
|
import type { Agent } from '@deepseek-ai/dsh-agent';
|
|
4
4
|
export declare const ARCHIVE_MAX_BYTES: number;
|
|
5
|
+
export interface ImportedSessionArchive {
|
|
6
|
+
rootSession: string;
|
|
7
|
+
importedSessions: number;
|
|
8
|
+
importedAttachments: number;
|
|
9
|
+
}
|
|
5
10
|
export declare function sessionArchive(ctx: Context, agent: Agent, signal: AbortSignal): Promise<Uint8Array>;
|
|
11
|
+
export declare function importSessionArchive(ctx: Context, archiveBytes: Uint8Array, signal: AbortSignal): Promise<ImportedSessionArchive>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** Portable logical logs, descendant sessions, and verified attachment bytes. */
|
|
2
2
|
import { basename } from 'node:path';
|
|
3
|
-
import { strToU8, zip } from 'fflate';
|
|
4
|
-
import { SessionId } from '@deepseek-ai/dsh-session';
|
|
3
|
+
import { strFromU8, strToU8, unzip, zip } from 'fflate';
|
|
4
|
+
import { SessionId, SessionLogOffset } from '@deepseek-ai/dsh-session';
|
|
5
5
|
import { logAttachments } from "../views/session-files.js";
|
|
6
6
|
export const ARCHIVE_MAX_BYTES = 64 * 1024 * 1024;
|
|
7
7
|
export async function sessionArchive(ctx, agent, signal) {
|
|
@@ -95,7 +95,7 @@ export async function sessionArchive(ctx, agent, signal) {
|
|
|
95
95
|
}
|
|
96
96
|
files['manifest.json'] = admit(strToU8(JSON.stringify({ format: 'omdsh-session-archive', version: 1, rootSession: agent.id,
|
|
97
97
|
sessions: manifest, attachments: archivedAttachments, capturedAt: new Date().toISOString() }, null, 2)));
|
|
98
|
-
files['README.txt'] = admit(strToU8('Logical session headers and validated JSONL events, plus original attachments.\nThis archive is for backup
|
|
98
|
+
files['README.txt'] = admit(strToU8('Logical session headers and validated JSONL events, plus original attachments.\nThis archive is for backup, inspection, and restoration via /import.\nRunning sessions are captured individually at read time, not as an atomic multi-session snapshot.\nLogs and attachments are not redacted and may contain private data.\n'));
|
|
99
99
|
signal.throwIfAborted();
|
|
100
100
|
return new Promise((resolve, reject) => {
|
|
101
101
|
const cancel = zip(files, { level: 6 }, (error, data) => {
|
|
@@ -111,4 +111,130 @@ export async function sessionArchive(ctx, agent, signal) {
|
|
|
111
111
|
abort();
|
|
112
112
|
});
|
|
113
113
|
}
|
|
114
|
+
export async function importSessionArchive(ctx, archiveBytes, signal) {
|
|
115
|
+
const storage = ctx.get('sessionPersistence');
|
|
116
|
+
const attachmentStore = ctx.get('attachments');
|
|
117
|
+
if (storage === undefined)
|
|
118
|
+
throw new Error('Session persistence is required to import an archive.');
|
|
119
|
+
if (archiveBytes.length > ARCHIVE_MAX_BYTES) {
|
|
120
|
+
throw new Error('Session archive exceeds the 64 MiB limit.');
|
|
121
|
+
}
|
|
122
|
+
signal.throwIfAborted();
|
|
123
|
+
const files = await new Promise((resolve, reject) => {
|
|
124
|
+
let uncompressedBytes = 0;
|
|
125
|
+
const cancel = unzip(archiveBytes, {
|
|
126
|
+
filter: (file) => {
|
|
127
|
+
uncompressedBytes += file.originalSize;
|
|
128
|
+
if (uncompressedBytes > ARCHIVE_MAX_BYTES) {
|
|
129
|
+
throw new Error('Session archive exceeds the 64 MiB uncompressed limit.');
|
|
130
|
+
}
|
|
131
|
+
return true;
|
|
132
|
+
},
|
|
133
|
+
}, (error, unpacked) => {
|
|
134
|
+
signal.removeEventListener('abort', abort);
|
|
135
|
+
if (error !== null)
|
|
136
|
+
reject(error);
|
|
137
|
+
else
|
|
138
|
+
resolve(unpacked);
|
|
139
|
+
});
|
|
140
|
+
const abort = () => { cancel(); reject(signal.reason); };
|
|
141
|
+
signal.addEventListener('abort', abort, { once: true });
|
|
142
|
+
if (signal.aborted)
|
|
143
|
+
abort();
|
|
144
|
+
});
|
|
145
|
+
const totalBytes = Object.values(files).reduce((sum, entry) => sum + entry.length, 0);
|
|
146
|
+
if (totalBytes > ARCHIVE_MAX_BYTES) {
|
|
147
|
+
throw new Error('Session archive exceeds the 64 MiB uncompressed limit.');
|
|
148
|
+
}
|
|
149
|
+
const manifestBytes = files['manifest.json'];
|
|
150
|
+
if (manifestBytes === undefined)
|
|
151
|
+
throw new Error('Invalid session archive: missing manifest.json.');
|
|
152
|
+
const manifest = JSON.parse(strFromU8(manifestBytes));
|
|
153
|
+
if (manifest.format !== 'omdsh-session-archive' || manifest.version !== 1) {
|
|
154
|
+
throw new Error('Unsupported session archive format or version.');
|
|
155
|
+
}
|
|
156
|
+
if (typeof manifest.rootSession !== 'string' || manifest.rootSession.trim() === '') {
|
|
157
|
+
throw new Error('Invalid session archive: missing rootSession.');
|
|
158
|
+
}
|
|
159
|
+
if (!Array.isArray(manifest.sessions) || manifest.sessions.length === 0) {
|
|
160
|
+
throw new Error('Invalid session archive: no sessions listed in manifest.');
|
|
161
|
+
}
|
|
162
|
+
const attachments = Array.isArray(manifest.attachments) ? manifest.attachments : [];
|
|
163
|
+
if (attachments.length > 0 && attachmentStore === undefined) {
|
|
164
|
+
throw new Error('Attachment storage is required to import an archive with attachments.');
|
|
165
|
+
}
|
|
166
|
+
const parsedSessions = [];
|
|
167
|
+
for (let index = 0; index < manifest.sessions.length; index += 1) {
|
|
168
|
+
signal.throwIfAborted();
|
|
169
|
+
const item = manifest.sessions[index];
|
|
170
|
+
if (typeof item.id !== 'string' || item.id === '') {
|
|
171
|
+
throw new Error('Invalid session archive: session entry is missing an id.');
|
|
172
|
+
}
|
|
173
|
+
const existing = await storage.stat(SessionId(item.id), { signal });
|
|
174
|
+
if (existing !== undefined) {
|
|
175
|
+
throw new Error(`Session ${item.id} already exists in local storage.`);
|
|
176
|
+
}
|
|
177
|
+
const ordinal = String(index + 1).padStart(4, '0');
|
|
178
|
+
const rawLog = files[`sessions/${ordinal}.jsonl`];
|
|
179
|
+
if (rawLog === undefined) {
|
|
180
|
+
throw new Error(`Invalid session archive: missing sessions/${ordinal}.jsonl.`);
|
|
181
|
+
}
|
|
182
|
+
const lines = strFromU8(rawLog).split('\n').filter(line => line.trim() !== '');
|
|
183
|
+
if (lines.length === 0) {
|
|
184
|
+
throw new Error(`Invalid session archive: empty sessions/${ordinal}.jsonl.`);
|
|
185
|
+
}
|
|
186
|
+
const header = JSON.parse(lines[0]);
|
|
187
|
+
if (header.id !== item.id) {
|
|
188
|
+
throw new Error(`Invalid session archive: header id mismatch in sessions/${ordinal}.jsonl.`);
|
|
189
|
+
}
|
|
190
|
+
const events = lines.slice(1).map(line => JSON.parse(line));
|
|
191
|
+
const inheritedEventCount = typeof item.inheritedEventCount === 'number' && item.inheritedEventCount > 0
|
|
192
|
+
? item.inheritedEventCount
|
|
193
|
+
: 0;
|
|
194
|
+
parsedSessions.push({ header, events, inheritedEventCount });
|
|
195
|
+
}
|
|
196
|
+
for (const entry of attachments) {
|
|
197
|
+
signal.throwIfAborted();
|
|
198
|
+
if (entry.ref === undefined || typeof entry.path !== 'string' || entry.path.includes('..')) {
|
|
199
|
+
throw new Error('Invalid session archive: malformed attachment entry.');
|
|
200
|
+
}
|
|
201
|
+
const data = files[entry.path];
|
|
202
|
+
if (data === undefined) {
|
|
203
|
+
throw new Error(`Invalid session archive: missing attachment ${entry.path}.`);
|
|
204
|
+
}
|
|
205
|
+
if ('mediaType' in entry.ref) {
|
|
206
|
+
await attachmentStore.saveImage({
|
|
207
|
+
data,
|
|
208
|
+
mediaType: entry.ref.mediaType,
|
|
209
|
+
...(entry.ref.name === undefined ? {} : { name: entry.ref.name }),
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
await attachmentStore.saveFile({
|
|
214
|
+
data,
|
|
215
|
+
...(entry.ref.name === undefined ? {} : { name: entry.ref.name }),
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
for (const session of parsedSessions) {
|
|
220
|
+
signal.throwIfAborted();
|
|
221
|
+
const handle = await storage.create(session.header, {
|
|
222
|
+
...(session.inheritedEventCount > 0 ? { inheritedEventCount: SessionLogOffset(session.inheritedEventCount) } : {}),
|
|
223
|
+
signal,
|
|
224
|
+
});
|
|
225
|
+
try {
|
|
226
|
+
if (session.events.length > 0) {
|
|
227
|
+
await handle.append(session.events, { signal });
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
finally {
|
|
231
|
+
await handle.close();
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return {
|
|
235
|
+
rootSession: manifest.rootSession,
|
|
236
|
+
importedSessions: parsedSessions.length,
|
|
237
|
+
importedAttachments: attachments.length,
|
|
238
|
+
};
|
|
239
|
+
}
|
|
114
240
|
//# sourceMappingURL=session-archive.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-archive.js","sourceRoot":"","sources":["../../src/runtime/session-archive.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session-archive.js","sourceRoot":"","sources":["../../src/runtime/session-archive.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { SessionRuntime } from "../session/session-controller.js";
|
|
6
6
|
export const name = 'omdsh-session-runtime';
|
|
7
|
-
export const inject = ['tui', 'agentDefaultModel', 'agents', 'agentPresets', 'tools'];
|
|
7
|
+
export const inject = ['tui', 'agentDefaultModel', 'agents', 'agentPresets', 'tools', 'workingDirectory'];
|
|
8
8
|
export function apply(ctx, config = {}) {
|
|
9
9
|
const tui = ctx.get('tui');
|
|
10
10
|
if (tui === undefined)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-runtime.js","sourceRoot":"","sources":["../../src/runtime/session-runtime.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAEjE,MAAM,CAAC,MAAM,IAAI,GAAG,uBAAuB,CAAA;AAC3C,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"session-runtime.js","sourceRoot":"","sources":["../../src/runtime/session-runtime.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAEjE,MAAM,CAAC,MAAM,IAAI,GAAG,uBAAuB,CAAA;AAC3C,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAA;AAkBzG,MAAM,UAAU,KAAK,CAAC,GAAY,EAAE,SAAiB,EAAE;IACrD,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAA2B,CAAA;IACpD,IAAI,GAAG,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;IACjG,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;IAChH,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA;IACpC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAA,CAAC,CAAC,EAAE,iCAAiC,CAAC,CAAA;AAC9F,CAAC;AAED,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { SettingsPathOp } from '@deepseek-ai/dsh-settings';
|
|
2
|
+
import type { TuiPrefs } from '../views/settings-list.ts';
|
|
3
|
+
export declare function preferenceChanges(previous: TuiPrefs, next: TuiPrefs): SettingsPathOp[];
|
|
4
|
+
/** Footer rows restore their color; the layout action restores the entire inherited layout. */
|
|
5
|
+
export declare function preferencePaths(id: string): string[][] | undefined;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/** Preference field ownership and minimal Profile patches. */
|
|
2
|
+
import { isDeepStrictEqual } from 'node:util';
|
|
3
|
+
import { isStatusItemId } from "../chrome/status-config.js";
|
|
4
|
+
export function preferenceChanges(previous, next) {
|
|
5
|
+
const edits = [];
|
|
6
|
+
const walk = (before, after, path) => {
|
|
7
|
+
if (isDeepStrictEqual(before, after))
|
|
8
|
+
return;
|
|
9
|
+
if (after !== null && typeof after === 'object' && !Array.isArray(after)) {
|
|
10
|
+
const old = before !== null && typeof before === 'object' ? before : {};
|
|
11
|
+
for (const [key, value] of Object.entries(after))
|
|
12
|
+
walk(old[key], value, [...path, key]);
|
|
13
|
+
}
|
|
14
|
+
else if (after !== undefined)
|
|
15
|
+
edits.push({ op: 'set', path, value: after });
|
|
16
|
+
};
|
|
17
|
+
for (const [key, value] of Object.entries(next))
|
|
18
|
+
walk(previous[key], value, [key]);
|
|
19
|
+
return edits;
|
|
20
|
+
}
|
|
21
|
+
/** Footer rows restore their color; the layout action restores the entire inherited layout. */
|
|
22
|
+
export function preferencePaths(id) {
|
|
23
|
+
if (id === 'statusReset')
|
|
24
|
+
return [['statusBar'], ['statusPreset']];
|
|
25
|
+
if (id.startsWith('statusItem:') && isStatusItemId(id.slice('statusItem:'.length)))
|
|
26
|
+
return [['statusBar', 'colors', id.slice('statusItem:'.length)]];
|
|
27
|
+
const status = { statusEnabled: 'enabled', statusLabels: 'labels', statusContextStyle: 'contextStyle' };
|
|
28
|
+
if (Object.hasOwn(status, id))
|
|
29
|
+
return [['statusBar', status[id]]];
|
|
30
|
+
if (['theme', 'colors', 'motion', 'mathMode', 'mermaidMode', 'hideThinking', 'editor', 'terminalTitle', 'terminalState', 'pasteProtection', 'copyOnSelect', 'mouseInteraction', 'checkUpdates', 'startupChangelog', 'notifications', 'notificationFocus', 'notificationThreshold'].includes(id))
|
|
31
|
+
return [[id]];
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=settings-preferences.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-preferences.js","sourceRoot":"","sources":["../../src/runtime/settings-preferences.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAG7C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAE3D,MAAM,UAAU,iBAAiB,CAAC,QAAkB,EAAE,IAAc;IAClE,MAAM,KAAK,GAAqB,EAAE,CAAA;IAClC,MAAM,IAAI,GAAG,CAAC,MAAe,EAAE,KAAc,EAAE,IAAc,EAAQ,EAAE;QACrE,IAAI,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC;YAAE,OAAM;QAC5C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzE,MAAM,GAAG,GAAG,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAiC,CAAC,CAAC,CAAC,EAAE,CAAA;YAClG,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA;QACzF,CAAC;aAAM,IAAI,KAAK,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;IAC/E,CAAC,CAAA;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,IAAI,CAAE,QAA+C,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;IAC1H,OAAO,KAAK,CAAA;AACd,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,eAAe,CAAC,EAAU;IACxC,IAAI,EAAE,KAAK,aAAa;QAAE,OAAO,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAA;IAClE,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,cAAc,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACpJ,MAAM,MAAM,GAA2B,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,cAAc,EAAE,CAAA;IAC/H,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QAAE,OAAO,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,CAAE,CAAC,CAAC,CAAA;IAClE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAE,kBAAkB,EAAE,eAAe,EAAE,mBAAmB,EAAE,uBAAuB,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC9S,OAAO,SAAS,CAAA;AAClB,CAAC"}
|
|
@@ -115,6 +115,8 @@ async function showChangelog(config, invocation) {
|
|
|
115
115
|
return { kind: 'error', text: 'Usage: /changelog [full]' };
|
|
116
116
|
try {
|
|
117
117
|
const changelog = await readFile(config.changelogPath, 'utf8');
|
|
118
|
+
// Release notes are output, so they belong in the transcript with the rest of
|
|
119
|
+
// it; a long one folds behind its first rows instead of taking the screen.
|
|
118
120
|
return { kind: 'success', text: changelogText(changelog, input === 'full') };
|
|
119
121
|
}
|
|
120
122
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startup-notices.js","sourceRoot":"","sources":["../../src/runtime/startup-notices.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"startup-notices.js","sourceRoot":"","sources":["../../src/runtime/startup-notices.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Terminal modes the TUI turns on, owned in one place so they are always
|
|
3
|
+
* given back.
|
|
4
|
+
*
|
|
5
|
+
* Every mode is a pair of sequences. The controller remembers which modes are
|
|
6
|
+
* on, in the order they were turned on, and gives them all back — in reverse —
|
|
7
|
+
* when the terminal is handed to someone else (`Ctrl+Z`, an external editor),
|
|
8
|
+
* when the session ends, or when the process exits without disposing. Taking
|
|
9
|
+
* the terminal back re-enables the same set. A mode added or removed while the
|
|
10
|
+
* terminal is handed off is recorded and applied on the way back, so no caller
|
|
11
|
+
* has to know whether the terminal is currently ours.
|
|
12
|
+
* @module @agi-fans/dsh-tui/terminal-modes
|
|
13
|
+
*/
|
|
14
|
+
/** One reversible terminal mode. */
|
|
15
|
+
export interface TerminalMode {
|
|
16
|
+
readonly enable: string;
|
|
17
|
+
readonly disable: string;
|
|
18
|
+
}
|
|
19
|
+
/** Bracketed paste (DEC 2004). */
|
|
20
|
+
export declare const BRACKETED_PASTE: TerminalMode;
|
|
21
|
+
/** Focus in/out reports (DEC 1004). */
|
|
22
|
+
export declare const FOCUS_REPORTING: TerminalMode;
|
|
23
|
+
/** Button, drag and wheel reports in SGR encoding (DEC 1000, 1002, 1006). */
|
|
24
|
+
export declare const MOUSE_TRACKING: TerminalMode;
|
|
25
|
+
/** One entry on the Kitty keyboard stack with the disambiguate flag. */
|
|
26
|
+
export declare const KITTY_KEYBOARD: TerminalMode;
|
|
27
|
+
/** Named modes, applied in insertion order and given back in reverse. */
|
|
28
|
+
export declare class TerminalModes {
|
|
29
|
+
#private;
|
|
30
|
+
constructor(write: (bytes: string) => void);
|
|
31
|
+
/** Whether the terminal is currently handed to another program. */
|
|
32
|
+
get handedOff(): boolean;
|
|
33
|
+
/** Whether `name` is on (or will be on once the terminal is taken back). */
|
|
34
|
+
has(name: string): boolean;
|
|
35
|
+
/** Turn one mode on; a mode that is already on is left alone. */
|
|
36
|
+
enable(name: string, mode: TerminalMode): void;
|
|
37
|
+
/** Record a mode as on without writing, for a push deferred to another screen. */
|
|
38
|
+
adopt(name: string, mode: TerminalMode): void;
|
|
39
|
+
/** Turn one mode off; a mode that is not on is left alone. */
|
|
40
|
+
disable(name: string): void;
|
|
41
|
+
/** Give every mode back, keeping the set, before another program owns the terminal. */
|
|
42
|
+
handOff(): void;
|
|
43
|
+
/** Re-enable the recorded set once the terminal is ours again. */
|
|
44
|
+
takeBack(): void;
|
|
45
|
+
/** Give every mode back for good. Safe to call more than once. */
|
|
46
|
+
release(): void;
|
|
47
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Terminal modes the TUI turns on, owned in one place so they are always
|
|
3
|
+
* given back.
|
|
4
|
+
*
|
|
5
|
+
* Every mode is a pair of sequences. The controller remembers which modes are
|
|
6
|
+
* on, in the order they were turned on, and gives them all back — in reverse —
|
|
7
|
+
* when the terminal is handed to someone else (`Ctrl+Z`, an external editor),
|
|
8
|
+
* when the session ends, or when the process exits without disposing. Taking
|
|
9
|
+
* the terminal back re-enables the same set. A mode added or removed while the
|
|
10
|
+
* terminal is handed off is recorded and applied on the way back, so no caller
|
|
11
|
+
* has to know whether the terminal is currently ours.
|
|
12
|
+
* @module @agi-fans/dsh-tui/terminal-modes
|
|
13
|
+
*/
|
|
14
|
+
import { KITTY_PROTOCOL_OFF, KITTY_PROTOCOL_ON } from "./terminal-probe.js";
|
|
15
|
+
/** Bracketed paste (DEC 2004). */
|
|
16
|
+
export const BRACKETED_PASTE = { enable: '\x1b[?2004h', disable: '\x1b[?2004l' };
|
|
17
|
+
/** Focus in/out reports (DEC 1004). */
|
|
18
|
+
export const FOCUS_REPORTING = { enable: '\x1b[?1004h', disable: '\x1b[?1004l' };
|
|
19
|
+
/** Button, drag and wheel reports in SGR encoding (DEC 1000, 1002, 1006). */
|
|
20
|
+
export const MOUSE_TRACKING = {
|
|
21
|
+
enable: '\x1b[?1000h\x1b[?1002h\x1b[?1006h',
|
|
22
|
+
disable: '\x1b[?1006l\x1b[?1002l\x1b[?1000l',
|
|
23
|
+
};
|
|
24
|
+
/** One entry on the Kitty keyboard stack with the disambiguate flag. */
|
|
25
|
+
export const KITTY_KEYBOARD = { enable: KITTY_PROTOCOL_ON, disable: KITTY_PROTOCOL_OFF };
|
|
26
|
+
/** Named modes, applied in insertion order and given back in reverse. */
|
|
27
|
+
export class TerminalModes {
|
|
28
|
+
#write;
|
|
29
|
+
#active = new Map();
|
|
30
|
+
#handedOff = false;
|
|
31
|
+
constructor(write) {
|
|
32
|
+
this.#write = write;
|
|
33
|
+
}
|
|
34
|
+
/** Whether the terminal is currently handed to another program. */
|
|
35
|
+
get handedOff() { return this.#handedOff; }
|
|
36
|
+
/** Whether `name` is on (or will be on once the terminal is taken back). */
|
|
37
|
+
has(name) { return this.#active.has(name); }
|
|
38
|
+
/** Turn one mode on; a mode that is already on is left alone. */
|
|
39
|
+
enable(name, mode) {
|
|
40
|
+
if (this.#active.has(name))
|
|
41
|
+
return;
|
|
42
|
+
this.#active.set(name, mode);
|
|
43
|
+
if (!this.#handedOff)
|
|
44
|
+
this.#write(mode.enable);
|
|
45
|
+
}
|
|
46
|
+
/** Record a mode as on without writing, for a push deferred to another screen. */
|
|
47
|
+
adopt(name, mode) {
|
|
48
|
+
if (!this.#active.has(name))
|
|
49
|
+
this.#active.set(name, mode);
|
|
50
|
+
}
|
|
51
|
+
/** Turn one mode off; a mode that is not on is left alone. */
|
|
52
|
+
disable(name) {
|
|
53
|
+
const mode = this.#active.get(name);
|
|
54
|
+
if (mode === undefined)
|
|
55
|
+
return;
|
|
56
|
+
this.#active.delete(name);
|
|
57
|
+
if (!this.#handedOff)
|
|
58
|
+
this.#write(mode.disable);
|
|
59
|
+
}
|
|
60
|
+
/** Give every mode back, keeping the set, before another program owns the terminal. */
|
|
61
|
+
handOff() {
|
|
62
|
+
if (this.#handedOff)
|
|
63
|
+
return;
|
|
64
|
+
this.#handedOff = true;
|
|
65
|
+
this.#write(this.#disableAll());
|
|
66
|
+
}
|
|
67
|
+
/** Re-enable the recorded set once the terminal is ours again. */
|
|
68
|
+
takeBack() {
|
|
69
|
+
if (!this.#handedOff)
|
|
70
|
+
return;
|
|
71
|
+
this.#handedOff = false;
|
|
72
|
+
this.#write([...this.#active.values()].map(mode => mode.enable).join(''));
|
|
73
|
+
}
|
|
74
|
+
/** Give every mode back for good. Safe to call more than once. */
|
|
75
|
+
release() {
|
|
76
|
+
const bytes = this.#handedOff ? '' : this.#disableAll();
|
|
77
|
+
this.#active.clear();
|
|
78
|
+
this.#handedOff = false;
|
|
79
|
+
if (bytes !== '')
|
|
80
|
+
this.#write(bytes);
|
|
81
|
+
}
|
|
82
|
+
#disableAll() {
|
|
83
|
+
return [...this.#active.values()].reverse().map(mode => mode.disable).join('');
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=terminal-modes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-modes.js","sourceRoot":"","sources":["../../src/runtime/terminal-modes.ts"],"names":[],"mappings":"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"}
|