summaryrefslogtreecommitdiff
path: root/internal/askcli
AgeCommit message (Collapse)Author
2026-03-24ask: add --json flag for machine-readable outputv0.25.12Paul Buetow
List, ready, all, info, and urgency commands now output JSON arrays when --json is passed. This fixes pi agent-plan-mode extension which expects JSON from ask but was getting human-readable tables. Amp-Thread-ID: https://ampcode.com/threads/T-019d207c-b8e2-748d-af52-dd8f84fb2b32 Co-authored-by: Amp <amp@ampcode.com>
2026-03-23fix: prevent ask add from swallowing tags into descriptions, add ↵v0.25.11Paul Buetow
rc.confirmation=off parseAddArgs now rejects args that start with '+'/'-' but contain spaces as modifiers — those are description text, not tags (tags cannot have spaces). This prevents agents from quoting tag+description together and having the tag silently land in the task description with no tag applied. Also removed the fallthrough that duplicated all-modifier args as description. Added rc.confirmation=off to every taskwarrior invocation so that write operations (done, delete, start, etc.) succeed non-interactively when stdin is unavailable (as is always the case when called from an agent). Bump version to v0.25.11. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-23fix: accept uuid: prefix on all ask subcommands via NormalizeUUIDPaul Buetow
All ask commands now strip a leading "uuid:" prefix from user-supplied UUID arguments before building the taskwarrior filter, so both bare UUIDs and the "uuid:<value>" format work uniformly across annotate, start, stop, done, modify, denotate, priority, tag, info, delete, and dep. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-23fix: code quality improvements across lsp, askcli, appconfig, integrationtestsPaul Buetow
- lsp/handlers_completion.go: track collectFirstCompletion goroutine in inflight WaitGroup (goroutine leak fix) - lsp/transport.go: use %w instead of %v for error wrapping - askcli/command_list.go: extract handleListWithFilters shared helper; handleList/handleAll/handleReady are now single-liners - askcli/command_list.go, urgency.go, dep.go: log ParseTaskExport errors to stderr instead of returning 1 silently - appconfig/config_load.go: rename 'any' variable to 'found' to avoid shadowing the built-in identifier - llm/provider.go: add explanatory comment for package-level registry - integrationtests/ask_test.go: add //go:build integration tag; move repoRoot init from init() to TestMain with diagnostic error message Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-23fix: correct taskwarrior filter ordering in dep and info commandsPaul Buetow
- command_dep.go handleDepAddRm: was passing uuid as a modification argument (task modify <uuid> depends:...) which could modify ALL agent tasks; now uses uuid:<uuid> as filter - command_dep.go handleDepList: updated deprecated 'uuid <value>' space syntax to canonical 'uuid:<uuid>' colon syntax - command_info_add.go handleInfo: same space→colon fix for consistency All mutation commands now uniformly use uuid:<uuid> as the filter before the action verb. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-23fix: address all HIGH-severity code quality audit findingsPaul Buetow
- lsp/server.go: track request goroutines in inflight WaitGroup to prevent use-after-close writes on shutdown - lsp/llm_client_registry.go: acquire write lock before calling build() to eliminate TOCTOU race on cache population - lsp/handlers_codeaction.go: resolveSimplifyCodeAction now uses PromptCodeActionSimplify{System,User} (was wrongly using rewrite prompts) - askcli/taskexport.go: remove exported MustParseTaskExport to prevent panic on malformed external input; move to unexported test helper - cmd/ask/main.go: print error to stderr before os.Exit - llm/{openai,ollama,openrouter}.go: add interface satisfaction assertions - integrationtests/ask_test.go: replace type assertions with errors.As for robust exec.ExitError unwrapping Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-23fix: use uuid:<uuid> filter for start/stop/done/annotate/modify commandsPaul Buetow
Taskwarrior expects the filter before the action verb. Commands like 'task start <uuid>' are invalid — the UUID must be part of the filter: 'task uuid:<uuid> start'. All mutation commands now use this pattern consistently, matching how priority/tag/denotate already worked. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-23ask add: always emit UUID, never the numeric task IDPaul Buetow
Use rc.verbose=new-uuid so taskwarrior prints "Created task <uuid>." directly on stdout. Parse the UUID from that line instead of doing a two-step numeric-ID lookup or falling back to an export call. Removes ExtractUUIDFromOutput (which could leak numeric IDs) and fetchUUIDByNumericID (the export fallback). Integration tests now get the UUID straight from ask add output without any extra calls. Also fixes TestMain_WiresDispatcher which expected "export" first in args, but list now prepends status:pending filter. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-22ask: fix filter argument ordering for list/all/ready commandsv0.25.4Paul Buetow
Filters like +tag must come before the 'export' action in task commands. Previously filters were appended after 'export' causing 'ask list +integrationtest' to fail.
2026-03-22ask list: only show pending tasks by defaultv0.25.3Paul Buetow
Add status:pending filter to list command so it only shows pending tasks, not completed or deleted ones. Use 'ask all' to see all tasks.
2026-03-22ask: fix CLI commands to use correct Taskwarrior argument formatsv0.25.2Paul Buetow
- handlePriority: use 'uuid:<uuid> modify priority:<level>' instead of 'priority <uuid> <level>' - handleTag: use 'uuid:<uuid> modify +/-tag' instead of 'tag <uuid> +/-tag' - handleDelete: use 'uuid:<uuid> delete' and pass stdin for confirmation - handleDenotate: use 'uuid:<uuid> denotate <pattern>' instead of 'denotate <uuid> <pattern>' - Add integration tests for all ask CLI subcommands - Update unit tests to match new command argument formats - createTask now uses task info to get UUID instead of export parsing - parseTaskInfoText fixed to split tags by ', ' instead of whitespace
2026-03-22ask: add ready command to list READY tasks (not blocked)Paul Buetow
handleReady passes +READY filter to show actionable tasks only. help text updated. tests updated.
2026-03-22ask: default to list, add ask all for complete task visibilityPaul Buetow
- ask (no args) now behaves like ask list (active tasks sorted by priority/urgency) - ask help: explicit help subcommand - ask all: shows ALL tasks including completed/deleted (uses status:any) - handleAll added in command_list.go, mirrors handleList with status:any - Updated tests: help tests use explicit 'ask help', all subcommand added to reachability test - Updated help text to document ask all
2026-03-22internal/askcli: support priority:X and +tag args in ask addPaul Buetow
2026-03-22Implement 'ask info' and 'ask add' subcommandsPaul Buetow
2026-03-22Implement 'ask list' subcommand: parse export JSON, sort by ↵Paul Buetow
priority/urgency, format UUID table
2026-03-22Implement 'ask dep add/rm/list' subcommandsPaul Buetow
2026-03-22Implement 'ask urgency' subcommand: export tasks, sort by urgency ↵Paul Buetow
descending, format as UUID table
2026-03-22Implement write subcommands: annotate, start, stop, done, priority, tag, ↵Paul Buetow
modify, denotate
2026-03-22Implement 'ask delete' subcommand: forward to Taskwarrior, suppress output, ↵Paul Buetow
print UUID+success
2026-03-22Scaffold internal/askcli package: dispatch, taskexec, taskexport, formatterPaul Buetow