From b184ca7cbd14103161e20ca73a33891d5a9dd9fb Mon Sep 17 00:00:00 2001 From: Eric Rakestraw Date: Sat, 1 Aug 2026 19:35:12 +0000 Subject: [PATCH] Move prompt debug capture out of state --- internal/app/app.go | 5 +++-- internal/app/prompt_artifact_paths_test.go | 3 ++- internal/app/prompt_generate.go | 7 ++++--- internal/{state => promptdebug}/debug_writer.go | 4 +++- internal/{state => promptdebug}/debug_writer_test.go | 2 +- 5 files changed, 13 insertions(+), 8 deletions(-) rename internal/{state => promptdebug}/debug_writer.go (99%) rename internal/{state => promptdebug}/debug_writer_test.go (99%) diff --git a/internal/app/app.go b/internal/app/app.go index 9e5b144..c01aee8 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -17,6 +17,7 @@ import ( "gitea.maximumdirect.net/eric/weatherreporter/internal/fileutil" "gitea.maximumdirect.net/eric/weatherreporter/internal/forecast" "gitea.maximumdirect.net/eric/weatherreporter/internal/module" + "gitea.maximumdirect.net/eric/weatherreporter/internal/promptdebug" "gitea.maximumdirect.net/eric/weatherreporter/internal/promptexec" "gitea.maximumdirect.net/eric/weatherreporter/internal/promptinput" "gitea.maximumdirect.net/eric/weatherreporter/internal/report" @@ -267,7 +268,7 @@ func GenerateDetailed(ctx context.Context, req GenerateRequest) (*ReportResult, return nil, err } req.OutputPath = outputPath - debugWriter, err := state.NewPromptDebugWriter(req.LLMDebugDir) + debugWriter, err := promptdebug.NewPromptDebugWriter(req.LLMDebugDir) if err != nil { return nil, promptexec.NewError(promptexec.InvalidConfiguration, "initialize prompt debug", err) } @@ -316,7 +317,7 @@ func RunBatchDetailed(ctx context.Context, req BatchRequest) (*BatchResult, erro return nil, err } req.OutputDir = outputDir - debugWriter, err := state.NewPromptDebugWriter(req.LLMDebugDir) + debugWriter, err := promptdebug.NewPromptDebugWriter(req.LLMDebugDir) if err != nil { return nil, promptexec.NewError(promptexec.InvalidConfiguration, "initialize prompt debug", err) } diff --git a/internal/app/prompt_artifact_paths_test.go b/internal/app/prompt_artifact_paths_test.go index b8bf1b1..b6d2c57 100644 --- a/internal/app/prompt_artifact_paths_test.go +++ b/internal/app/prompt_artifact_paths_test.go @@ -12,6 +12,7 @@ import ( "gitea.maximumdirect.net/eric/weatherreporter/internal/collect" "gitea.maximumdirect.net/eric/weatherreporter/internal/config" + "gitea.maximumdirect.net/eric/weatherreporter/internal/promptdebug" "gitea.maximumdirect.net/eric/weatherreporter/internal/promptexec" "gitea.maximumdirect.net/eric/weatherreporter/internal/report" "gitea.maximumdirect.net/eric/weatherreporter/internal/state" @@ -494,7 +495,7 @@ func promptArtifactRequest(t *testing.T, executor promptexec.Executor) (promptRe if err != nil { t.Fatalf("Paths() error = %v", err) } - debugWriter, err := state.NewPromptDebugWriter("") + debugWriter, err := promptdebug.NewPromptDebugWriter("") if err != nil { t.Fatalf("NewPromptDebugWriter() error = %v", err) } diff --git a/internal/app/prompt_generate.go b/internal/app/prompt_generate.go index 7569db7..c1bacfb 100644 --- a/internal/app/prompt_generate.go +++ b/internal/app/prompt_generate.go @@ -10,6 +10,7 @@ import ( "gitea.maximumdirect.net/eric/weatherreporter/internal/fileutil" "gitea.maximumdirect.net/eric/weatherreporter/internal/generatedtext" "gitea.maximumdirect.net/eric/weatherreporter/internal/module" + "gitea.maximumdirect.net/eric/weatherreporter/internal/promptdebug" "gitea.maximumdirect.net/eric/weatherreporter/internal/promptexec" "gitea.maximumdirect.net/eric/weatherreporter/internal/promptinput" "gitea.maximumdirect.net/eric/weatherreporter/internal/report" @@ -21,7 +22,7 @@ type promptReportRequest struct { Resolved report.Resolved Collection collect.Result Inspection PromptInspectionResult - DebugWriter *state.PromptDebugWriter + DebugWriter *promptdebug.PromptDebugWriter noNotify bool } @@ -83,7 +84,7 @@ type promptReportWorkflow struct { dataPackageBytes []byte handler generatedtext.Handler executionArtifact state.PromptExecutionArtifact - debugRef state.PromptDebugRef + debugRef promptdebug.PromptDebugRef prepared bool callbackFailed bool } @@ -151,7 +152,7 @@ func (w *promptReportWorkflow) buildInputs() error { if err != nil { return w.reportError("lookup generated text catalog", err) } - w.debugRef = state.PromptDebugRef{ + w.debugRef = promptdebug.PromptDebugRef{ ReportID: w.req.Resolved.Definition.ID, ValidDate: w.req.Resolved.ValidPeriod.Start.Format("2006-01-02"), RunID: w.metadata.RunID, } return nil diff --git a/internal/state/debug_writer.go b/internal/promptdebug/debug_writer.go similarity index 99% rename from internal/state/debug_writer.go rename to internal/promptdebug/debug_writer.go index 8960058..a25166f 100644 --- a/internal/state/debug_writer.go +++ b/internal/promptdebug/debug_writer.go @@ -1,4 +1,6 @@ -package state +// Package promptdebug writes explicitly requested prompt diagnostics outside +// ordinary application state. +package promptdebug import ( "encoding/json" diff --git a/internal/state/debug_writer_test.go b/internal/promptdebug/debug_writer_test.go similarity index 99% rename from internal/state/debug_writer_test.go rename to internal/promptdebug/debug_writer_test.go index 3030f22..3e694df 100644 --- a/internal/state/debug_writer_test.go +++ b/internal/promptdebug/debug_writer_test.go @@ -1,4 +1,4 @@ -package state +package promptdebug import ( "os"