@agi-fans/dsh-tui 0.16.0 → 0.18.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 +53 -1
- package/lib/chrome/status-config.d.ts +4 -1
- package/lib/chrome/status-config.js.map +1 -1
- package/lib/chrome/tool-args.d.ts +9 -0
- package/lib/chrome/tool-args.js +20 -0
- package/lib/chrome/tool-args.js.map +1 -0
- package/lib/chrome/tool-renderers.js +4 -15
- package/lib/chrome/tool-renderers.js.map +1 -1
- package/lib/commands/auth.js +4 -2
- package/lib/commands/auth.js.map +1 -1
- package/lib/commands/jobs.d.ts +2 -2
- package/lib/commands/jobs.js +2 -2
- package/lib/commands/jobs.js.map +1 -1
- package/lib/commands/session.js +2 -4
- package/lib/commands/session.js.map +1 -1
- package/lib/definition.d.ts +3 -0
- package/lib/definition.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/runtime/composer-images.d.ts +44 -0
- package/lib/runtime/composer-images.js +149 -0
- package/lib/runtime/composer-images.js.map +1 -0
- package/lib/runtime/herdr-agent.d.ts +95 -0
- package/lib/runtime/herdr-agent.js +258 -0
- package/lib/runtime/herdr-agent.js.map +1 -0
- package/lib/runtime/plain-tui.d.ts +34 -0
- package/lib/runtime/plain-tui.js +119 -0
- package/lib/runtime/plain-tui.js.map +1 -0
- package/lib/runtime/provider-local.d.ts +46 -7
- package/lib/runtime/provider-local.js +181 -299
- package/lib/runtime/provider-local.js.map +1 -1
- package/lib/runtime/session-runtime.d.ts +9 -1
- package/lib/runtime/session-runtime.js +2 -2
- package/lib/runtime/session-runtime.js.map +1 -1
- package/lib/runtime/startup-notices.js +6 -9
- package/lib/runtime/startup-notices.js.map +1 -1
- package/lib/runtime/tool-presentation.js +18 -3
- package/lib/runtime/tool-presentation.js.map +1 -1
- package/lib/session/content-text.d.ts +12 -0
- package/lib/session/content-text.js +13 -0
- package/lib/session/content-text.js.map +1 -0
- package/lib/session/history-store.js.map +1 -0
- package/lib/session/job-notice.d.ts +2 -2
- package/lib/session/job-notice.js.map +1 -1
- package/lib/session/json-file.d.ts +5 -0
- package/lib/session/json-file.js +21 -0
- package/lib/session/json-file.js.map +1 -0
- package/lib/session/model-favorites.js +15 -25
- package/lib/session/model-favorites.js.map +1 -1
- package/lib/session/release-notes.js +1 -18
- package/lib/session/release-notes.js.map +1 -1
- package/lib/session/session-configuration.d.ts +0 -3
- package/lib/session/session-configuration.js +0 -4
- package/lib/session/session-configuration.js.map +1 -1
- package/lib/session/session-controller.d.ts +6 -4
- package/lib/session/session-controller.js +160 -182
- package/lib/session/session-controller.js.map +1 -1
- package/lib/session/session-library.d.ts +20 -0
- package/lib/session/session-library.js +55 -13
- package/lib/session/session-library.js.map +1 -1
- package/lib/session/subagent-roster.js +16 -46
- package/lib/session/subagent-roster.js.map +1 -1
- package/lib/session/subagent-tracker.d.ts +51 -0
- package/lib/session/subagent-tracker.js +128 -0
- package/lib/session/subagent-tracker.js.map +1 -0
- package/lib/session/tui-settings.d.ts +41 -18
- package/lib/session/tui-settings.js +57 -39
- package/lib/session/tui-settings.js.map +1 -1
- package/lib/session/update-check.js +2 -15
- package/lib/session/update-check.js.map +1 -1
- package/lib/session/version-compare.d.ts +3 -0
- package/lib/session/version-compare.js +21 -0
- package/lib/session/version-compare.js.map +1 -0
- package/lib/views/at-complete.d.ts +2 -0
- package/lib/views/at-complete.js +2 -2
- package/lib/views/at-complete.js.map +1 -1
- package/lib/views/event-views.d.ts +11 -270
- package/lib/views/event-views.js +21 -976
- package/lib/views/event-views.js.map +1 -1
- package/lib/views/settings-list.d.ts +2 -2
- package/lib/views/settings-list.js +12 -11
- package/lib/views/settings-list.js.map +1 -1
- package/lib/views/transcript-export.js +0 -2
- package/lib/views/transcript-export.js.map +1 -1
- package/lib/views/transcript-render.d.ts +179 -0
- package/lib/views/transcript-render.js +916 -0
- package/lib/views/transcript-render.js.map +1 -0
- package/lib/views/transcript-types.d.ts +104 -0
- package/lib/views/transcript-types.js +53 -0
- package/lib/views/transcript-types.js.map +1 -0
- package/package.json +39 -37
- package/lib/views/history-store.js.map +0 -1
- /package/lib/{views → session}/history-store.d.ts +0 -0
- /package/lib/{views → session}/history-store.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"herdr-agent.js","sourceRoot":"","sources":["../../src/runtime/herdr-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/** Non-TTY line input and incremental transcript printing. */
|
|
2
|
+
import type { TuiPrompt, TuiSubmission } from '../definition.ts';
|
|
3
|
+
import type { Block } from '../views/event-views.ts';
|
|
4
|
+
import type { TerminalLike } from './provider-local.ts';
|
|
5
|
+
export type PendingRead = {
|
|
6
|
+
resolve: (submission: TuiSubmission | null) => void;
|
|
7
|
+
signal?: AbortSignal | null;
|
|
8
|
+
/** Detaches this read's abort listener once the read settles. */
|
|
9
|
+
offAbort?: () => void;
|
|
10
|
+
};
|
|
11
|
+
export interface PlainTuiDeps {
|
|
12
|
+
readonly term: TerminalLike;
|
|
13
|
+
/** Transcript blocks, read live so `print()` always flushes the newest tail. */
|
|
14
|
+
blocks(): readonly Block[];
|
|
15
|
+
/** The in-flight human prompt's request, if one is waiting on an answer. */
|
|
16
|
+
promptRequest(): TuiPrompt | undefined;
|
|
17
|
+
/** Resolve the in-flight prompt; the provider owns prompt bookkeeping. */
|
|
18
|
+
finishPrompt(answer: string | null): void;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Pipe-mode counterpart of the TTY reader: a readline queue that buffers lines
|
|
22
|
+
* until the runner asks for the next submission, plus incremental transcript
|
|
23
|
+
* printing that emits each settled block exactly once.
|
|
24
|
+
*/
|
|
25
|
+
export declare class PlainTui {
|
|
26
|
+
#private;
|
|
27
|
+
constructor(deps: PlainTuiDeps);
|
|
28
|
+
readline(signal?: AbortSignal): Promise<TuiSubmission | null>;
|
|
29
|
+
/** Print blocks that settled since the last flush. */
|
|
30
|
+
print(): void;
|
|
31
|
+
/** Forget the print cursor so a replaced transcript reprints in full. */
|
|
32
|
+
resetPrinted(): void;
|
|
33
|
+
dispose(): void;
|
|
34
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/** Non-TTY line input and incremental transcript printing. */
|
|
2
|
+
import { createInterface } from 'node:readline';
|
|
3
|
+
import { blockLines } from "../views/event-views.js";
|
|
4
|
+
import { createTheme } from "../chrome/theme.js";
|
|
5
|
+
/**
|
|
6
|
+
* Pipe-mode counterpart of the TTY reader: a readline queue that buffers lines
|
|
7
|
+
* until the runner asks for the next submission, plus incremental transcript
|
|
8
|
+
* printing that emits each settled block exactly once.
|
|
9
|
+
*/
|
|
10
|
+
export class PlainTui {
|
|
11
|
+
#deps;
|
|
12
|
+
#lineReader = null;
|
|
13
|
+
#pending = null;
|
|
14
|
+
#queue = [];
|
|
15
|
+
#closed = false;
|
|
16
|
+
#printed = 0;
|
|
17
|
+
constructor(deps) {
|
|
18
|
+
this.#deps = deps;
|
|
19
|
+
}
|
|
20
|
+
readline(signal) {
|
|
21
|
+
return new Promise((resolve) => {
|
|
22
|
+
if (this.#lineReader === null) {
|
|
23
|
+
this.#lineReader = createInterface({ input: this.#deps.term.input });
|
|
24
|
+
// Permanent listeners: once() handlers would auto-pause the input
|
|
25
|
+
// stream after one line and miss the EOF close.
|
|
26
|
+
this.#lineReader.on('line', (line) => { this.#resolveLine(line); });
|
|
27
|
+
this.#lineReader.on('close', () => {
|
|
28
|
+
this.#closed = true;
|
|
29
|
+
this.#resolveLine(null);
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
const pending = { resolve, signal: signal ?? null };
|
|
33
|
+
this.#pending = pending;
|
|
34
|
+
if (signal !== undefined) {
|
|
35
|
+
const onAbort = () => {
|
|
36
|
+
if (this.#pending !== pending)
|
|
37
|
+
return;
|
|
38
|
+
this.#pending = null;
|
|
39
|
+
resolve(null);
|
|
40
|
+
};
|
|
41
|
+
signal.addEventListener('abort', onAbort, { once: true });
|
|
42
|
+
pending.offAbort = () => { signal.removeEventListener('abort', onAbort); };
|
|
43
|
+
}
|
|
44
|
+
this.#pump();
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Queue one readline delivery, then drain. A single stream chunk can carry
|
|
49
|
+
* several lines; every line is buffered until the runner asks for the next
|
|
50
|
+
* read, and EOF waits for the queue before closing the reader.
|
|
51
|
+
*/
|
|
52
|
+
#resolveLine(line) {
|
|
53
|
+
const request = this.#deps.promptRequest();
|
|
54
|
+
if (request !== undefined && line !== null) {
|
|
55
|
+
const value = line.trim();
|
|
56
|
+
if (value === '') {
|
|
57
|
+
this.#deps.finishPrompt(null);
|
|
58
|
+
}
|
|
59
|
+
else if (request.allowCustom === false) {
|
|
60
|
+
const options = request.options ?? [];
|
|
61
|
+
const numeric = /^\d+$/u.test(value) ? Number(value) - 1 : -1;
|
|
62
|
+
const option = numeric >= 0
|
|
63
|
+
? options[numeric]
|
|
64
|
+
: options.find(item => item.label.toLowerCase() === value.toLowerCase());
|
|
65
|
+
this.#deps.finishPrompt(option?.value ?? option?.label ?? null);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
this.#deps.finishPrompt(value);
|
|
69
|
+
}
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
if (request !== undefined)
|
|
73
|
+
this.#deps.finishPrompt(null);
|
|
74
|
+
if (line !== null)
|
|
75
|
+
this.#queue.push(line);
|
|
76
|
+
this.#pump();
|
|
77
|
+
}
|
|
78
|
+
/** Resolve the pending read from the queue, or close it after EOF drained. */
|
|
79
|
+
#pump() {
|
|
80
|
+
const pending = this.#pending;
|
|
81
|
+
if (pending === null)
|
|
82
|
+
return;
|
|
83
|
+
const line = this.#queue.shift();
|
|
84
|
+
if (line !== undefined) {
|
|
85
|
+
pending.offAbort?.();
|
|
86
|
+
this.#pending = null;
|
|
87
|
+
pending.resolve({ text: line, images: [] });
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
if (this.#closed) {
|
|
91
|
+
pending.offAbort?.();
|
|
92
|
+
this.#pending = null;
|
|
93
|
+
pending.resolve(null);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/** Print blocks that settled since the last flush. */
|
|
97
|
+
print() {
|
|
98
|
+
const theme = createTheme(false, false);
|
|
99
|
+
const width = this.#deps.term.width();
|
|
100
|
+
const blocks = this.#deps.blocks();
|
|
101
|
+
let out = '';
|
|
102
|
+
for (const block of blocks.slice(this.#printed)) {
|
|
103
|
+
// Pipe / CI output is not a viewport: print the full tool body.
|
|
104
|
+
for (const line of blockLines(block, theme, width, 0, true))
|
|
105
|
+
out += line + '\n';
|
|
106
|
+
}
|
|
107
|
+
this.#printed = blocks.length;
|
|
108
|
+
if (out !== '')
|
|
109
|
+
this.#deps.term.output.write(out);
|
|
110
|
+
}
|
|
111
|
+
/** Forget the print cursor so a replaced transcript reprints in full. */
|
|
112
|
+
resetPrinted() {
|
|
113
|
+
this.#printed = 0;
|
|
114
|
+
}
|
|
115
|
+
dispose() {
|
|
116
|
+
this.#lineReader?.close();
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=plain-tui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plain-tui.js","sourceRoot":"","sources":["../../src/runtime/plain-tui.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* printing of settled blocks.
|
|
11
11
|
* @module @agi-fans/dsh-tui
|
|
12
12
|
*/
|
|
13
|
+
import { HerdrAgentReporter } from './herdr-agent.ts';
|
|
13
14
|
import type { Context } from '@deepseek-ai/cordis';
|
|
14
15
|
import type { SessionEvent } from '@deepseek-ai/dsh-session';
|
|
15
16
|
import { type TuiAgentBehaviorSettingsBinding, type TuiCommand, type TuiPrompt, type TuiNoticeOptions, type TuiRecentSession, type TuiService, type TuiSessionControls, type TuiSessionStats, type TuiStatus, type TuiInputImage, type TuiInspectedSubagent, type TuiLoopStatus, type TuiSubagentRoster, type TuiSubmission } from '../definition.ts';
|
|
@@ -22,21 +23,55 @@ import { type RenderSink } from '../chrome/renderer.ts';
|
|
|
22
23
|
import { type ThemeName } from '../chrome/theme.ts';
|
|
23
24
|
import type { ToolInfo } from '../chrome/tools-list.ts';
|
|
24
25
|
import { type TuiToolPresentation } from '../chrome/tool-renderers.ts';
|
|
26
|
+
import { type TuiSettings } from '../session/tui-settings.ts';
|
|
27
|
+
import z from '@deepseek-ai/schemastery';
|
|
25
28
|
import { type ClipboardFileReader, type ClipboardImageReader, type ImagePathReader } from '../input/image-paste.ts';
|
|
26
29
|
export declare const name = "omdsh-tui";
|
|
27
|
-
/** Plugin config: the model label
|
|
28
|
-
export interface Config {
|
|
30
|
+
/** Plugin config: the model label, event paths, and the live TUI preferences. */
|
|
31
|
+
export interface Config extends TuiSettings {
|
|
29
32
|
/** Model name for the status line. */
|
|
30
33
|
model: string;
|
|
31
|
-
/** Emit SGR color sequences; defaults to the output stream's tty-ness, minus `NO_COLOR` / `FORCE_COLOR=0`. */
|
|
32
|
-
colors?: boolean;
|
|
33
|
-
/** Shipped palette; defaults to dark. */
|
|
34
|
-
theme?: string;
|
|
35
34
|
/** Optional JSONL prompt-history path. */
|
|
36
35
|
historyPath?: string;
|
|
37
36
|
/** Optional `{ key-id: action }` JSON file. */
|
|
38
37
|
keybindingsPath?: string;
|
|
39
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Row schema. The durable preferences ride as volatile fields, so a settings
|
|
41
|
+
* form edit commits into their references and reaches this fiber through
|
|
42
|
+
* `loader/volatile-update` without remounting the terminal provider.
|
|
43
|
+
*/
|
|
44
|
+
export declare const Config: z<Schemastery.ObjectS<NoInfer<{
|
|
45
|
+
theme: z<"dark" | "light" | "midnight" | "solarized" | "catppuccin" | "dracula" | "nord" | "gruvbox" | "rose-pine" | "mono", "dark" | "light" | "midnight" | "solarized" | "catppuccin" | "dracula" | "nord" | "gruvbox" | "rose-pine" | "mono", "volatile-defined">;
|
|
46
|
+
colors: z<boolean, boolean, "volatile">;
|
|
47
|
+
motion: z<"full" | "reduced" | "off", "full" | "reduced" | "off", "volatile-defined">;
|
|
48
|
+
terminalProgress: z<boolean, boolean, "volatile-defined">;
|
|
49
|
+
expandTools: z<boolean, boolean, "volatile-defined">;
|
|
50
|
+
checkUpdates: z<boolean, boolean, "volatile-defined">;
|
|
51
|
+
startupChangelog: z<"summary" | "expanded" | "hidden", "summary" | "expanded" | "hidden", "volatile-defined">;
|
|
52
|
+
notifications: z<"off" | "long-running" | "always", "off" | "long-running" | "always", "volatile-defined">;
|
|
53
|
+
notificationThreshold: z<"15s" | "30s" | "1m" | "2m", "15s" | "30s" | "1m" | "2m", "volatile-defined">;
|
|
54
|
+
statusBar: z<any, any, "volatile" | "volatile-defined">;
|
|
55
|
+
statusPreset: z<"minimal" | "compact" | "full", "minimal" | "compact" | "full", "volatile">;
|
|
56
|
+
model: z<string, string, "plain">;
|
|
57
|
+
historyPath: z<string, string, "plain">;
|
|
58
|
+
keybindingsPath: z<string, string, "plain">;
|
|
59
|
+
}>>, Schemastery.ObjectT<NoInfer<{
|
|
60
|
+
theme: z<"dark" | "light" | "midnight" | "solarized" | "catppuccin" | "dracula" | "nord" | "gruvbox" | "rose-pine" | "mono", "dark" | "light" | "midnight" | "solarized" | "catppuccin" | "dracula" | "nord" | "gruvbox" | "rose-pine" | "mono", "volatile-defined">;
|
|
61
|
+
colors: z<boolean, boolean, "volatile">;
|
|
62
|
+
motion: z<"full" | "reduced" | "off", "full" | "reduced" | "off", "volatile-defined">;
|
|
63
|
+
terminalProgress: z<boolean, boolean, "volatile-defined">;
|
|
64
|
+
expandTools: z<boolean, boolean, "volatile-defined">;
|
|
65
|
+
checkUpdates: z<boolean, boolean, "volatile-defined">;
|
|
66
|
+
startupChangelog: z<"summary" | "expanded" | "hidden", "summary" | "expanded" | "hidden", "volatile-defined">;
|
|
67
|
+
notifications: z<"off" | "long-running" | "always", "off" | "long-running" | "always", "volatile-defined">;
|
|
68
|
+
notificationThreshold: z<"15s" | "30s" | "1m" | "2m", "15s" | "30s" | "1m" | "2m", "volatile-defined">;
|
|
69
|
+
statusBar: z<any, any, "volatile" | "volatile-defined">;
|
|
70
|
+
statusPreset: z<"minimal" | "compact" | "full", "minimal" | "compact" | "full", "volatile">;
|
|
71
|
+
model: z<string, string, "plain">;
|
|
72
|
+
historyPath: z<string, string, "plain">;
|
|
73
|
+
keybindingsPath: z<string, string, "plain">;
|
|
74
|
+
}>>, "plain">;
|
|
40
75
|
/** The minimal terminal surface a LocalTui drives (process streams satisfy it). */
|
|
41
76
|
export interface TerminalLike {
|
|
42
77
|
output: RenderSink & {
|
|
@@ -85,6 +120,8 @@ export declare class LocalTui implements TuiService {
|
|
|
85
120
|
alternateScreenOverlays?: boolean;
|
|
86
121
|
resizeDebounceMs?: number;
|
|
87
122
|
streamRenderMs?: number;
|
|
123
|
+
/** Herdr lifecycle reporter; production injects an environment-aware one. */
|
|
124
|
+
herdrReporter?: HerdrAgentReporter;
|
|
88
125
|
});
|
|
89
126
|
event(event: SessionEvent, presentation?: TuiToolPresentation): void;
|
|
90
127
|
/**
|
|
@@ -116,8 +153,10 @@ export declare class LocalTui implements TuiService {
|
|
|
116
153
|
stats?: TuiSessionStats;
|
|
117
154
|
controls?: TuiSessionControls;
|
|
118
155
|
}): void;
|
|
119
|
-
/** Apply prefs loaded from
|
|
156
|
+
/** Apply prefs loaded from this entry's config (does not persist). */
|
|
120
157
|
applyStoredPrefs(prefs: TuiPrefs): void;
|
|
158
|
+
/** Currently applied preferences; sibling rows read these instead of the config references. */
|
|
159
|
+
prefs(): TuiPrefs;
|
|
121
160
|
/** Called after a live `/settings` change. */
|
|
122
161
|
setPrefsPersist(persist: (prefs: TuiPrefs) => void): void;
|
|
123
162
|
bindAgentBehaviorSettings(binding: TuiAgentBehaviorSettingsBinding): () => void;
|