npm.io
0.0.4 • Published 2d ago

@orkestrel/terminal

Licence
MIT
Version
0.0.4
Deps
5
Size
773 kB
Vulns
0
Weekly
0

@orkestrel/terminal

An interactive terminal-prompt toolkit for the @orkestrel line — six prompt forms (input, password, confirm, select, checkbox, editor) modelled as pure, event-free state machines, driven across three symmetric surfaces: a headless Prompt broker that parks each call and resolves it when answered, an SSE PromptClient bridge that dispatches a remote prompt to a local terminal, and a raw-mode Terminal driver (node:readline fallback when piped) that answers each prompt at this machine's keyboard. Built to sit beside @orkestrel/console (the shared style engine), @orkestrel/contract, @orkestrel/emitter, and @orkestrel/sse, reusing all four as it takes shape.

Install

npm install @orkestrel/terminal

Requirements

  • Node.js >= 22
  • Core is ESM; the ./server subpath ships dual ESM+CJS builds

Usage

Park a prompt headlessly and answer it from elsewhere (an SSE transport, a remote terminal):

import { createPrompt } from '@orkestrel/terminal'

const prompt = createPrompt()
prompt.emitter.on('pending', (pending) => send(pending)) // forward to a remote client
const name = await prompt.input({ message: 'Your name', validate: { required: true } })

Drive the same six prompt forms locally at this machine's keyboard:

import { createTerminal } from '@orkestrel/terminal/server'

const terminal = createTerminal()
const name = await terminal.input({ message: 'Your name' })
const proceed = await terminal.confirm({ message: 'Continue?', default: true })

Bridge a remote broker's prompts to a local terminal over SSE:

import { createPromptClient } from '@orkestrel/terminal'
import { createTerminal } from '@orkestrel/terminal/server'

const client = createPromptClient({
	url: 'http://localhost:3000/prompts',
	terminal: createTerminal(),
})
await client.connect()

Guide

See guides/src/terminal.md for the full documented surface — the six prompt forms, the headless broker, the SSE bridge, and the raw-mode terminal driver.

Package

Published as two entry points per the exports field in package.json: . (the environment-agnostic core — the pure prompt reducers, the Prompt broker, and the PromptClient bridge) and ./server (the Node-only Terminal driver). Core is ESM-only; ./server ships dual ESM+CJS builds.

License

MIT Orkestrel — see LICENSE.

Keywords