Documentation cleanup and bugfixes
This commit is contained in:
@@ -61,9 +61,6 @@ type serveConfig struct {
|
||||
promptDir string
|
||||
profileDir string
|
||||
schemaDir string
|
||||
llmBaseURL string
|
||||
model string
|
||||
timeout time.Duration
|
||||
}
|
||||
|
||||
type listFlag []string
|
||||
@@ -122,9 +119,7 @@ func runCommand(args []string, stdout, stderr io.Writer) int {
|
||||
}
|
||||
|
||||
llmClient, err := llm.NewOpenAICompatibleClient(llm.OpenAICompatibleConfig{
|
||||
BaseURL: cfg.llmBaseURL,
|
||||
Model: cfg.model,
|
||||
Timeout: cfg.timeout,
|
||||
Timeout: defaults.LLMRequestTimeoutDefault,
|
||||
})
|
||||
if err != nil {
|
||||
fmt.Fprintf(stderr, "llm client error: %v\n", err)
|
||||
@@ -184,9 +179,7 @@ func serveCommand(args []string, stderr io.Writer) int {
|
||||
}
|
||||
|
||||
llmClient, err := llm.NewOpenAICompatibleClient(llm.OpenAICompatibleConfig{
|
||||
BaseURL: cfg.llmBaseURL,
|
||||
Model: cfg.model,
|
||||
Timeout: cfg.timeout,
|
||||
Timeout: defaults.LLMRequestTimeoutDefault,
|
||||
})
|
||||
if err != nil {
|
||||
fmt.Fprintf(stderr, "llm client error: %v\n", err)
|
||||
@@ -285,9 +278,6 @@ func parseServeArgs(args []string) (*serveConfig, error) {
|
||||
fs.StringVar(&cfg.promptDir, "prompt-dir", "", "directory containing prompt definition YAML files")
|
||||
fs.StringVar(&cfg.profileDir, "profile-dir", "", "directory containing execution profile YAML files")
|
||||
fs.StringVar(&cfg.schemaDir, "schema-dir", defaults.SchemaDirDefault, "base directory for validation schemas")
|
||||
fs.StringVar(&cfg.llmBaseURL, "llm-base-url", "", "OpenAI-compatible base URL including /v1")
|
||||
fs.StringVar(&cfg.model, "model", "", "optional default model")
|
||||
fs.DurationVar(&cfg.timeout, "timeout", defaults.LLMRequestTimeoutDefault, "LLM request timeout")
|
||||
|
||||
if err := fs.Parse(args); err != nil {
|
||||
return nil, err
|
||||
@@ -397,5 +387,5 @@ func printSummary(stderr io.Writer, res *domain.RunResult) {
|
||||
func printUsage(w io.Writer) {
|
||||
fmt.Fprintln(w, "usage: scriptorium <run|serve> ...")
|
||||
fmt.Fprintln(w, " run: scriptorium run --prompt-dir DIR --profile-dir DIR --prompt ID --input name=path [--input ...] [--profile ID] [--llm-base-url URL] [--model NAME] [--api-key-env ENV] [--temperature N] [--max-tokens N] [--top-p N] [--var k=v] [--out path] [--timeout 10m]")
|
||||
fmt.Fprintf(w, " serve: scriptorium serve --addr %s --prompt-dir DIR --profile-dir DIR [--llm-base-url URL] [--schema-dir DIR] [--model NAME] [--timeout 10m]\n", defaults.HTTPAddrDefault)
|
||||
fmt.Fprintf(w, " serve: scriptorium serve --addr %s --prompt-dir DIR --profile-dir DIR [--schema-dir DIR]\n", defaults.HTTPAddrDefault)
|
||||
}
|
||||
|
||||
@@ -155,8 +155,24 @@ func TestParseServeArgsRequiredFlags(t *testing.T) {
|
||||
if cfg.addr != defaults.HTTPAddrDefault {
|
||||
t.Fatalf("expected default addr %s, got %q", defaults.HTTPAddrDefault, cfg.addr)
|
||||
}
|
||||
if cfg.timeout != defaults.LLMRequestTimeoutDefault {
|
||||
t.Fatalf("expected default timeout %s, got %s", defaults.LLMRequestTimeoutDefault, cfg.timeout)
|
||||
if cfg.schemaDir != defaults.SchemaDirDefault {
|
||||
t.Fatalf("expected default schema dir %q, got %q", defaults.SchemaDirDefault, cfg.schemaDir)
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseServeArgsRejectsRuntimeOverrideFlags(t *testing.T) {
|
||||
base := []string{"--prompt-dir", "./prompts", "--profile-dir", "./profiles"}
|
||||
tests := [][]string{
|
||||
{"--llm-base-url", "http://localhost:8000/v1"},
|
||||
{"--model", "gpt-4o-mini"},
|
||||
{"--timeout", "30s"},
|
||||
}
|
||||
|
||||
for _, tc := range tests {
|
||||
_, err := parseServeArgs(append(base, tc...))
|
||||
if err == nil {
|
||||
t.Fatalf("expected unknown flag error for %q", tc[0])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -213,7 +229,7 @@ func TestRunCommandVarsOptional(t *testing.T) {
|
||||
"--profile-dir", "./profiles",
|
||||
"--prompt", "p",
|
||||
"--input", "transcript=./t.md",
|
||||
"--llm-base-url", "://bad-url",
|
||||
"--llm-base-url", "http://[::1",
|
||||
"--model", "m",
|
||||
}, &stdout, &stderr)
|
||||
|
||||
@@ -223,8 +239,8 @@ func TestRunCommandVarsOptional(t *testing.T) {
|
||||
if strings.Contains(stderr.String(), "var parse error") {
|
||||
t.Fatalf("expected --var to be optional, got stderr=%q", stderr.String())
|
||||
}
|
||||
if !strings.Contains(stderr.String(), "llm client error") {
|
||||
t.Fatalf("expected llm client error after parsing succeeds, got stderr=%q", stderr.String())
|
||||
if !strings.Contains(stderr.String(), "llm client error") && !strings.Contains(stderr.String(), "run error") {
|
||||
t.Fatalf("expected post-parse execution error, got stderr=%q", stderr.String())
|
||||
}
|
||||
if stdout.Len() != 0 {
|
||||
t.Fatalf("expected no stdout output on error, got %q", stdout.String())
|
||||
|
||||
Reference in New Issue
Block a user