@@ -78,43 +78,40 @@ func DefinePrompt(r api.Registry, name string, opts ...PromptOption) Prompt {
7878 pOpts .Config = modelRef .Config ()
7979 }
8080
81- meta := p .Metadata
82- if meta == nil {
83- meta = map [string ]any {}
84- }
85-
8681 var tools []string
8782 for _ , value := range pOpts .commonGenOptions .Tools {
8883 tools = append (tools , value .Name ())
8984 }
9085
91- inputMeta := map [ string ] any {}
92- if p . InputSchema ! = nil {
93- inputMeta [ "schema" ] = p . InputSchema
86+ metadata := p . Metadata
87+ if metadata = = nil {
88+ metadata = map [ string ] any {}
9489 }
90+ metadata ["type" ] = api .ActionTypeExecutablePrompt
9591
96- outputMeta := map [ string ] any {}
97- if p . OutputSchema != nil {
98- outputMeta [ "schema" ] = p . OutputSchema
92+ baseName := name
93+ if idx := strings . LastIndex ( name , "." ); idx != - 1 {
94+ baseName = name [: idx ]
9995 }
10096
101- promptMeta := map [string ]any {
102- "type" : api .ActionTypeExecutablePrompt ,
103- "prompt" : map [string ]any {
104- "name" : name ,
105- "description" : p .Description ,
106- "model" : modelName ,
107- "config" : p .Config ,
108- "input" : inputMeta ,
109- "output" : outputMeta ,
110- "defaultInput" : p .DefaultInput ,
111- "tools" : tools ,
112- "maxTurns" : p .MaxTurns ,
113- },
97+ promptMetadata := map [string ]any {
98+ "name" : baseName ,
99+ "description" : p .Description ,
100+ "model" : modelName ,
101+ "config" : p .Config ,
102+ "input" : map [string ]any {"schema" : p .InputSchema },
103+ "output" : map [string ]any {"schema" : p .OutputSchema },
104+ "defaultInput" : p .DefaultInput ,
105+ "tools" : tools ,
106+ "maxTurns" : p .MaxTurns ,
107+ }
108+ if m , ok := metadata ["prompt" ].(map [string ]any ); ok {
109+ maps .Copy (m , promptMetadata )
110+ } else {
111+ metadata ["prompt" ] = promptMetadata
114112 }
115- maps .Copy (meta , promptMeta )
116113
117- p .ActionDef = * core .DefineAction (r , name , api .ActionTypeExecutablePrompt , meta , p .InputSchema , p .buildRequest )
114+ p .ActionDef = * core .DefineAction (r , name , api .ActionTypeExecutablePrompt , metadata , p .InputSchema , p .buildRequest )
118115
119116 return p
120117}
@@ -641,16 +638,23 @@ func LoadPrompt(r api.Registry, dir, filename, namespace string) Prompt {
641638 toolRefs [i ] = ToolName (tool )
642639 }
643640
644- promptMetadata := map [string ]any {
645- "template" : parsedPrompt .Template ,
641+ promptOptMetadata := metadata .Metadata
642+ if promptOptMetadata == nil {
643+ promptOptMetadata = make (map [string ]any )
646644 }
647- maps .Copy (promptMetadata , metadata .Metadata )
648645
649- promptOptMetadata := map [string ]any {
650- "type" : "prompt" ,
651- "prompt" : promptMetadata ,
646+ var promptMetadata map [string ]any
647+ if m , ok := promptOptMetadata ["prompt" ].(map [string ]any ); ok {
648+ promptMetadata = m
649+ } else {
650+ promptMetadata = make (map [string ]any )
651+ }
652+ promptMetadata ["template" ] = parsedPrompt .Template
653+ if variant != "" {
654+ promptMetadata ["variant" ] = variant
652655 }
653- maps .Copy (promptOptMetadata , metadata .Metadata )
656+ promptOptMetadata ["prompt" ] = promptMetadata
657+ promptOptMetadata ["type" ] = api .ActionTypeExecutablePrompt
654658
655659 opts := & promptOptions {
656660 commonGenOptions : commonGenOptions {
0 commit comments