@jelou/cli 1.3.0 → 1.4.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.
Files changed (2) hide show
  1. package/README.md +116 -66
  2. package/package.json +6 -6
package/README.md CHANGED
@@ -132,75 +132,107 @@ Opt out of auto-install during login with `jelou login --skip-skills`.
132
132
 
133
133
  ## Commands
134
134
 
135
- | Group | Command | Description |
136
- | --------------- | -------------------------------------------- | ------------------------------------------ |
137
- | **Auth** | `jelou login` | Authenticate with your access token |
138
- | | `jelou logout` | Remove stored credentials |
139
- | | `jelou whoami` | Show current identity and scopes |
140
- | | `jelou auth list` | List saved profiles |
141
- | | `jelou auth switch` | Switch active profile |
142
- | | `jelou auth remove` | Remove a saved profile |
143
- | **Workflow** | `jelou functions init` | Scaffold a new function project |
144
- | | `jelou functions dev` | Local dev server with hot reload |
145
- | | `jelou functions deploy` | Deploy to production |
146
- | | `jelou functions rollback` | Roll back to a previous deployment |
147
- | | `jelou functions logs` | Stream or fetch function logs |
148
- | **Manage** | `jelou functions deployments` | List, inspect, download deployments |
149
- | | `jelou functions` | List, create, delete functions |
150
- | | `jelou functions secrets` | Manage environment secrets |
151
- | | `jelou functions tokens` | Manage access tokens |
152
- | | `jelou functions cron` | View cron schedules |
153
- | **Brain** | `jelou brain list` | List all brains |
154
- | | `jelou brain show` | View brain details |
155
- | | `jelou brain create` | Create brain (full setup) |
156
- | | `jelou brain update` | Update brain name/description |
157
- | | `jelou brain delete` | Delete a brain |
158
- | | `jelou brain knowledge list` | List knowledge files |
159
- | | `jelou brain knowledge upload` | Upload a file (max 2MB) |
160
- | | `jelou brain knowledge delete` | Remove a knowledge file |
161
- | **WhatsApp** | `jelou bot list` | List WhatsApp bots for the company |
162
- | | `jelou template list` | List HSM templates for a bot |
163
- | | `jelou template get <id>` | Show an HSM template by id |
164
- | | `jelou template create` | Create a new HSM template |
165
- | | `jelou template update <id>` | Update a template (APPROVED/REJECTED only) |
166
- | | `jelou template delete <id>` | Delete a template |
167
- | | `jelou template upload-media <f>` | Upload media and get a CDN URL |
168
- | **Datum** | `jelou datum databases list` | List all databases |
169
- | | `jelou datum databases create` | Create a new database |
170
- | | `jelou datum databases show <id>` | Show database details |
171
- | | `jelou datum databases update <id>` | Update a database |
172
- | | `jelou datum databases delete <id>` | Delete a database |
173
- | | `jelou datum api-keys list <db>` | List API keys for a database |
174
- | | `jelou datum api-keys create <db>` | Create an API key |
175
- | | `jelou datum api-keys delete` | Delete an API key |
176
- | | `jelou datum api-keys regenerate` | Regenerate an API key |
177
- | | `jelou datum triggers list <db>` | List triggers for a database |
178
- | | `jelou datum triggers create <db>` | Create a trigger |
179
- | | `jelou datum triggers show` | Show trigger details |
180
- | | `jelou datum triggers update` | Update a trigger |
181
- | | `jelou datum triggers delete` | Delete a trigger |
182
- | | `jelou datum triggers pause` | Pause a trigger |
183
- | | `jelou datum triggers resume` | Resume a trigger |
184
- | | `jelou datum plans list` | List available plans |
185
- | **Marketplace** | `jelou marketplace list` | Browse available apps |
186
- | | `jelou marketplace install <slug>` | Install an app (OAuth flow) |
187
- | | `jelou marketplace installed` | List installed apps |
188
- | **Secrets** | `jelou secret list` | List organization secrets |
189
- | | `jelou secret set <NAME>` | Set or update a secret |
190
- | | `jelou secret delete <NAME>` | Delete a secret |
191
- | **Channels** | `jelou channel list --brain <id>` | List channels for a brain |
192
- | | `jelou channel create --brain <id>` | Create a channel |
193
- | | `jelou channel connect <id> --brain <id>` | Connect to bot/agent |
194
- | | `jelou channel disconnect <id> --brain <id>` | Disconnect channel |
195
- | **Setup** | `jelou agent install` | Install Jelou skills into AI coding agents |
196
- | **Campaigns** | `jelou campaign list` | List bulk WhatsApp campaigns |
197
- | | `jelou campaign get <id>` | Show a campaign by id |
198
- | | `jelou campaign create` | Create a bulk campaign from config + CSV |
199
- | | `jelou campaign cancel <id>` | Cancel a scheduled or in-progress campaign |
200
- | | `jelou campaign reschedule <id>` | Reschedule a campaign to a new time |
135
+ | Group | Command | Description |
136
+ | ----------------- | -------------------------------------------- | ---------------------------------------------- |
137
+ | **Auth** | `jelou login` | Authenticate with your access token |
138
+ | | `jelou logout` | Remove stored credentials |
139
+ | | `jelou whoami` | Show current identity and scopes |
140
+ | | `jelou auth list` | List saved profiles |
141
+ | | `jelou auth switch` | Switch active profile |
142
+ | | `jelou auth remove` | Remove a saved profile |
143
+ | **Workflow** | `jelou functions init` | Scaffold a new function project |
144
+ | | `jelou functions dev` | Local dev server with hot reload |
145
+ | | `jelou functions deploy` | Deploy to production |
146
+ | | `jelou functions rollback` | Roll back to a previous deployment |
147
+ | | `jelou functions logs` | Stream or fetch function logs |
148
+ | **Manage** | `jelou functions deployments` | List, inspect, download deployments |
149
+ | | `jelou functions` | List, create, delete functions |
150
+ | | `jelou functions secrets` | Manage environment secrets |
151
+ | | `jelou functions tokens` | Manage access tokens |
152
+ | | `jelou functions cron` | View cron schedules |
153
+ | **Brain** | `jelou brain list` | List all brains |
154
+ | | `jelou brain show` | View brain details |
155
+ | | `jelou brain create` | Create brain (full setup) |
156
+ | | `jelou brain update` | Update brain name/description |
157
+ | | `jelou brain delete` | Delete a brain |
158
+ | | `jelou brain knowledge list` | List knowledge files |
159
+ | | `jelou brain knowledge upload` | Upload a file (max 2MB) |
160
+ | | `jelou brain knowledge delete` | Remove a knowledge file |
161
+ | **WhatsApp** | `jelou bot list` | List WhatsApp bots for the company |
162
+ | | `jelou template list` | List HSM templates for a bot |
163
+ | | `jelou template get <id>` | Show an HSM template by id |
164
+ | | `jelou template create` | Create a new HSM template |
165
+ | | `jelou template update <id>` | Update a template (APPROVED/REJECTED only) |
166
+ | | `jelou template delete <id>` | Delete a template |
167
+ | | `jelou template upload-media <f>` | Upload media and get a CDN URL |
168
+ | **Datum** | `jelou datum databases list` | List all databases |
169
+ | | `jelou datum databases create` | Create a new database |
170
+ | | `jelou datum databases show <id>` | Show database details |
171
+ | | `jelou datum databases update <id>` | Update a database |
172
+ | | `jelou datum databases delete <id>` | Delete a database |
173
+ | | `jelou datum api-keys list <db>` | List API keys for a database |
174
+ | | `jelou datum api-keys create <db>` | Create an API key |
175
+ | | `jelou datum api-keys delete` | Delete an API key |
176
+ | | `jelou datum api-keys regenerate` | Regenerate an API key |
177
+ | | `jelou datum triggers list <db>` | List triggers for a database |
178
+ | | `jelou datum triggers create <db>` | Create a trigger |
179
+ | | `jelou datum triggers show` | Show trigger details |
180
+ | | `jelou datum triggers update` | Update a trigger |
181
+ | | `jelou datum triggers delete` | Delete a trigger |
182
+ | | `jelou datum triggers pause` | Pause a trigger |
183
+ | | `jelou datum triggers resume` | Resume a trigger |
184
+ | | `jelou datum plans list` | List available plans |
185
+ | **Marketplace** | `jelou marketplace list` | Browse available apps |
186
+ | | `jelou marketplace install <slug>` | Install an app (OAuth flow) |
187
+ | | `jelou marketplace installed` | List installed apps |
188
+ | **Secrets** | `jelou secret list` | List organization secrets |
189
+ | | `jelou secret set <NAME>` | Set or update a secret |
190
+ | | `jelou secret delete <NAME>` | Delete a secret |
191
+ | **Channels** | `jelou channel list --brain <id>` | List channels for a brain |
192
+ | | `jelou channel create --brain <id>` | Create a channel |
193
+ | | `jelou channel connect <id> --brain <id>` | Connect to bot/agent |
194
+ | | `jelou channel disconnect <id> --brain <id>` | Disconnect channel |
195
+ | **Setup** | `jelou agent install` | Install Jelou skills into AI coding agents |
196
+ | **Campaigns** | `jelou campaign list` | List bulk WhatsApp campaigns |
197
+ | | `jelou campaign get <id>` | Show a campaign by id |
198
+ | | `jelou campaign create` | Create a bulk campaign from config + CSV |
199
+ | | `jelou campaign cancel <id>` | Cancel a scheduled or in-progress campaign |
200
+ | | `jelou campaign reschedule <id>` | Reschedule a campaign to a new time |
201
+ | **Workflow sync** | `jelou link` | Bind a directory to a brain |
202
+ | | `jelou pull` | Fetch all workflows for the linked brain |
203
+ | | `jelou status` | Local-vs-lockfile diff (with incoming overlay) |
204
+ | | `jelou push` | Send dirty workflows back to the brain |
205
+ | | `jelou incoming list` | List unresolved incoming artifacts |
206
+ | | `jelou incoming diff` | Show local-vs-server diff for an artifact |
207
+ | | `jelou incoming accept-server` | Adopt fresh server (re-fetched), drop local |
208
+ | | `jelou incoming accept-local` | Push local with force-with-lease CAS check |
209
+ | | `jelou incoming mark-resolved` | Clear an artifact without applying either |
201
210
 
