@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/commands/loop.js
DELETED
|
@@ -1,307 +0,0 @@
|
|
|
1
|
-
/** Process-local prompt loop contributed as an independent omdsh plugin. */
|
|
2
|
-
import { registerCommands } from "./registration.js";
|
|
3
|
-
export const name = 'omdsh-command-loop';
|
|
4
|
-
export const inject = ['commands', 'omdshSession', 'tui'];
|
|
5
|
-
const DEFAULT_REPEAT_DELAY_MS = 800;
|
|
6
|
-
const DEFAULT_COMPLETION_MS = 1_600;
|
|
7
|
-
function durationUnitMs(unit) {
|
|
8
|
-
if (/^(?:s|sec|secs|second|seconds)$/u.test(unit))
|
|
9
|
-
return 1_000;
|
|
10
|
-
if (/^(?:m|min|mins|minute|minutes)$/u.test(unit))
|
|
11
|
-
return 60_000;
|
|
12
|
-
if (/^(?:h|hr|hrs|hour|hours)$/u.test(unit))
|
|
13
|
-
return 3_600_000;
|
|
14
|
-
return undefined;
|
|
15
|
-
}
|
|
16
|
-
function parseDuration(token) {
|
|
17
|
-
const part = /(\d+(?:\.\d+)?)([a-z]+)/guy;
|
|
18
|
-
let offset = 0;
|
|
19
|
-
let total = 0;
|
|
20
|
-
while (offset < token.length) {
|
|
21
|
-
part.lastIndex = offset;
|
|
22
|
-
const match = part.exec(token);
|
|
23
|
-
if (match === null || match.index !== offset || match[1] === undefined || match[2] === undefined)
|
|
24
|
-
return undefined;
|
|
25
|
-
const unitMs = durationUnitMs(match[2].toLowerCase());
|
|
26
|
-
if (unitMs === undefined)
|
|
27
|
-
return undefined;
|
|
28
|
-
total += Number(match[1]) * unitMs;
|
|
29
|
-
offset = part.lastIndex;
|
|
30
|
-
}
|
|
31
|
-
return Number.isFinite(total) && total > 0 ? Math.round(total) : undefined;
|
|
32
|
-
}
|
|
33
|
-
/** Parse the oh-my-pi-compatible `/loop [count|duration] [prompt]` tail. */
|
|
34
|
-
export function parseLoopRequest(rawInput) {
|
|
35
|
-
const input = rawInput.trim();
|
|
36
|
-
if (input === '')
|
|
37
|
-
return {};
|
|
38
|
-
const separator = input.search(/\s/u);
|
|
39
|
-
const head = separator === -1 ? input : input.slice(0, separator);
|
|
40
|
-
const tail = separator === -1 ? '' : input.slice(separator).trim();
|
|
41
|
-
if (/^\d+$/u.test(head)) {
|
|
42
|
-
const count = Number(head);
|
|
43
|
-
if (!Number.isSafeInteger(count) || count <= 0)
|
|
44
|
-
throw new Error('Loop count must be a positive integer.');
|
|
45
|
-
return {
|
|
46
|
-
limit: { kind: 'iterations', count },
|
|
47
|
-
...(tail === '' ? {} : { prompt: tail }),
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
const durationMs = parseDuration(head);
|
|
51
|
-
if (durationMs !== undefined) {
|
|
52
|
-
return {
|
|
53
|
-
limit: { kind: 'duration', durationMs, label: head },
|
|
54
|
-
...(tail === '' ? {} : { prompt: tail }),
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
if (/^\d/u.test(head)) {
|
|
58
|
-
throw new Error('Invalid loop limit. Use a count such as 5 or a duration such as 10m or 1h30m.');
|
|
59
|
-
}
|
|
60
|
-
return { prompt: input };
|
|
61
|
-
}
|
|
62
|
-
function cloneSubmission(submission) {
|
|
63
|
-
return {
|
|
64
|
-
text: submission.text,
|
|
65
|
-
images: submission.images.map(image => ({ ...image, data: image.data.slice() })),
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
function wait(ms, signal) {
|
|
69
|
-
if (signal.aborted)
|
|
70
|
-
return Promise.resolve(false);
|
|
71
|
-
return new Promise((resolve) => {
|
|
72
|
-
const timer = setTimeout(() => {
|
|
73
|
-
signal.removeEventListener('abort', cancel);
|
|
74
|
-
resolve(true);
|
|
75
|
-
}, ms);
|
|
76
|
-
const cancel = () => {
|
|
77
|
-
clearTimeout(timer);
|
|
78
|
-
resolve(false);
|
|
79
|
-
};
|
|
80
|
-
signal.addEventListener('abort', cancel, { once: true });
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
/** Runtime state for one top-level omdsh loop; intentionally not persisted. */
|
|
84
|
-
export class LoopRuntime {
|
|
85
|
-
session;
|
|
86
|
-
tui;
|
|
87
|
-
repeatDelayMs;
|
|
88
|
-
completionMs;
|
|
89
|
-
#active;
|
|
90
|
-
#completionTimer;
|
|
91
|
-
constructor(session, tui, repeatDelayMs = DEFAULT_REPEAT_DELAY_MS, completionMs = DEFAULT_COMPLETION_MS) {
|
|
92
|
-
this.session = session;
|
|
93
|
-
this.tui = tui;
|
|
94
|
-
this.repeatDelayMs = repeatDelayMs;
|
|
95
|
-
this.completionMs = completionMs;
|
|
96
|
-
}
|
|
97
|
-
isEnabled(agent) {
|
|
98
|
-
return this.#active !== undefined && (agent === undefined || this.#active.agent === agent);
|
|
99
|
-
}
|
|
100
|
-
async enable(agent, request) {
|
|
101
|
-
this.session.assertActive(agent);
|
|
102
|
-
this.#stop();
|
|
103
|
-
const operation = new AbortController();
|
|
104
|
-
this.#active = {
|
|
105
|
-
agent,
|
|
106
|
-
phase: 'waiting',
|
|
107
|
-
repeats: 0,
|
|
108
|
-
...(request.limit?.kind === 'iterations' ? { remaining: request.limit.count, total: request.limit.count } : {}),
|
|
109
|
-
...(request.limit?.kind === 'duration'
|
|
110
|
-
? { durationRemainingMs: request.limit.durationMs, limitLabel: request.limit.label }
|
|
111
|
-
: {}),
|
|
112
|
-
operation,
|
|
113
|
-
};
|
|
114
|
-
this.#publish();
|
|
115
|
-
if (request.prompt !== undefined) {
|
|
116
|
-
const submission = { text: request.prompt, images: [] };
|
|
117
|
-
await this.submit(submission, agent);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
disable(agent) {
|
|
121
|
-
if (this.#active === undefined || (agent !== undefined && this.#active.agent !== agent))
|
|
122
|
-
return false;
|
|
123
|
-
this.#stop();
|
|
124
|
-
return true;
|
|
125
|
-
}
|
|
126
|
-
/** Atomically accept, dispatch, and arm a human composer submission. */
|
|
127
|
-
async submit(submission, agent) {
|
|
128
|
-
const active = this.#active;
|
|
129
|
-
if (active === undefined || active.agent !== agent)
|
|
130
|
-
return false;
|
|
131
|
-
const previousPrompt = active.prompt === undefined ? undefined : cloneSubmission(active.prompt);
|
|
132
|
-
const previousPhase = active.phase;
|
|
133
|
-
const previousDeadline = active.deadline;
|
|
134
|
-
active.operation.abort();
|
|
135
|
-
active.operation = new AbortController();
|
|
136
|
-
active.prompt = cloneSubmission(submission);
|
|
137
|
-
active.phase = 'running';
|
|
138
|
-
if (active.durationRemainingMs !== undefined && active.deadline === undefined) {
|
|
139
|
-
active.deadline = Date.now() + active.durationRemainingMs;
|
|
140
|
-
}
|
|
141
|
-
this.#publish();
|
|
142
|
-
try {
|
|
143
|
-
await this.session.send(submission, agent);
|
|
144
|
-
}
|
|
145
|
-
catch (error) {
|
|
146
|
-
active.operation.abort();
|
|
147
|
-
active.operation = new AbortController();
|
|
148
|
-
if (previousPrompt === undefined)
|
|
149
|
-
delete active.prompt;
|
|
150
|
-
else
|
|
151
|
-
active.prompt = previousPrompt;
|
|
152
|
-
active.phase = previousPhase;
|
|
153
|
-
if (previousDeadline === undefined)
|
|
154
|
-
delete active.deadline;
|
|
155
|
-
else
|
|
156
|
-
active.deadline = previousDeadline;
|
|
157
|
-
this.#publish();
|
|
158
|
-
if (active.prompt !== undefined)
|
|
159
|
-
void this.#run(active, active.operation.signal);
|
|
160
|
-
throw error;
|
|
161
|
-
}
|
|
162
|
-
void this.#run(active, active.operation.signal);
|
|
163
|
-
return true;
|
|
164
|
-
}
|
|
165
|
-
/** Interrupt the current iteration and wait for a new prompt without disabling Loop. */
|
|
166
|
-
pause(agent) {
|
|
167
|
-
const active = this.#active;
|
|
168
|
-
if (active === undefined || (agent !== undefined && active.agent !== agent) || active.prompt === undefined)
|
|
169
|
-
return false;
|
|
170
|
-
active.operation.abort();
|
|
171
|
-
active.operation = new AbortController();
|
|
172
|
-
if (active.deadline !== undefined) {
|
|
173
|
-
active.durationRemainingMs = Math.max(0, active.deadline - Date.now());
|
|
174
|
-
delete active.deadline;
|
|
175
|
-
}
|
|
176
|
-
delete active.prompt;
|
|
177
|
-
active.phase = 'paused';
|
|
178
|
-
this.#publish();
|
|
179
|
-
return true;
|
|
180
|
-
}
|
|
181
|
-
/** Drop a loop as soon as a command replaces the active session. */
|
|
182
|
-
syncAgent(agent) {
|
|
183
|
-
if (this.#active !== undefined && this.#active.agent !== agent)
|
|
184
|
-
this.#stop();
|
|
185
|
-
}
|
|
186
|
-
dispose() {
|
|
187
|
-
this.#stop();
|
|
188
|
-
}
|
|
189
|
-
async #run(active, signal) {
|
|
190
|
-
while (!signal.aborted && this.#active === active && active.prompt !== undefined) {
|
|
191
|
-
try {
|
|
192
|
-
await active.agent.whenIdle();
|
|
193
|
-
}
|
|
194
|
-
catch (error) {
|
|
195
|
-
if (!signal.aborted)
|
|
196
|
-
this.#fail(error);
|
|
197
|
-
return;
|
|
198
|
-
}
|
|
199
|
-
if (signal.aborted || this.#active !== active)
|
|
200
|
-
return;
|
|
201
|
-
if (this.session.agent !== active.agent) {
|
|
202
|
-
this.#stop();
|
|
203
|
-
return;
|
|
204
|
-
}
|
|
205
|
-
if (!await wait(this.repeatDelayMs, signal))
|
|
206
|
-
return;
|
|
207
|
-
if (active.remaining !== undefined && active.remaining <= 0) {
|
|
208
|
-
this.#complete();
|
|
209
|
-
return;
|
|
210
|
-
}
|
|
211
|
-
if (active.deadline !== undefined && Date.now() >= active.deadline) {
|
|
212
|
-
this.#complete();
|
|
213
|
-
return;
|
|
214
|
-
}
|
|
215
|
-
const prompt = cloneSubmission(active.prompt);
|
|
216
|
-
if (active.remaining !== undefined)
|
|
217
|
-
active.remaining -= 1;
|
|
218
|
-
active.repeats += 1;
|
|
219
|
-
this.#publish();
|
|
220
|
-
try {
|
|
221
|
-
await this.session.send(prompt, active.agent);
|
|
222
|
-
}
|
|
223
|
-
catch (error) {
|
|
224
|
-
if (!signal.aborted)
|
|
225
|
-
this.#fail(error);
|
|
226
|
-
return;
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
#complete() {
|
|
231
|
-
const active = this.#active;
|
|
232
|
-
if (active === undefined)
|
|
233
|
-
return;
|
|
234
|
-
active.operation.abort();
|
|
235
|
-
this.#active = undefined;
|
|
236
|
-
if (this.#completionTimer !== undefined)
|
|
237
|
-
clearTimeout(this.#completionTimer);
|
|
238
|
-
this.tui.setLoopStatus({
|
|
239
|
-
phase: 'completed',
|
|
240
|
-
repeats: active.repeats,
|
|
241
|
-
...(active.total === undefined ? {} : { total: active.total }),
|
|
242
|
-
...(active.limitLabel === undefined ? {} : { limit: active.limitLabel }),
|
|
243
|
-
});
|
|
244
|
-
this.#completionTimer = setTimeout(() => {
|
|
245
|
-
this.#completionTimer = undefined;
|
|
246
|
-
if (this.#active === undefined)
|
|
247
|
-
this.tui.setLoopStatus(undefined);
|
|
248
|
-
}, this.completionMs);
|
|
249
|
-
this.#completionTimer.unref?.();
|
|
250
|
-
}
|
|
251
|
-
#fail(error) {
|
|
252
|
-
this.#stop();
|
|
253
|
-
this.tui.notice(`Loop stopped: ${error instanceof Error ? error.message : String(error)}`, { level: 'error' });
|
|
254
|
-
}
|
|
255
|
-
#stop() {
|
|
256
|
-
if (this.#completionTimer !== undefined) {
|
|
257
|
-
clearTimeout(this.#completionTimer);
|
|
258
|
-
this.#completionTimer = undefined;
|
|
259
|
-
}
|
|
260
|
-
this.#active?.operation.abort();
|
|
261
|
-
this.#active = undefined;
|
|
262
|
-
this.tui.setLoopStatus(undefined);
|
|
263
|
-
}
|
|
264
|
-
#publish() {
|
|
265
|
-
const active = this.#active;
|
|
266
|
-
if (active === undefined) {
|
|
267
|
-
this.tui.setLoopStatus(undefined);
|
|
268
|
-
return;
|
|
269
|
-
}
|
|
270
|
-
this.tui.setLoopStatus({
|
|
271
|
-
phase: active.phase,
|
|
272
|
-
repeats: active.repeats,
|
|
273
|
-
...(active.total === undefined ? {} : { total: active.total }),
|
|
274
|
-
...(active.deadline === undefined ? {} : { deadline: active.deadline }),
|
|
275
|
-
...(active.limitLabel === undefined ? {} : { limit: active.limitLabel }),
|
|
276
|
-
});
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
async function loop(runtime, invocation) {
|
|
280
|
-
if (runtime.disable(invocation.agent))
|
|
281
|
-
return { kind: 'success' };
|
|
282
|
-
let request;
|
|
283
|
-
try {
|
|
284
|
-
request = parseLoopRequest(invocation.rawInput);
|
|
285
|
-
}
|
|
286
|
-
catch (error) {
|
|
287
|
-
return { kind: 'error', text: error instanceof Error ? error.message : String(error) };
|
|
288
|
-
}
|
|
289
|
-
await runtime.enable(invocation.agent, request);
|
|
290
|
-
return { kind: 'success' };
|
|
291
|
-
}
|
|
292
|
-
export function apply(ctx) {
|
|
293
|
-
const session = ctx.get('omdshSession');
|
|
294
|
-
const tui = ctx.get('tui');
|
|
295
|
-
if (session === undefined || tui === undefined)
|
|
296
|
-
throw new Error('omdsh-command-loop: session runtime and tui are required');
|
|
297
|
-
const runtime = new LoopRuntime(session, tui);
|
|
298
|
-
ctx.provide('omdshLoop', runtime);
|
|
299
|
-
registerCommands(ctx, [{
|
|
300
|
-
name: 'loop',
|
|
301
|
-
description: 'Repeat a prompt after every completed turn',
|
|
302
|
-
input: { hint: '[count|duration] [prompt]' },
|
|
303
|
-
handler: invocation => loop(runtime, invocation),
|
|
304
|
-
}], 'omdsh loop command');
|
|
305
|
-
ctx.effect(() => () => { runtime.dispose(); }, 'omdsh loop runtime lifecycle');
|
|
306
|
-
}
|
|
307
|
-
//# sourceMappingURL=loop.js.map
|
package/lib/commands/loop.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/commands/loop.ts"],"names":[],"mappings":"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"}
|
package/lib/commands/steer.d.ts
DELETED
package/lib/commands/steer.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/** Steering command registered through dsh-commands. */
|
|
2
|
-
import { steerAgent } from "../session/steering.js";
|
|
3
|
-
import { registerCommands } from "./registration.js";
|
|
4
|
-
export const name = 'omdsh-command-steer';
|
|
5
|
-
export const inject = ['commands'];
|
|
6
|
-
function steer(invocation) {
|
|
7
|
-
const input = invocation.rawInput.trim();
|
|
8
|
-
if (input === '')
|
|
9
|
-
return { kind: 'error', text: 'Usage: /steer <message>' };
|
|
10
|
-
if (invocation.agent.status !== 'running') {
|
|
11
|
-
return {
|
|
12
|
-
kind: 'error',
|
|
13
|
-
text: 'Steering is only available during an active turn. Send a normal message to start the next turn.',
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
steerAgent(invocation.agent, input);
|
|
17
|
-
return { kind: 'success', text: "Guidance queued for the current turn's next model step." };
|
|
18
|
-
}
|
|
19
|
-
export function apply(ctx) {
|
|
20
|
-
registerCommands(ctx, [
|
|
21
|
-
{ name: 'steer', description: 'Guide the active turn before its next model step', input: { hint: '<message>' }, handler: steer },
|
|
22
|
-
], 'omdsh steering commands');
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=steer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"steer.js","sourceRoot":"","sources":["../../src/commands/steer.ts"],"names":[],"mappings":"AAAA,wDAAwD;AAIxD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEpD,MAAM,CAAC,MAAM,IAAI,GAAG,qBAAqB,CAAA;AACzC,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,UAAU,CAAC,CAAA;AAElC,SAAS,KAAK,CAAC,UAA6B;IAC1C,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;IACxC,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAA;IAC3E,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO;YACL,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,iGAAiG;SACxG,CAAA;IACH,CAAC;IACD,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IACnC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,yDAAyD,EAAE,CAAA;AAC7F,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,GAAY;IAChC,gBAAgB,CAAC,GAAG,EAAE;QACpB,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,kDAAkD,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;KACjI,EAAE,yBAAyB,CAAC,CAAA;AAC/B,CAAC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/** Bounded, paused snapshots over the Harness's newest-relative scrollback pages. */
|
|
2
|
-
import type { TerminalReadRequest, TerminalReadResult } from '@deepseek-ai/dsh-terminal';
|
|
3
|
-
import type { TuiDocumentSource } from '../definition.ts';
|
|
4
|
-
export declare class TerminalReader {
|
|
5
|
-
#private;
|
|
6
|
-
constructor(read: (request: TerminalReadRequest) => TerminalReadResult);
|
|
7
|
-
/** Following returns the latest page; pausing keeps the exact text already displayed. */
|
|
8
|
-
refresh(following: boolean): TuiDocumentSource;
|
|
9
|
-
/** Prepend an older page only when its overlap still identifies this frozen snapshot. */
|
|
10
|
-
loadEarlier(): number;
|
|
11
|
-
}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
/** Bounded, paused snapshots over the Harness's newest-relative scrollback pages. */
|
|
2
|
-
const PAGE_LINES = 300;
|
|
3
|
-
const OVERLAP_LINES = 20;
|
|
4
|
-
const MAX_LINES = 10_000;
|
|
5
|
-
const MAX_BYTES = 4 * 1024 * 1024;
|
|
6
|
-
export class TerminalReader {
|
|
7
|
-
#read;
|
|
8
|
-
#page;
|
|
9
|
-
#lines = [];
|
|
10
|
-
#firstLine = 1;
|
|
11
|
-
#note = '';
|
|
12
|
-
#source;
|
|
13
|
-
constructor(read) { this.#read = read; }
|
|
14
|
-
/** Following returns the latest page; pausing keeps the exact text already displayed. */
|
|
15
|
-
refresh(following) {
|
|
16
|
-
if (following || this.#page === undefined) {
|
|
17
|
-
const page = this.#read({ offset: 0, count: PAGE_LINES });
|
|
18
|
-
if (page.text !== this.#page?.text || page.totalLines !== this.#page.totalLines || page.lineEnd !== this.#page.lineEnd
|
|
19
|
-
|| page.truncated !== this.#page.truncated || this.#note !== '')
|
|
20
|
-
this.#source = undefined;
|
|
21
|
-
this.#page = page;
|
|
22
|
-
this.#lines = page.lineEnd === page.lineBegin ? [] : page.text.split('\n');
|
|
23
|
-
this.#note = '';
|
|
24
|
-
const bytes = Buffer.from(page.text);
|
|
25
|
-
if (bytes.length > MAX_BYTES) {
|
|
26
|
-
this.#lines = bytes.subarray(bytes.length - MAX_BYTES).toString('utf8').split('\n');
|
|
27
|
-
this.#page = { ...page, lineEnd: page.lineBegin + this.#lines.length };
|
|
28
|
-
this.#note = 'Reader limit: 4 MiB; leading text clipped';
|
|
29
|
-
}
|
|
30
|
-
this.#firstLine = Math.max(1, page.totalLines - this.#page.lineEnd + 1);
|
|
31
|
-
}
|
|
32
|
-
return this.#document();
|
|
33
|
-
}
|
|
34
|
-
/** Prepend an older page only when its overlap still identifies this frozen snapshot. */
|
|
35
|
-
loadEarlier() {
|
|
36
|
-
if (this.#page === undefined)
|
|
37
|
-
this.refresh(false);
|
|
38
|
-
const snapshot = this.#page;
|
|
39
|
-
if (this.#lines.length >= MAX_LINES)
|
|
40
|
-
return this.#stop('Reader limit: 10,000 lines');
|
|
41
|
-
if (this.#firstLine <= 1)
|
|
42
|
-
return this.#stop('No earlier retained output');
|
|
43
|
-
const newest = this.#read({ offset: 0, count: 1 });
|
|
44
|
-
const overlap = Math.min(OVERLAP_LINES, this.#lines.length);
|
|
45
|
-
const offset = newest.totalLines - snapshot.totalLines + snapshot.lineEnd - overlap;
|
|
46
|
-
if (newest.totalLines < snapshot.totalLines || offset < 0)
|
|
47
|
-
return this.#expired();
|
|
48
|
-
const older = this.#read({ offset, count: Math.min(PAGE_LINES, MAX_LINES - this.#lines.length) + overlap });
|
|
49
|
-
const lines = older.lineEnd === older.lineBegin ? [] : older.text.split('\n');
|
|
50
|
-
// A capped scrollback can rotate without changing totalLines. Never splice
|
|
51
|
-
// pages merely because their numeric offsets happen to line up.
|
|
52
|
-
if (older.totalLines !== newest.totalLines || lines.length <= overlap
|
|
53
|
-
|| lines.slice(-overlap).some((line, at) => line !== this.#lines[at]))
|
|
54
|
-
return this.#expired();
|
|
55
|
-
const prefix = lines.slice(0, -overlap);
|
|
56
|
-
const next = [...prefix, ...this.#lines];
|
|
57
|
-
if (Buffer.byteLength(next.join('\n')) > MAX_BYTES)
|
|
58
|
-
return this.#stop('Reader limit: 4 MiB');
|
|
59
|
-
this.#lines = next;
|
|
60
|
-
this.#firstLine = Math.max(1, this.#firstLine - prefix.length);
|
|
61
|
-
this.#page = older;
|
|
62
|
-
this.#note = '';
|
|
63
|
-
this.#source = undefined;
|
|
64
|
-
return prefix.length;
|
|
65
|
-
}
|
|
66
|
-
#expired() {
|
|
67
|
-
return this.#stop('History changed or was clipped; End refreshes the latest output');
|
|
68
|
-
}
|
|
69
|
-
#stop(note) {
|
|
70
|
-
if (this.#note !== note)
|
|
71
|
-
this.#source = undefined;
|
|
72
|
-
this.#note = note;
|
|
73
|
-
return 0;
|
|
74
|
-
}
|
|
75
|
-
#document() {
|
|
76
|
-
if (this.#source !== undefined)
|
|
77
|
-
return this.#source;
|
|
78
|
-
const status = (this.#note === '' ? '' : `${this.#note} · `) + `${this.#lines.length} loaded`
|
|
79
|
-
+ (this.#page?.truncated === true ? ' · Retention clipped' : '');
|
|
80
|
-
// The source renderer removes one terminator; keep a real empty final PTY
|
|
81
|
-
// line so registry offsets and the reader's source rows remain identical.
|
|
82
|
-
const text = this.#lines.length === 0 ? '' : this.#lines.join('\n') + '\n';
|
|
83
|
-
this.#source = { text, firstLine: this.#firstLine, status };
|
|
84
|
-
return this.#source;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
//# sourceMappingURL=terminal-reader.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-reader.js","sourceRoot":"","sources":["../../src/runtime/terminal-reader.ts"],"names":[],"mappings":"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"}
|
package/lib/views/agent-hub.d.ts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
/** Keyboard-first full-screen roster and inspector for descendant subagents. */
|
|
2
|
-
import type { KeyEvent } from '../input/keys.ts';
|
|
3
|
-
import type { Theme } from '../chrome/theme.ts';
|
|
4
|
-
import type { TuiSubagentRoster } from '../definition.ts';
|
|
5
|
-
import { type HotkeyRow } from './hotkey-format.ts';
|
|
6
|
-
export interface AgentHubState {
|
|
7
|
-
roster: TuiSubagentRoster;
|
|
8
|
-
selectedId: string | null;
|
|
9
|
-
inspector: boolean;
|
|
10
|
-
detailScroll: number;
|
|
11
|
-
tree: boolean;
|
|
12
|
-
}
|
|
13
|
-
export type AgentHubCommand = {
|
|
14
|
-
state: AgentHubState;
|
|
15
|
-
} | {
|
|
16
|
-
close: true;
|
|
17
|
-
} | {
|
|
18
|
-
open: string;
|
|
19
|
-
};
|
|
20
|
-
export declare function createAgentHub(roster: TuiSubagentRoster): AgentHubState;
|
|
21
|
-
export declare function updateAgentHub(state: AgentHubState, roster: TuiSubagentRoster): AgentHubState;
|
|
22
|
-
export declare function applyAgentHubEvent(state: AgentHubState, event: KeyEvent): AgentHubCommand;
|
|
23
|
-
/** Keys the Agent Hub accepts; `/help` and its toolbar and footer read this list. */
|
|
24
|
-
export declare const AGENT_HUB_HOTKEYS: readonly HotkeyRow[];
|
|
25
|
-
export declare function renderAgentHub(state: AgentHubState, theme: Theme, width: number, height: number, now?: number): {
|
|
26
|
-
lines: string[];
|
|
27
|
-
cursor: {
|
|
28
|
-
row: number;
|
|
29
|
-
column: number;
|
|
30
|
-
};
|
|
31
|
-
cursorVisible: boolean;
|
|
32
|
-
};
|