nebula-ai 0.1.18 → 0.1.19

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 +83 -3
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -130,7 +130,7 @@ The same surface is available from the command line:
130
130
 
131
131
  - `chat` — send a message to an agent (`-a/--agent`, `-t/--task`, `--no-stream`). The old `-c/--channel <task-id>` remains a hidden alias for `--task`. Use `channels message <name> <message>` to write to a Channel.
132
132
  - `call` — voice calls. `call start` / `call join <thread>` open the TUI's call screen (`--headless` runs the audio engine with no TUI — the edge-speakerphone mode; `--chat` joins data-only); `call list/status <thread>` inspect calls; `call chat <thread> -m "…"` pipes a one-shot typed message into a live call; `call leave/end <thread>`.
133
- - `channels` (alias `spaces`) — the Channel board from the command line: `list`, `create`, `join`, `rename`, `delete`, `message`, `tasks`, `files`, `calls`, `call`, `miniapps`/`add-miniapp`/`remove-miniapp`, `model`, `posture`, `appearance`, `agents`/`add-agent`/`remove-agent`, `default-model`, `default-device`, `devices`/`add-device`/`remove-device`, and for named Channels `members`/`invite`/`remove-member`/`member-role`.
133
+ - `channels` (alias `spaces`) — the Channel board from the command line: `list`, `create`, `join`, `rename`, `delete`, `message`, `tasks`, `files`, `calls`, `call`, `miniapps`/`add-miniapp`/`remove-miniapp`, `model`, `appearance`, `agents`/`add-agent`/`remove-agent`, `default-model`, `default-device`, `devices`/`add-device`/`remove-device`, and for named Channels `members`/`invite`/`remove-member`/`member-role`.
134
134
  - `tasks` — list, create, get, delete, archive, unarchive, share, update, and read a Task's messages. `tasks create --channel <name>` places a Task in that Channel; omitting it uses Home. `--space` remains an alias. Use `--workspace <slug> chat --resume <task-id>` to open a Task directly in a chosen workspace; `--json tasks status <task-id>` exposes the canonical Task work state for launchers.
135
135
  - `agents` — list, create, update, delete, enable/disable, view logs/errors, manage triggers, and attach/detach skills.
136
136
  - `user` — profile, account, and platform-side resources.
@@ -158,8 +158,9 @@ Every command supports `--json` for machine-readable output, `-v/--verbose` for
158
158
 
159
159
  Exit codes: `0` success; `1` error (including a failed chat turn); `3` not
160
160
  signed in or session unusable; `4` chat waiting for your decision; `5` a
161
- message was sent or possibly accepted, but its outcome is unknown. For `5`,
162
- check `nebula-ai channels messages <id>` before sending again.
161
+ message or other write was sent or possibly accepted, but its outcome is
162
+ unknown. For `5`, check with the matching read command (for a chat,
163
+ `nebula-ai channels messages <id>`) before sending again.
163
164
 
164
165
  With `--json`, errors are exactly one JSON line on stderr, without ANSI:
165
166
  `{"error":{"code":"usage","message":"…"}}`. Codes are `error`, `usage`,
@@ -172,6 +173,85 @@ When `status` is `waiting`, `pending` contains `{kind, title, summary}` (title
172
173
  and summary may be null); otherwise `pending` is null. Failed, waiting, and
173
174
  incomplete chat results still print on stdout before the corresponding exit.
174
175
 
