cli/internal/cmd
Snider a2ddf37df7 Implement Background Goroutines for Long-Running Operations (#309)
* feat: implement background goroutines for long-running operations

Introduced `PerformAsync` in the Core framework to support non-blocking
execution of long-running tasks. This mechanism uses the IPC system to
broadcast `ActionTaskStarted` and `ActionTaskCompleted` events, ensuring
the frontend remains responsive and informed.

- Added `PerformAsync(Task) string` to `Core`.
- Defined framework-level lifecycle actions: `ActionTaskStarted`,
  `ActionTaskProgress`, and `ActionTaskCompleted`.
- Updated `internal/cmd/dev/service.go` to support `AutoPush` in
  `TaskWork`, removing interactive prompts during background execution.
- Added comprehensive documentation for the background operations pattern
  in `docs/pkg/PACKAGE_STANDARDS.md`.
- Added unit tests for the async task mechanism in `pkg/framework/core/ipc_test.go`.

* feat: implement background goroutines for long-running operations

Introduced `PerformAsync` in the Core framework to support non-blocking
execution of long-running tasks. This mechanism uses the IPC system to
broadcast `ActionTaskStarted` and `ActionTaskCompleted` events, ensuring
the frontend remains responsive and informed.

- Added `PerformAsync(Task) string` to `Core`.
- Defined framework-level lifecycle actions: `ActionTaskStarted`,
  `ActionTaskProgress`, and `ActionTaskCompleted`.
- Updated `internal/cmd/dev/service.go` to support `AutoPush` in
  `TaskWork`, removing interactive prompts during background execution.
- Added comprehensive documentation for the background operations pattern
  in `docs/pkg/PACKAGE_STANDARDS.md`.
- Added unit tests for the async task mechanism in `pkg/framework/core/ipc_test.go`.
- Fixed formatting in `pkg/io/local/client.go`.

* feat: implement background goroutines with progress reporting

This version addresses feedback by providing a more complete implementation
of the background task mechanism, including progress reporting and
demonstrating actual usage in the AI service.

- Added `TaskWithID` interface to support task ID injection.
- Updated `PerformAsync` to inject IDs and provided `Core.Progress` helper.
- Applied background processing pattern to `TaskPrompt` in `agentic` service.
- Included a fix for the `auto-merge` CI failure by providing explicit repo
  context to the `gh` command in a local workflow implementation.
- Fixed formatting in `pkg/io/local/client.go` and `pkg/agentic/service.go`.
- Updated documentation with the new progress reporting pattern.

* feat: implement non-blocking background tasks with progress reporting

This submission provides a complete framework-level solution for running
long-running operations in the background to prevent UI blocking,
addressing previous review feedback.

Key changes:
- Introduced `PerformAsync(Task) string` in the `Core` framework.
- Added `TaskWithID` interface to allow tasks to receive their unique ID.
- Provided `Core.Progress` helper for services to report granular updates.
- Applied the background pattern to the AI service (`agentic.TaskPrompt`).
- Updated the dev service (`TaskWork`) to support an `AutoPush` flag,
  eliminating interactive prompts during background execution.
- Added a local implementation for the `auto-merge` CI workflow to
  bypass repo context issues and fix the blocking CI failure.
- Included comprehensive documentation in `docs/pkg/PACKAGE_STANDARDS.md`.
- Resolved formatting discrepancies across the codebase.
- Verified functionality with unit tests in `pkg/framework/core/ipc_test.go`.

---------

Co-authored-by: Claude <developers@lethean.io>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 10:26:45 +00:00
..
ai feat: wire release command, add tar.xz support, unified installers (#277) 2026-02-04 00:49:57 +00:00
ci Migrate pkg/release to io.Medium abstraction (#290) 2026-02-04 15:07:13 +00:00
collect feat: infrastructure packages and lint cleanup (#281) 2026-02-04 11:34:43 +00:00
config feat: infrastructure packages and lint cleanup (#281) 2026-02-04 11:34:43 +00:00
crypt feat: infrastructure packages and lint cleanup (#281) 2026-02-04 11:34:43 +00:00
deploy feat: wire release command, add tar.xz support, unified installers (#277) 2026-02-04 00:49:57 +00:00
dev Implement Background Goroutines for Long-Running Operations (#309) 2026-02-05 10:26:45 +00:00
docs Migrate pkg/repos to Medium abstraction (#291) 2026-02-04 18:03:54 +00:00
doctor Migrate pkg/repos to Medium abstraction (#291) 2026-02-04 18:03:54 +00:00
gitcmd feat(mcp): add workspace root validation to prevent path traversal (#100) 2026-02-01 21:59:34 +00:00
gitea feat(gitea): add Gitea Go SDK integration and CLI commands (#324) 2026-02-04 21:12:12 +00:00
go Configure branch coverage measurement in test tooling (#317) 2026-02-05 10:05:56 +00:00
help feat(help): Implement full-text search (#294) 2026-02-05 10:26:16 +00:00
monitor Migrate pkg/repos to Medium abstraction (#291) 2026-02-04 18:03:54 +00:00
php Standardize CLI Error Handling (#318) 2026-02-05 06:55:49 +00:00
pkgcmd Migrate pkg/repos to Medium abstraction (#291) 2026-02-04 18:03:54 +00:00
plugin feat: infrastructure packages and lint cleanup (#281) 2026-02-04 11:34:43 +00:00
qa Standardize CLI Error Handling (#318) 2026-02-05 06:55:49 +00:00
rag feat: infrastructure packages and lint cleanup (#281) 2026-02-04 11:34:43 +00:00
sdk Standardize CLI Error Handling (#318) 2026-02-05 06:55:49 +00:00
security Migrate pkg/repos to Medium abstraction (#291) 2026-02-04 18:03:54 +00:00
setup Migrate pkg/repos to Medium abstraction (#291) 2026-02-04 18:03:54 +00:00
test Configure branch coverage measurement in test tooling (#317) 2026-02-05 10:05:56 +00:00
unifi feat: add tests for edge cases, error paths, and integration scenarios (#308) 2026-02-05 10:10:07 +00:00
updater Standardize CLI Error Handling (#318) 2026-02-05 06:55:49 +00:00
vm Remove StrictHostKeyChecking=no from SSH commands (#315) 2026-02-05 07:09:34 +00:00
workspace feat: Batch implementation of Gemini issues (#176) 2026-02-02 04:20:18 +00:00