feat(core): the command line with its local commands after Java, measured against Java

The terminal splits a line as Java's window does and runs ls, cd, pwd,
mkdir, touch, cp, mv, rm, cat, test, help, ipconfig and route on the
node's files, which are the project's own. Its texts are generated from
the bundle Java loads. TerminalCases feeds Java's Terminal without a
network (16 cases, de and en); eight cases name Java bugs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-01 20:32:35 +00:00
co-authored by Claude Opus 5.5
parent 058675a148
commit 016f9461df
17 changed files with 14404 additions and 7 deletions
+4
View File
@@ -103,6 +103,8 @@ export interface TopologySnapshot {
readonly webBrowserNodeIds: ReadonlySet<Id>;
/** The installed e-mail servers, by node; a run's deliveries change their mailboxes here. */
readonly emailServersByNodeId: ReadonlyMap<Id, EmailServerSnapshot>;
/** The nodes with the command line installed (Terminal); it works on the node's files. */
readonly terminalNodeIds: ReadonlySet<Id>;
/** The installed e-mail programs, by node; a run's sent and fetched mails change their folders here. */
readonly emailClientsByNodeId: ReadonlyMap<Id, EmailClientConfiguration>;
/** Each node's files, which its programs read (a web server its pages). */
@@ -131,6 +133,7 @@ export interface TopologySnapshotInput {
webBrowserNodeIds?: ReadonlySet<Id>;
emailServersByNodeId?: ReadonlyMap<Id, EmailServerSnapshot>;
emailClientsByNodeId?: ReadonlyMap<Id, EmailClientConfiguration>;
terminalNodeIds?: ReadonlySet<Id>;
fileSystemsByNodeId?: ReadonlyMap<Id, VirtualFileSystem>;
language?: PageLanguage;
}
@@ -156,6 +159,7 @@ export function topologySnapshot(input: TopologySnapshotInput): TopologySnapshot
webBrowserNodeIds: input.webBrowserNodeIds ?? new Set(),
emailServersByNodeId: input.emailServersByNodeId ?? new Map(),
emailClientsByNodeId: input.emailClientsByNodeId ?? new Map(),
terminalNodeIds: input.terminalNodeIds ?? new Set(),
fileSystemsByNodeId: input.fileSystemsByNodeId ?? new Map(),
language: input.language ?? 'de',
};