authorgravatar for julius0216@outlook.comJulius Marminge <julius0216@outlook.com> 2026-02-25 18:10:14-08:00
committergravatar for jmarminge@gmail.comJulius Marminge <jmarminge@gmail.com> 2026-02-26 13:20:36-08:00
log3e58fd6ab77787d1835db1bbdca567b7151b46ba
tree928a45f610afa9c3a7c2260ee3a08ac13ebb1637
parent5a755ada28fa8da9d435f2e1f14697e83f4aa6db

kewl


2 files changed, 14 insertions(+), 18 deletions(-)

apps/server/src/terminal/Layers/Manager.ts+13-2
......@@ -21,8 +21,6 @@ import { ServerConfig } from "../../config";
2121import {
2222 ShellCandidate,
2323 TerminalManager,
24 TerminalManagerEvents,
25 TerminalManagerOptions,
2624 TerminalManagerShape,
2725 TerminalSessionState,
2826 TerminalStartInput,
......@@ -270,6 +268,19 @@ function normalizedRuntimeEnv(
270268 return Object.fromEntries(entries.toSorted(([left], [right]) => left.localeCompare(right)));
271269}
272270
271interface TerminalManagerEvents {
272 event: [event: TerminalEvent];
273}
274
275interface TerminalManagerOptions {
276 logsDir?: string;
277 historyLineLimit?: number;
278 ptyAdapter: PtyAdapterShape;
279 shellResolver?: () => string;
280 subprocessChecker?: TerminalSubprocessChecker;
281 subprocessPollIntervalMs?: number;
282}
283
273284export class TerminalManagerRuntime extends EventEmitter<TerminalManagerEvents> {
274285 private readonly sessions = new Map<string, TerminalSessionState>();
275286 private readonly logsDir: string;
apps/server/src/terminal/Services/Manager.ts+1-16
......@@ -8,15 +8,9 @@ import {
88 TerminalSessionStatus,
99 TerminalWriteInput,
1010} from "@t3tools/contracts";
11import { PtyAdapterShape, PtyProcess } from "./PTY";
11import { PtyProcess } from "./PTY";
1212import { Effect, ServiceMap } from "effect";
1313
14type TerminalSubprocessChecker = (terminalPid: number) => Promise<boolean>;
15
16export interface TerminalManagerEvents {
17 event: [event: TerminalEvent];
18}
19
2014export interface TerminalSessionState {
2115 threadId: string;
2216 terminalId: string;
......@@ -46,15 +40,6 @@ export interface TerminalStartInput extends TerminalOpenInput {
4640 rows: number;
4741}
4842
49export interface TerminalManagerOptions {
50 logsDir?: string;
51 historyLineLimit?: number;
52 ptyAdapter: PtyAdapterShape;
53 shellResolver?: () => string;
54 subprocessChecker?: TerminalSubprocessChecker;
55 subprocessPollIntervalMs?: number;
56}
57
5843export interface TerminalManagerShape {
5944 readonly open: (input: TerminalOpenInput) => Effect.Effect<TerminalSessionSnapshot, unknown>;
6045 readonly write: (input: TerminalWriteInput) => Effect.Effect<void, unknown>;