• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

kshard / thinker / 15084249817

17 May 2025 10:20AM UTC coverage: 54.037% (-4.2%) from 58.222%
15084249817

push

github

web-flow
establish agent taxonomy - prompter, manifold, automata (#20)

331 of 612 new or added lines in 28 files covered. (54.08%)

8 existing lines in 4 files now uncovered.

609 of 1127 relevant lines covered (54.04%)

0.57 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/command/cmd.go
1
//
2
// Copyright (C) 2025 Dmitry Kolesnikov
3
//
4
// This file may be modified and distributed under the terms
5
// of the MIT license.  See the LICENSE file for details.
6
// https://github.com/kshard/thinker
7
//
8

9
package command
10

11
import (
12
        "bytes"
13
        "encoding/json"
14
        "fmt"
15
        "os/exec"
16
        "strings"
17
        "text/template"
18

19
        "github.com/kshard/thinker"
20
)
21

NEW
22
func Cmd(dir string, spec thinker.Cmd) thinker.Cmd {
×
NEW
23
        spec.Run = cmd(dir, spec)
×
NEW
24
        return spec
×
NEW
25
}
×
26

NEW
27
func cmd(dir string, spec thinker.Cmd) func(json.RawMessage) ([]byte, error) {
×
NEW
28
        t := template.Must(template.New(spec.Cmd).Parse(spec.Syntax))
×
NEW
29

×
NEW
30
        return func(command json.RawMessage) ([]byte, error) {
×
NEW
31
                var in map[string]any
×
NEW
32
                if err := json.Unmarshal(command, &in); err != nil {
×
NEW
33
                        err := thinker.Feedback(
×
NEW
34
                                "The input does not contain valid JSON object",
×
NEW
35
                                "JSON parsing has failed with an error "+err.Error(),
×
NEW
36
                        )
×
NEW
37
                        return []byte(err.Error()), nil
×
NEW
38
                }
×
39

NEW
40
                var sb strings.Builder
×
NEW
41
                if err := t.Execute(&sb, in); err != nil {
×
NEW
42
                        return nil, err
×
NEW
43
                }
×
44

NEW
45
                cmd := exec.Command("bash", "-c", sb.String())
×
NEW
46
                var stdout bytes.Buffer
×
NEW
47
                var stderr bytes.Buffer
×
NEW
48
                cmd.Dir = dir
×
NEW
49
                cmd.Stdout = &stdout
×
NEW
50
                cmd.Stderr = &stderr
×
NEW
51

×
NEW
52
                if err := cmd.Run(); err != nil {
×
NEW
53
                        err = thinker.Feedback(
×
NEW
54
                                fmt.Sprintf("The tool %s has failed, improve the response based on feedback:", spec.Cmd),
×
NEW
55

×
NEW
56
                                "Execution of the tool is failed with the error: "+err.Error(),
×
NEW
57
                                "The stderr is "+stderr.String(),
×
NEW
58
                        )
×
NEW
59

×
NEW
60
                        return nil, err
×
NEW
61
                }
×
62

NEW
63
                return stdout.Bytes(), nil
×
64
        }
65
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc