History

kewl

Julius Marminge committed 8 months ago

Commit 3e58fd61 parent 5a755ad2 files · +14 −18Browse files

Unified · Split

2 files
  1. apps/server/src/terminal/Layers/Manager.ts +13 −2
  2. apps/server/src/terminal/Services/Manager.ts +1 −16
apps/server/src/terminal/Layers/Manager.ts+13−2
@@ -21,8 +21,6 @@ import { ServerConfig } from "../../config"; · 20 unmodified lines
21import {21import {
22 ShellCandidate,22 ShellCandidate,
23 TerminalManager,23 TerminalManager,
24 TerminalManagerEvents,
25 TerminalManagerOptions,
26 TerminalManagerShape,24 TerminalManagerShape,
27 TerminalSessionState,25 TerminalSessionState,
28 TerminalStartInput,26 TerminalStartInput,
@@ -270,6 +268,19 @@ function normalizedRuntimeEnv( · 241 unmodified lines
270 return Object.fromEntries(entries.toSorted(([left], [right]) => left.localeCompare(right)));268 return Object.fromEntries(entries.toSorted(([left], [right]) => left.localeCompare(right)));
271}269}
272 270
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
273export class TerminalManagerRuntime extends EventEmitter<TerminalManagerEvents> {284export class TerminalManagerRuntime extends EventEmitter<TerminalManagerEvents> {
274 private readonly sessions = new Map<string, TerminalSessionState>();285 private readonly sessions = new Map<string, TerminalSessionState>();
275 private readonly logsDir: string;286 private readonly logsDir: string;
apps/server/src/terminal/Services/Manager.ts+1−16
@@ -8,15 +8,9 @@ import { · 7 unmodified lines
8 TerminalSessionStatus,8 TerminalSessionStatus,
9 TerminalWriteInput,9 TerminalWriteInput,
10} from "@t3tools/contracts";10} from "@t3tools/contracts";
11import { PtyAdapterShape, PtyProcess } from "./PTY";11import { PtyProcess } from "./PTY";
12import { Effect, ServiceMap } from "effect";12import { Effect, ServiceMap } from "effect";
13 13
14type TerminalSubprocessChecker = (terminalPid: number) => Promise<boolean>;
15
16export interface TerminalManagerEvents {
17 event: [event: TerminalEvent];
18}
19
20export interface TerminalSessionState {14export interface TerminalSessionState {
21 threadId: string;15 threadId: string;
22 terminalId: string;16 terminalId: string;
@@ -46,15 +40,6 @@ export interface TerminalStartInput extends TerminalOpenInput { · 23 unmodified lines
46 rows: number;40 rows: number;
47}41}
48 42
49export interface TerminalManagerOptions {
50 logsDir?: string;
51 historyLineLimit?: number;
52 ptyAdapter: PtyAdapterShape;
53 shellResolver?: () => string;
54 subprocessChecker?: TerminalSubprocessChecker;
55 subprocessPollIntervalMs?: number;
56}
57
58export interface TerminalManagerShape {43export interface TerminalManagerShape {
59 readonly open: (input: TerminalOpenInput) => Effect.Effect<TerminalSessionSnapshot, unknown>;44 readonly open: (input: TerminalOpenInput) => Effect.Effect<TerminalSessionSnapshot, unknown>;
60 readonly write: (input: TerminalWriteInput) => Effect.Effect<void, unknown>;45 readonly write: (input: TerminalWriteInput) => Effect.Effect<void, unknown>;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t