TtyReadable
Defined in: packages/core/src/kernel/types.ts:894
A terminal-backed Readable with tab-completion registration.
Implement on any Readable that represents a terminal (ldisc-backed stdin) and wants to accept tab-completion providers from the shell.
Remarks
Section titled “Remarks”The shell checks isTtyReadable(proc.stdin) at startup and calls
setCompletionProvider() to wire its own completer in — self-discovery
instead of boot-path injection.
Example
Section titled “Example”import type { TtyReadable, CompletionProvider } from '@fishnet/core'let provider: CompletionProvider | undefinedconst stdin: TtyReadable = { isTty: true, setCompletionProvider(p) { provider = p }, async read() { return new Uint8Array(0) }, async *[Symbol.asyncIterator]() { yield '' },}Extends
Section titled “Extends”Readable
Properties
Section titled “Properties”
readonlyisTty:true
Defined in: packages/core/src/kernel/types.ts:895
True when this stream is backed by a terminal device (line discipline). Shell uses this to decide whether to write PS1 prompt itself.
Overrides
Section titled “Overrides”Readable.isTty
Methods
Section titled “Methods”[asyncIterator]()
Section titled “[asyncIterator]()”[asyncIterator]():
AsyncIterator<string>
Defined in: packages/core/src/kernel/types.ts:840
Returns
Section titled “Returns”AsyncIterator<string>
Inherited from
Section titled “Inherited from”Readable.[asyncIterator]
read()
Section titled “read()”read(
count?,signal?):Promise<Uint8Array<ArrayBufferLike>>
Defined in: packages/core/src/kernel/types.ts:841
Parameters
Section titled “Parameters”count?
Section titled “count?”number
signal?
Section titled “signal?”AbortSignal
Returns
Section titled “Returns”Promise<Uint8Array<ArrayBufferLike>>
Inherited from
Section titled “Inherited from”Readable.read
setCompletionProvider()
Section titled “setCompletionProvider()”setCompletionProvider(
provider):void
Defined in: packages/core/src/kernel/types.ts:902
Register a completion provider. Called by the shell at startup.
Parameters
Section titled “Parameters”provider
Section titled “provider”Returns
Section titled “Returns”void
Invariant
Section titled “Invariant”Replaces any previously registered provider — only one provider is active at a time; last caller wins
tryRead()?
Section titled “tryRead()?”
optionaltryRead(count?):Uint8Array
Defined in: packages/core/src/kernel/types.ts:860
Return immediately with buffered data, or empty Uint8Array if nothing available. Synchronous — no waiting.
Semantics:
- Returns whatever is currently buffered, up to
countbytes - May return fewer than
countbytes (partial data is normal) - Empty Uint8Array (byteLength === 0) means “nothing buffered right now” — this is NOT EOF. EOF is signaled by read() resolving to empty.
- Never blocks, never waits for I/O
Implementation note: intended for platform adapters (nodeTty). Kernel-internal Readable implementations (pipe-backed, fd-backed) SHOULD NOT implement this — doing so would cause readAllStdin to drain pipe content before the WASM program can process it incrementally.
Adapters SHOULD return empty in line mode and only return buffered data in raw mode.
Parameters
Section titled “Parameters”count?
Section titled “count?”number
Returns
Section titled “Returns”Uint8Array
Inherited from
Section titled “Inherited from”Readable.tryRead