ente-cli 0.4.89 → 0.4.91
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 +49 -9
- package/dist/SKILL.md +50 -13
- package/dist/cli.mjs +31578 -28503
- package/dist/cli.mjs.map +4 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -86,8 +86,9 @@ ENTE_PROFILE=mail-operator ente agent mail threads --unread
|
|
|
86
86
|
|
|
87
87
|
Agent keys use scoped REST calls and signed CLI JWTs carrying the agent and
|
|
88
88
|
credential IDs. Content calls recheck the live key and agent policy, including
|
|
89
|
-
cached JWT calls. Human-only settings
|
|
90
|
-
|
|
89
|
+
cached JWT calls. Human-only settings stay in the web app; administration uses
|
|
90
|
+
a separate platform key (see Admin access). There is no unrestricted account-key
|
|
91
|
+
fallback. CLI pairing without `--agent`
|
|
91
92
|
creates a named connection agent. MCP authorization creates a connection agent
|
|
92
93
|
named for the client.
|
|
93
94
|
|
|
@@ -103,6 +104,7 @@ project `.env` file.
|
|
|
103
104
|
```bash
|
|
104
105
|
ente search "Alice"
|
|
105
106
|
ente entity list --type person
|
|
107
|
+
ente entity get "Alice" --projection full --limit 50 --json
|
|
106
108
|
ente entity rename "Lorey Georg" "Georg Lorey"
|
|
107
109
|
ente task list --due today
|
|
108
110
|
ente activity create --type note --title "Meeting notes" --entity "Alice" --space "Personal"
|
|
@@ -124,6 +126,14 @@ ente tasks
|
|
|
124
126
|
ente guide # concepts; `ente guide <topic>`: entities, tasks, activities, search, patterns, limits
|
|
125
127
|
```
|
|
126
128
|
|
|
129
|
+
Entity search, list and detail default to the compact projection. Search returns
|
|
130
|
+
5 matches by default; list returns 50, and detail returns 20 activities. Search
|
|
131
|
+
and list accept up to 1,000 results; detail accepts up to 200 activities.
|
|
132
|
+
`--projection full` returns the public fields without compact text excerpts.
|
|
133
|
+
`entity get` also accepts `--hours-back` and `--min-count`. A missing or
|
|
134
|
+
archived detail returns `{"data":null}` in JSON. JSON preserves the canonical
|
|
135
|
+
result under `data`; a root `spaces` map supplies the CLI's space labels.
|
|
136
|
+
|
|
127
137
|
Every command supports `--json`. Run `ente --help` or `ente <group> --help`.
|
|
128
138
|
|
|
129
139
|
### Command groups
|
|
@@ -138,7 +148,8 @@ Every command supports `--json`. Run `ente --help` or `ente <group> --help`.
|
|
|
138
148
|
| `list` | `create` (`--column`, `--pin`), `add` (`--key` upsert), `update` (`--attr`, `--title`), `import` (JSONL upsert by `--key`, `--dry-run`), `show` (`--all`, `--cursor`, `--where`, `--view`), `column add`, `column remove` |
|
|
139
149
|
| `pins` | `list` |
|
|
140
150
|
| `space` | `members` |
|
|
141
|
-
| `recording` | `list`, `show`, `inspect`, `rerun` (
|
|
151
|
+
| `recording` | `list`, `show`, `inspect`, `rerun`, `orphans`, `backups` (platform key) |
|
|
152
|
+
| `admin` | `tables`, `get`, `page` — read-only inspector over any table (platform key) |
|
|
142
153
|
| `canvas` | `boards`, `html list`, `html get`, `html create`, `html update`, `html delete` |
|
|
143
154
|
| `notification` | `send` (emails only your own Ente account address; optional HTML, file attachments, and CID inline images) |
|
|
144
155
|
| `agent` | `list`, `threads`, `show`, `new`, `send`, `config show`, `config set-prompt`, `schedules configure` |
|
|
@@ -404,9 +415,38 @@ Published conversations remain durable after provider cache expiry/disconnect.
|
|
|
404
415
|
Their individual messages appear in entity activity feeds; activity content reads
|
|
405
416
|
return bounded, read-only email blocks with continuation cursors.
|
|
406
417
|
|
|
418
|
+
### Admin access (platform key)
|
|
419
|
+
|
|
420
|
+
Admin commands (`recording …`, `users …`, `health page`, `admin …`) use the
|
|
421
|
+
platform key of a global admin, never the agent key. Issue it in the web app
|
|
422
|
+
under Admin → Platform keys, then store it once:
|
|
423
|
+
|
|
424
|
+
```bash
|
|
425
|
+
ente auth platform login --url <convex-site-url> --key-stdin # verifies the exchange first
|
|
426
|
+
ente auth platform status [--json]
|
|
427
|
+
ente auth platform logout
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
It lives in `platform.toml` next to the profiles (or the env pair
|
|
431
|
+
`ENTE_PLATFORM_API_URL`/`ENTE_PLATFORM_API_KEY`) and reaches every admin
|
|
432
|
+
function, including `users reset-password` and `users set-admin`, but no user,
|
|
433
|
+
space or agent command. Without it admin commands fail; they never fall back.
|
|
434
|
+
|
|
435
|
+
`ENTE_PLATFORM_PROFILE` selects a named file in `platform-profiles/<name>.toml`.
|
|
436
|
+
Agent profiles keep their existing `profiles/<name>.toml` paths.
|
|
437
|
+
|
|
438
|
+
```bash
|
|
439
|
+
ente admin tables # every inspectable table
|
|
440
|
+
ente admin get <table> <id> [--json] # one document, secrets "[redacted]"
|
|
441
|
+
ente admin page <table> [--limit 20] [--cursor <c>] [--order asc|desc] [--json]
|
|
442
|
+
```
|
|
443
|
+
|
|
444
|
+
The inspector is read-only, reads any user's data, and includes `_storage` and
|
|
445
|
+
`_scheduled_functions`; Convex Auth's own tables are not inspectable.
|
|
446
|
+
|
|
407
447
|
### Guardian health (global admin)
|
|
408
448
|
|
|
409
|
-
`ente health page --
|
|
449
|
+
`ente health page --source toolMessages --since <epoch-ms> --until <epoch-ms> --json`
|
|
410
450
|
reads one content-free aggregate page. Use `--source threads --status idle|running|error`
|
|
411
451
|
or `--source recordings --status pending|transcribing|structuring|reflecting|done|error`
|
|
412
452
|
for current job counts. Use `--since 0` for active jobs; terminal recording statuses require a positive
|
|
@@ -414,10 +454,10 @@ for current job counts. Use `--since 0` for active jobs; terminal recording stat
|
|
|
414
454
|
timestamps are outside that coverage.
|
|
415
455
|
`--stale-after-ms` defaults to 1800000; `--limit` accepts 1–100. Follow
|
|
416
456
|
`data.continueCursor` with `--cursor` and unchanged arguments until `data.isDone`.
|
|
417
|
-
Counts are page-local. Tool windows are at most seven days. This is a
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
457
|
+
Counts are page-local. Tool windows are at most seven days. This is a global
|
|
458
|
+
administration endpoint: it uses the platform key (see Admin access), never an
|
|
459
|
+
agent-bound credential, even one sponsored by an administrator. Creating a broader
|
|
460
|
+
agent key does not grant access.
|
|
421
461
|
No customer content or record IDs are returned. Unknown tool names become `other`.
|
|
422
462
|
See `docs/admin-health-monitoring.md` for collector continuity and limits.
|
|
423
463
|
|
|
@@ -475,7 +515,7 @@ across pages. Results put aggregates and continuation under `data.page`, with
|
|
|
475
515
|
window/observation/coverage alongside. Read every page before claiming complete
|
|
476
516
|
counts; terminal recording history excludes missing progress timestamps. No
|
|
477
517
|
message bodies or customer identifiers. The legacy `health page` remains a
|
|
478
|
-
separate
|
|
518
|
+
separate platform-key admin surface and never serves as a fallback.
|
|
479
519
|
|
|
480
520
|
Diagnostics is unavailable inside Ente-hosted chats, recordings and automations.
|
|
481
521
|
Use the external operator command. Whole-history panel sharing does not grant
|
package/dist/SKILL.md
CHANGED
|
@@ -131,6 +131,8 @@ Check the exit before parsing. Do not append a successful help command and treat
|
|
|
131
131
|
its exit as the preceding command's result. `entity show` reports the supported
|
|
132
132
|
`entity get` command and fails without making a request.
|
|
133
133
|
|
|
134
|
+
Entity reads default to compact public DTOs. Search defaults to 5 results; entity list without a query defaults to 50; entity get defaults to 20 activities. Search/list accept at most 1,000, and get accepts at most 200. Use `--projection full` for full public text and fields. JSON keeps the canonical result under `data` with space labels in the root `spaces` envelope. Missing or archived detail returns `data: null`.
|
|
135
|
+
|
|
134
136
|
For inbox coverage, page the unfiltered `agent mail threads` list to completion,
|
|
135
137
|
then inspect thread messages, including updates to older threads. `--unread`
|
|
136
138
|
and `--needs-reply` answer different questions; unread alone misses read but
|
|
@@ -153,16 +155,16 @@ ente auth profiles
|
|
|
153
155
|
# Ask keeps scoped evidence on synthesis failure; check synthesisStatus.
|
|
154
156
|
# Optional sourceHash/sourceFingerprint/passage metadata binds citations to a source version.
|
|
155
157
|
# query remains deterministic and never starts embedding/indexing. See guide ask-the-graph.
|
|
156
|
-
ente search "Alice" [--type person] [--json]
|
|
158
|
+
ente search "Alice" [--type person] [--space <name>] [--limit 5] [--projection compact|full] [--json]
|
|
157
159
|
ente ask "What's open with Erik?" [--space <name>] [--entity <name>] [--evidence] [--json] # AI answer + citations
|
|
158
160
|
ente query "QM system export" [--space <name>] [--entity <name>] [--since <epoch-ms>] [--until <epoch-ms>] [--limit 12] [--verbose] [--json] # evidence only, no AI
|
|
159
161
|
|
|
160
162
|
# Entities
|
|
161
|
-
ente entity list [--query <text>] [--type person|org|project|topic|place|object] [--space <name>] [--limit
|
|
163
|
+
ente entity list [--query <text>] [--type person|org|project|topic|place|object] [--space <name>] [--limit <count>] [--projection compact|full] [--archived] [--json]
|
|
162
164
|
ente entity create "Jane Doe" --type person [--pin "Acme Corp"] [--share-parents --parent-space-grant-fingerprint <token>] [--alias "JD"] [--attr email=jane@acme.com] [--tag vip] [--description "CTO at Acme"] [--json]
|
|
163
165
|
ente entity create "Leistungsphase 1" --type topic --space "Studio" --parent "Building A" --exclusive-parent [--json]
|
|
164
166
|
ente entity duplicate <name-or-id> --space <space> [--name "New project"] [--include-exclusive-children] [--json]
|
|
165
|
-
ente entity get "Jane Doe" [--json]
|
|
167
|
+
ente entity get "Jane Doe" [--limit 20] [--hours-back <hours>] [--min-count 5] [--projection compact|full] [--json]
|
|
166
168
|
ente entity update "Jane Doe" [--name "Jane A. Doe"] [--alias-add "Jane"] [--alias-remove "JD"] [--attr role=CEO] [--tag vip] [--description "…"] [--json]
|
|
167
169
|
ente entity rename "Lorey Georg" "Georg Lorey" # change display name
|
|
168
170
|
ente entity pin "Jane Doe" "Acme Corp" [--role "student"] [--share-parents --parent-space-grant-fingerprint <token>] [--json]
|
|
@@ -176,8 +178,8 @@ ente entity restore <entity-id> [--share-parents --parent-space-grant-fingerprin
|
|
|
176
178
|
# Activities
|
|
177
179
|
ente activity list [--entity "Jane"] [--compact] [--cursor <nextCursor>] [--min-count 0] [--type note|conversation|meeting|call|message|task] [--attr k=v] [--only-open] [--hours 168] [--limit 20] [--sort deadline|created] [--json]
|
|
178
180
|
ente activity create --type meeting --title "Call with Jane" --entity "Jane Doe" --entity "Acme Corp" --space "Work" [--content "…"] [--content-file ./notes.md] [--auto-link --entity-space-grant-fingerprint <token>] [--json]
|
|
179
|
-
ente activity search "quarterly review" [--entity "Acme"] [--type meeting] [--limit
|
|
180
|
-
ente activity get <activityId> [--json] #
|
|
181
|
+
ente activity search "quarterly review" [--entity "Acme"] [--type meeting] [--limit 20] [--projection compact|full] [--json]
|
|
182
|
+
ente activity get <activityId> [--projection compact|full] [--json] # public detail; use --projection full for full text and attachments
|
|
181
183
|
ente activity transcript <activityId> [--grep "Preis"] [--context 2] [--recording <id>] [--json] # transcript of the recording behind it
|
|
182
184
|
ente activity update <activityId> [--title "…"] [--content "…"] [--deadline "2026-05-26" | --clear-deadline] [--entity-add "Bob"] [--entity-remove "Carol"] [--agent-assignee <agentId> ... | --clear-agent-assignees] [--json]
|
|
183
185
|
ente activity content read <activityId> [--cursor <cursor> --expected-version <version>] [--max-blocks 20] [--max-characters 12000] [--json]
|
|
@@ -189,9 +191,9 @@ ente activity restore <activityId> [--json]
|
|
|
189
191
|
|
|
190
192
|
# Database lists (entity + typed columns; each row is a note/task activity; no date column type)
|
|
191
193
|
ente list create "<name>" --space "<space>" [--icon <topic-icon>] [--column "key[=Label]:text|number|boolean|single-select|multi-select[:opt,opt]"] [--pin "<parent>" [--share-parents --parent-space-grant-fingerprint <token>]] [--json]
|
|
192
|
-
ente list add "<list>" --title "…" [--attr k=v ...] [--key <textColumn>] [--content-file ./row.md] [--json] # --key = upsert by that cell
|
|
194
|
+
ente list add "<list>" [--space "<space>"] --title "…" [--attr k=v ...] [--key <textColumn>] [--content-file ./row.md] [--json] # --key = upsert by that cell
|
|
193
195
|
ente list update "<list>" <rowId> [--attr k=v ...] [--title "…"] [--json] # empty value clears a cell
|
|
194
|
-
ente list import "<list>" --file rows.jsonl --key <textColumn> [--dry-run] [--concurrency 4] [--json] # {"title","attrs","content"} per line → created/updated/unchanged
|
|
196
|
+
ente list import "<list>" [--space "<space>"] --file rows.jsonl --key <textColumn> [--dry-run] [--concurrency 4] [--json] # {"title","attrs","content"} per line → created/updated/unchanged
|
|
195
197
|
ente list show "<list>" [--all | --cursor <nextCursor>] [--limit 100] [--where k=v ...] [--view] [--json] # all rows by default; --view = table's saved filters
|
|
196
198
|
# Rows are activities: trash with `ente activity delete <rowId>`, promote with `ente activity update <rowId> --entity-add "<entity>"`. Guide: playbooks/database-list-sync.md
|
|
197
199
|
|
|
@@ -250,6 +252,12 @@ ente agent mail reply <thread-id> --message <message-id> --reply-all (--text "Re
|
|
|
250
252
|
ente agent mail mark <thread-id> --state-version <version> (--handled | --open | --needs-reply | --read | --unread) [--json]
|
|
251
253
|
```
|
|
252
254
|
|
|
255
|
+
New list rows require explicit `--space`, including import dry runs and lists in a single space. Updates to existing rows keep their current space.
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
Activity search and get return canonical public DTOs, defaulting to compact text. Use `--projection full` to include full public fields and attachment metadata. Missing or archived detail returns `data: null`. Search accepts at most 200 results and `--entity` includes the same bounded direct-child history as other canonical reads. The JSON result stays under `data`; `spaces` is a separate label envelope. Activity list keeps its installed filtering, sorting and pagination profile.
|
|
259
|
+
|
|
260
|
+
|
|
253
261
|
Received attachments are available through the same bound agent credential;
|
|
254
262
|
no browser login is needed. `ente agent mail show <thread-id> --json` lists
|
|
255
263
|
`attachments` on each message with `attachmentId`, `filename`, `mimeType`, and
|
|
@@ -424,6 +432,35 @@ ente models web-search on|off # Linkup web search f
|
|
|
424
432
|
ente users set-plan <email> own_models # admin: move a user onto the plan
|
|
425
433
|
```
|
|
426
434
|
|
|
435
|
+
### Admin access (platform key)
|
|
436
|
+
|
|
437
|
+
Admin commands (`recording …`, `users …`, `health page`, `admin …`) use the
|
|
438
|
+
platform key of a global admin, never the agent key. Issue it in the web app
|
|
439
|
+
under Admin → Platform keys, then store it once:
|
|
440
|
+
|
|
441
|
+
```bash
|
|
442
|
+
ente auth platform login --url <convex-site-url> --key-stdin # verifies the exchange first
|
|
443
|
+
ente auth platform status [--json]
|
|
444
|
+
ente auth platform logout
|
|
445
|
+
```
|
|
446
|
+
|
|
447
|
+
It lives in `platform.toml` next to the profiles (or the env pair
|
|
448
|
+
`ENTE_PLATFORM_API_URL`/`ENTE_PLATFORM_API_KEY`) and reaches every admin
|
|
449
|
+
function, including `users reset-password` and `users set-admin`, but no user,
|
|
450
|
+
space or agent command. Without it admin commands fail; they never fall back.
|
|
451
|
+
|
|
452
|
+
`ENTE_PLATFORM_PROFILE` selects a named file in `platform-profiles/<name>.toml`.
|
|
453
|
+
Agent profiles keep their existing `profiles/<name>.toml` paths.
|
|
454
|
+
|
|
455
|
+
```bash
|
|
456
|
+
ente admin tables # every inspectable table
|
|
457
|
+
ente admin get <table> <id> [--json] # one document, secrets "[redacted]"
|
|
458
|
+
ente admin page <table> [--limit 20] [--cursor <c>] [--order asc|desc] [--json]
|
|
459
|
+
```
|
|
460
|
+
|
|
461
|
+
The inspector is read-only, reads any user's data, and includes `_storage` and
|
|
462
|
+
`_scheduled_functions`; Convex Auth's own tables are not inspectable.
|
|
463
|
+
|
|
427
464
|
### Recordings (admin — debug a failing recording)
|
|
428
465
|
|
|
429
466
|
```bash
|
|
@@ -435,7 +472,7 @@ ente recording backups [--state failed|joining|capturing] [--user <email|id>] [-
|
|
|
435
472
|
ente recording backups join <backupId> [--now] # retry a failed join; --now joins one still waiting for its device
|
|
436
473
|
```
|
|
437
474
|
|
|
438
|
-
- Admin-only (`api.admin.recordings
|
|
475
|
+
- Admin-only (`api.admin.recordings.*`, platform key); the ordinary `recordings.*` API is creator-scoped.
|
|
439
476
|
- `rerun` never modifies or deletes the stored audio; `--wait` polls to `done`/`error` and exits non-zero on failure.
|
|
440
477
|
- `--status` scans newest-first and says so when the sweep is capped.
|
|
441
478
|
- A backup in `failed` holds the only server copy of audio whose device never came back; read `error`, fix the cause, then `backups join`.
|
|
@@ -601,7 +638,7 @@ Prepare a new review for remaining contents. Cancel only before execution.
|
|
|
601
638
|
|
|
602
639
|
### Guardian health (global admin)
|
|
603
640
|
|
|
604
|
-
`ente health page --
|
|
641
|
+
`ente health page --source toolMessages --since <epoch-ms> --until <epoch-ms> --json`
|
|
605
642
|
reads one content-free aggregate page. Use `--source threads --status idle|running|error`
|
|
606
643
|
or `--source recordings --status pending|transcribing|structuring|reflecting|done|error`
|
|
607
644
|
for current job counts. Use `--since 0` for active jobs; terminal recording statuses require a positive
|
|
@@ -609,10 +646,10 @@ for current job counts. Use `--since 0` for active jobs; terminal recording stat
|
|
|
609
646
|
timestamps are outside that coverage.
|
|
610
647
|
`--stale-after-ms` defaults to 1800000; `--limit` accepts 1–100. Follow
|
|
611
648
|
`data.continueCursor` with `--cursor` and unchanged arguments until `data.isDone`.
|
|
612
|
-
Counts are page-local. Tool windows are at most seven days. This is a
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
649
|
+
Counts are page-local. Tool windows are at most seven days. This is a global
|
|
650
|
+
administration endpoint: it uses the platform key (see Admin access), never an
|
|
651
|
+
agent-bound credential, even one sponsored by an administrator. Creating a broader
|
|
652
|
+
agent key does not grant access.
|
|
616
653
|
No customer content or record IDs are returned. Unknown tool names become `other`.
|
|
617
654
|
See `docs/admin-health-monitoring.md` for collector continuity and limits.
|
|
618
655
|
|