diff options
| author | Adam Malczewski <[email protected]> | 2026-06-05 21:20:34 +0900 |
|---|---|---|
| committer | Adam Malczewski <[email protected]> | 2026-06-05 21:20:34 +0900 |
| commit | 552c22d74e5df915088d9e9ff4a286c96c2a54d6 (patch) | |
| tree | 7d9db1052bab91ef994446d80efc3bfc38026cad /packages/cli/src/render.ts | |
| parent | 7fb3269c698ae583ea7997ce206c4ae252fd3218 (diff) | |
| download | dispatch-552c22d74e5df915088d9e9ff4a286c96c2a54d6.tar.gz dispatch-552c22d74e5df915088d9e9ff4a286c96c2a54d6.zip | |
feat(cli): one-shot terminal client (models, chat, --text/--file/--cwd/--conversation)
HTTP client of transport-contract; pure-core arg/render/ndjson + injected fetch/fs shell.
Docs: GLOSSARY (credential/key/model name/model catalog), tasks.md milestone, ORCHESTRATOR geography.
Diffstat (limited to 'packages/cli/src/render.ts')
| -rw-r--r-- | packages/cli/src/render.ts | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/packages/cli/src/render.ts b/packages/cli/src/render.ts new file mode 100644 index 0000000..1853963 --- /dev/null +++ b/packages/cli/src/render.ts @@ -0,0 +1,45 @@ +/** + * Pure event renderer — zero I/O. + * + * Maps an AgentEvent to optional stdout/stderr strings. + * Consumers write these to process.stdout / process.stderr. + */ + +import type { AgentEvent } from "@dispatch/transport-contract"; + +interface RenderOpts { + readonly showReasoning: boolean; +} + +interface RenderOutput { + readonly stdout?: string; + readonly stderr?: string; +} + +export function renderEvent(e: AgentEvent, opts: RenderOpts): RenderOutput | undefined { + switch (e.type) { + case "text-delta": + return { stdout: e.delta }; + case "reasoning-delta": + return opts.showReasoning ? { stdout: e.delta } : undefined; + case "tool-call": + return { stdout: `\n[tool] ${e.toolName} ${JSON.stringify(e.input)}\n` }; + case "tool-output": + return { stdout: e.data }; + case "tool-result": + return { + stdout: `[tool:${e.toolName}]${e.isError ? " ERROR" : ""} ${e.content}\n`, + }; + case "usage": + return { + stdout: `\n[usage] in=${e.usage.inputTokens} out=${e.usage.outputTokens}\n`, + }; + case "error": + return { stderr: `[error] ${e.message}\n` }; + case "status": + case "turn-start": + case "turn-sealed": + case "done": + return undefined; + } +} |
