omnigateway 0.6.0 → 0.7.1

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
@@ -182,6 +182,9 @@ Connect an account. The CLI prints a URL to open, and waits:
182
182
  omni connect anthropic # or: openai, kimi, kilo, grok
183
183
  ```
184
184
 
185
+ An installed [plugin](#plugins) that supplies its own provider is connected the
186
+ same way, under its plugin id.
187
+
185
188
  Every provider also takes a plain API key, if that is what you hold rather than
186
189
  a subscription:
187
190
 
@@ -373,7 +376,7 @@ Use `--db <path>` to point one command somewhere else.
373
376
  | `omni credentials …` | list, show, enable, disable, `set`, `rm`, refresh, `add-key`, health |
374
377
  | `omni models …` | list, show, put, `rm`, `dry-run`, `catalog` |
375
378
  | `omni keys …` | list, create, `limits`, revoke |
376
- | `omni plugin …` | list, verify, install, remove; see [Plugins](#plugins) |
379
+ | `omni plugin …` | list, verify, install, update, remove; see [Plugins](#plugins) |
377
380
  | `omni service install` / `uninstall` | write or remove a systemd unit for this installation |
378
381
  | `omni setup claude` / `opencode` | point a client's config at this gateway |
379
382
  | `omni settings get` / `set` | routing weights, retention, deadlines, and the runtime switches |
@@ -381,7 +384,7 @@ Use `--db <path>` to point one command somewhere else.
381
384
  | `omni db migrate` | create or upgrade the database |
382
385
  | `omni db stats` | size on disk, free pages, schema version, and what snapshots are held |
383
386
  | `omni db backup` / `snapshots` | take a snapshot, and list the ones retention has kept |
384
- | `omni db restore <id>` | put a snapshot back; asks first, and refuses while the gateway is running |
387
+ | `omni db restore <id>` | put a snapshot back; shows a live-vs-snapshot count table, then asks. `--dry-run` shows the table and stops |
385
388
  | `omni db vacuum` | rewrite the database, reclaiming the pages deletion left free |
386
389
 
387
390
  Two worth knowing:
@@ -613,6 +616,12 @@ request-log rows, 1.6 s at 2M, 6.5 s at 8M. A failure is logged rather than
613
616
  raised — the database is live either way, and `omni doctor` reports a rollup
614
617
  that disagrees with its rows.
615
618
 
619
+ Before it asks, `restore` prints one row per table with what the snapshot holds
620
+ against what is live, so the confirmation is informed rather than a judgement on
621
+ an id and an mtime. `--dry-run` prints the same table and exits without asking.
622
+ The counts cover the tables the integrity check reads, so they are a floor on
623
+ what a restore replaces rather than the whole of it.
624
+
616
625
  **`omni db restore <id>` refuses while a gateway is running** against that
617
626
  installation, and there is no override flag. A second process can open its own
618
627
  handle but cannot quiesce the gateway's, and moving the file out from under a live
@@ -712,9 +721,16 @@ omni plugin install https://…/x.tgz # a tarball over https, never http
712
721
  omni plugin install some-plugin@1.2.3 # a package name, through the npm registry
713
722
  omni plugin verify some-plugin # every check the next boot will run
714
723
  omni plugin list # what is installed, and whether it would load
724
+ omni plugin update some-plugin # reinstall from whatever it was installed from
715
725
  omni restart # plugins load at boot, so this is required
716
726
  ```
717
727
 
728
+ `update` needs no spec: `install` records the one you typed in
729
+ `.omni-install.json` beside the plugin, so picking up a patch release is the
730
+ plugin's id and nothing else. A bare package name re-resolves to the current
731
+ release; `name@1.2.3` reinstalls that version exactly. A plugin copied in by
732
+ hand has no record and `update` says so rather than guessing.
733
+
718
734
  **Nothing in the package is executed by any of these.** There is no dependency
719
735
  resolution, no `node_modules`, and no lifecycle script — the installer fetches,
720
736
  checks, and unpacks, and the plugin's own code is first imported at the next boot.
@@ -741,13 +757,26 @@ and whether the gateway would load it:
741
757
 
742
758
  ```
743
759
  ID NAME VERSION API SDK CAPABILITIES STATE
744
- pokemon Pokémon Companion 1.0.0 1 ^1.0.0 storage,files,net:outbound,… ok
760
+ pokemon Pokémon Companion 1.0.0 2 ^1.0.0 storage,files,net:outbound,… ok
745
761
  ```
746
762
 
763
+ The API column is the plugin API generation, and it is matched **exactly** — a
764
+ plugin built against an older one is listed with that as its reason rather than
765
+ loaded.
766
+
747
767
  The capabilities a manifest may declare are `storage`, `files`, `net:outbound`,
748
- `events:request`, `events:limit` and `channels` — the last being namespaced
749
- topics on the gateway's push socket, which a plugin owns without ever touching a
750
- connection. Anything a plugin did not declare is absent from what it is handed.
768
+ `events:request`, `events:limit`, `channels` and `provider`. `channels` is
769
+ namespaced topics on the gateway's push socket, which a plugin owns without ever
770
+ touching a connection. `provider` lets a plugin supply a provider of its own
771
+ the models, the wire format, and optionally the OAuth flow, so
772
+ `omni connect <plugin-id>` works for it exactly as it does for a built-in.
773
+ Anything a plugin did not declare is absent from what it is handed.
774
+
775
+ `net:outbound` and `provider` each require the manifest to declare `origins`,
776
+ and both are enforced: a plugin's own `fetch` and the requests the gateway makes
777
+ on a provider plugin's behalf are both refused outside them. That is what makes
778
+ `omni plugin verify <id>` worth reading before you install one — where your
779
+ prompts can be sent is in the manifest, not only in the code.
751
780
 
752
781
  A plugin that would *not* load is listed with the reason rather than hidden,
753
782
  because a plugin missing from the console is exactly what you are trying to