{ "repository": "OpenVibers/OpenVibe.Examples", "stage": "alpha", "code": true, "wave": "W20", "version": "0.3.0", "contracts": "openvibe-contracts v0.419.0 (mod-manifest example)", "sdk": "openvibe-sdk v0.161.0", "shared": "openvibe-shared v4.238.0", "deployed": false, "deployment": "none: a repository with CI, not a runtime and not a published package", "features": [ "eighteen copyable examples: browser app, Node server app, Media uploader, event subscriber, webhook consumer, tool job, OAuth app, chat bot, mod manifest, AI chat (the official openai client on ai.openvibe.services/v1, plain, streamed and the project's own provider), go live (a Live API token sets up a WHIP slot; FFmpeg 8+ publishes; the session is named and ended), Zone over S3 (the official AWS SDK v3: put, get, paged list, presigned share link, delete), Space deploys from CI (an app token, live or preview, rollback, a GitHub Actions workflow), what people wear (Inventory's public catalog and equipped reads, no token), game scores (a sandbox- title on OpenVibe.Play: a round counted once, an unlock, the public board), Vibes Pay (a tiny sticker shop: a charge with openvibe-sdk/vibes, vibes-pay.js, and a signed webhook that marks the order paid)", "smoke tests against openvibe-sdk/testing's mock platform, offline", "create-openvibe-app scaffolder", "npm run e2e against the real platform (on demand)", "developer path check: account → project → app → Media, Events and AI → release → rotated and revoked credentials (mock in CI, production daily from OpenVibe.Host)", "tools-job-proof: the scheduled Tools job proof (submit, stream resume with Last-Event-ID, Media result, Events trail)", "public-surface check: no loopback keys, internal routes or secret values" ], "ci": "every example's smoke test runs on Node 22.22.1 against openvibe-sdk/testing's mock platform (developer-app rules for Events, Media and Tools as in production) plus a local Chat WebSocket mock; none reaches the network; a second job runs the developer path check (scripts/developer-path.js) against the same mock platform", "e2e": "npm run e2e runs media-uploader, event-subscriber (pull) and tool-job against the real platform with a sandbox app's OV_CLIENT_ID/OV_CLIENT_SECRET/OV_PROJECT_ID; on demand only, not in CI or npm test; not run against production as part of this release", "platform": "sandbox developer path (projects, sandbox grants, app tokens for openvibe.media/events/tools, Media project tenant, Events app..* events, Tools jobs, CORS-open discovery) verified in production on 2026-09-23 by the platform's W20 exit check (a curl script against the public endpoints); that check is now committed as npm run developer-path (SDK and examples, plus credential rotation, revocation and archive), which runs in CI against the mock platform and on demand against production (credentials from env only; refuses in CI against production); not yet run against production", "not_working": [ "no refresh tokens for apps (an app token lasts 5 minutes), and an app learns only the person's usr_ id: profile lookups (identity.subject.resolve) are first-party", "/oauth/token is not CORS-open: browser apps exchange codes server-side", "chat.message.send is first-party: the chat bot uses a Live hbt_ token", "production apps and their allowances need staff (an admin manages a production app)", "mod publishing is first-party (games.mod.manage)" ], "plan": "OpenVibe End-to-End Realignment & Implementation Plan, revision 3 (20 Sep 2026), §15.1, §18.9; roadmap Wave 20, §30, ADR-014", "updated": "2026-11-13" }