Apply namespace scopes to inspections and diagnostics
This commit is contained in:
@@ -164,6 +164,104 @@ func TestWithNamespacesViewsCanPrepareConcurrently(t *testing.T) {
|
||||
wait.Wait()
|
||||
}
|
||||
|
||||
func TestWithNamespacesRoutesInspectionsAndSmokeSelections(t *testing.T) {
|
||||
engine := newNamespacedContractEngine(t, &fakeLLMClient{response: &promptkit.GenerateResponse{Content: "reply"}})
|
||||
scoped, err := engine.WithNamespaces(promptkit.Namespaces{
|
||||
Prompt: "alpha", Profile: "beta", Backend: "alpha",
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
prompt, err := scoped.InspectPrompt(context.Background(), "shared")
|
||||
if err != nil || prompt.PromptID != "alpha/shared" {
|
||||
t.Fatalf("scoped prompt inspection = %+v, error %v", prompt, err)
|
||||
}
|
||||
profile, err := scoped.InspectProfile(context.Background(), "shared")
|
||||
if err != nil || profile.ProfileID != "beta/shared" {
|
||||
t.Fatalf("scoped profile inspection = %+v, error %v", profile, err)
|
||||
}
|
||||
requirements, err := scoped.InspectRequirements(context.Background(), promptkit.RequirementInspectionRequest{
|
||||
PromptID: "shared", ProfileID: "shared",
|
||||
})
|
||||
if err != nil || requirements.PromptID != "alpha/shared" || requirements.ProfileID != "beta/shared" {
|
||||
t.Fatalf("scoped requirements inspection = %+v, error %v", requirements, err)
|
||||
}
|
||||
qualifiedPrompt, err := scoped.InspectPrompt(context.Background(), "beta/shared")
|
||||
if err != nil || qualifiedPrompt.PromptID != "beta/shared" {
|
||||
t.Fatalf("qualified prompt inspection = %+v, error %v", qualifiedPrompt, err)
|
||||
}
|
||||
|
||||
// Explicit profile selection keeps precedence over the supplied backend,
|
||||
// while prompt, profile, and backend caller references are independently
|
||||
// validated/qualified. The profile's configured backend remains exact.
|
||||
report, err := scoped.SmokeTest(context.Background(), promptkit.SmokeTestRequest{
|
||||
Kind: promptkit.SmokeTestReachability, PromptID: "shared", ProfileID: "shared", BackendID: "backend",
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if report.Target.PromptID != "alpha/shared" || report.Target.ProfileID != "beta/shared" ||
|
||||
report.Target.BackendID != "beta/backend" || report.Target.SelectionSource != "profile" {
|
||||
t.Fatalf("scoped smoke selection = %+v", report.Target)
|
||||
}
|
||||
backendReport, err := scoped.SmokeTest(context.Background(), promptkit.SmokeTestRequest{
|
||||
Kind: promptkit.SmokeTestReachability, BackendID: "backend",
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if backendReport.Target.BackendID != "alpha/backend" || backendReport.Target.SelectionSource != "backend" {
|
||||
t.Fatalf("scoped backend diagnostic selection = %+v", backendReport.Target)
|
||||
}
|
||||
defaultedReport, err := scoped.SmokeTest(context.Background(), promptkit.SmokeTestRequest{
|
||||
Kind: promptkit.SmokeTestReachability, PromptID: "shared",
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if defaultedReport.Target.PromptID != "alpha/shared" || defaultedReport.Target.ProfileID != "root-only" ||
|
||||
defaultedReport.Target.SelectionSource != "prompt" {
|
||||
t.Fatalf("configured prompt default was rewritten by scope: %+v", defaultedReport.Target)
|
||||
}
|
||||
|
||||
for _, run := range []func() error{
|
||||
func() error { _, err := scoped.InspectPrompt(context.Background(), "alpha/beta/shared"); return err },
|
||||
func() error { _, err := scoped.InspectProfile(context.Background(), "alpha/beta/shared"); return err },
|
||||
func() error {
|
||||
_, err := scoped.InspectRequirements(context.Background(), promptkit.RequirementInspectionRequest{
|
||||
PromptID: "alpha/beta/shared", ProfileID: "shared",
|
||||
})
|
||||
return err
|
||||
},
|
||||
func() error {
|
||||
_, err := scoped.SmokeTest(context.Background(), promptkit.SmokeTestRequest{
|
||||
Kind: promptkit.SmokeTestReachability, PromptID: "alpha/beta/shared",
|
||||
})
|
||||
return err
|
||||
},
|
||||
func() error {
|
||||
_, err := scoped.SmokeTest(context.Background(), promptkit.SmokeTestRequest{
|
||||
Kind: promptkit.SmokeTestReachability, ProfileID: "alpha/beta/shared",
|
||||
})
|
||||
return err
|
||||
},
|
||||
func() error {
|
||||
_, err := scoped.SmokeTest(context.Background(), promptkit.SmokeTestRequest{
|
||||
Kind: promptkit.SmokeTestReachability, ProfileID: "shared", BackendID: "alpha/beta/backend",
|
||||
})
|
||||
return err
|
||||
},
|
||||
} {
|
||||
if err := run(); !errors.Is(err, promptkit.ErrInvalidRequest) {
|
||||
t.Errorf("malformed supplied ID error = %v, want ErrInvalidRequest", err)
|
||||
}
|
||||
}
|
||||
if _, err := scoped.InspectPrompt(context.Background(), "missing"); !errors.Is(err, promptkit.ErrPromptNotFound) {
|
||||
t.Errorf("well-formed missing prompt error = %v, want ErrPromptNotFound", err)
|
||||
}
|
||||
}
|
||||
|
||||
func newNamespacedContractEngine(t *testing.T, client promptkit.LLMClient) *promptkit.Engine {
|
||||
t.Helper()
|
||||
var inputs []configkit.Input
|
||||
@@ -175,9 +273,10 @@ func newNamespacedContractEngine(t *testing.T, client promptkit.LLMClient) *prom
|
||||
"backend": namespace + "/backend", "model": namespace + "-model",
|
||||
}},
|
||||
"prompts": map[string]any{"shared": map[string]any{
|
||||
"version": "1",
|
||||
"messages": []any{map[string]any{"role": "user", "content": "Hello"}},
|
||||
"output": map[string]any{"format": "text", "validation_mode": "none"},
|
||||
"version": "1",
|
||||
"default_profile": "root-only",
|
||||
"messages": []any{map[string]any{"role": "user", "content": "Hello"}},
|
||||
"output": map[string]any{"format": "text", "validation_mode": "none"},
|
||||
}},
|
||||
}))
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user