202
211
  Run `jelou <command> --help` for flags and usage details.
203
212
 
213
+ ### Reconciliation
214
+
215
+ When `jelou pull` detects that your local workflow file diverged from the
216
+ lockfile AND the remote moved, it preserves the server snapshot under
217
+ `.jelou/incoming/<organization>/<brain>/<workflowId>.<channel>.incoming.json`
218
+ (plus a sidecar `.meta.json`) — your local file is untouched. Pull exits 7,
219
+ `jelou status` flags the row as `incoming_pending` and exits 9, and `jelou
220
+ push`
221
+ refuses to write to that workflow with `UNRESOLVED_INCOMING` until the artifact
222
+ is gone.
223
+
224
+ Three resolution paths via `jelou incoming`:
225
+
226
+ | Subcommand | Semantics |
227
+ | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
228
+ | `accept-server` | Re-fetch fresh server, overwrite local, refresh lockfile, delete artifact. Always uses latest server (does NOT blindly apply the stored snapshot). Local edits lost. |
229
+ | `accept-local` | `git push --force-with-lease`: re-fetch server, refuse with `NEW_REMOTE_DRIFT` if it moved past the recorded snapshot; on match, push local + delete artifact. On push failure, exit `PUSH_FAILED`, keep artifact. |
230
+ | `mark-resolved` | Just delete the artifact + meta. For when you've manually merged or want to re-pull from scratch. |
231
+
232
+ If more than one workflow has an unresolved artifact, the action subcommands
233
+ require `--workflow <id>` (and optionally `--channel <CHANNEL>`) — they refuse
234
+ with `AMBIGUOUS_TARGET` rather than guessing.
235
+
204
236
  ## Profiles
