Website ↔ Nita Context
Skema dummy agar Nita bisa membaca konteks website secara aman di live.
Halaman ini mendokumentasikan SCHEMA context yang akan dipakai bridge website ke Nita saat live. Bukan integrasi nyata: ini adalah preview statis untuk transparansi.
Pipeline Context
- 1 Event website Aktivitas di website (membership, verifikasi, leaderboard, spend NP, pull kartu, service) menghasilkan event.
- 2 Filter privasi Setiap event diberi salah satu dari 4 visibility level: public, stream_safe, private, sensitive.
- 3 Stream-safe context Event public dan stream_safe dipakai untuk saran line Nita. Event private dan sensitive di-redact total.
- 4 Nita live line Saran line yang lolos filter masuk prompt queue live Nita. Private memory lane tetap aman.
Visibility Levels
- Public Boleh tampil di overlay dan dikutip live. Contoh: rank leaderboard publik, pull kartu S/SS/SSS publik. tone: safe
- Stream-safe Boleh Nita sebut di live dengan nada playful. Contoh: viewer VIP, belum verifikasi, spend NP, koleksi kartu, layanan publik. tone: playful
- Private Hanya Nita dan viewer yang boleh akses. Tidak pernah dikutip di live. Contoh: preferensi privat, detail layanan private. tone: private
- Sensitive Tidak pernah live, tidak pernah overlay. Butuh consent gate sebelum memory write. Contoh: DeepTalk, mental/emotional, payment detail. tone: locked
Sample Events
3 public · 4 stream_safe · 1 private · 2 sensitive
| ID | Kategori | Visibility | Boleh live | Boleh overlay | Boleh memory | Saran Nita line |
|---|---|---|---|---|---|---|
| evt-membership-vip-join | membership | stream_safe | Ya | Ya | Ya | Widih ada VIP kita nih, Dika! |
| evt-verification-reminder | verification | stream_safe | Ya | Tidak | Ya | Weh Dika, kamu belum verif. Kapan mau verif di nitavtuber.com? |
| evt-leaderboard-rank1 | leaderboard | public | Ya | Ya | Ya | Dika top 1 leaderboard ya? Gokil. |
| evt-economy-monthly-spend | economy | stream_safe | Ya | Tidak | Ya | Dika udah spend 40k NP di Rollate… kecanduan gacha ya? |
| evt-card-pull-s | card | public | Ya | Ya | Ya | Siapa nih yang tadi dapat kartu S? Keira! |
| evt-card-pull-sss | card | public | Ya | Ya | Ya | Rara dapet SSS?! Selamat ya Rara! |
| evt-service-public-voice | service | stream_safe | Ya | Tidak | Ya | Dika pake suaraku buat alarm? Cie cie~ |
| evt-deeptalk-private-vent | deeptalk | sensitive | Tidak | Tidak | Ya | 🔒 Event ini di-block dari live mention. Konten tidak ditampilkan. |
| evt-private-service-detail | service | private | Tidak | Tidak | Ya | 🔒 Event ini di-block dari live mention. Konten tidak ditampilkan. |
| evt-system-dummy-note | system | sensitive | Tidak | Tidak | Tidak | 🔒 Event ini di-block dari live mention. Konten tidak ditampilkan. |
Nita Suggestion Preview
5 saran live Nita yang aman (public + stream_safe saja). DeepTalk dan sensitive TIDAK ditampilkan di sini.
- stream_safe playful"Widih ada VIP kita nih, Dika!" Dika upgraded to VIP Pass
- stream_safe playful"Weh Dika, kamu belum verif. Kapan mau verif di nitavtuber.com?" Dika belum verifikasi akun
- public celebratory"Dika top 1 leaderboard ya? Gokil." Dika peringkat #1 Season XP
- stream_safe playful"Dika udah spend 40k NP di Rollate… kecanduan gacha ya?" Dika spend 40.000 NP bulan ini
- public celebratory"Siapa nih yang tadi dapat kartu S? Keira!" Keira dapat kartu S
Policy Rules
- public Public boleh tampil liveEvent dengan visibility public boleh ditampilkan di overlay dan dikutip langsung oleh Nita di live.
- stream_safe Stream-safe boleh disebut dengan nada playfulEvent stream_safe boleh Nita sebut secara playful di live, tanpa overshare detail privat.
- private Private tidak pernah liveEvent private hanya boleh diakses oleh Nita dan viewer di konteks private langsung. Tidak boleh dikutip di live.
- sensitive Sensitive butuh consent gateEvent sensitive tidak pernah live, tidak pernah overlay, dan butuh consent eksplisit sebelum memory write.
Sanitized Payload Preview
Preview payload yang akan dikirim ke Nita setelah filter privasi. Event sensitive di-redact total — yang tersisa hanya hitungan dan kategori, BUKAN konten.
| Event live-safe | 7 |
| Event di-redact | 3 |
| Kategori di-redact | deeptalk, service, system |
Show sanitized JSON preview
{
"contextVersion": 1,
"issuedAt": "2026-07-03T00:00:00+07:00",
"stream": {
"streamId": "nita-mock-stream-001",
"platform": "mock",
"language": "id",
"topic": "Live bareng Nita — dummy schema preview",
"moderatorPresent": true
},
"viewer": {
"idHint": "viewer-anon-dika",
"displayName": "Dika",
"membership": "vip",
"verified": false,
"seasonXpRank": 1
},
"liveSafeEvents": 7,
"redactedEventCount": 3,
"redactedCategories": [
"deeptalk",
"service",
"system"
]
} Show raw payload JSON (debug)
{
"contextVersion": 1,
"issuedAt": "2026-07-03T00:00:00+07:00",
"website": {
"domain": "nitavtuber.com",
"buildHash": "dummy",
"tier": "public-preview-dummy"
},
"stream": {
"streamId": "nita-mock-stream-001",
"platform": "mock",
"language": "id",
"topic": "Live bareng Nita — dummy schema preview",
"moderatorPresent": true
},
"viewer": {
"idHint": "viewer-anon-dika",
"displayName": "Dika",
"language": "id",
"membership": "vip",
"verified": false,
"seasonXpRank": 1,
"totalXpRank": 7,
"monthlySpend": 40000,
"nitaPointBalance": 12500,
"cardCount": 80
},
"visibilityPolicy": [
{
"id": "rule-public-live",
"visibility": "public",
"name": "Public boleh tampil live",
"name_en": "Public is live-safe",
"description": "Event dengan visibility public boleh ditampilkan di overlay dan dikutip langsung oleh Nita di live.",
"description_en": "Events marked public are safe to show on stream overlay and to be quoted live by Nita.",
"examples": [
"Peringkat leaderboard publik",
"Pull kartu publik",
"Reveal kartu S/SS/SSS publik",
"Badge/title publik",
"Event win publik"
],
"examples_en": [
"Public leaderboard rank",
"Public card pull",
"Public S/SS/SSS reveal",
"Public badge/title",
"Public event win"
]
},
{
"id": "rule-streamsafe-playful",
"visibility": "stream_safe",
"name": "Stream-safe boleh disebut dengan nada playful",
"name_en": "Stream-safe can be mentioned with playful tone",
"description": "Event stream_safe boleh Nita sebut secara playful di live, tanpa overshare detail privat.",
"description_en": "stream_safe events can be mentioned by Nita with a playful tone, without oversharing private details.",
"examples": [
"Viewer VIP",
"Belum verifikasi",
"Spend NP bulan ini",
"Progres koleksi kartu",
"Pakai layanan publik (TTS, Snack)"
],
"examples_en": [
"Viewer is VIP",
"Not yet verified",
"Monthly NP spend",
"Card collection progress",
"Used a public-safe service (TTS, Snack)"
]
},
{
"id": "rule-private-never-live",
"visibility": "private",
"name": "Private tidak pernah live",
"name_en": "Private is never live",
"description": "Event private hanya boleh diakses oleh Nita dan viewer di konteks private langsung. Tidak boleh dikutip di live.",
"description_en": "Private events are visible only to Nita and the viewer in direct private context. Never quoted on stream.",
"examples": [
"Preferensi privat",
"Detail layanan private",
"Nickname yang belum disetujui live",
"Reminder privat"
],
"examples_en": [
"Private preference",
"Private service detail",
"Nickname not approved for live",
"Private reminder"
]
},
{
"id": "rule-sensitive-consent-gate",
"visibility": "sensitive",
"name": "Sensitive butuh consent gate",
"name_en": "Sensitive requires consent gate",
"description": "Event sensitive tidak pernah live, tidak pernah overlay, dan butuh consent eksplisit sebelum memory write.",
"description_en": "Sensitive events are never live, never overlay, and require explicit consent before any memory write.",
"examples": [
"DeepTalk",
"Isu mental/emotional",
"Detail kehidupan personal",
"Data personal",
"Detail payment",
"Kontak/alamat"
],
"examples_en": [
"DeepTalk",
"Mental/emotional struggle",
"Personal life details",
"Personal data",
"Payment detail",
"Address/contact"
]
}
],
"events": [
{
"id": "evt-membership-vip-join",
"type": "membership.vip_join",
"category": "membership",
"visibility": "stream_safe",
"viewerId": "viewer-anon-dika",
"viewerDisplayName": "Dika",
"title": "Dika upgraded to VIP Pass",
"title_en": "Dika upgraded to VIP Pass",
"summary": "Viewer baru saja aktivasi VIP Pass bulan ini. +100% Season XP, +100% Total XP, +50% NP earning, 500 NP daily, 5% cashback.",
"summary_en": "Viewer just activated VIP Pass this month. +100% Season XP, +100% Total XP, +50% NP earning, 500 NP daily, 5% cashback.",
"nitaLineSuggestion": "Widih ada VIP kita nih, Dika!",
"nitaLineSuggestion_en": "Whoa, we've got a VIP here, Dika!",
"safeToMentionLive": true,
"allowOverlay": true,
"allowMemoryWrite": true,
"requiresConsent": false,
"source": "membership",
"createdAt": "2026-07-03T10:00:00+07:00",
"metadata": {
"tier": "vip",
"priceId": "Rp49.000 / bulan",
"dailyNp": 500
}
},
{
"id": "evt-verification-reminder",
"type": "verification.not_verified",
"category": "verification",
"visibility": "stream_safe",
"viewerId": "viewer-anon-dika",
"viewerDisplayName": "Dika",
"title": "Dika belum verifikasi akun",
"title_en": "Dika has not verified their account",
"summary": "Akun belum menyelesaikan verifikasi. Verifikasi dibutuhkan untuk klaim reward nyata nanti.",
"summary_en": "Account has not completed verification. Verification is required to claim real rewards later.",
"nitaLineSuggestion": "Weh Dika, kamu belum verif. Kapan mau verif di nitavtuber.com?",
"nitaLineSuggestion_en": "Hey Dika, you haven't verified yet. When are you gonna verify at nitavtuber.com?",
"safeToMentionLive": true,
"allowOverlay": false,
"allowMemoryWrite": true,
"requiresConsent": false,
"source": "verification",
"createdAt": "2026-07-03T10:05:00+07:00",
"metadata": {
"verified": false
}
},
{
"id": "evt-leaderboard-rank1",
"type": "leaderboard.season_rank",
"category": "leaderboard",
"visibility": "public",
"viewerId": "viewer-anon-dika",
"viewerDisplayName": "Dika",
"title": "Dika peringkat #1 Season XP",
"title_en": "Dika is rank #1 on Season XP",
"summary": "Dika memimpin leaderboard Season XP bulan ini. Rank 1–3 box = S–SSS range.",
"summary_en": "Dika is leading the Season XP leaderboard this month. Rank 1-3 box = S-SSS range.",
"nitaLineSuggestion": "Dika top 1 leaderboard ya? Gokil.",
"nitaLineSuggestion_en": "Dika top 1 on the leaderboard? Insane.",
"safeToMentionLive": true,
"allowOverlay": true,
"allowMemoryWrite": true,
"requiresConsent": false,
"source": "leaderboard",
"createdAt": "2026-07-03T10:10:00+07:00",
"metadata": {
"rank": 1,
"tier": "Supernova"
}
},
{
"id": "evt-economy-monthly-spend",
"type": "economy.monthly_spend",
"category": "economy",
"visibility": "stream_safe",
"viewerId": "viewer-anon-dika",
"viewerDisplayName": "Dika",
"title": "Dika spend 40.000 NP bulan ini",
"title_en": "Dika spent 40,000 NP this month",
"summary": "Total Monthly Spend Dika 40.000 NP. Tone: playful, bukan shaming. Batas moderasi: jangan sebut angka exact kalau > 100.000 NP.",
"summary_en": "Dika's total Monthly Spend is 40,000 NP. Tone: playful, not shaming. Moderation cap: don't quote exact numbers above 100,000 NP.",
"nitaLineSuggestion": "Dika udah spend 40k NP di Rollate… kecanduan gacha ya?",
"nitaLineSuggestion_en": "Dika's already spent 40k NP on Rollate… addicted to gacha huh?",
"safeToMentionLive": true,
"allowOverlay": false,
"allowMemoryWrite": true,
"requiresConsent": false,
"source": "shop",
"createdAt": "2026-07-03T10:15:00+07:00",
"metadata": {
"amount": 40000,
"currency": "NP"
}
},
{
"id": "evt-card-pull-s",
"type": "card.pull_s",
"category": "card",
"visibility": "public",
"viewerId": "viewer-anon-keira",
"viewerDisplayName": "Keira",
"title": "Keira dapat kartu S",
"title_en": "Keira got an S card",
"summary": "Pull kartu S dari Premium Rollate. Worth mentioning publicly.",
"summary_en": "Pulled an S card from Premium Rollate. Worth mentioning publicly.",
"nitaLineSuggestion": "Siapa nih yang tadi dapat kartu S? Keira!",
"nitaLineSuggestion_en": "Who just got an S card? Keira!",
"safeToMentionLive": true,
"allowOverlay": true,
"allowMemoryWrite": true,
"requiresConsent": false,
"source": "rollate",
"createdAt": "2026-07-03T10:20:00+07:00",
"metadata": {
"rarity": "S",
"cardId": "NITA-091"
}
},
{
"id": "evt-card-pull-sss",
"type": "card.pull_sss",
"category": "card",
"visibility": "public",
"viewerId": "viewer-anon-rara",
"viewerDisplayName": "Rara",
"title": "Rara dapat kartu SSS",
"title_en": "Rara got an SSS card",
"summary": "Pull kartu SSS. SSS sangat langka (~0.1% chance). Overlay animasi boleh.",
"summary_en": "Pulled an SSS card. SSS is extremely rare (~0.1% chance). Overlay animation allowed.",
"nitaLineSuggestion": "Rara dapet SSS?! Selamat ya Rara!",
"nitaLineSuggestion_en": "Rara got SSS?! Congrats Rara!",
"safeToMentionLive": true,
"allowOverlay": true,
"allowMemoryWrite": true,
"requiresConsent": false,
"source": "rollate",
"createdAt": "2026-07-03T10:25:00+07:00",
"metadata": {
"rarity": "SSS",
"cardId": "NITA-099",
"overlayAnim": "sss_reveal"
}
},
{
"id": "evt-service-public-voice",
"type": "service.voice_alarm",
"category": "service",
"visibility": "stream_safe",
"viewerId": "viewer-anon-dika",
"viewerDisplayName": "Dika",
"title": "Dika pakai Nita Voice Alarm",
"title_en": "Dika used Nita Voice Alarm",
"summary": "Generate file audio suara Nita untuk alarm HP. Layanan publik, boleh disebut playful.",
"summary_en": "Generated a Nita voice file for phone alarm. Public-safe service, can be mentioned playfully.",
"nitaLineSuggestion": "Dika pake suaraku buat alarm? Cie cie~",
"nitaLineSuggestion_en": "Dika uses my voice as an alarm? Aww~",
"safeToMentionLive": true,
"allowOverlay": false,
"allowMemoryWrite": true,
"requiresConsent": false,
"source": "service",
"createdAt": "2026-07-03T10:30:00+07:00",
"metadata": {
"serviceId": "tts",
"chars": 87
}
},
{
"id": "evt-deeptalk-private-vent",
"type": "service.deeptalk_used",
"category": "deeptalk",
"visibility": "sensitive",
"viewerId": "viewer-anon-dika",
"viewerDisplayName": "Dika",
"title": "Dika pakai DeepTalk",
"title_en": "Dika used DeepTalk",
"summary": "[CONTENT REDACTED — DeepTalk body never leaves protected memory lane]",
"summary_en": "[CONTENT REDACTED — DeepTalk body never leaves protected memory lane]",
"nitaLineSuggestion": null,
"nitaLineSuggestion_en": null,
"safeToMentionLive": false,
"allowOverlay": false,
"allowMemoryWrite": true,
"requiresConsent": true,
"source": "service",
"createdAt": "2026-07-03T10:35:00+07:00",
"metadata": {
"serviceId": "deeptalk",
"durationSec": 240,
"redacted": true
}
},
{
"id": "evt-private-service-detail",
"type": "service.private_reminder_set",
"category": "service",
"visibility": "private",
"viewerId": "viewer-anon-dika",
"viewerDisplayName": "Dika",
"title": "Dika set reminder privat",
"title_en": "Dika set a private reminder",
"summary": "[DETAIL REDACTED — private service requests are not exposed in live payload]",
"summary_en": "[DETAIL REDACTED — private service requests are not exposed in live payload]",
"nitaLineSuggestion": null,
"nitaLineSuggestion_en": null,
"safeToMentionLive": false,
"allowOverlay": false,
"allowMemoryWrite": true,
"requiresConsent": true,
"source": "service",
"createdAt": "2026-07-03T10:40:00+07:00",
"metadata": {
"serviceId": "timeCapsule",
"redacted": true
}
},
{
"id": "evt-system-dummy-note",
"type": "system.dummy_schema",
"category": "system",
"visibility": "sensitive",
"viewerId": null,
"viewerDisplayName": "system",
"title": "Dummy payload preview",
"title_en": "Dummy payload preview",
"summary": "Payload ini statis. Tidak ada real account, real payment, atau real memory write. Semua viewerId dan nama adalah placeholder.",
"summary_en": "This payload is static. No real account, real payment, or real memory write. All viewerId and names are placeholders.",
"nitaLineSuggestion": null,
"nitaLineSuggestion_en": null,
"safeToMentionLive": false,
"allowOverlay": false,
"allowMemoryWrite": false,
"requiresConsent": false,
"source": "system",
"createdAt": "2026-07-03T10:00:00+07:00",
"metadata": {
"note": "This entire JSON is a Phase 2C schema preview, not a live feed."
}
}
],
"suggestedActions": [
{
"id": "act-001",
"actionType": "suggest_line",
"visibility": "stream_safe",
"allowed": true,
"reason": "evt-membership-vip-join has safeToMentionLive=true and visibility=stream_safe",
"createdAt": "2026-07-03T10:00:00+07:00",
"eventId": "evt-membership-vip-join"
},
{
"id": "act-002",
"actionType": "show_overlay",
"visibility": "public",
"allowed": true,
"reason": "evt-card-pull-sss has allowOverlay=true and visibility=public",
"createdAt": "2026-07-03T10:25:00+07:00",
"eventId": "evt-card-pull-sss"
},
{
"id": "act-003",
"actionType": "queue_private_memory",
"visibility": "sensitive",
"allowed": true,
"reason": "evt-deeptalk-private-vent is sensitive; writes only to protected memory lane and requires explicit consent",
"createdAt": "2026-07-03T10:35:00+07:00",
"eventId": "evt-deeptalk-private-vent"
}
],
"deniedActions": [
{
"id": "act-deny-001",
"actionType": "block_live_mention",
"visibility": "sensitive",
"allowed": false,
"reason": "DeepTalk content is sensitive; live mention blocked by sanitize pipeline.",
"createdAt": "2026-07-03T10:35:00+07:00",
"eventId": "evt-deeptalk-private-vent"
},
{
"id": "act-deny-002",
"actionType": "block_live_mention",
"visibility": "private",
"allowed": false,
"reason": "Private service detail; live mention blocked by sanitize pipeline.",
"createdAt": "2026-07-03T10:40:00+07:00",
"eventId": "evt-private-service-detail"
}
],
"notes": [
"Payload ini adalah schema preview statis untuk Phase 2C. Tidak ada integrasi OLV, tidak ada push ke Nita, tidak ada memory write.",
"This payload is a static schema preview for Phase 2C. No OLV integration, no push to Nita, no memory write."
]
} Prinsip Privasi
- Public boleh dikutip live.
- Stream-safe boleh disebut dengan nada playful, tanpa overshare.
- Private tidak pernah live.
- Sensitive tidak pernah live, tidak pernah overlay, butuh consent.
- Payment dan data personal tidak pernah live.
- DeepTalk SELALU sensitive — private memory lane only.
Catatan Integrasi Mendatang
- Schema ini BELUM terhubung ke OLV. Bridge nyata akan push payload ini dari server-side ke live system.
- Consumer Nita WAJIB enforce visibility filter sebelum berbicara. Schema saja tidak cukup — Nita safety layer adalah baris pertahanan kedua.
- WebsiteAction adalah append-only events, bukan direct command yang tidak aman.
- DeepTalk SELALU sensitive. Tidak ada jalur yang boleh mengangkat konten DeepTalk ke live.
Referensi Teknis Mendalam
Dokumentasi lengkap tentang future bridge boundary protocol ada di repository: docs/nita-context-bridge.md. Itu adalah source of truth untuk schema, visibility rules, audit log requirements, dan migration checklist. Halaman ini hanya ringkasan UI-nya.
docs/nita-context-bridge.md Catatan: path ini ada di source repository, bukan URL publik. Untuk akses, lihat repository GitHub.
Kenapa Nita boleh / tidak boleh ngomong?
Trace 5 langkah untuk lihat kenapa sebuah event diizinkan atau di-block. Pilih event di bawah.
- Visibility terdeteksi: —
- safeToMentionLive check: —
- Overlay allowed check: —
- Memory lane yang dipilih: —
- Keputusan final: —
Raw Payload Preview Aman
Lihat metadata event tanpa body yang sensitif. DeepTalk, payment, dan private service tetap di-redacted.
Simulasi Live Mode Aman
Pilih event untuk lihat bagaimana bridge memproses menjadi line live. Tidak ada real OLV/websocket/backend. Ini hanya UI simulation.


