diff --git a/pkg/agentic/template.go b/pkg/agentic/template.go index 6f3301d..fea6e09 100644 --- a/pkg/agentic/template.go +++ b/pkg/agentic/template.go @@ -198,9 +198,6 @@ func (s *PrepSubsystem) templateCreatePlan(ctx context.Context, _ *mcp.CallToolR if templateName == "" { return nil, TemplateCreatePlanOutput{}, core.E("templateCreatePlan", "template is required", nil) } - if input.Variables == nil { - return nil, TemplateCreatePlanOutput{}, core.E("templateCreatePlan", "variables are required", nil) - } definition, err := loadPlanTemplateDefinition(templateName, input.Variables) if err != nil { diff --git a/pkg/agentic/template_test.go b/pkg/agentic/template_test.go index 9abd71f..780e738 100644 --- a/pkg/agentic/template_test.go +++ b/pkg/agentic/template_test.go @@ -111,6 +111,26 @@ func TestTemplate_HandleTemplateCreatePlan_Good(t *testing.T) { assert.Equal(t, "new-feature", stringValue(plan.Context["template"])) } +func TestTemplate_HandleTemplateCreatePlan_Good_NoVariables(t *testing.T) { + subsystem := testPrepWithPlatformServer(t, nil, "") + result := subsystem.handleTemplateCreatePlan(context.Background(), core.NewOptions( + core.Option{Key: "template", Value: "api-consistency"}, + )) + require.True(t, result.OK) + + output, ok := result.Value.(TemplateCreatePlanOutput) + require.True(t, ok) + assert.True(t, output.Success) + assert.NotEmpty(t, output.Plan.Slug) + assert.Equal(t, "API Consistency Audit", output.Plan.Title) + assert.Equal(t, "draft", output.Plan.Status) + + plan, err := readPlan(PlansRoot(), output.Plan.Slug) + require.NoError(t, err) + assert.Equal(t, "api-consistency", stringValue(plan.Context["template"])) + assert.Empty(t, plan.Context["variables"]) +} + func TestTemplate_HandleTemplateCreatePlan_Bad(t *testing.T) { subsystem := testPrepWithPlatformServer(t, nil, "") result := subsystem.handleTemplateCreatePlan(context.Background(), core.NewOptions(