rush-ai 0.9.1 → 0.10.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -152,7 +152,7 @@ so the IDE's own `/plugin list` / `/plugin uninstall` still work.
152
152
  | `task list` | `task ls` | List tasks |
153
153
  | `task watch <id>` | - | Stream task execution in real-time (SSE) |
154
154
  | `task cancel <id>` | - | Cancel a running task |
155
- | `task push` | - | Push a local project to the Rush platform (previously `task deploy` with no id) |
155
+ | `task push` | - | Sync a local Rush project's commits to its pod (git push + pod sync/pull). Does NOT create projects. |
156
156
  | `task deploy <id>` | - | Deploy a built web-builder task (default `--env production`; `--env test` allowed for non-Next.js templates); `--version`, `--domain`, `--yes` |
157
157
  | `task versions <id>` | - | List buildable versions for a web-builder task (shows ✓ for versions already deployed to test / production) |
158
158
  | `task domain check <prefix>` | - | Validate a custom domain prefix and check availability (`--task <id>` required) |
@@ -225,6 +225,72 @@ rush-ai task messages <task-id> --json
225
225
  rush-ai task list -l 10 -s completed
226
226
  ```
227
227
 
228
+ ### Setting up a full-stack local project
229
+
230
+ > ⚠️ **`task link` is currently blocked by [#1147](https://github.com/kanyun-inc/rush-app/issues/1147).** The finalize step 502s because the target GitLab instance rejects the `write_repository` deploy-token scope. Until that's fixed, the recommended path for "set up a full-stack project on Rush" is `task create -a web-builder` — describe what you want (or attach files) and let the web-builder agent build it inside a fresh Rush pod. The documentation below is retained for reference; do **not** run `task link` against rush-test today, it will error at the provisioning step.
231
+ >
232
+ > This blocker is **specific to `task link`**. `task push` (sync-only, #1149) is unaffected — if you already have a Rush project checked out locally, `rush-ai task push` continues to work normally.
233
+
234
+ Got a local Next.js / Vite project that needs a database + file uploads on Rush?
235
+ `task link` provisions a pod + Supabase DB + Rush-proxied object storage, then
236
+ writes credentials to `.rush/env.md` and a machine-readable checklist at
237
+ `.rush/agent-handoff.md` telling your IDE agent exactly which local files to edit.
238
+
239
+ ```bash
240
+ # From your local project directory:
241
+ cd my-app
242
+
243
+ # Detect, confirm, and provision. Flags:
244
+ # --db create a Supabase database
245
+ # --oss record Rush-proxied storage endpoint (no per-project token)
246
+ # --name project slug (defaults to directory name)
247
+ # -y skip interactive prompts after detection
248
+ rush-ai task link --db --oss -y
249
+
250
+ # You now have .rush/env.md:
251
+ # PROJECT_ID=<id>
252
+ # PREVIEW_URL=https://<id>-preview.rush.zhenguanyu.com
253
+ # DATABASE_URL=postgres://...
254
+ # SUPABASE_URL=https://...
255
+ # SUPABASE_ANON_KEY=...
256
+ # STORAGE_API_BASE=https://rush.zhenguanyu.com/api/tasks/<id>/storage
257
+ # STATE=complete
258
+
259
+ # Your IDE agent reads .rush/agent-handoff.md and rewrites .env.local / upload code.
260
+ # When you're ready:
261
+ rush-ai task push # reuses PROJECT_ID from .rush/env.md
262
+ ```
263
+
264
+ **Storage API**: uploads go through Rush proxy (not direct OSS) to avoid exposing
265
+ AccessKeys. Server-side code in your app uses `$RUSH_PLATFORM_TOKEN` (already in
266
+ your environment via `rush-ai auth login`) to upload:
267
+
268
+ ```ts
269
+ // apps/your-app/app/api/upload/route.ts — Next.js server route
270
+ export async function POST(req: Request) {
271
+ const fd = await req.formData();
272
+ const res = await fetch(`${process.env.STORAGE_API_BASE}/upload`, {
273
+ method: 'POST',
274
+ headers: { Authorization: `Bearer ${process.env.RUSH_PLATFORM_TOKEN}` },
275
+ body: fd,
276
+ });
277
+ return Response.json(await res.json());
278
+ }
279
+ ```
280
+
281
+ Then your browser uploads to `/api/upload` (your own app's server route),
282
+ **never** directly to the storage API with a bearer token. The `task link`
283
+ handoff enforces this two-hop proxy pattern.
284
+
285
+ Constraints:
286
+ - `.rush/env.md` is auto-gitignored — never commit it
287
+ - Single file ≤ 30 MB (larger streaming planned for Phase 2)
288
+ - Each task has a 5 GB soft storage quota
289
+ - `task link` projects have `template = null` and can't flow through `task deploy` — use `task push` for iterative updates
290
+ - `task link` is compensating, not atomic: if it fails mid-way, just re-run it; it resumes from the last checkpoint in `.rush/env.md`
291
+
292
+ Full design contract: `specs/rush-v2/cli/task-storage-api.spec.md` (v1.0).
293
+
228
294
  ### Deploying a web-builder task
229
295
 
230
296
  Once a `web-builder` task has built at least one version (you've sent it a