feat: add --notes flag to bd create command (GH#830)
Add --notes flag to bd create command, enabling agents to set notes during issue creation instead of requiring a separate update command. Motivation: AI agents repeatedly tried to use --notes with bd create. Context is fresh at creation time - forcing a two-step process means context loss or workflow interruption. Changes: - cmd/bd/flags.go: Added --notes flag to common issue flags - cmd/bd/create.go: Read and pass notes in both RPC and direct modes - cmd/bd/update.go: Removed duplicate --notes flag definition - internal/rpc/protocol.go: Added Notes field to CreateArgs - internal/rpc/server_issues_epics.go: Process Notes in handleCreate - cmd/bd/create_notes_test.go: Comprehensive test coverage - website/docs/cli-reference/issues.md: Documentation Also adds gitignore entries for Augment AI and .beads/redirect. Co-authored-by: Leon Letto <lettol@vmware.com>
This commit is contained in:
committed by
Steve Yegge
parent
aa2ea48bf2
commit
829c8d1caf
@@ -84,6 +84,7 @@ var createCmd = &cobra.Command{
|
||||
|
||||
design, _ := cmd.Flags().GetString("design")
|
||||
acceptance, _ := cmd.Flags().GetString("acceptance")
|
||||
notes, _ := cmd.Flags().GetString("notes")
|
||||
|
||||
// Parse priority (supports both "1" and "P1" formats)
|
||||
priorityStr, _ := cmd.Flags().GetString("priority")
|
||||
@@ -151,7 +152,7 @@ var createCmd = &cobra.Command{
|
||||
targetRig = prefixOverride
|
||||
}
|
||||
if targetRig != "" {
|
||||
createInRig(cmd, targetRig, title, description, issueType, priority, design, acceptance, assignee, labels, externalRef, wisp)
|
||||
createInRig(cmd, targetRig, title, description, issueType, priority, design, acceptance, notes, assignee, labels, externalRef, wisp)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -177,7 +178,7 @@ var createCmd = &cobra.Command{
|
||||
if err != nil {
|
||||
debug.Logf("Warning: failed to detect user role: %v\n", err)
|
||||
}
|
||||
|
||||
|
||||
routingConfig := &routing.RoutingConfig{
|
||||
Mode: config.GetString("routing.mode"),
|
||||
DefaultRepo: config.GetString("routing.default"),
|
||||
@@ -185,10 +186,10 @@ var createCmd = &cobra.Command{
|
||||
ContributorRepo: config.GetString("routing.contributor"),
|
||||
ExplicitOverride: repoOverride,
|
||||
}
|
||||
|
||||
|
||||
repoPath = routing.DetermineTargetRepo(routingConfig, userRole, ".")
|
||||
}
|
||||
|
||||
|
||||
// TODO(bd-6x6g): Switch to target repo for multi-repo support
|
||||
// For now, we just log the target repo in debug mode
|
||||
if repoPath != "." {
|
||||
@@ -272,6 +273,7 @@ var createCmd = &cobra.Command{
|
||||
Priority: priority,
|
||||
Design: design,
|
||||
AcceptanceCriteria: acceptance,
|
||||
Notes: notes,
|
||||
Assignee: assignee,
|
||||
ExternalRef: externalRef,
|
||||
EstimatedMinutes: estimatedMinutes,
|
||||
@@ -329,6 +331,7 @@ var createCmd = &cobra.Command{
|
||||
Description: description,
|
||||
Design: design,
|
||||
AcceptanceCriteria: acceptance,
|
||||
Notes: notes,
|
||||
Status: types.StatusOpen,
|
||||
Priority: priority,
|
||||
IssueType: types.IssueType(issueType),
|
||||
@@ -347,7 +350,7 @@ var createCmd = &cobra.Command{
|
||||
}
|
||||
|
||||
ctx := rootCtx
|
||||
|
||||
|
||||
// Check if any dependencies are discovered-from type
|
||||
// If so, inherit source_repo from the parent issue
|
||||
var discoveredFromParentID string
|
||||
@@ -356,16 +359,16 @@ var createCmd = &cobra.Command{
|
||||
if depSpec == "" {
|
||||
continue
|
||||
}
|
||||
|
||||
|
||||
var depType types.DependencyType
|
||||
var dependsOnID string
|
||||
|
||||
|
||||
if strings.Contains(depSpec, ":") {
|
||||
parts := strings.SplitN(depSpec, ":", 2)
|
||||
if len(parts) == 2 {
|
||||
depType = types.DependencyType(strings.TrimSpace(parts[0]))
|
||||
dependsOnID = strings.TrimSpace(parts[1])
|
||||
|
||||
|
||||
if depType == types.DepDiscoveredFrom && dependsOnID != "" {
|
||||
discoveredFromParentID = dependsOnID
|
||||
break
|
||||
@@ -373,7 +376,7 @@ var createCmd = &cobra.Command{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// If we found a discovered-from dependency, inherit source_repo from parent
|
||||
if discoveredFromParentID != "" {
|
||||
parentIssue, err := store.GetIssue(ctx, discoveredFromParentID)
|
||||
@@ -382,7 +385,7 @@ var createCmd = &cobra.Command{
|
||||
}
|
||||
// If error getting parent or parent has no source_repo, continue with default
|
||||
}
|
||||
|
||||
|
||||
if err := store.CreateIssue(ctx, issue, actor); err != nil {
|
||||
FatalError("%v", err)
|
||||
}
|
||||
@@ -559,7 +562,7 @@ func init() {
|
||||
|
||||
// createInRig creates an issue in a different rig using --rig flag.
|
||||
// This bypasses the normal daemon/direct flow and directly creates in the target rig.
|
||||
func createInRig(cmd *cobra.Command, rigName, title, description, issueType string, priority int, design, acceptance, assignee string, labels []string, externalRef string, wisp bool) {
|
||||
func createInRig(cmd *cobra.Command, rigName, title, description, issueType string, priority int, design, acceptance, notes, assignee string, labels []string, externalRef string, wisp bool) {
|
||||
ctx := rootCtx
|
||||
|
||||
// Find the town-level beads directory (where routes.jsonl lives)
|
||||
@@ -597,6 +600,7 @@ func createInRig(cmd *cobra.Command, rigName, title, description, issueType stri
|
||||
Description: description,
|
||||
Design: design,
|
||||
AcceptanceCriteria: acceptance,
|
||||
Notes: notes,
|
||||
Status: types.StatusOpen,
|
||||
Priority: priority,
|
||||
IssueType: types.IssueType(issueType),
|
||||
|
||||
Reference in New Issue
Block a user