creght-cli 0.4.1 → 0.5.0

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
@@ -79,7 +79,7 @@ project_id Project Name
79
79
  project_id/site_id Site Name
80
80
  ```
81
81
 
82
- Use the `project_id/site_id` value with `pull`, `push`, and `sync`.
82
+ Use the `project_id/site_id` value with `pull` and `push`.
83
83
 
84
84
  ## Create Project
85
85
 
@@ -139,6 +139,25 @@ simply the set of site files under `backend/func/`; for example
139
139
  `backend/func/booking.ts` is the Func with key `booking`, and
140
140
  `backend/func/profile/settings.ts` is `profile/settings`.
141
141
 
142
+ The first pull requires `--site_id` and usually `--dir`. After that,
143
+ `.creght/state.json` records the site reference. From the workspace root or any
144
+ child directory, `pull`, `diff`, and `push` find that file by walking upward,
145
+ so normal ongoing usage does not repeat either option:
146
+
147
+ ```bash
148
+ creght pull
149
+ creght diff
150
+ creght push
151
+ ```
152
+
153
+ Pass `--dir` and `--site_id` explicitly when operating on another workspace.
154
+
155
+ Single-file `<path>` arguments resolve from the current directory, git-style:
156
+ `creght push Index.tsx` run inside `page/` pushes `/page/Index.tsx`, while
157
+ paths starting with `/` are always workspace-root paths. When the discovered
158
+ workspace root differs from the current directory, commands print
159
+ `workspace: <root>` before doing anything.
160
+
142
161
  ## Local Vite Preview
143
162
 
144
163
  Creght projects pulled by the CLI usually do not have their own `package.json`
@@ -192,7 +211,8 @@ module after local file changes without a full page reload.
192
211
  Push the current local directory snapshot to Creght and exit:
193
212
 
194
213
  ```bash
195
- creght push --site_id=<project_id>/<site_id> --dir=./mysite
214
+ cd ./mysite
215
+ creght push
196
216
  ```
197
217
 
198
218
  For local development:
@@ -211,25 +231,40 @@ renaming, or deleting a file under `backend/func/` creates, updates, renames, or
211
231
  deletes the corresponding site file, and Func code is versioned and published
212
232
  together with the rest of the site.
213
233
 
214
- ## Sync Local Changes
234
+ ## Resolve Conflicts
215
235
 
216
- Run watch mode for a local directory:
236
+ `pull` and `push` compare three versions of every file: the base snapshot
237
+ recorded at the last pull/push (hashes in `.creght/state.json`, contents under
238
+ `.creght/base/`), the current local file, and the current remote file.
217
239
 
218
- ```bash
219
- creght sync --site_id=<project_id>/<site_id> --dir=./mysite
220
- ```
240
+ When a file changed on both sides, `pull` three-way merges it:
221
241
 
222
- For local development:
242
+ - Non-overlapping edits merge automatically; the file is reported as `merged`
243
+ and the result stays local until the next `push`.
244
+ - Overlapping edits write git-style conflict markers
245
+ (`<<<<<<< local` / `=======` / `>>>>>>> remote`) into the file and `pull`
246
+ exits non-zero.
247
+
248
+ List and resolve marker files:
223
249
 
224
250
  ```bash
225
- CREGHT_API_HOST=http://localhost:8433 creght sync --site_id=<project_id>/<site_id> --dir=./mysite
251
+ creght resolve --list
252
+ creght resolve page/Index.tsx --ours # keep the local side
253
+ creght resolve page/Index.tsx --theirs # keep the remote side
226
254
  ```
227
255
 
228
- `sync` first pushes the current local snapshot, then keeps running and
229
- automatically listens for local file changes. When any workspace file
230
- (including Func code under `backend/func/`) changes locally, the CLI updates
231
- the corresponding remote site file in realtime. The command also prints the
232
- remote preview URL when available.
256
+ Editing the markers by hand works too. `push` refuses to upload any file that
257
+ still contains conflict markers.
258
+
259
+ `push` reports a conflict for files changed on both sides run `creght pull`
260
+ to merge them first, push the rest with `creght push --skip-conflicts`, or
261
+ overwrite remote with `creght push --force`. Before anything is overwritten
262
+ (local work by `pull`, diverged remote copies by `push --force`), the losing
263
+ content is backed up under `.creght/backup/<timestamp>-*/`.
264
+
265
+ `creght diff --json` marks each conflict with `reason`, `auto_mergeable`, and
266
+ `base_to_local_diff` / `base_to_remote_diff`, so agents can decide how to
267
+ resolve without extra round-trips.
233
268
 
234
269
  ## Local Web Editor Bidirectional Sync
235
270
 
@@ -442,7 +477,7 @@ The workflow is the same as for any site file:
442
477
  1. Run `creght pull --site_id=<project_id>/<site_id> --dir=./mysite`.
443
478
  2. Edit or create files under `./mysite/backend/func/`.
444
479
  3. Run `creght push --site_id=<project_id>/<site_id> --dir=./mysite`, or keep
445
- `creght sync` / `creght dev` running.
480
+ `creght dev` running.
446
481
 
447
482
  Examples:
448
483
 
@@ -452,7 +487,7 @@ Examples:
452
487
  Because Func code is just a site file, it is versioned and published together
453
488
  with the site, and it participates in the same 3-way merge and conflict
454
489
  detection as every other file. Deleting a local Func file deletes the remote
455
- site file on the next push/sync; renaming is treated as delete + create.
490
+ site file on the next push (with `--delete`); renaming is treated as delete + create.
456
491
 
457
492
  Func files should use ESM exports and the `(input, ctx)` signature:
458
493
 
@@ -485,7 +520,7 @@ The output matches the Func HTTP response protocol: successful runs print
485
520
  top-level `ok` execution wrapper.
486
521
 
487
522
  There are no `creght func list/get/create/update/delete` commands. Manage Func
488
- code by editing `backend/func` files and syncing them with pull/push/sync/dev
523
+ code by editing `backend/func` files and syncing them with pull/push/dev
489
524
  like any other site file; `func run` only runs sample input.
490
525
 
491
526
  ## Upload Assets
@@ -510,35 +545,30 @@ Optional flags:
510
545
  creght upload --site_id=<project_id>/<site_id> --file=./image.png --name=hero.png --mimetype=image/png
511
546
  ```
