Skip to content

feat: play integration#3

Draft
alaabags wants to merge 15 commits into
mainfrom
alaa/feat/play-integration
Draft

feat: play integration#3
alaabags wants to merge 15 commits into
mainfrom
alaa/feat/play-integration

Conversation

@alaabags
Copy link
Copy Markdown

@alaabags alaabags commented Apr 21, 2026

Note

Medium Risk
Adds a large new bags play feature surface with networked Play API interactions (auth, publish/patch, runs/deployments admin actions) plus new global CLI flags that affect output behavior. Risk is mainly behavioral regressions in CLI UX/output (quiet/no-color/json) and new API error-handling paths rather than changes to existing Bags trading/auth flows.

Overview
Introduces Bags Play integration by adding a new bags play command group (apps, runs, deployments, plugins, publish/patch/verify, init scaffolding, and a whoami/art info command), backed by a new Play API client using hono/client and Play-specific auth/key validation.

Adds shell completion support via a hidden root __complete dispatcher plus bags play completion generators/installers for bash/zsh/fish.

Updates the CLI runtime/UX: new global flags (--quiet, --no-color, --play-api, --bags-api), quiet-mode suppression for human output, early argv parsing to disable color before chalk loads, and an extracted mergeJsonInputArgs helper.

Adds a build-time step to embed Play project templates (scripts/embed-play-templates.ts) and updates dependencies/lockfile to include Play workspace packages and new libraries (cron-parser, smol-toml, nats, tsx, @hono/zod-openapi, etc.).

Reviewed by Cursor Bugbot for commit cd8a40c. Bugbot is set up for automated code reviews on this repo. Configure here.

@alaabags alaabags marked this pull request as draft April 21, 2026 15:22
Comment thread package.json
Comment thread src/play/commands/info.ts
Comment thread src/play/commands/init/scaffold.ts Outdated
Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit cd8a40c. Configure here.

Comment thread src/lib/output.ts
}
if (isQuietMode(command)) {
return;
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Quiet mode suppresses printData JSON output incorrectly

Medium Severity

The printData function now returns early when isQuietMode is true, before rendering non-JSON structured output. However, the docstring for isQuietMode explicitly states that "JSON-mode output is independent — printData continues to emit JSON to stdout even when --quiet is on." While the JSON-mode check comes first, users who haven't set --json but rely on printData for programmatic data output will get silenced. More critically, there's an asymmetry: printTable also guards with isQuietMode, but the intent described in the comment suggests data output functions like printData differ from chatter.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit cd8a40c. Configure here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant