Skip to content

Commit 828aa27

Browse files
Add keep-alive stdin for daemons
1 parent 1cf101a commit 828aa27

File tree

2 files changed

+21
-9
lines changed

2 files changed

+21
-9
lines changed

pkg/engine/daemon.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,12 @@ func (e *Engine) startDaemon(_ context.Context, tool types.Tool) (string, error)
100100
return url, err
101101
}
102102

103+
r, w, err := os.Pipe()
104+
if err != nil {
105+
return "", err
106+
}
107+
108+
cmd.Stdin = r
103109
cmd.Stderr = os.Stderr
104110
cmd.Stdout = os.Stdout
105111
log.Infof("launched [%s][%s] port [%d] %v", tool.Parameters.Name, tool.ID, port, cmd.Args)
@@ -121,6 +127,8 @@ func (e *Engine) startDaemon(_ context.Context, tool types.Tool) (string, error)
121127
if err != nil {
122128
log.Errorf("daemon exited tool [%s] %v: %v", tool.Parameters.Name, cmd.Args, err)
123129
}
130+
_ = r.Close()
131+
_ = w.Close()
124132

125133
cancel(err)
126134
stop()
@@ -133,7 +141,7 @@ func (e *Engine) startDaemon(_ context.Context, tool types.Tool) (string, error)
133141
daemonWG.Add(1)
134142
context.AfterFunc(ctx, func() {
135143
if err := cmd.Process.Kill(); err != nil {
136-
log.Errorf("daemon failed to kill tool [%s] process: %v", tool.Parameters.Name, err)
144+
log.Debugf("daemon failed to kill tool [%s] process: %v", tool.Parameters.Name, err)
137145
}
138146
daemonWG.Done()
139147
})

pkg/engine/engine.go

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -155,14 +155,18 @@ func (c *Context) appendTool(completion *types.CompletionRequest, parentTool typ
155155
c.toolNames = map[string]struct{}{}
156156
}
157157

158-
completion.Tools = append(completion.Tools, types.CompletionTool{
159-
Function: types.CompletionFunctionDefinition{
160-
ToolID: subTool.ID,
161-
Name: PickToolName(subToolName, c.toolNames),
162-
Description: subTool.Parameters.Description,
163-
Parameters: args,
164-
},
165-
})
158+
if subTool.Instructions == "" {
159+
log.Debugf("Skipping zero instruction tool %s (%s)", subToolName, subTool.ID)
160+
} else {
161+
completion.Tools = append(completion.Tools, types.CompletionTool{
162+
Function: types.CompletionFunctionDefinition{
163+
ToolID: subTool.ID,
164+
Name: PickToolName(subToolName, c.toolNames),
165+
Description: subTool.Parameters.Description,
166+
Parameters: args,
167+
},
168+
})
169+
}
166170

167171
for _, export := range subTool.Export {
168172
if err := c.appendTool(completion, subTool, export); err != nil {

0 commit comments

Comments
 (0)