mirror of
https://github.com/multica-ai/multica.git
synced 2026-07-16 06:39:01 +02:00
fix(cli): add pagination metadata to issue list JSON output and update agent prompt
Issue list JSON now includes total, limit, offset, has_more fields so agents can detect truncated results and paginate. Also documents --limit/--offset in the agent prompt and emphasizes mention format in Output section. Closes MUL-837 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -138,6 +138,7 @@ func init() {
|
||||
issueListCmd.Flags().String("assignee", "", "Filter by assignee name")
|
||||
issueListCmd.Flags().String("project", "", "Filter by project ID")
|
||||
issueListCmd.Flags().Int("limit", 50, "Maximum number of issues to return")
|
||||
issueListCmd.Flags().Int("offset", 0, "Number of issues to skip (for pagination)")
|
||||
|
||||
// issue get
|
||||
issueGetCmd.Flags().String("output", "json", "Output format: table or json")
|
||||
@@ -236,6 +237,9 @@ func runIssueList(cmd *cobra.Command, _ []string) error {
|
||||
}
|
||||
params.Set("assignee_id", aID)
|
||||
}
|
||||
if v, _ := cmd.Flags().GetInt("offset"); v > 0 {
|
||||
params.Set("offset", fmt.Sprintf("%d", v))
|
||||
}
|
||||
if v, _ := cmd.Flags().GetString("project"); v != "" {
|
||||
params.Set("project_id", v)
|
||||
}
|
||||
@@ -254,7 +258,18 @@ func runIssueList(cmd *cobra.Command, _ []string) error {
|
||||
|
||||
output, _ := cmd.Flags().GetString("output")
|
||||
if output == "json" {
|
||||
return cli.PrintJSON(os.Stdout, issuesRaw)
|
||||
total, _ := result["total"].(float64)
|
||||
limit, _ := cmd.Flags().GetInt("limit")
|
||||
offset, _ := cmd.Flags().GetInt("offset")
|
||||
hasMore := offset+len(issuesRaw) < int(total)
|
||||
wrapped := map[string]any{
|
||||
"issues": issuesRaw,
|
||||
"total": int(total),
|
||||
"limit": limit,
|
||||
"offset": offset,
|
||||
"has_more": hasMore,
|
||||
}
|
||||
return cli.PrintJSON(os.Stdout, wrapped)
|
||||
}
|
||||
|
||||
headers := []string{"ID", "TITLE", "STATUS", "PRIORITY", "ASSIGNEE", "DUE DATE"}
|
||||
|
||||
@@ -64,7 +64,7 @@ func buildMetaSkillContent(provider string, ctx TaskContextForEnv) string {
|
||||
b.WriteString("**Always use `--output json` for all read commands** to get structured data with full IDs.\n\n")
|
||||
b.WriteString("### Read\n")
|
||||
b.WriteString("- `multica issue get <id> --output json` — Get full issue details (title, description, status, priority, assignee)\n")
|
||||
b.WriteString("- `multica issue list [--status X] [--priority X] [--assignee X] --output json` — List issues in workspace\n")
|
||||
b.WriteString("- `multica issue list [--status X] [--priority X] [--assignee X] [--limit N] [--offset N] --output json` — List issues in workspace (default limit: 50; JSON output includes `total`, `has_more` — use offset to paginate when `has_more` is true)\n")
|
||||
b.WriteString("- `multica issue comment list <issue-id> [--limit N] [--offset N] [--since <RFC3339>] --output json` — List comments on an issue (supports pagination; includes id, parent_id for threading)\n")
|
||||
b.WriteString("- `multica workspace get --output json` — Get workspace details and context\n")
|
||||
b.WriteString("- `multica workspace members [workspace-id] --output json` — List workspace members (user IDs, names, roles)\n")
|
||||
@@ -180,6 +180,7 @@ func buildMetaSkillContent(provider string, ctx TaskContextForEnv) string {
|
||||
b.WriteString("Keep comments concise and natural — state the outcome, not the process.\n")
|
||||
b.WriteString("Good: \"Fixed the login redirect. PR: https://...\"\n")
|
||||
b.WriteString("Bad: \"1. Read the issue 2. Found the bug in auth.go 3. Created branch 4. ...\"\n")
|
||||
b.WriteString("When referencing issues in comments, **always** use the mention format `[MUL-123](mention://issue/<issue-id>)` so they render as clickable links.\n")
|
||||
|
||||
return b.String()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user