Skip to content

Gateway

Gateway adalah pusat kawalan Triggerfish — perkhidmatan tempatan yang berjalan lama yang menyelaraskan sesi, saluran, alat, peristiwa, dan proses ejen melalui satu titik akhir WebSocket. Semua yang berlaku dalam Triggerfish mengalir melalui Gateway.

Seni Bina

Seni bina Gateway: saluran di sebelah kiri menghubungkan melalui Gateway pusat ke perkhidmatan di sebelah kanan

Gateway mendengar pada port yang boleh dikonfigurasi (lalai 18789) dan menerima sambungan daripada penyesuai saluran, perintah CLI, aplikasi pendamping, dan perkhidmatan dalaman. Semua komunikasi menggunakan JSON-RPC melalui WebSocket.

Perkhidmatan Gateway

Gateway menyediakan perkhidmatan ini melalui titik akhir WebSocket dan HTTP-nya:

PerkhidmatanKeteranganIntegrasi Keselamatan
SesiCipta, senaraikan, dapatkan semula sejarah, hantar antara sesi, janakan tugas latar belakangTaint sesi dijejak per-sesi
SaluranHalakan mesej, urus sambungan, cuba semula penghantaran yang gagal, potong mesej besarSemakan pengkelasan pada semua output
CronJadualkan tugas berulang dan wakeup trigger daripada TRIGGER.mdTindakan cron melalui hook dasar
WebhooksTerima peristiwa masuk daripada perkhidmatan luaran melalui POST /webhooks/:sourceIdData masuk dikelaskan semasa pengambilan
RippleJejak status dalam talian dan penunjuk menaip merentasi saluranTiada data sensitif didedahkan
ConfigMuat semula tetapan tanpa memulakan semulaPentadbir sahaja dalam enterprise
UI KawalanPapan pemuka web untuk kesihatan dan pengurusan gatewayDisahkan dengan token
Tide PoolHos ruang kerja visual A2UI yang dipacu ejenKandungan tertakluk kepada hook output
PemberitahuanPenghantaran pemberitahuan merentasi saluran dengan penghalaan keutamaanPeraturan pengkelasan terpakai

Protokol WebSocket JSON-RPC

Klien menyambung ke Gateway melalui WebSocket dan bertukar mesej JSON-RPC 2.0. Setiap mesej adalah panggilan kaedah dengan parameter bertaip dan respons bertaip.

typescript
// Klien menghantar:
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "sessions.list",
  "params": { "filter": "active" }
}

// Gateway bertindak balas:
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": [
    { "id": "sess_abc", "taint": "CONFIDENTIAL", "channel": "telegram" },
    { "id": "sess_def", "taint": "PUBLIC", "channel": "cli" }
  ]
}

Pengesahan

Sambungan Gateway disahkan dengan token. Token dijana semasa persediaan (triggerfish dive) dan disimpan secara tempatan.

KESELAMATAN Gateway terikat ke 127.0.0.1 secara lalai dan tidak didedahkan ke rangkaian. Akses jauh memerlukan konfigurasi terowong yang eksplisit. Jangan dedahkan WebSocket Gateway ke internet awam tanpa pengesahan. :::

Pengurusan Sesi

Gateway mengurus kitaran hayat penuh sesi. Sesi adalah unit asas keadaan perbualan, setiap satu dengan penjejakan taint yang bebas.

Jenis Sesi

JenisCorak KunciKeterangan
UtamamainPerbualan langsung utama dengan pemilik. Berterusan merentasi pemulaan semula.
Saluranchannel:<type>:<id>Satu per saluran yang disambungkan. Taint terpencil per saluran.
Latar Belakangbg:<task_id>Dilahirkan untuk cron jobs dan tugas yang dicetuskan webhook. Bermula pada taint PUBLIC.
Ejenagent:<agent_id>Sesi per-ejen untuk penghalaan berbilang ejen.
Kumpulangroup:<channel>:<group_id>Sesi chat kumpulan.

Alat Sesi

Ejen berinteraksi dengan sesi melalui alat-alat ini, semua dihalakan melalui Gateway:

AlatKeteranganImplikasi Taint
sessions_listSenaraikan sesi aktif dengan penapis pilihanTiada perubahan taint
sessions_historyDapatkan semula transkrip untuk sesiTaint diwarisi daripada sesi yang dirujuk
sessions_sendHantar mesej ke sesi lainTertakluk kepada semakan write-down
sessions_spawnCipta sesi tugas latar belakangSesi baru bermula pada taint PUBLIC
session_statusSemak keadaan sesi semasa, model, kosTiada perubahan taint

Penghalaan Saluran

Gateway menghalakan mesej antara saluran dan sesi melalui penghala saluran. Penghala mengendalikan:

  • Pintu pengkelasan: Setiap mesej keluar melalui PRE_OUTPUT sebelum penghantaran
  • Cuba semula dengan backoff: Penghantaran yang gagal dicuba semula dengan backoff eksponen melalui sendWithRetry()
  • Potongan mesej: Mesej besar dipecah kepada potongan yang sesuai platform (cth., had 4096 aksara Telegram)
  • Penstriman: Respons mengalir ke saluran yang menyokongnya
  • Pengurusan sambungan: connectAll() dan disconnectAll() untuk pengurusan kitaran hayat

Perkhidmatan Pemberitahuan

Gateway mengintegrasikan perkhidmatan pemberitahuan kelas pertama yang menggantikan corak "beritahu pemilik" ad-hoc merentasi platform. Semua pemberitahuan mengalir melalui satu NotificationService.

Penghalaan Keutamaan

KeutamaanTingkah Laku
CRITICALPintas waktu senyap, hantar ke SEMUA saluran yang disambungkan dengan segera
HIGHHantar ke saluran pilihan dengan segera, beratur jika luar talian
NORMALHantar ke sesi aktif, atau beratur untuk permulaan sesi seterusnya
LOWBeratur, hantar dalam kelompok semasa sesi aktif

Sumber Pemberitahuan

SumberKategoriKeutamaan Lalai
Pelanggaran dasarsecurityCRITICAL
Amaran perisikan ancamansecurityCRITICAL
Permintaan kelulusan kemahiranapprovalHIGH
Kegagalan cron jobsystemHIGH
Amaran kesihatan sistemsystemHIGH
Pencetus peristiwa webhookinfoNORMAL
Kemas kini The Reef tersediainfoLOW

Keutamaan Penghantaran

Pengguna mengkonfigurasi keutamaan pemberitahuan per-saluran:

yaml
notifications:
  preferred_channel: telegram
  quiet_hours:
    start: "22:00"
    end: "07:00"
    timezone: "America/Chicago"
  overrides:
    security: all_channels
    approval: preferred_channel
    info: active_session

Integrasi Penjadual

Gateway menjadi hos perkhidmatan penjadual, yang mengurus:

  • Gelung tick cron: Penilaian berkala tugas yang dijadualkan
  • Wakeup trigger: Wakeup ejen yang ditakrifkan dalam TRIGGER.md
  • Titik akhir HTTP webhook: POST /webhooks/:sourceId untuk peristiwa masuk
  • Pengasingan orkestra: Setiap tugas yang dijadualkan berjalan dalam OrchestratorFactory sendiri dengan keadaan sesi yang terpencil

Tugas yang dicetuskan cron dan webhook menjanakan sesi latar belakang dengan taint PUBLIC yang segar. Mereka tidak mewarisi taint mana-mana sesi yang sedia ada, memastikan tugas autonomi bermula dengan keadaan pengkelasan yang bersih. :::

Kesihatan dan Diagnostik

Perintah triggerfish patrol menghubungkan ke Gateway dan menjalankan semakan kesihatan diagnostik, mengesahkan:

  • Gateway sedang berjalan dan responsif
  • Semua saluran yang dikonfigurasi disambungkan
  • Storan boleh diakses
  • Tugas yang dijadualkan dilaksanakan tepat pada masanya
  • Tiada pemberitahuan kritikal yang tidak dihantar tersekat dalam baris gilir