Lead create_project tool
This commit is contained in:
+19
-14
@@ -68,7 +68,7 @@ func New(dataDir string, portFirst int, spa fs.FS) (*Server, error) {
|
||||
}
|
||||
}
|
||||
|
||||
s.agents = agents.New(s.store, filepath.Join(dataDir, "worktrees"), filepath.Join(dataDir, "leads"), filepath.Join(dataDir, "codex"), s.status)
|
||||
s.agents = agents.New(s.store, filepath.Join(dataDir, "worktrees"), filepath.Join(dataDir, "leads"), filepath.Join(dataDir, "codex"), s.status, s.createProject)
|
||||
err = s.agents.Recover(context.Background())
|
||||
if err != nil {
|
||||
s.store.Close()
|
||||
@@ -204,39 +204,44 @@ func (s *Server) CreateProject(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
if strings.TrimSpace(req.Name) == "" {
|
||||
writeError(w, http.StatusBadRequest, errors.New("name is required"))
|
||||
p, err := s.createProject(r.Context(), req.Name, req.RepoPath, actor(r))
|
||||
if err != nil {
|
||||
writeAgentError(w, err)
|
||||
return
|
||||
}
|
||||
writeJSON(w, http.StatusCreated, p)
|
||||
}
|
||||
|
||||
info, err := git.Inspect(req.RepoPath)
|
||||
func (s *Server) createProject(ctx context.Context, name, repoPath, createdBy string) (api.Project, error) {
|
||||
if strings.TrimSpace(name) == "" {
|
||||
return api.Project{}, fmt.Errorf("%w: name is required", agents.ErrInvalid)
|
||||
}
|
||||
|
||||
info, err := git.Inspect(repoPath)
|
||||
if err != nil {
|
||||
writeError(w, http.StatusBadRequest, err)
|
||||
return
|
||||
return api.Project{}, fmt.Errorf("%w: %w", agents.ErrInvalid, err)
|
||||
}
|
||||
|
||||
err = git.ConfigureNotesFetch(info.Root)
|
||||
if err != nil {
|
||||
writeError(w, http.StatusInternalServerError, err)
|
||||
return
|
||||
return api.Project{}, err
|
||||
}
|
||||
|
||||
p := api.Project{
|
||||
Id: store.NewID(),
|
||||
Name: req.Name,
|
||||
Name: name,
|
||||
RepoPath: info.Root,
|
||||
DefaultBranch: info.DefaultBranch,
|
||||
Remote: info.Remote,
|
||||
CreatedBy: actor(r),
|
||||
CreatedBy: createdBy,
|
||||
CreatedAt: time.Now().UTC(),
|
||||
}
|
||||
|
||||
err = s.store.CreateProject(r.Context(), p)
|
||||
err = s.store.CreateProject(ctx, p)
|
||||
if err != nil {
|
||||
writeError(w, http.StatusBadRequest, err)
|
||||
return
|
||||
return api.Project{}, fmt.Errorf("%w: %w", agents.ErrInvalid, err)
|
||||
}
|
||||
writeJSON(w, http.StatusCreated, p)
|
||||
return p, nil
|
||||
}
|
||||
|
||||
func (s *Server) GetProject(w http.ResponseWriter, r *http.Request, projectID string) {
|
||||
|
||||
Reference in New Issue
Block a user