205
237
 
206
238
  Multiple accounts (or environments) can coexist as named profiles. No more
@@ -260,6 +292,24 @@ jelou functions deploy --no-confirm --json | jq '.data.url'
260
292
  not a TTY)
261
293
  - `--json` outputs `{ "ok": true, "data": ... }` to stdout
262
294
 
295
+ ### Composite mode (`JELOU_CLI_MODE=agent`)
296
+
297
+ For AI coding agents and automation that want one switch instead of three,
298
+ `JELOU_CLI_MODE=agent` flips a coherent set of "machine consumer" defaults.
299
+ Explicit env vars always override the composite — set `NO_COLOR=0` (or
300
+ `JELOU_NO_INPUT=0` etc.) to opt back in to a single dimension while keeping the
301
+ rest of the agent profile.
302
+
303
+ | Env var | When `JELOU_CLI_MODE=agent` | When unset |
304
+ | ------------------- | --------------------------- | ------------- |
305
+ | `JELOU_NO_INPUT` | implies `1` | default unset |
306
+ | `NO_COLOR` | implies `1` | default unset |
307
+ | `JELOU_NO_SPINNERS` | implies `1` | default unset |
308
+
309
+ Composite mode is **output behavior only** — it never bypasses safety nets.
310
+ `.jelou/incoming/` preservation, `UNRESOLVED_INCOMING` push refusal, validation,
311
+ and dirty-state checks always run regardless of the mode flag.
312
+
263
313
  See the [full CI reference](../../docs/cli.md#ci--non-interactive-mode) for
264
314
  per-command flags and GitHub Actions examples.
265
315
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jelou/cli",
3
- "version": "1.3.0",
3
+ "version": "1.4.0",
4
4
  "description": "Jelou CLI — manage functions, brains, channels, and more",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "repository": {
@@ -17,11 +17,11 @@
17
17
  "LICENSE"
18
18
  ],
19
19
  "optionalDependencies": {
20
- "@jelou/cli-darwin-arm64": "1.3.0",
21
- "@jelou/cli-darwin-x64": "1.3.0",
22
- "@jelou/cli-linux-x64": "1.3.0",
23
- "@jelou/cli-linux-arm64": "1.3.0",
24
- "@jelou/cli-win32-x64": "1.3.0"
20
+ "@jelou/cli-darwin-arm64": "1.4.0",
21
+ "@jelou/cli-darwin-x64": "1.4.0",
22
+ "@jelou/cli-linux-x64": "1.4.0",
23
+ "@jelou/cli-linux-arm64": "1.4.0",
24
+ "@jelou/cli-win32-x64": "1.4.0"
25
25
  },
26
26
  "keywords": [
27
27
  "jelou",