@indianic/dialout 1.10.0 → 1.12.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/README.md +14 -0
- package/dist/ai-adapters/claude.d.ts.map +1 -1
- package/dist/ai-adapters/claude.js +18 -1
- package/dist/ai-adapters/claude.js.map +1 -1
- package/dist/ai-sessions.d.ts +26 -1
- package/dist/ai-sessions.d.ts.map +1 -1
- package/dist/ai-sessions.js +43 -7
- package/dist/ai-sessions.js.map +1 -1
- package/dist/cli-client.d.ts +60 -0
- package/dist/cli-client.d.ts.map +1 -0
- package/dist/cli-client.js +246 -0
- package/dist/cli-client.js.map +1 -0
- package/dist/cli-terminal.d.ts +101 -0
- package/dist/cli-terminal.d.ts.map +1 -0
- package/dist/cli-terminal.js +1121 -0
- package/dist/cli-terminal.js.map +1 -0
- package/dist/cli.js +84 -0
- package/dist/cli.js.map +1 -1
- package/dist/file-transfer.d.ts +18 -0
- package/dist/file-transfer.d.ts.map +1 -0
- package/dist/file-transfer.js +266 -0
- package/dist/file-transfer.js.map +1 -0
- package/dist/fs-browser.d.ts +3 -1
- package/dist/fs-browser.d.ts.map +1 -1
- package/dist/fs-browser.js +35 -6
- package/dist/fs-browser.js.map +1 -1
- package/dist/mcp-stdio.d.ts +10 -0
- package/dist/mcp-stdio.d.ts.map +1 -0
- package/dist/mcp-stdio.js +199 -0
- package/dist/mcp-stdio.js.map +1 -0
- package/dist/shared-shell.d.ts +77 -0
- package/dist/shared-shell.d.ts.map +1 -0
- package/dist/shared-shell.js +282 -0
- package/dist/shared-shell.js.map +1 -0
- package/dist/websocket.d.ts.map +1 -1
- package/dist/websocket.js +413 -1
- package/dist/websocket.js.map +1 -1
- package/node_modules/@indianic/dialout-shared/dist/ai-chat-prefs.test.d.ts +2 -0
- package/node_modules/@indianic/dialout-shared/dist/ai-chat-prefs.test.d.ts.map +1 -0
- package/node_modules/@indianic/dialout-shared/dist/ai-chat-prefs.test.js +38 -0
- package/node_modules/@indianic/dialout-shared/dist/attachments.test.d.ts +2 -0
- package/node_modules/@indianic/dialout-shared/dist/attachments.test.d.ts.map +1 -0
- package/node_modules/@indianic/dialout-shared/dist/attachments.test.js +31 -0
- package/node_modules/@indianic/dialout-shared/dist/captured.d.ts +27 -0
- package/node_modules/@indianic/dialout-shared/dist/captured.d.ts.map +1 -0
- package/node_modules/@indianic/dialout-shared/dist/captured.js +23 -0
- package/node_modules/@indianic/dialout-shared/dist/captured.test.d.ts +2 -0
- package/node_modules/@indianic/dialout-shared/dist/captured.test.d.ts.map +1 -0
- package/node_modules/@indianic/dialout-shared/dist/captured.test.js +27 -0
- package/node_modules/@indianic/dialout-shared/dist/chat-blocks.d.ts +6 -0
- package/node_modules/@indianic/dialout-shared/dist/chat-blocks.d.ts.map +1 -1
- package/node_modules/@indianic/dialout-shared/dist/chat-blocks.js +15 -4
- package/node_modules/@indianic/dialout-shared/dist/chat-blocks.test.d.ts +2 -0
- package/node_modules/@indianic/dialout-shared/dist/chat-blocks.test.d.ts.map +1 -0
- package/node_modules/@indianic/dialout-shared/dist/chat-blocks.test.js +81 -0
- package/node_modules/@indianic/dialout-shared/dist/command-filter.test.d.ts +2 -0
- package/node_modules/@indianic/dialout-shared/dist/command-filter.test.d.ts.map +1 -0
- package/node_modules/@indianic/dialout-shared/dist/command-filter.test.js +63 -0
- package/node_modules/@indianic/dialout-shared/dist/composer-behaviour.test.d.ts +2 -0
- package/node_modules/@indianic/dialout-shared/dist/composer-behaviour.test.d.ts.map +1 -0
- package/node_modules/@indianic/dialout-shared/dist/composer-behaviour.test.js +27 -0
- package/node_modules/@indianic/dialout-shared/dist/event-merge.d.ts +7 -0
- package/node_modules/@indianic/dialout-shared/dist/event-merge.d.ts.map +1 -1
- package/node_modules/@indianic/dialout-shared/dist/event-merge.test.d.ts +2 -0
- package/node_modules/@indianic/dialout-shared/dist/event-merge.test.d.ts.map +1 -0
- package/node_modules/@indianic/dialout-shared/dist/event-merge.test.js +66 -0
- package/node_modules/@indianic/dialout-shared/dist/events.d.ts +1 -0
- package/node_modules/@indianic/dialout-shared/dist/events.d.ts.map +1 -1
- package/node_modules/@indianic/dialout-shared/dist/index.d.ts +6 -1
- package/node_modules/@indianic/dialout-shared/dist/index.d.ts.map +1 -1
- package/node_modules/@indianic/dialout-shared/dist/index.js +15 -1
- package/node_modules/@indianic/dialout-shared/dist/notices.d.ts +37 -0
- package/node_modules/@indianic/dialout-shared/dist/notices.d.ts.map +1 -0
- package/node_modules/@indianic/dialout-shared/dist/notices.js +124 -0
- package/node_modules/@indianic/dialout-shared/dist/notices.test.d.ts +2 -0
- package/node_modules/@indianic/dialout-shared/dist/notices.test.d.ts.map +1 -0
- package/node_modules/@indianic/dialout-shared/dist/notices.test.js +92 -0
- package/node_modules/@indianic/dialout-shared/dist/notify.test.d.ts +2 -0
- package/node_modules/@indianic/dialout-shared/dist/notify.test.d.ts.map +1 -0
- package/node_modules/@indianic/dialout-shared/dist/notify.test.js +51 -0
- package/node_modules/@indianic/dialout-shared/dist/pane-prompt.d.ts +17 -0
- package/node_modules/@indianic/dialout-shared/dist/pane-prompt.d.ts.map +1 -1
- package/node_modules/@indianic/dialout-shared/dist/pane-prompt.js +27 -0
- package/node_modules/@indianic/dialout-shared/dist/pane-prompt.test.d.ts +2 -0
- package/node_modules/@indianic/dialout-shared/dist/pane-prompt.test.d.ts.map +1 -0
- package/node_modules/@indianic/dialout-shared/dist/pane-prompt.test.js +184 -0
- package/node_modules/@indianic/dialout-shared/dist/scroll-pin.test.d.ts +2 -0
- package/node_modules/@indianic/dialout-shared/dist/scroll-pin.test.d.ts.map +1 -0
- package/node_modules/@indianic/dialout-shared/dist/scroll-pin.test.js +21 -0
- package/node_modules/@indianic/dialout-shared/dist/thinking.d.ts +9 -0
- package/node_modules/@indianic/dialout-shared/dist/thinking.d.ts.map +1 -0
- package/node_modules/@indianic/dialout-shared/dist/thinking.js +38 -0
- package/node_modules/@indianic/dialout-shared/dist/thinking.test.d.ts +2 -0
- package/node_modules/@indianic/dialout-shared/dist/thinking.test.d.ts.map +1 -0
- package/node_modules/@indianic/dialout-shared/dist/thinking.test.js +30 -0
- package/node_modules/@indianic/dialout-shared/dist/tmux-prefs.test.d.ts +2 -0
- package/node_modules/@indianic/dialout-shared/dist/tmux-prefs.test.d.ts.map +1 -0
- package/node_modules/@indianic/dialout-shared/dist/tmux-prefs.test.js +95 -0
- package/node_modules/@indianic/dialout-shared/dist/tool-appearance.test.d.ts +2 -0
- package/node_modules/@indianic/dialout-shared/dist/tool-appearance.test.d.ts.map +1 -0
- package/node_modules/@indianic/dialout-shared/dist/tool-appearance.test.js +38 -0
- package/node_modules/@indianic/dialout-shared/package.json +2 -2
- package/node_modules/@indianic/dialout-shared/src/captured.test.ts +29 -0
- package/node_modules/@indianic/dialout-shared/src/captured.ts +46 -0
- package/node_modules/@indianic/dialout-shared/src/chat-blocks.test.ts +14 -0
- package/node_modules/@indianic/dialout-shared/src/chat-blocks.ts +14 -5
- package/node_modules/@indianic/dialout-shared/src/event-merge.test.ts +27 -0
- package/node_modules/@indianic/dialout-shared/src/event-merge.ts +11 -0
- package/node_modules/@indianic/dialout-shared/src/events.ts +5 -1
- package/node_modules/@indianic/dialout-shared/src/index.ts +8 -1
- package/node_modules/@indianic/dialout-shared/src/notices.test.ts +102 -0
- package/node_modules/@indianic/dialout-shared/src/notices.ts +159 -0
- package/node_modules/@indianic/dialout-shared/src/pane-prompt.test.ts +23 -1
- package/node_modules/@indianic/dialout-shared/src/pane-prompt.ts +27 -0
- package/node_modules/@indianic/dialout-shared/src/thinking.test.ts +32 -0
- package/node_modules/@indianic/dialout-shared/src/thinking.ts +32 -0
- package/package.json +1 -1
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
export interface ShellDeps {
|
|
2
|
+
exists(name: string): boolean;
|
|
3
|
+
run(args: string[]): void;
|
|
4
|
+
capture(): string;
|
|
5
|
+
homedir: string;
|
|
6
|
+
branch: string;
|
|
7
|
+
/** Stamped into `@devdash_created`. Not the timeout clock. */
|
|
8
|
+
created: string;
|
|
9
|
+
sleep(ms: number): Promise<void>;
|
|
10
|
+
/** Timeout clock in milliseconds. Tests advance this from `sleep`. */
|
|
11
|
+
now(): number;
|
|
12
|
+
}
|
|
13
|
+
export type ExecResponse = {
|
|
14
|
+
ok: true;
|
|
15
|
+
output: string;
|
|
16
|
+
exitCode: number | null;
|
|
17
|
+
timedOut: boolean;
|
|
18
|
+
} | {
|
|
19
|
+
ok: false;
|
|
20
|
+
error: string;
|
|
21
|
+
};
|
|
22
|
+
export type ReadResponse = {
|
|
23
|
+
ok: true;
|
|
24
|
+
output: string;
|
|
25
|
+
} | {
|
|
26
|
+
ok: false;
|
|
27
|
+
error: string;
|
|
28
|
+
};
|
|
29
|
+
export type KeysResponse = {
|
|
30
|
+
ok: true;
|
|
31
|
+
} | {
|
|
32
|
+
ok: false;
|
|
33
|
+
error: string;
|
|
34
|
+
};
|
|
35
|
+
export declare function isSharedShellName(name: string): boolean;
|
|
36
|
+
export declare function sharedShellSetupArgs(opts: {
|
|
37
|
+
name: string;
|
|
38
|
+
cols: number;
|
|
39
|
+
rows: number;
|
|
40
|
+
homedir: string;
|
|
41
|
+
created: string;
|
|
42
|
+
branch: string;
|
|
43
|
+
}): string[][];
|
|
44
|
+
/** POSIX single quotes. An embedded `'` ends the quote, inserts `\'`, and reopens it. */
|
|
45
|
+
export declare function shellSingleQuote(s: string): string;
|
|
46
|
+
export declare function execShellLine(command: string, cwd: string | undefined, marker: string): string;
|
|
47
|
+
export declare function takeExecResult(pane: string, marker: string): {
|
|
48
|
+
output: string;
|
|
49
|
+
exitCode: number;
|
|
50
|
+
} | null;
|
|
51
|
+
export declare function ensureSharedShell(name: string, cols: number, rows: number, deps: ShellDeps): {
|
|
52
|
+
ok: true;
|
|
53
|
+
created: boolean;
|
|
54
|
+
} | {
|
|
55
|
+
ok: false;
|
|
56
|
+
error: string;
|
|
57
|
+
};
|
|
58
|
+
export declare function tryAcquireShell(name: string): boolean;
|
|
59
|
+
export declare function releaseShell(name: string): void;
|
|
60
|
+
export declare function normalizeKeys(keys: unknown): string[] | null;
|
|
61
|
+
export declare function keySendArgs(session: string, text: string | undefined, keys: string[]): string[][];
|
|
62
|
+
export declare function runSharedExec(req: {
|
|
63
|
+
session: string;
|
|
64
|
+
command: string;
|
|
65
|
+
cwd?: string;
|
|
66
|
+
timeoutMs?: number;
|
|
67
|
+
}, deps: ShellDeps): Promise<ExecResponse>;
|
|
68
|
+
export declare function runSharedRead(req: {
|
|
69
|
+
session: string;
|
|
70
|
+
lines?: number;
|
|
71
|
+
}, deps: ShellDeps): Promise<ReadResponse>;
|
|
72
|
+
export declare function runSharedKeys(req: {
|
|
73
|
+
session: string;
|
|
74
|
+
text?: string;
|
|
75
|
+
keys?: string[];
|
|
76
|
+
}, deps: ShellDeps): Promise<KeysResponse>;
|
|
77
|
+
//# sourceMappingURL=shared-shell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared-shell.d.ts","sourceRoot":"","sources":["../src/shared-shell.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Rules for the one long-lived CLI shell per machine (`dd-m<machineId>`).
|
|
3
|
+
// Pure: every tmux effect goes through ShellDeps, so tests never spawn tmux.
|
|
4
|
+
// `created` is the string stamped into the session; `now()` is only the
|
|
5
|
+
// timeout clock. They are not the same value.
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.isSharedShellName = isSharedShellName;
|
|
8
|
+
exports.sharedShellSetupArgs = sharedShellSetupArgs;
|
|
9
|
+
exports.shellSingleQuote = shellSingleQuote;
|
|
10
|
+
exports.execShellLine = execShellLine;
|
|
11
|
+
exports.takeExecResult = takeExecResult;
|
|
12
|
+
exports.ensureSharedShell = ensureSharedShell;
|
|
13
|
+
exports.tryAcquireShell = tryAcquireShell;
|
|
14
|
+
exports.releaseShell = releaseShell;
|
|
15
|
+
exports.normalizeKeys = normalizeKeys;
|
|
16
|
+
exports.keySendArgs = keySendArgs;
|
|
17
|
+
exports.runSharedExec = runSharedExec;
|
|
18
|
+
exports.runSharedRead = runSharedRead;
|
|
19
|
+
exports.runSharedKeys = runSharedKeys;
|
|
20
|
+
const crypto_1 = require("crypto");
|
|
21
|
+
const SHARED_SHELL_RE = /^dd-m\d+$/;
|
|
22
|
+
// Exec requests carry no size. Used only when this call creates the session.
|
|
23
|
+
const DEFAULT_COLS = 80;
|
|
24
|
+
const DEFAULT_ROWS = 24;
|
|
25
|
+
const POLL_MS = 200;
|
|
26
|
+
const DEFAULT_TIMEOUT_MS = 120_000;
|
|
27
|
+
const MAX_TIMEOUT_MS = 600_000;
|
|
28
|
+
const DEFAULT_READ_LINES = 200;
|
|
29
|
+
const MAX_READ_LINES = 500;
|
|
30
|
+
const ALLOWED_KEYS = new Set([
|
|
31
|
+
'Enter',
|
|
32
|
+
'C-c',
|
|
33
|
+
'C-d',
|
|
34
|
+
'C-z',
|
|
35
|
+
'Escape',
|
|
36
|
+
'Tab',
|
|
37
|
+
'Up',
|
|
38
|
+
'Down',
|
|
39
|
+
'Left',
|
|
40
|
+
'Right',
|
|
41
|
+
]);
|
|
42
|
+
const heldShells = new Set();
|
|
43
|
+
function isSharedShellName(name) {
|
|
44
|
+
return typeof name === 'string' && SHARED_SHELL_RE.test(name);
|
|
45
|
+
}
|
|
46
|
+
function folderToken(homedir) {
|
|
47
|
+
const parts = homedir.split('/').filter((part) => part.length > 0);
|
|
48
|
+
return parts.length === 0 ? '' : parts[parts.length - 1];
|
|
49
|
+
}
|
|
50
|
+
function sharedShellSetupArgs(opts) {
|
|
51
|
+
// No `status off` and no `mouse`. Those are browser-tab settings: the page
|
|
52
|
+
// already has chrome, and it has no native selection to preserve. This shell
|
|
53
|
+
// is attached from a real terminal, which needs the status bar and its own
|
|
54
|
+
// drag-select. Leaving both unset keeps the global tmux conf in charge.
|
|
55
|
+
// No command either. A browser `new-session` passes none, so tmux starts a
|
|
56
|
+
// login shell. Passing $SHELL would be interactive and not a login shell:
|
|
57
|
+
// .zprofile would not run, and a Mac login PATH would be missing. Do not
|
|
58
|
+
// add `-l` on a replacement command.
|
|
59
|
+
return [
|
|
60
|
+
[
|
|
61
|
+
'new-session', '-d', '-s', opts.name,
|
|
62
|
+
'-x', String(opts.cols), '-y', String(opts.rows),
|
|
63
|
+
'-c', opts.homedir,
|
|
64
|
+
],
|
|
65
|
+
['set-option', '-t', opts.name, '@devdash_origin', 'cli'],
|
|
66
|
+
['set-option', '-t', opts.name, '@term_program', 'DevDash'],
|
|
67
|
+
['set-option', '-t', opts.name, '@devdash_folder', folderToken(opts.homedir)],
|
|
68
|
+
['set-option', '-t', opts.name, '@devdash_folder_path', opts.homedir],
|
|
69
|
+
['set-option', '-t', opts.name, '@devdash_created', opts.created],
|
|
70
|
+
['set-option', '-t', opts.name, '@devdash_git', opts.branch],
|
|
71
|
+
['set-window-option', '-t', opts.name, 'window-size', 'latest'],
|
|
72
|
+
['set-window-option', '-t', opts.name, 'aggressive-resize', 'on'],
|
|
73
|
+
];
|
|
74
|
+
}
|
|
75
|
+
/** POSIX single quotes. An embedded `'` ends the quote, inserts `\'`, and reopens it. */
|
|
76
|
+
function shellSingleQuote(s) {
|
|
77
|
+
return `'${s.replace(/'/g, `'\\''`)}'`;
|
|
78
|
+
}
|
|
79
|
+
function escapeRegExp(s) {
|
|
80
|
+
return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
81
|
+
}
|
|
82
|
+
// Literal, not a printf `%s`. The typed echo then contains this token mid-line,
|
|
83
|
+
// and the shell also prints it as its own line. Hex only, same as the end marker.
|
|
84
|
+
function execStartToken(marker) {
|
|
85
|
+
return `__dialout_${marker}_start__`;
|
|
86
|
+
}
|
|
87
|
+
function execShellLine(command, cwd, marker) {
|
|
88
|
+
// `{ cmd; }` finishes before the end printf, so `$?` is the command's status,
|
|
89
|
+
// not printf's. The start printf is before `cd`, so a failed cd still has a
|
|
90
|
+
// line to cut on. The end printf stays outside `cd &&`: the `;` runs it when
|
|
91
|
+
// cd fails (bash and zsh). Do not move that printf inside the `&&`.
|
|
92
|
+
const start = `printf '\\n${execStartToken(marker)}\\n'`;
|
|
93
|
+
const end = `printf '\\n__dialout_%s_%s__\\n' ${marker} $?`;
|
|
94
|
+
const body = `{ ${command}; }`;
|
|
95
|
+
if (cwd === undefined)
|
|
96
|
+
return `${start}; ${body}; ${end}`;
|
|
97
|
+
return `${start}; cd ${shellSingleQuote(cwd)} && ${body}; ${end}`;
|
|
98
|
+
}
|
|
99
|
+
// Index of the first byte after the last start-sentinel line that begins
|
|
100
|
+
// before `before`. The echo mentions the token mid-line, so only a line start
|
|
101
|
+
// (optional CR, then the token) counts. A command that prints the token itself
|
|
102
|
+
// is the same last-match rule the end marker uses.
|
|
103
|
+
function cutAfterStartLine(pane, marker, before) {
|
|
104
|
+
const re = new RegExp(`(?:^|\\n)\\r?${escapeRegExp(execStartToken(marker))}`, 'g');
|
|
105
|
+
let cut = null;
|
|
106
|
+
let match;
|
|
107
|
+
while ((match = re.exec(pane)) !== null) {
|
|
108
|
+
const lineStart = match.index + (pane.charCodeAt(match.index) === 10 ? 1 : 0);
|
|
109
|
+
if (lineStart >= before)
|
|
110
|
+
break;
|
|
111
|
+
const nl = pane.indexOf('\n', lineStart);
|
|
112
|
+
cut = nl === -1 || nl >= before ? before : nl + 1;
|
|
113
|
+
}
|
|
114
|
+
return cut;
|
|
115
|
+
}
|
|
116
|
+
function takeExecResult(pane, marker) {
|
|
117
|
+
const re = new RegExp(`__dialout_${escapeRegExp(marker)}_(\\d+)__`, 'g');
|
|
118
|
+
// Last hit of this marker. A previous command used a different marker, so it
|
|
119
|
+
// does not match; if this command printed the sentinel and printf appended
|
|
120
|
+
// another, the appended one is last.
|
|
121
|
+
let found = null;
|
|
122
|
+
let match;
|
|
123
|
+
while ((match = re.exec(pane)) !== null)
|
|
124
|
+
found = match;
|
|
125
|
+
if (!found)
|
|
126
|
+
return null;
|
|
127
|
+
const cut = cutAfterStartLine(pane, marker, found.index);
|
|
128
|
+
// No start line: everything before the end marker is history, not output.
|
|
129
|
+
if (cut === null)
|
|
130
|
+
return null;
|
|
131
|
+
const between = pane.slice(cut, found.index);
|
|
132
|
+
// The end printf's leading newline is the cut. A pty may have turned it into
|
|
133
|
+
// CRLF; drop that one break only, so a trailing newline in the command stays.
|
|
134
|
+
const output = between.replace(/\r?\n$/, '');
|
|
135
|
+
return { output, exitCode: Number(found[1]) };
|
|
136
|
+
}
|
|
137
|
+
function ensureSharedShell(name, cols, rows, deps) {
|
|
138
|
+
if (!isSharedShellName(name))
|
|
139
|
+
return { ok: false, error: 'refused' };
|
|
140
|
+
if (deps.exists(name))
|
|
141
|
+
return { ok: true, created: false };
|
|
142
|
+
const setup = sharedShellSetupArgs({
|
|
143
|
+
name,
|
|
144
|
+
cols,
|
|
145
|
+
rows,
|
|
146
|
+
homedir: deps.homedir,
|
|
147
|
+
created: deps.created,
|
|
148
|
+
branch: deps.branch,
|
|
149
|
+
});
|
|
150
|
+
for (const args of setup)
|
|
151
|
+
deps.run(args);
|
|
152
|
+
return { ok: true, created: true };
|
|
153
|
+
}
|
|
154
|
+
function tryAcquireShell(name) {
|
|
155
|
+
if (heldShells.has(name))
|
|
156
|
+
return false;
|
|
157
|
+
heldShells.add(name);
|
|
158
|
+
return true;
|
|
159
|
+
}
|
|
160
|
+
function releaseShell(name) {
|
|
161
|
+
heldShells.delete(name);
|
|
162
|
+
}
|
|
163
|
+
function normalizeKeys(keys) {
|
|
164
|
+
if (!Array.isArray(keys))
|
|
165
|
+
return null;
|
|
166
|
+
const out = [];
|
|
167
|
+
for (const key of keys) {
|
|
168
|
+
if (typeof key !== 'string' || !ALLOWED_KEYS.has(key))
|
|
169
|
+
return null;
|
|
170
|
+
out.push(key);
|
|
171
|
+
}
|
|
172
|
+
return out;
|
|
173
|
+
}
|
|
174
|
+
function keySendArgs(session, text, keys) {
|
|
175
|
+
const cmds = [];
|
|
176
|
+
// `-l` sends literally. `--` stops tmux parsing text that starts with `-`
|
|
177
|
+
// as an option. Empty text must not emit a send-keys that tmux would treat
|
|
178
|
+
// as a key name. Named keys are not literal, so they do not get `--`.
|
|
179
|
+
if (text)
|
|
180
|
+
cmds.push(['send-keys', '-t', session, '-l', '--', text]);
|
|
181
|
+
for (const key of keys)
|
|
182
|
+
cmds.push(['send-keys', '-t', session, key]);
|
|
183
|
+
return cmds;
|
|
184
|
+
}
|
|
185
|
+
async function runSharedExec(req, deps) {
|
|
186
|
+
if (!isSharedShellName(req.session))
|
|
187
|
+
return { ok: false, error: 'refused' };
|
|
188
|
+
if (typeof req.command !== 'string' || req.command.length === 0) {
|
|
189
|
+
return { ok: false, error: 'command is required' };
|
|
190
|
+
}
|
|
191
|
+
if (req.cwd !== undefined && (typeof req.cwd !== 'string' || !req.cwd.startsWith('/'))) {
|
|
192
|
+
return { ok: false, error: 'cwd must be absolute' };
|
|
193
|
+
}
|
|
194
|
+
const timeoutMs = req.timeoutMs === undefined ? DEFAULT_TIMEOUT_MS : req.timeoutMs;
|
|
195
|
+
// Non-finite (NaN, Infinity) never satisfies `now >= deadline`, so the poll
|
|
196
|
+
// would spin. Same refusal as an over-long timeout: do not start the command.
|
|
197
|
+
if (!Number.isFinite(timeoutMs) || timeoutMs < 0 || timeoutMs > MAX_TIMEOUT_MS) {
|
|
198
|
+
return { ok: false, error: 'timeout too long' };
|
|
199
|
+
}
|
|
200
|
+
if (!tryAcquireShell(req.session))
|
|
201
|
+
return { ok: false, error: 'shell is busy' };
|
|
202
|
+
try {
|
|
203
|
+
const ensured = ensureSharedShell(req.session, DEFAULT_COLS, DEFAULT_ROWS, deps);
|
|
204
|
+
if (!ensured.ok)
|
|
205
|
+
return ensured;
|
|
206
|
+
// Hex only: this is interpolated unquoted next to `$?`.
|
|
207
|
+
const marker = (0, crypto_1.randomBytes)(8).toString('hex');
|
|
208
|
+
const line = execShellLine(req.command, req.cwd, marker);
|
|
209
|
+
for (const args of keySendArgs(req.session, line, ['Enter']))
|
|
210
|
+
deps.run(args);
|
|
211
|
+
const deadline = deps.now() + timeoutMs;
|
|
212
|
+
for (;;) {
|
|
213
|
+
const pane = deps.capture();
|
|
214
|
+
const parsed = takeExecResult(pane, marker);
|
|
215
|
+
if (parsed) {
|
|
216
|
+
return { ok: true, output: parsed.output, exitCode: parsed.exitCode, timedOut: false };
|
|
217
|
+
}
|
|
218
|
+
const now = deps.now();
|
|
219
|
+
if (now >= deadline) {
|
|
220
|
+
// Not kill-session. This is the machine's one shared shell, and the
|
|
221
|
+
// command may still be running in it. The pane is the whole history;
|
|
222
|
+
// only the bytes after the start line are this command. No start line
|
|
223
|
+
// yet means the history is not output.
|
|
224
|
+
const cut = cutAfterStartLine(pane, marker, pane.length);
|
|
225
|
+
const output = cut === null ? '' : pane.slice(cut);
|
|
226
|
+
return { ok: true, output, exitCode: null, timedOut: true };
|
|
227
|
+
}
|
|
228
|
+
await deps.sleep(Math.min(POLL_MS, deadline - now));
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
finally {
|
|
232
|
+
releaseShell(req.session);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
function readLines(requested) {
|
|
236
|
+
if (requested == null || !Number.isFinite(requested))
|
|
237
|
+
return DEFAULT_READ_LINES;
|
|
238
|
+
const n = Math.floor(requested);
|
|
239
|
+
// 0.9 floors to 0. A non-positive count is the default, not an empty tail.
|
|
240
|
+
if (n <= 0)
|
|
241
|
+
return DEFAULT_READ_LINES;
|
|
242
|
+
return Math.min(n, MAX_READ_LINES);
|
|
243
|
+
}
|
|
244
|
+
function lastLines(text, lines) {
|
|
245
|
+
// capture-pane ends with a newline. Counting that empty row would drop a real line.
|
|
246
|
+
const rows = text.replace(/\n+$/, '').split('\n');
|
|
247
|
+
return rows.slice(-lines).join('\n');
|
|
248
|
+
}
|
|
249
|
+
async function runSharedRead(req, deps) {
|
|
250
|
+
if (!isSharedShellName(req.session))
|
|
251
|
+
return { ok: false, error: 'refused' };
|
|
252
|
+
if (!deps.exists(req.session))
|
|
253
|
+
return { ok: false, error: 'no shell' };
|
|
254
|
+
return { ok: true, output: lastLines(deps.capture(), readLines(req.lines)) };
|
|
255
|
+
}
|
|
256
|
+
async function runSharedKeys(req, deps) {
|
|
257
|
+
if (!isSharedShellName(req.session))
|
|
258
|
+
return { ok: false, error: 'refused' };
|
|
259
|
+
const text = typeof req.text === 'string' ? req.text : '';
|
|
260
|
+
let keys = [];
|
|
261
|
+
if (req.keys !== undefined) {
|
|
262
|
+
const normalized = normalizeKeys(req.keys);
|
|
263
|
+
if (normalized === null)
|
|
264
|
+
return { ok: false, error: 'unknown key' };
|
|
265
|
+
keys = normalized;
|
|
266
|
+
}
|
|
267
|
+
if (!text && keys.length === 0)
|
|
268
|
+
return { ok: false, error: 'nothing to send' };
|
|
269
|
+
if (!tryAcquireShell(req.session))
|
|
270
|
+
return { ok: false, error: 'shell is busy' };
|
|
271
|
+
try {
|
|
272
|
+
if (!deps.exists(req.session))
|
|
273
|
+
return { ok: false, error: 'no shell' };
|
|
274
|
+
for (const args of keySendArgs(req.session, text, keys))
|
|
275
|
+
deps.run(args);
|
|
276
|
+
return { ok: true };
|
|
277
|
+
}
|
|
278
|
+
finally {
|
|
279
|
+
releaseShell(req.session);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
//# sourceMappingURL=shared-shell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared-shell.js","sourceRoot":"","sources":["../src/shared-shell.ts"],"names":[],"mappings":"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"}
|
package/dist/websocket.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../src/websocket.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../src/websocket.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAA4C,MAAM,UAAU,CAAC;AAiDjF,eAAO,MAAM,iBAAiB,OAAO,CAAC;AACtC,eAAO,MAAM,gBAAgB,QAAS,CAAC;AAKvC,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,MAAoB,GAAG,MAAM,CAGxF;AAyGD,wBAAgB,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,CA2D3E;AAED,wBAAgB,UAAU,IAAI,IAAI,CAcjC;AAED,wBAAgB,WAAW,IAAI,OAAO,CAErC"}
|