Files
deepseek-harness/packages/sdk/scripts/src/config.ts
T

38 lines
1.2 KiB
TypeScript
Raw Normal View History

2026-07-15 18:17:38 +08:00
/**
2026-07-15 22:18:28 +08:00
* dsh-sdk config command composition.
2026-07-15 18:17:38 +08:00
*
* @module @deepseek-ai/dsh-scripts/config
*/
import {
ClackPromptPort,
SdkProject,
createBuiltinRegistry,
type PromptPort,
} from '@deepseek-ai/dsh-helper'
import { ConfigWorkflow, type ConfigWorkflowResult } from './config/config-workflow.ts'
2026-07-15 22:18:28 +08:00
/** Process stream slice required by dsh-sdk config. */
2026-07-15 18:17:38 +08:00
export interface ConfigCommandContext {
cwd: string
stdin: NodeJS.ReadStream
stdout: NodeJS.WriteStream
port?: PromptPort
install?: (project: SdkProject) => Promise<void>
}
/** Open and interactively edit one existing SDK project. */
export async function runConfigCommand(context: ConfigCommandContext): Promise<ConfigWorkflowResult> {
if (!context.port && (!context.stdin.isTTY || !context.stdout.isTTY)) {
2026-07-15 22:18:28 +08:00
throw new Error('dsh-sdk config requires an interactive TTY')
2026-07-15 18:17:38 +08:00
}
const project = await SdkProject.open(context.cwd)
const registry = createBuiltinRegistry(project.profile)
return new ConfigWorkflow(
/* v8 ignore next -- production TTY wiring is exercised by the built-bin smoke */
context.port ?? new ClackPromptPort(context.stdin, context.stdout),
context.stdout,
context.install,
).run(project, registry)
}