176
+ ### Changelog: what a write prints under `--json`
177
+
178
+ Every CLI command that writes now prints `{ "ok": true }` plus the ids it was
179
+ given or created under `--json`, in place of the server's response body. Run
180
+ the matching read command for the row. `tasks share` and `files share` still
181
+ print their link. A write with no server answer in 30 seconds exits 5 with
182
+ `outcome_unknown`.
183
+
184
+ The key is `id` when a command has one id, and a snake_case name per id when
185
+ it has more. Without `--json`, each command prints one line built from its
186
+ arguments.
187
+
188
+ | Command | `--json` before | `--json` now | Text |
189
+ | --- | --- | --- | --- |
190
+ | `agents update <id>` | the agent | `{ "ok": true, "id" }` | `Updated agent: <id>` (it used to print the agent) |
191
+ | `agents enable <id>` | the response body | `{ "ok": true, "id" }` | `Enabled agent: <id>` |
192
+ | `agents disable <id>` | the response body | `{ "ok": true, "id" }` | `Disabled agent: <id>` |
193
+ | `agents delete <id>` | the agent id as a bare string | `{ "ok": true, "id" }` | `Deleted agent: <id>` |
194
+ | `channels message <channel>` | `{ "sent": true, "space" }` | `{ "ok": true }` | `Sent.` |
195
+ | `agents create` | the agent | `{ "ok": true, "id" }` | `Created agent: <name> (<id>)` |
196
+ | `agents skills detach <agent-id> <skill-name>` | the response body | `{ "ok": true, "id" }` | `Detached skill "<skill-name>" from agent <agent-id>` |
197
+ | `tasks create` | the Task | `{ "ok": true, "id" }` | `Started a Task: <id>` |
198
+ | `tasks delete <id>` | the response body | `{ "ok": true, "id" }` | `Deleted Task: <id>` |
199
+ | `tasks archive <id>` | the thread | `{ "ok": true, "id" }` | `Archived Task: <id>` |
200
+ | `tasks unarchive <id>` | the response body | `{ "ok": true, "id" }` | `Unarchived Task: <id>` |
201
+ | `tasks update <id>` | the response body | `{ "ok": true, "id" }` | `Updated Task: <id>` (it used to print the Task) |
202
+ | `user files delete <id>` | the response body | `{ "ok": true, "id" }` | `Deleted file: <id>` |
203
+ | `user update` | the response body | `{ "ok": true }` | `Profile updated.` |
204
+ | `user variables set <name> <value>` | the response body | `{ "ok": true }` | `Variable "<name>" set.` |
205
+ | `user variables create <name> <value>` | the response body | `{ "ok": true, "id" }` | `Variable "<name>" created (<id>).` |
206
+ | `user variables delete <name>` | the response body | `{ "ok": true }` | `Deleted variable: <name>` (the list of agents that used it is gone) |
207
+ | `profile set` | the response body | `{ "ok": true }` | `Profile updated.` |
208
+ | `profile set-email <address>` | the response body | `{ "ok": true }` | unchanged |
209
+ | `profile verify-email <code>` | the response body | `{ "ok": true }` | `Email address updated.` |
210
+ | `user billing auto-topup` with `--enable`, `--disable`, `--threshold` or `--amount` | the settings | `{ "ok": true }` | `Auto top-up updated.` (it used to print the settings) |
211
+ | `user devices start` | the response body | `{ "ok": true }` | `Device started.` |
212
+ | `user devices stop` | the response body | `{ "ok": true }` | `Device stopped.` |
213
+ | `user devices delete` | the response body | `{ "ok": true }` | `Device deleted.` |
214
+ | `user devices rename <name>` | the response body | `{ "ok": true }` | `Device renamed to: <name>` |
215
+ | `user devices visibility <public>` | the response body | `{ "ok": true }` | `Device is visible to the workspace.` or `Device is private.` |
216
+ | `user devices services create <name>` | the response body | `{ "ok": true }` | `Created service: <name>` |
217
+ | `user devices services start <name>` | the response body | `{ "ok": true }` | `Started service: <name>` |
218
+ | `user devices services stop <name>` | the response body | `{ "ok": true }` | `Stopped service: <name>` |
219
+ | `integrations disconnect <provider> [accountId]` | `{ "provider", "accountId" }` | `{ "ok": true, "id" }`, with no `id` when you passed no account | `Disconnected <provider> (<accountId>).`, or `Disconnected <provider>.` with no account |
220
+ | `call start` | the response body, with `thread_id`, `call_id` and the join credential | `{ "ok": true, "thread_id", "call_id" }` | `Call started: <thread_id>` |
221
+ | `call join <task>` | the response body, with the join credential | `{ "ok": true, "thread_id", "call_id" }` | `Joined the call: <thread_id>` |
222
+ | `call end <task>` | the response body | `{ "ok": true, "id" }` | `Call ended.` |
223
+ | `call chat <task>` | `true` | `{ "ok": true, "thread_id", "event_id" }` | `Sent.` |
224
+ | `call leave <task>` | `call_id`, `thread_id`, `left`, `call_ended` | `{ "ok": true, "id" }` | `Left the call.`; a Task with no live Call now exits 1 |
225
+ | `channels create <name>` | the Channel | `{ "ok": true, "id" }` | `Created Channel: <name> (<id>)` (it used to print the slug) |
226
+ | `channels call <channel>` | the response body, with `thread_id`, `call_id` and the join credential | `{ "ok": true, "thread_id", "call_id" }` | `Started a Call in <channel>: <thread_id>` |
227
+ | `channels join <channel>` | `{ "joined" }` | `{ "ok": true }` | `Joined Channel: <channel>` |
228
+ | `channels rename <channel> <new-name>` | `{ "renamed": true }` | `{ "ok": true }` | `Renamed Channel <channel> to <new-name>` |
229
+ | `channels delete <channel>` | `{ "deleted": true }` | `{ "ok": true }` | `Deleted Channel: <channel>` |
230
+ | `channels add-miniapp <channel> <miniapp>` | `{ "added" }` | `{ "ok": true }` | `Added <miniapp> to <channel>` |
231
+ | `channels remove-miniapp <channel> <miniapp>` | `{ "removed" }` | `{ "ok": true }` | `Removed <miniapp> from <channel>` |
232
+ | `channels model <channel> <model>` | `{ "model", "space" }` | `{ "ok": true }` | `Set <channel> to <model>` |
233
+ | `channels appearance <channel>` | `{ "space" }` | `{ "ok": true }` | `Updated <channel>` |
234
+ | `channels add-agent <channel> <agent>` | `{ "added": true }` | `{ "ok": true, "id" }` | `Added agent <agent> to <channel>` |
235
+ | `channels remove-agent <channel> <agent>` | `{ "removed": true }` | `{ "ok": true, "id" }` | `Removed agent <agent> from <channel>` |
236
+ | `channels default-model <channel> <model>` | `{ "model", "space" }` | `{ "ok": true }` | `New Tasks in <channel> will use <model>` |
237
+ | `channels add-device <channel>` | `{ "kind" }` | `{ "ok": true, "id" }` with `--local`, the id of this computer; `{ "ok": true }` for a cloud device | `Added a device to <channel>` |
238
+ | `channels remove-device <channel> <device>` | `{ "removed": true }` | `{ "ok": true, "id" }` | `Removed device <device> from <channel>` |
239
+ | `channels default-device <channel> [device]` | `{ "device" }` | `{ "ok": true, "id" }`, with no `id` when it clears the default | `New Tasks in <channel> will run on <device>` |
240
+ | `channels invite <channel> <member>` | `{ "invited": true }` | `{ "ok": true, "id" }` | `Invited <member> to <channel>` |
241
+ | `channels remove-member <channel> <member>` | `{ "removed": true }` | `{ "ok": true, "id" }` | `Removed <member> from <channel>` |
242
+ | `channels member-role <channel> <member> <role>` | `{ "role" }` | `{ "ok": true, "id" }` | `<member> is now a <role> in <channel>` |
243
+
244
+ `tasks share` and `user files share` print the server's answer under
245
+ `--json`, as before. Without `--json` they now print the link instead of the whole body.
246
+
247
+ A create prints the id of the row it made, whoever minted it. `call start`,
248
+ `call join` and `channels call` print the Task and Call ids and never the
249
+ join credential. A cloud device added with `channels add-device` prints no
250
+ id, because the server mints it after the command returns.
251
+
252
+ The table covers all 53 kernel writes that print the envelope. The two
253
+ floor commands above make 55 kernel writes in total.
254
+
175
255
 
176
256
  ## Privacy and telemetry
177
257
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nebula-ai",
3
- "version": "0.1.18",
3
+ "version": "0.1.19",
4
4
  "description": "CLI/TUI for the nebula.gg AI task orchestration platform",
5
5
  "type": "module",
6
6
  "bin": {