Skip to content
openvibers/openvibe.sdk
Commits
main · CHANGELOG.md
-
Add a shared usage-reading reporter to openvibe-sdk/usage (#16)OpenVibers · 5 Oct 2026
56aeba8
-
createTestDb's pg lease no longer keeps a test process alive; release 0.31.1 (#15)OpenVibers · 5 Oct 2026
5c53d69
-
Put the HTTP telemetry middleware and signals in the service kit (#14)OpenVibers · 5 Oct 2026
79df4a8
-
Publish a Bot client (openvibe-sdk/bot) (#13)OpenVibers · 5 Oct 2026
c955d8c
-
Load test databases from a migrated PGlite snapshot in createTestDb (#12)OpenVibers · 5 Oct 2026
279bd46
-
Add openvibe-sdk/commerce, the shared Billing client for Tips and VIPOpenVibers · 4 Oct 2026
836c0bc
-
Export TRUSTORDER from placement and list each Fabric module in 0.27.0 (#10)OpenVibers · 4 Oct 2026
52d2ab6
-
Fix new SDK subpath tests and document Fabric exports (#8)OpenVibers · 4 Oct 2026
9b63449
-
T1 lane A step 4 — OpenVibe.SDK: add the Fabric modules… (#4)OpenVibers · 3 Oct 2026
9300976
-
Add user-owned trust class and bump openvibe-contracts to 0.86.0 (#3)OpenVibers · 3 Oct 2026
10417ad
-
Emit full platform.usage-sample record from govern onUsage with service (#2)OpenVibers · 2 Oct 2026
930cafe
-
SDK 0.26.0 (plan T1 kits): openvibe-sdk/service is the service kit. gracefulStop() and within() are OpenVibe.Network's and OpenVibe.Community's server/graceful.js (stop steps, server.close with Connection: close on requests in flight, idle connections swept and event streams destroyed, close steps, one stop per process) plus the exit code of a blown deadline, beforeDrain and handles; the deadline timer stays referenced so a stuck step exits with the deadline's code. The error layer: createServiceError, ServiceError, asServiceError, run, wrap, sendError, jsonBody (400 request.invalid_json, 413 request.too_large), privateNoStore and the opt-in jsonErrors. The readiness, metrics, release and problem helpers are re-exported from openvibe-shared and openvibe-contracts, required on first use (the SDK gains no dependency). scripts/esm.js turns a lazy CommonJS getter into an ESM function. Types, ESM entry, docs/service.md, README and CHANGELOG. Tests: service (9 cases, a drain timeout with no requests cuts nothing), pack and browser entries.OpenVibers · 1 Oct 2026
314bb57
-
SDK 0.25.2: openvibe-sdk/realtime follows Events' opaque cursors (ADR-042): it resumes from the last SSE id exactly as Events sent it and dedupes on the seq in the message data (0.25.1 parsed a cursor id as a number, so resume and the repeat filter stopped advancing); subscription.lastEventId is the raw id. A cursor-id resume test.OpenVibers · 29 Sept 2026
ef7e633
-
SDK 0.25.1: verifyServiceToken({ jwks }) also takes a JWKS client the service already holds (the one it built for openvibe-sdk/sso, or a test's), so service tokens are checked with the key their kid names instead of a service taking the first key itself. Test: kid choice, bad signature and an unreachable client (token.unavailable, fixed reason) through a held client.OpenVibers · 29 Sept 2026
2c28409
-
SDK 0.25.0 (plan T1 kits): openvibe-sdk/sso createSsoClient() is a product site's sign-in with OpenVibe.Network in one call (router with /login state + PKCE S256, /callback server-side exchange, /fedcm, /logout, /me, /refresh; optionalAuth/requireAuth; offline verification through the shared JWKS client; next limited to this site and the Network), replacing the copies in Blog, Coupons, Deals, Host, News and Trade. openvibe-sdk/events createServiceOutbox() is a service's outbox in one call around createPgOutbox (emit joins the change's transaction, emitIn, moderationAction, start/stop/kick/status; the relay is off and says so without the events URL or client secret), replacing the wrapper nine services copied. Types, ESM entries, README and CHANGELOG. 47/47 test files with the test services.OpenVibers · 29 Sept 2026
9b5bbec
-
SDK 0.24.0: openvibe-sdk/auth verifyServiceToken(token, { jwks | publicKey, issuer, audience, contracts }) for services that receive service or app tokens. The SDK picks the key (the kid's, else each; the shared JWKS client or a pinned PEM) and every rule is the service's own pinned openvibe-contracts verifyServiceToken, passed in as contracts, so the SDK carries no copy of the rules to drift. No key is token.unavailable with a fixed reason; the fetch error goes to log. verifyUserToken refuses a typed token (typ or purpose: a realtime ticket, a FedCM assertion) as token.not_user. Types, ESM entry, bundle and docs. npm test 45/45 with the test services.OpenVibers · 29 Sept 2026
dbf74dd
-
v0.23.1: the release version is whole (SDK_VERSION, lockfile and browser bundle said 0.22.0 in 0.23.0); a malformed JWKS entry is skipped instead of failing the whole key set; a kid-less legacy JWKS never refetches for a kid; log declared on the verify options. Found by an independent DeepSeek review of v0.23.0. npm test 44/44 on Node 22 with the test services, run after the version bump.OpenVibers · 29 Sept 2026
b673d43
-
v0.23.0: a JWKS client behind token verification: the last good keys through outages, backoff, rotation honoured at once, unknown-kid floods throttled, status for readiness (plan T0/T1). npm test 44/44 on Node 22 with the test services.OpenVibers · 29 Sept 2026
063799e
-
v0.22.0: openvibe-sdk/placement (the adaptive fabric's planner: constraints before cost, marginal cost after free allowances with forecast and reserve, owned-capacity spill-over, hysteresis, rendezvous hashing, power of two choices, Ed25519-signed route plans with a last-good holder) and openvibe-sdk/govern (weighted cost units, tiered windowed quotas, reserve/commit/release settled by any process, idempotent charges, concurrency leases, on Valkey or in memory).OpenVibers · 28 Sept 2026
36fb8c0
-
v0.21.3: createTestDb returns url and directUrl for a spawned service process; sqlfix's envelope rewrite is idempotent.OpenVibers · 28 Sept 2026
59b99c5
-
v0.21.2: an outbox flush() during a relay pass gets the next pass; test containers keep PostgreSQL within its connections.OpenVibers · 28 Sept 2026
8ca57de
-
v0.21.1: the PostgreSQL outbox publishes in write order; migration tools and lessons from the Media pass.OpenVibers · 28 Sept 2026
faa3550
-
v0.21.0: createPgRevocationStore (token cutoffs on PostgreSQL), Valkey without the INFO ready check, and migration tools for SQLite text timestamps.OpenVibers · 28 Sept 2026
b86b523
-
v0.20.4: bytea comes back as a Buffer from both adapters (PGlite returned a Uint8Array, so Buffer.isBuffer and toString('hex') differed between tests and production; found with openvibe-shared's config store on PostgreSQL). npm test 41/41 with the containers.OpenVibers · 28 Sept 2026
e0ccc14
-
v0.20.3: importSqlite reads the connection's current schema instead of public only, so rehearsals can import into a createTestDb schema on the containers (production is unchanged, its search path is public). Documents that an embedded PGlite can break on very large rows (OpenVibe.AI's runs; the same import verifies on PostgreSQL). tools/asyncify: functions imported by destructuring from a converted file are async when they are there (AI's seed was left unawaited). npm test 41/41 with the containers.OpenVibers · 28 Sept 2026
06ca366
-
v0.20.2: importSqlite refuses a source table with no target table instead of skipping it silently (a table a module created at runtime and the migration forgot would have been dropped by a switch; found converting AI). SQLite's own tables and FTS5 virtual tables with their shadows are still skipped; anything else not imported on purpose goes in the new skipSource option (runSqliteMigration too). An audit of the eleven switched services found nothing lost. tools/asyncify: the codemod follows aliases of async module methods, reports computed calls on module APIs, orders nested insertions explicitly (no more garbled Promise.all wraps); the schema converter handles WHEN on immutability triggers, quoted reserved column names (window, user) and NOCASE on expressions; sqlfix quotes reserved names in SQL strings, rewrites JSON.parse of jsonb envelopes and assert.throws over statements, and lists the order sqlfix → asyncify. npm test 41/41 with the containers.OpenVibers · 28 Sept 2026
9a251b4
-
v0.20.1: openvibe-sdk/db runs one query at a time per transaction connection, so Promise.all over db calls inside a transaction no longer queues queries on a busy node-postgres client (deprecated; pg@9 refuses it); outside a transaction calls still run concurrently on the pool. Also fixes 0.20.0's release: core.SDK_VERSION said 0.19.0 and the browser bundle was stale (CI was red). tools/asyncify: the codemod awaits a helper's calls of an async function it was passed (waitFor(fn), conflictGuard(fn), route wrappers) and leaves a promise started early and awaited later alone; gen-migration --ensure captures modules' ensureSchema() SQL and --no-outbox/--no-inbox; the schema converter turns a bare INTEGER PRIMARY KEY into an identity by default and drops WITHOUT ROWID; sqlfix rewrites db.transaction(fn)() and db.inTransaction. npm test 41/41 with the containers.OpenVibers · 28 Sept 2026
e155d19
-
v0.20.0: db.afterCommit(fn) runs fn once the running transaction commits, never after a rollback; a savepoint that rolls back drops the hooks added inside it. Hooks run in order, outside the transaction, with the connection back in the pool; one that throws is logged and the rest still run. Outside a transaction fn runs on the next turn. It replaces the setImmediate-after-a-synchronous-transaction pattern of better-sqlite3 services (News' comment-thread visibility first). db.stats().open counts transactions in progress. tools/asyncify gains sqlite-schema-to-pg.js and g1pass.py, and asyncify.js treats { name: asyncFn } as an async method. docs/migrating-to-postgresql.md §7 has News' lessons (rowid tiebreaks, GREATEST, qualified ON CONFLICT targets, afterCommit, the PG inbox). npm test 41/41; db-ambient also through PgBouncer.OpenVibers · 28 Sept 2026
9a653ce
-
0.19.0: runSqliteMigration in openvibe-sdk/db, a service's scripts/migrate-to-postgres.js in one call. It migrates as the owner (or into PGlite with --pglite for a rehearsal) and imports into emptied tables. It makes text PostgreSQL refuses storable: a NUL is dropped and an unpaired surrogate becomes U+FFFD, in text and inside JSON, and every column where that happened is reported. It verifies counts and checksums, prints the report (--json for all of it), and answers 0 only when everything verified. Generalised from Tips' script; Wiki's is a few lines around it. test/sqlite-cli.test.js; 41/41 test files with the containers.OpenVibers · 28 Sept 2026
0a4b221
-
0.18.1. db.prepare: a statement with one parameter takes a single array argument as its value (WHERE id = ANY(?)); only statements with several parameters read one array as the list of values. Found converting OpenVibe.Wiki. openvibe-sdk/testing gains createTestDb({ migrations, store, service }): a migrated PGlite database, or on the containers roles and a schema of its own, shaped as the host's add-service.sh makes them. Setup and teardown take an advisory lock, so parallel runs never race on the catalog ("tuple concurrently updated", found in Wiki's tests). Also createTestValkey. Services drop their copied helpers. 40/40 test files with the containers.OpenVibers · 28 Sept 2026
1b59c3b
More commits