512
547
 
513
- ## Push And Sync Boundary
548
+ ## Push And Pull Boundary
514
549
 
515
- The current MVP push/sync mode is one-way:
550
+ `push` is one-way:
516
551
 
517
552
  ```text
518
553
  local directory -> Creght remote site
519
554
  ```
520
555
 
521
- `push` fetches the remote file list to build the local path to remote file id
522
- mapping, scans the local directory, uploads the current local snapshot, and then
523
- exits.
524
-
525
- `sync` is watch mode. It performs the same initial local snapshot push, then
526
- keeps running and automatically listens for later local changes.
527
-
528
- Neither command pulls Web editor changes back to the local directory while
529
- running. If you edit the same site in the Web editor, run `pull` manually or
530
- restart from a clean local copy before continuing.
556
+ `push` fetches the remote file list, compares base/local/remote, uploads local
557
+ changes, and then exits. It never merges remote edits into local files that
558
+ is `pull`'s job. If you edit the same site in the Web editor, run `creght pull`
559
+ to merge those edits into the workspace before pushing (see Resolve
560
+ Conflicts above).
531
561
 
532
- Use a test project/site while validating the CLI. Do not run `push` or `sync`
562
+ Use a test project/site while validating the CLI. Do not run `push --force`
533
563
  against production content unless the local directory is intended to be the
534
564
  source of truth.
535
565
 
536
566
  ## Commands
537
567
 
538
568
  Creght CLI is a local bridge for Creght site code. It can authenticate with
539
- Creght, list projects and sites, pull remote site files into a local directory,
540
- push local files back to Creght, watch local files for realtime sync, open the
541
- remote preview, and publish a site.
569
+ Creght, list projects and sites, pull remote site files into a local directory
570
+ with three-way merge, push local files back to Creght, resolve conflicts, open
571
+ the remote preview, and publish a site.
542
572
 
543
573
  The CLI commands still use the Creght backend and web app for the canonical
544
574
  preview. The Vite plugin is a local development helper and intentionally does
@@ -550,7 +580,7 @@ creght logout
550
580
  creght project list
551
581
  creght pull --site_id=<project_id>/<site_id> --dir=./mysite
552
582
  creght push --site_id=<project_id>/<site_id> --dir=./mysite
553
- creght sync --site_id=<project_id>/<site_id> --dir=./mysite
583
+ creght resolve --list
554
584
  creght dev --site_id=<project_id>/<site_id> --dir=./mysite [--web=https://creght.cn]
555
585
  creght preview --site_id=<project_id>/<site_id>
556
586
  creght publish --site_id=<project_id>/<site_id> [--note=<note>]
@@ -572,9 +602,9 @@ Command meanings:
572
602
  - `login`: Authenticate this machine with Creght and save a CLI token for the current API host.
573
603
  - `logout`: Remove the saved CLI login for the current API host.
574
604
  - `project`: List available projects and sites. Use `project_id/site_id` with site commands. Also supports `project create`.
575
- - `pull`: Download site files (including Func code under `backend/func/`) into a local workspace.
576
- - `push`: Push the current local workspace snapshot to the remote site/project.
577
- - `sync`: Watch mode; push the current snapshot, then keep listening for local changes.
605
+ - `pull`: Download site files (including Func code under `backend/func/`) into a local workspace, three-way merging remote and local edits.
606
+ - `push`: Push local workspace changes to the remote site/project after a three-way conflict check.
607
+ - `resolve`: List files with conflict markers, or resolve one by keeping the local (`--ours`) or remote (`--theirs`) side.
578
608
  - `dev`: Bidirectionally sync local files with cloud realtime files and the online Web editor.
579
609
  - `preview`: Open the remote preview URL for a site in the browser.
580
610
  - `publish`: Publish a site to make the current remote site version live.
@@ -582,7 +612,7 @@ Command meanings:
582
612
  - `content`: Manage CMS content entries.
583
613
  - `form`: Manage forms and form submissions.
584
614
  - `table`: Manage project JSON tables and records used by Func.
585
- - `func`: Run project Func backend code with sample input. Func code itself is edited as `backend/func` site files and synced with pull/push/sync/dev.
615
+ - `func`: Run project Func backend code with sample input. Func code itself is edited as `backend/func` site files and synced with pull/push/dev.
586
616
  - `upload`: Upload a local file as a Creght site asset and print its URL.
587
617
  - `version`: Print the installed CLI version.
588
618
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "creght-cli",
3
- "version": "0.4.1",
3
+ "version": "0.5.0",
4
4
  "description": "Creght CLI for syncing local site code with Creght.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/creght-dev/creght-cli#readme",
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file