@riverbankcms/sdk 0.7.0 → 0.7.3
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 +229 -0
- package/dist/cli/index.js +42 -95
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init-docs/content/agents-section.md +50 -0
- package/dist/cli/init-docs/content/cli-reference.md +574 -0
- package/dist/cli/init-docs/content/content-management.md +384 -0
- package/dist/cli/init-docs/content/context-brand.md +125 -0
- package/dist/cli/init-docs/content/context-brief.md +77 -0
- package/dist/cli/init-docs/content/context-knowledge.md +111 -0
- package/dist/cli/init-docs/content/getting-started.md +130 -0
- package/dist/cli/init-docs/content/site-workflows-readme.md +96 -0
- package/dist/cli/init-docs/content/workflow-add-block.md +228 -0
- package/dist/cli/init-docs/content/workflow-create-page.md +193 -0
- package/dist/cli/init-docs/content/workflow-publish.md +280 -0
- package/dist/client/bookings.d.mts +2 -0
- package/dist/client/bookings.d.ts +2 -0
- package/dist/client/bookings.js +2956 -104
- package/dist/client/bookings.js.map +1 -1
- package/dist/client/bookings.mjs +2929 -70
- package/dist/client/bookings.mjs.map +1 -1
- package/dist/client/client.d.mts +2 -2
- package/dist/client/client.d.ts +2 -2
- package/dist/client/client.js +602 -68
- package/dist/client/client.js.map +1 -1
- package/dist/client/client.mjs +602 -68
- package/dist/client/client.mjs.map +1 -1
- package/dist/client/hooks.d.mts +2 -2
- package/dist/client/hooks.d.ts +2 -2
- package/dist/client/rendering/client.js +3070 -259
- package/dist/client/rendering/client.js.map +1 -1
- package/dist/client/rendering/client.mjs +3212 -395
- package/dist/client/rendering/client.mjs.map +1 -1
- package/dist/client/spam-protection.d.mts +55 -0
- package/dist/client/spam-protection.d.ts +55 -0
- package/dist/client/spam-protection.js +2915 -0
- package/dist/client/spam-protection.js.map +1 -0
- package/dist/client/spam-protection.mjs +2893 -0
- package/dist/client/spam-protection.mjs.map +1 -0
- package/dist/client/{usePage-BiOReg0_.d.ts → usePage-BYmJCCm1.d.ts} +132 -11
- package/dist/client/{usePage-BXjk8BhD.d.mts → usePage-DZtrWajy.d.mts} +132 -11
- package/dist/server/{Layout-wBtJLTVX.d.ts → Layout-Yluyb6sK.d.ts} +1 -1
- package/dist/server/{Layout-B7cvis7r.d.mts → Layout-qWLdVm5-.d.mts} +1 -1
- package/dist/server/chunk-2IZ6S225.js +122 -0
- package/dist/server/chunk-2IZ6S225.js.map +1 -0
- package/dist/server/chunk-4CV4JOE5.js +27 -0
- package/dist/server/chunk-4CV4JOE5.js.map +1 -0
- package/dist/server/chunk-5LRR64Y6.mjs +72 -0
- package/dist/server/chunk-5LRR64Y6.mjs.map +1 -0
- package/dist/server/chunk-NBTRDLCM.js +72 -0
- package/dist/server/chunk-NBTRDLCM.js.map +1 -0
- package/dist/server/chunk-NFEGQTCC.mjs +27 -0
- package/dist/server/{chunk-7FIJSGHU.mjs → chunk-NFQLH5IA.mjs} +856 -74
- package/dist/server/chunk-NFQLH5IA.mjs.map +1 -0
- package/dist/server/chunk-PPHZV6YD.mjs +122 -0
- package/dist/server/chunk-PPHZV6YD.mjs.map +1 -0
- package/dist/server/{chunk-P7UVAMK6.js → chunk-VLXTNB2C.js} +866 -84
- package/dist/server/chunk-VLXTNB2C.js.map +1 -0
- package/dist/server/{components-CMMwDXTW.d.mts → components-DNHfSCML.d.mts} +3 -3
- package/dist/server/{components-CICSJyp_.d.ts → components-Di5ME6He.d.ts} +3 -3
- package/dist/server/components.d.mts +5 -5
- package/dist/server/components.d.ts +5 -5
- package/dist/server/components.js +1 -1
- package/dist/server/components.mjs +1 -1
- package/dist/server/config-validation.js +1 -1
- package/dist/server/config-validation.mjs +1 -1
- package/dist/server/config.js +1 -1
- package/dist/server/config.mjs +1 -1
- package/dist/server/data.d.mts +2 -2
- package/dist/server/data.d.ts +2 -2
- package/dist/server/data.js +1 -1
- package/dist/server/data.mjs +1 -1
- package/dist/server/env.d.mts +109 -0
- package/dist/server/env.d.ts +109 -0
- package/dist/server/env.js +14 -0
- package/dist/server/env.js.map +1 -0
- package/dist/server/env.mjs +14 -0
- package/dist/server/{index-DI_qlYx3.d.mts → index--Oyunk_B.d.mts} +2 -2
- package/dist/server/{index-BTwWvSBu.d.ts → index-C9Ra8dza.d.ts} +2 -2
- package/dist/server/{index-Bucs6UqG.d.mts → index-Clm3skz_.d.mts} +1 -1
- package/dist/server/{index-Cp7tJuRt.d.ts → index-DLvNddi-.d.ts} +1 -1
- package/dist/server/index.d.mts +216 -5
- package/dist/server/index.d.ts +216 -5
- package/dist/server/index.js +301 -4
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +301 -4
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/{loadContent-DmgpFcFC.d.ts → loadContent-D7LQwI0o.d.ts} +3 -3
- package/dist/server/{loadContent-C-YYUKQa.d.mts → loadContent-DVfuBLiZ.d.mts} +3 -3
- package/dist/server/{loadPage-IDGVDFBB.js → loadPage-AXNAERDS.js} +2 -2
- package/dist/server/{loadPage-IDGVDFBB.js.map → loadPage-AXNAERDS.js.map} +1 -1
- package/dist/server/{loadPage-DP3nrHBi.d.ts → loadPage-BmYJCe_V.d.ts} +2 -2
- package/dist/server/{loadPage-B8mQUUSo.d.mts → loadPage-BucnLHmE.d.mts} +2 -2
- package/dist/server/{loadPage-DNQTTRHL.mjs → loadPage-XR7ORQ2E.mjs} +2 -2
- package/dist/server/loadPage-XR7ORQ2E.mjs.map +1 -0
- package/dist/server/metadata.d.mts +4 -4
- package/dist/server/metadata.d.ts +4 -4
- package/dist/server/metadata.js +1 -1
- package/dist/server/metadata.mjs +1 -1
- package/dist/server/navigation.d.mts +2 -2
- package/dist/server/navigation.d.ts +2 -2
- package/dist/server/navigation.js +1 -1
- package/dist/server/navigation.mjs +1 -1
- package/dist/server/next/revalidate.d.mts +66 -0
- package/dist/server/next/revalidate.d.ts +66 -0
- package/dist/server/next/revalidate.js +60 -0
- package/dist/server/next/revalidate.js.map +1 -0
- package/dist/server/next/revalidate.mjs +60 -0
- package/dist/server/next/revalidate.mjs.map +1 -0
- package/dist/server/next/tags.d.mts +81 -0
- package/dist/server/next/tags.d.ts +81 -0
- package/dist/server/next/tags.js +36 -0
- package/dist/server/next/tags.js.map +1 -0
- package/dist/server/next/tags.mjs +36 -0
- package/dist/server/next/tags.mjs.map +1 -0
- package/dist/server/next.d.mts +164 -6
- package/dist/server/next.d.ts +164 -6
- package/dist/server/next.js +79 -11
- package/dist/server/next.js.map +1 -1
- package/dist/server/next.mjs +76 -8
- package/dist/server/next.mjs.map +1 -1
- package/dist/server/rendering/server.d.mts +4 -4
- package/dist/server/rendering/server.d.ts +4 -4
- package/dist/server/rendering/server.js +1 -1
- package/dist/server/rendering/server.mjs +1 -1
- package/dist/server/rendering.d.mts +7 -7
- package/dist/server/rendering.d.ts +7 -7
- package/dist/server/rendering.js +3 -3
- package/dist/server/rendering.js.map +1 -1
- package/dist/server/rendering.mjs +4 -4
- package/dist/server/routing.d.mts +3 -3
- package/dist/server/routing.d.ts +3 -3
- package/dist/server/routing.js +2 -2
- package/dist/server/routing.mjs +2 -2
- package/dist/server/server.d.mts +5 -5
- package/dist/server/server.d.ts +5 -5
- package/dist/server/server.js +5 -5
- package/dist/server/server.js.map +1 -1
- package/dist/server/server.mjs +5 -5
- package/dist/server/theme-bridge.js +1 -1
- package/dist/server/theme-bridge.mjs +1 -1
- package/dist/server/theme.js +1 -1
- package/dist/server/theme.mjs +1 -1
- package/dist/server/{types-BvcJU7zk.d.ts → types-BRQyLrQU.d.ts} +132 -11
- package/dist/server/{types-Dsu9wsUh.d.mts → types-BSV6Vc-P.d.mts} +2 -2
- package/dist/server/{types-1cLz0vnq.d.mts → types-C-LShyIg.d.mts} +132 -11
- package/dist/server/{types-CVykEqXN.d.ts → types-Dt98DeYa.d.ts} +2 -2
- package/dist/server/webhooks.d.mts +81 -0
- package/dist/server/webhooks.d.ts +81 -0
- package/dist/server/webhooks.js +12 -0
- package/dist/server/webhooks.js.map +1 -0
- package/dist/server/webhooks.mjs +12 -0
- package/dist/server/webhooks.mjs.map +1 -0
- package/package.json +29 -3
- package/dist/client/resolver-BhueZVxZ.d.mts +0 -61
- package/dist/client/resolver-BhueZVxZ.d.ts +0 -61
- package/dist/client/usePage--fGlyrgj.d.mts +0 -6439
- package/dist/client/usePage-BBcFCxOU.d.ts +0 -6297
- package/dist/client/usePage-BC8Q2E3t.d.mts +0 -6431
- package/dist/client/usePage-BTPnCuWC.d.mts +0 -6511
- package/dist/client/usePage-BafOS9UT.d.mts +0 -6512
- package/dist/client/usePage-BcjWPXvh.d.mts +0 -6388
- package/dist/client/usePage-Bnx-kA6x.d.mts +0 -6670
- package/dist/client/usePage-BvKAa3Zw.d.mts +0 -366
- package/dist/client/usePage-BvKAa3Zw.d.ts +0 -366
- package/dist/client/usePage-BydHcMYB.d.mts +0 -6297
- package/dist/client/usePage-C3ZKNwY7.d.mts +0 -6393
- package/dist/client/usePage-CE7X5NcN.d.ts +0 -6439
- package/dist/client/usePage-CHEybPMD.d.ts +0 -6429
- package/dist/client/usePage-CrKw1H6Y.d.ts +0 -6338
- package/dist/client/usePage-CyYpOJud.d.ts +0 -6388
- package/dist/client/usePage-D4fxZbRR.d.mts +0 -6429
- package/dist/client/usePage-DMI8ImsU.d.mts +0 -6338
- package/dist/client/usePage-DoPI6b8V.d.ts +0 -6511
- package/dist/client/usePage-DpRNZUtP.d.ts +0 -6431
- package/dist/client/usePage-QNWArrVO.d.ts +0 -6670
- package/dist/client/usePage-fBgPB6Oq.d.ts +0 -6512
- package/dist/client/usePage-gpVaeWDy.d.ts +0 -6393
- package/dist/server/chunk-7FIJSGHU.mjs.map +0 -1
- package/dist/server/chunk-BJTO5JO5.mjs +0 -11
- package/dist/server/chunk-DGUM43GV.js +0 -11
- package/dist/server/chunk-DGUM43GV.js.map +0 -1
- package/dist/server/chunk-P7UVAMK6.js.map +0 -1
- /package/dist/server/{chunk-BJTO5JO5.mjs.map → chunk-NFEGQTCC.mjs.map} +0 -0
- /package/dist/server/{loadPage-DNQTTRHL.mjs.map → env.mjs.map} +0 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
## RiverbankCMS SDK Context
|
|
2
|
+
|
|
3
|
+
This repository is a site using **RiverbankCMS** as a headless CMS via the `@riverbankcms/sdk` package.
|
|
4
|
+
|
|
5
|
+
### What This Means
|
|
6
|
+
|
|
7
|
+
- Content (pages, entries, blocks, navigation) is managed in RiverbankCMS
|
|
8
|
+
- The SDK CLI syncs content between local files and the CMS
|
|
9
|
+
- Configuration lives in `riverbank.config.ts`
|
|
10
|
+
- You work with local content files, then push changes to the CMS
|
|
11
|
+
|
|
12
|
+
### Key Configuration Files
|
|
13
|
+
|
|
14
|
+
- `riverbank.config.ts` - Site schema, custom blocks, field extensions
|
|
15
|
+
- `.env.local` - Local CMS credentials (never commit)
|
|
16
|
+
|
|
17
|
+
### Agent Documentation
|
|
18
|
+
|
|
19
|
+
Detailed documentation is available in `.riverbank/docs/`:
|
|
20
|
+
|
|
21
|
+
- `getting-started.md` - Quick orientation for working with this site
|
|
22
|
+
- `cli-reference.md` - Full SDK CLI command reference
|
|
23
|
+
- `content-management.md` - Content model and sync workflows
|
|
24
|
+
- `schema.md` - Site-specific schema (auto-generated from config)
|
|
25
|
+
- `block-types.md` - Available block types (auto-generated)
|
|
26
|
+
- `workflows/` - Step-by-step guides for common tasks
|
|
27
|
+
- `site-workflows/` - Site-specific workflows and customizations
|
|
28
|
+
|
|
29
|
+
### Quick Commands
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
riverbankcms pull # Download all content from CMS
|
|
33
|
+
riverbankcms push --dry-run # Preview what would be pushed
|
|
34
|
+
riverbankcms push # Push local changes to CMS
|
|
35
|
+
riverbankcms push-config # Sync riverbank.config.ts to CMS
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Working with Content
|
|
39
|
+
|
|
40
|
+
1. **Pull latest**: `riverbankcms pull` downloads content to `content/` directory
|
|
41
|
+
2. **Make changes**: Edit JSON files or use CLI commands
|
|
42
|
+
3. **Preview**: `riverbankcms push --dry-run` shows what would change
|
|
43
|
+
4. **Push**: `riverbankcms push` applies changes to CMS
|
|
44
|
+
|
|
45
|
+
### Code Quality Guidelines
|
|
46
|
+
|
|
47
|
+
- Prefer functional, composable helpers over large classes
|
|
48
|
+
- Keep changes small and focused
|
|
49
|
+
- Use typed content from the SDK where available
|
|
50
|
+
- Follow existing patterns in the codebase
|
|
@@ -0,0 +1,574 @@
|
|
|
1
|
+
# SDK CLI Reference
|
|
2
|
+
|
|
3
|
+
The RiverbankCMS SDK CLI (`riverbankcms`) manages content synchronization between local files and the CMS.
|
|
4
|
+
|
|
5
|
+
## Global Options
|
|
6
|
+
|
|
7
|
+
All commands support these options:
|
|
8
|
+
|
|
9
|
+
| Option | Description |
|
|
10
|
+
|--------|-------------|
|
|
11
|
+
| `--json` | Output in JSON format for machine parsing |
|
|
12
|
+
| `--quiet` | Minimal output (suppress non-essential messages) |
|
|
13
|
+
| `--remote` | Use remote/production environment instead of local |
|
|
14
|
+
|
|
15
|
+
## Environment Variables
|
|
16
|
+
|
|
17
|
+
### Local Environment (default)
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
RIVERBANK_LOCAL_SITE_ID=your-site-id
|
|
21
|
+
RIVERBANK_LOCAL_DASHBOARD_URL=http://localhost:4000
|
|
22
|
+
RIVERBANK_LOCAL_MGMT_API_KEY=bld_mgmt_sk_...
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### Remote Environment (--remote)
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
RIVERBANK_REMOTE_SITE_ID=your-site-id
|
|
29
|
+
RIVERBANK_REMOTE_DASHBOARD_URL=https://your-dashboard.riverbankcms.com
|
|
30
|
+
RIVERBANK_REMOTE_MGMT_API_KEY=bld_mgmt_sk_...
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Content Sync Commands
|
|
36
|
+
|
|
37
|
+
### pull
|
|
38
|
+
|
|
39
|
+
Download content from the CMS to local files.
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
# Pull all content
|
|
43
|
+
riverbankcms pull
|
|
44
|
+
|
|
45
|
+
# Pull from production
|
|
46
|
+
riverbankcms pull --remote
|
|
47
|
+
|
|
48
|
+
# Pull specific content types
|
|
49
|
+
riverbankcms pull entries # All entries
|
|
50
|
+
riverbankcms pull entries blog-post # Specific content type
|
|
51
|
+
riverbankcms pull pages # All pages with blocks
|
|
52
|
+
riverbankcms pull navigation # Navigation menus
|
|
53
|
+
riverbankcms pull settings # Site settings
|
|
54
|
+
|
|
55
|
+
# Custom output directory
|
|
56
|
+
riverbankcms pull --output ./src/content
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**Options:**
|
|
60
|
+
|
|
61
|
+
| Option | Description |
|
|
62
|
+
|--------|-------------|
|
|
63
|
+
| `--output <dir>` | Output directory (default: ./content) |
|
|
64
|
+
| `--force` | Overwrite existing files without prompting |
|
|
65
|
+
| `--yes` | Skip confirmation prompt |
|
|
66
|
+
|
|
67
|
+
### push
|
|
68
|
+
|
|
69
|
+
Push local content changes to the CMS.
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
# Push all content
|
|
73
|
+
riverbankcms push
|
|
74
|
+
|
|
75
|
+
# Preview changes without applying
|
|
76
|
+
riverbankcms push --dry-run
|
|
77
|
+
|
|
78
|
+
# Push to production (requires --yes)
|
|
79
|
+
riverbankcms push --remote --yes
|
|
80
|
+
|
|
81
|
+
# Push specific content types
|
|
82
|
+
riverbankcms push entries # All entries
|
|
83
|
+
riverbankcms push entries blog-post # Specific content type
|
|
84
|
+
riverbankcms push pages # All pages with blocks
|
|
85
|
+
riverbankcms push navigation # Navigation menus
|
|
86
|
+
|
|
87
|
+
# JSON diff output for agents
|
|
88
|
+
riverbankcms push --dry-run --json-diff=summary
|
|
89
|
+
riverbankcms push --dry-run --json-diff=full
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**Options:**
|
|
93
|
+
|
|
94
|
+
| Option | Description |
|
|
95
|
+
|--------|-------------|
|
|
96
|
+
| `--content-dir <dir>` | Content directory (overrides config) |
|
|
97
|
+
| `--dry-run` | Show changes without applying |
|
|
98
|
+
| `--yes` | Skip confirmation (required for --remote) |
|
|
99
|
+
| `--force` | Push even if remote is newer (skip stale check) |
|
|
100
|
+
| `--json-diff [mode]` | Output JSON diff: `summary` or `full` |
|
|
101
|
+
|
|
102
|
+
**Sync Behavior** (configured in `riverbank.config.ts`):
|
|
103
|
+
|
|
104
|
+
```typescript
|
|
105
|
+
export default defineConfig({
|
|
106
|
+
siteId: '...',
|
|
107
|
+
sync: {
|
|
108
|
+
existingEntries: 'update', // 'skip' (default) or 'update'
|
|
109
|
+
contentTarget: 'draft', // 'draft' (default) or 'publish'
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### push-config
|
|
115
|
+
|
|
116
|
+
Push SDK configuration to the CMS dashboard.
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
riverbankcms push-config
|
|
120
|
+
riverbankcms push-config --remote
|
|
121
|
+
riverbankcms push-config --config ./src/riverbank.config.ts
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
This syncs:
|
|
125
|
+
- Custom blocks
|
|
126
|
+
- Block field extensions
|
|
127
|
+
- Block field options
|
|
128
|
+
- Content type definitions
|
|
129
|
+
- Content scaffolding (pages, entries, navigation)
|
|
130
|
+
|
|
131
|
+
**Options:**
|
|
132
|
+
|
|
133
|
+
| Option | Description |
|
|
134
|
+
|--------|-------------|
|
|
135
|
+
| `--api-key <key>` | Management API key |
|
|
136
|
+
| `--dashboard <url>` | Dashboard URL |
|
|
137
|
+
| `--config <path>` | Config file path |
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Entry Commands
|
|
142
|
+
|
|
143
|
+
Manage content entries.
|
|
144
|
+
|
|
145
|
+
### entry upsert
|
|
146
|
+
|
|
147
|
+
Create or update an entry.
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
# With inline JSON data
|
|
151
|
+
riverbankcms entry upsert <type> <identifier> --data '{"title": "Hello World"}'
|
|
152
|
+
|
|
153
|
+
# With JSON file
|
|
154
|
+
riverbankcms entry upsert <type> <identifier> --file ./data.json
|
|
155
|
+
|
|
156
|
+
# With individual fields
|
|
157
|
+
riverbankcms entry upsert blog-post my-post \
|
|
158
|
+
--slug my-post \
|
|
159
|
+
--title "My Blog Post"
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
**Arguments:**
|
|
163
|
+
- `<type>` - Content type key (e.g., `blog-post`, `product`)
|
|
164
|
+
- `<identifier>` - Unique identifier for the entry
|
|
165
|
+
|
|
166
|
+
**Options:**
|
|
167
|
+
|
|
168
|
+
| Option | Description |
|
|
169
|
+
|--------|-------------|
|
|
170
|
+
| `--data <json>` | Entry data as JSON string |
|
|
171
|
+
| `--file <path>` | Path to JSON file with entry data |
|
|
172
|
+
| `--slug <slug>` | Entry slug |
|
|
173
|
+
| `--title <title>` | Entry title |
|
|
174
|
+
|
|
175
|
+
### entry publish
|
|
176
|
+
|
|
177
|
+
Publish an entry.
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
riverbankcms entry publish <type> <identifier>
|
|
181
|
+
riverbankcms entry publish blog-post my-post
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### entry unpublish
|
|
185
|
+
|
|
186
|
+
Unpublish an entry (revert to draft).
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
riverbankcms entry unpublish <type> <identifier>
|
|
190
|
+
riverbankcms entry unpublish blog-post my-post
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### entry get
|
|
194
|
+
|
|
195
|
+
Retrieve a single entry.
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
riverbankcms entry get <type> <identifier>
|
|
199
|
+
riverbankcms entry get blog-post my-post
|
|
200
|
+
riverbankcms entry get blog-post my-post --json
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### entry list
|
|
204
|
+
|
|
205
|
+
List entries for a content type.
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
riverbankcms entry list <type>
|
|
209
|
+
riverbankcms entry list blog-post
|
|
210
|
+
riverbankcms entry list blog-post --limit 10 --page 2
|
|
211
|
+
riverbankcms entry list blog-post --json
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
**Options:**
|
|
215
|
+
|
|
216
|
+
| Option | Description |
|
|
217
|
+
|--------|-------------|
|
|
218
|
+
| `--limit <n>` | Number of entries per page |
|
|
219
|
+
| `--page <n>` | Page number (1-indexed) |
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## Page Commands
|
|
224
|
+
|
|
225
|
+
Manage pages.
|
|
226
|
+
|
|
227
|
+
### page upsert
|
|
228
|
+
|
|
229
|
+
Create or update a page.
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
riverbankcms page upsert <identifier> --title "Page Title" --path /url-path
|
|
233
|
+
|
|
234
|
+
# Full example
|
|
235
|
+
riverbankcms page upsert about \
|
|
236
|
+
--title "About Us" \
|
|
237
|
+
--path /about \
|
|
238
|
+
--seo-title "About Us | Company Name" \
|
|
239
|
+
--seo-description "Learn more about our company"
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
**Arguments:**
|
|
243
|
+
- `<identifier>` - Unique identifier for the page
|
|
244
|
+
|
|
245
|
+
**Options:**
|
|
246
|
+
|
|
247
|
+
| Option | Description |
|
|
248
|
+
|--------|-------------|
|
|
249
|
+
| `--title <title>` | Page title |
|
|
250
|
+
| `--path <path>` | URL path (e.g., `/about`) |
|
|
251
|
+
| `--seo-title <title>` | SEO title tag |
|
|
252
|
+
| `--seo-description <desc>` | SEO meta description |
|
|
253
|
+
|
|
254
|
+
### page publish
|
|
255
|
+
|
|
256
|
+
Publish a page.
|
|
257
|
+
|
|
258
|
+
```bash
|
|
259
|
+
riverbankcms page publish <identifier>
|
|
260
|
+
riverbankcms page publish about
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
### page unpublish
|
|
264
|
+
|
|
265
|
+
Unpublish a page (revert to draft).
|
|
266
|
+
|
|
267
|
+
```bash
|
|
268
|
+
riverbankcms page unpublish <identifier>
|
|
269
|
+
riverbankcms page unpublish about
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
### page get
|
|
273
|
+
|
|
274
|
+
Retrieve a single page with its blocks.
|
|
275
|
+
|
|
276
|
+
```bash
|
|
277
|
+
riverbankcms page get <identifier>
|
|
278
|
+
riverbankcms page get about
|
|
279
|
+
riverbankcms page get about --json
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
### page list
|
|
283
|
+
|
|
284
|
+
List all pages.
|
|
285
|
+
|
|
286
|
+
```bash
|
|
287
|
+
riverbankcms page list
|
|
288
|
+
riverbankcms page list --limit 10 --page 1
|
|
289
|
+
riverbankcms page list --json
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
## Block Commands
|
|
295
|
+
|
|
296
|
+
Manage blocks within pages.
|
|
297
|
+
|
|
298
|
+
### block upsert
|
|
299
|
+
|
|
300
|
+
Create or update a block on a page.
|
|
301
|
+
|
|
302
|
+
```bash
|
|
303
|
+
# Basic usage
|
|
304
|
+
riverbankcms block upsert <page-id> <block-id> --kind <block-kind> --data '<json>'
|
|
305
|
+
|
|
306
|
+
# Examples
|
|
307
|
+
riverbankcms block upsert home hero-main \
|
|
308
|
+
--kind block.hero \
|
|
309
|
+
--data '{"heading": "Welcome", "subheading": "to our site"}'
|
|
310
|
+
|
|
311
|
+
# With JSON file
|
|
312
|
+
riverbankcms block upsert home hero-main \
|
|
313
|
+
--kind block.hero \
|
|
314
|
+
--file ./hero-content.json
|
|
315
|
+
|
|
316
|
+
# With position
|
|
317
|
+
riverbankcms block upsert home new-section \
|
|
318
|
+
--kind block.bodyText \
|
|
319
|
+
--data '{"content": "<p>Hello</p>"}' \
|
|
320
|
+
--position 0
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
**Arguments:**
|
|
324
|
+
- `<page-id>` - Page identifier
|
|
325
|
+
- `<block-id>` - Block identifier (unique within the page)
|
|
326
|
+
|
|
327
|
+
**Options:**
|
|
328
|
+
|
|
329
|
+
| Option | Description |
|
|
330
|
+
|--------|-------------|
|
|
331
|
+
| `--kind <kind>` | Block type (e.g., `block.hero`, `block.bodyText`) |
|
|
332
|
+
| `--data <json>` | Block content as JSON string |
|
|
333
|
+
| `--file <path>` | Path to JSON file with block content |
|
|
334
|
+
| `--position <n>` | Position in the block list (0-indexed) |
|
|
335
|
+
|
|
336
|
+
### block reorder
|
|
337
|
+
|
|
338
|
+
Reorder blocks on a page.
|
|
339
|
+
|
|
340
|
+
```bash
|
|
341
|
+
riverbankcms block reorder <page-id> <block-id-1> <block-id-2> ...
|
|
342
|
+
|
|
343
|
+
# Example: Put hero first, then intro, then features
|
|
344
|
+
riverbankcms block reorder home hero-main intro-text features-grid
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
### block get
|
|
348
|
+
|
|
349
|
+
Retrieve a specific block.
|
|
350
|
+
|
|
351
|
+
```bash
|
|
352
|
+
riverbankcms block get <page-id> <block-id>
|
|
353
|
+
riverbankcms block get home hero-main
|
|
354
|
+
riverbankcms block get home hero-main --json
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
### block list
|
|
358
|
+
|
|
359
|
+
List all blocks on a page.
|
|
360
|
+
|
|
361
|
+
```bash
|
|
362
|
+
riverbankcms block list <page-id>
|
|
363
|
+
riverbankcms block list home
|
|
364
|
+
riverbankcms block list home --json
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
---
|
|
368
|
+
|
|
369
|
+
## Navigation Commands
|
|
370
|
+
|
|
371
|
+
Manage navigation menus.
|
|
372
|
+
|
|
373
|
+
### navigation upsert
|
|
374
|
+
|
|
375
|
+
Create or update a navigation menu.
|
|
376
|
+
|
|
377
|
+
```bash
|
|
378
|
+
# With inline JSON
|
|
379
|
+
riverbankcms navigation upsert <menu-name> --data '[{"label": "Home", "url": "/"}]'
|
|
380
|
+
|
|
381
|
+
# With JSON file
|
|
382
|
+
riverbankcms navigation upsert main --file ./main-nav.json
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
**Example menu structure:**
|
|
386
|
+
|
|
387
|
+
```json
|
|
388
|
+
[
|
|
389
|
+
{ "label": "Home", "url": "/" },
|
|
390
|
+
{ "label": "About", "url": "/about" },
|
|
391
|
+
{
|
|
392
|
+
"label": "Products",
|
|
393
|
+
"url": "/products",
|
|
394
|
+
"children": [
|
|
395
|
+
{ "label": "Category A", "url": "/products/a" },
|
|
396
|
+
{ "label": "Category B", "url": "/products/b" }
|
|
397
|
+
]
|
|
398
|
+
}
|
|
399
|
+
]
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
### navigation get
|
|
403
|
+
|
|
404
|
+
Retrieve a navigation menu.
|
|
405
|
+
|
|
406
|
+
```bash
|
|
407
|
+
riverbankcms navigation get <menu-name>
|
|
408
|
+
riverbankcms navigation get main
|
|
409
|
+
riverbankcms navigation get main --json
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
### navigation list
|
|
413
|
+
|
|
414
|
+
List all navigation menus.
|
|
415
|
+
|
|
416
|
+
```bash
|
|
417
|
+
riverbankcms navigation list
|
|
418
|
+
riverbankcms navigation list --json
|
|
419
|
+
```
|
|
420
|
+
|
|
421
|
+
---
|
|
422
|
+
|
|
423
|
+
## Delete Commands
|
|
424
|
+
|
|
425
|
+
Delete content from the CMS.
|
|
426
|
+
|
|
427
|
+
### delete entry
|
|
428
|
+
|
|
429
|
+
Delete an entry.
|
|
430
|
+
|
|
431
|
+
```bash
|
|
432
|
+
riverbankcms delete entry <type> <identifier> --yes
|
|
433
|
+
riverbankcms delete entry blog-post old-post --yes
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
### delete block
|
|
437
|
+
|
|
438
|
+
Delete a block from a page.
|
|
439
|
+
|
|
440
|
+
```bash
|
|
441
|
+
riverbankcms delete block <page-id> <block-id> --yes
|
|
442
|
+
riverbankcms delete block home old-section --yes
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
**Note:** The `--yes` flag is required to confirm deletion.
|
|
446
|
+
|
|
447
|
+
---
|
|
448
|
+
|
|
449
|
+
## Utility Commands
|
|
450
|
+
|
|
451
|
+
### preview
|
|
452
|
+
|
|
453
|
+
Render a block preview.
|
|
454
|
+
|
|
455
|
+
```bash
|
|
456
|
+
# Print HTML to terminal
|
|
457
|
+
riverbankcms preview <kind> --data '<json>'
|
|
458
|
+
|
|
459
|
+
# Open in browser
|
|
460
|
+
riverbankcms preview block.hero --data '{"heading": "Test"}' --open
|
|
461
|
+
|
|
462
|
+
# Capture screenshot
|
|
463
|
+
riverbankcms preview block.hero --data '{"heading": "Test"}' --screenshot
|
|
464
|
+
|
|
465
|
+
# With custom CSS
|
|
466
|
+
riverbankcms preview block.hero --data '...' --css ./styles.css
|
|
467
|
+
|
|
468
|
+
# From JSON file
|
|
469
|
+
riverbankcms preview block.hero --file ./hero-data.json
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
**Options:**
|
|
473
|
+
|
|
474
|
+
| Option | Description |
|
|
475
|
+
|--------|-------------|
|
|
476
|
+
| `--data <json>` | Block content as JSON |
|
|
477
|
+
| `--file <path>` | Path to JSON file |
|
|
478
|
+
| `--terminal` | Print HTML to terminal (default) |
|
|
479
|
+
| `--open` | Open in browser |
|
|
480
|
+
| `--screenshot` | Capture screenshot |
|
|
481
|
+
| `--output <path>` | Screenshot output path |
|
|
482
|
+
| `--css <paths...>` | Additional CSS files |
|
|
483
|
+
| `--validation <mode>` | `strict` or `lenient` |
|
|
484
|
+
| `--preview-stage <stage>` | `published` or `preview` |
|
|
485
|
+
|
|
486
|
+
### identifiers backfill
|
|
487
|
+
|
|
488
|
+
Generate identifiers for content created before the SDK.
|
|
489
|
+
|
|
490
|
+
```bash
|
|
491
|
+
riverbankcms identifiers backfill
|
|
492
|
+
riverbankcms identifiers backfill --remote
|
|
493
|
+
```
|
|
494
|
+
|
|
495
|
+
Use this when migrating existing content to use SDK identifiers.
|
|
496
|
+
|
|
497
|
+
### init-docs
|
|
498
|
+
|
|
499
|
+
Scaffold agent documentation (this command).
|
|
500
|
+
|
|
501
|
+
```bash
|
|
502
|
+
riverbankcms init-docs
|
|
503
|
+
riverbankcms init-docs --path ./custom-path
|
|
504
|
+
riverbankcms init-docs --config ./riverbank.config.ts
|
|
505
|
+
```
|
|
506
|
+
|
|
507
|
+
---
|
|
508
|
+
|
|
509
|
+
## Common Patterns
|
|
510
|
+
|
|
511
|
+
### Creating New Content
|
|
512
|
+
|
|
513
|
+
```bash
|
|
514
|
+
# 1. Pull latest
|
|
515
|
+
riverbankcms pull
|
|
516
|
+
|
|
517
|
+
# 2. Create entry
|
|
518
|
+
riverbankcms entry upsert blog-post new-post --data '{"title": "New Post"}'
|
|
519
|
+
|
|
520
|
+
# 3. Create page
|
|
521
|
+
riverbankcms page upsert new-page --title "New Page" --path /new-page
|
|
522
|
+
|
|
523
|
+
# 4. Add blocks
|
|
524
|
+
riverbankcms block upsert new-page hero --kind block.hero --data '{"heading": "Welcome"}'
|
|
525
|
+
riverbankcms block upsert new-page body --kind block.bodyText --data '{"content": "<p>...</p>"}'
|
|
526
|
+
|
|
527
|
+
# 5. Preview
|
|
528
|
+
riverbankcms preview block.hero --data '{"heading": "Welcome"}' --open
|
|
529
|
+
|
|
530
|
+
# 6. Publish
|
|
531
|
+
riverbankcms page publish new-page
|
|
532
|
+
```
|
|
533
|
+
|
|
534
|
+
### Updating Existing Content
|
|
535
|
+
|
|
536
|
+
```bash
|
|
537
|
+
# 1. Pull latest
|
|
538
|
+
riverbankcms pull
|
|
539
|
+
|
|
540
|
+
# 2. Edit local JSON files in ./content/
|
|
541
|
+
# ... make changes ...
|
|
542
|
+
|
|
543
|
+
# 3. Preview changes
|
|
544
|
+
riverbankcms push --dry-run
|
|
545
|
+
|
|
546
|
+
# 4. Push changes
|
|
547
|
+
riverbankcms push
|
|
548
|
+
```
|
|
549
|
+
|
|
550
|
+
### Agent-Friendly JSON Output
|
|
551
|
+
|
|
552
|
+
```bash
|
|
553
|
+
# Get entry list as JSON
|
|
554
|
+
riverbankcms entry list blog-post --json
|
|
555
|
+
|
|
556
|
+
# Preview push diff as JSON
|
|
557
|
+
riverbankcms push --dry-run --json-diff=summary
|
|
558
|
+
|
|
559
|
+
# Get page with blocks as JSON
|
|
560
|
+
riverbankcms page get home --json
|
|
561
|
+
```
|
|
562
|
+
|
|
563
|
+
### Working with Production
|
|
564
|
+
|
|
565
|
+
```bash
|
|
566
|
+
# Pull from production
|
|
567
|
+
riverbankcms pull --remote
|
|
568
|
+
|
|
569
|
+
# Preview production push
|
|
570
|
+
riverbankcms push --remote --dry-run
|
|
571
|
+
|
|
572
|
+
# Push to production (requires confirmation)
|
|
573
|
+
riverbankcms push --remote --yes
|
|
574
|
+
```
|