3.0 KiB
Vendored from t4t-container
These files are copied verbatim from
token-for-token/t4t at commit
f525b8bf93349dcaef2e234a6ad9e49871dcf12d (path:
container/src/lib/*.ts, container/src/modes/gateway/{models,selector}.ts).
The hosted gateway is a hosted multi-tenant frontend that uses the same chain
- Swarm + PSS protocol. We reuse the engine code as a library; rewriting it would invite drift, and a separate npm package is premature.
Files vendored
src/t4t/lib/
├── abi.ts # ProviderRegistry + JobEscrow + ERC20 ABIs
├── bzz-price.ts # CoinGecko USD price (cosmetic display only)
├── chain.ts # viem clients + read/write wrappers (postJob, claimJob, …)
├── crypto.ts # ECIES (payload encryption)
├── envelope.ts # PSS envelope sign/verify, topic derivation, dedup
├── keys.ts # PSS keypair generation (secp256k1)
├── logger.ts # ⚠️ LOCAL EDIT — re-exports project logger (see below)
├── stamps.ts # operator-managed postage batch helpers
├── swarm.ts # bee-js wrapper (chunks + PssTransport)
├── types.ts # shared chain types
└── wallet.ts # BIP39 / private-key helpers
src/t4t/modes/gateway/
├── models.ts # ModelDiscovery (LRU-cached registry scan)
└── selector.ts # selectProvider() — stateless, filters by model+price+rep
The modes/gateway/ depth mirrors the upstream container/src/modes/gateway/
layout so the internal import {…} from '../../lib/chain' paths keep working
verbatim. Don't flatten this — it's the difference between zero edits to
vendored files and a maintenance burden on every sync.
Files deliberately NOT vendored
| Source path | Reason |
|---|---|
lib/onboarding.ts, modes/gateway/admin.ts, modes/gateway/server.ts |
Replaced by Elysia signup + dashboard + routes. |
lib/jobs-db.ts |
Replaced by Prisma GatewayJob + userId tenant attribution. |
lib/job-index.ts |
Replaced by Postgres-backed src/chain/jobIndex.ts. |
lib/config.ts |
Replaced by src/env.ts + per-tenant rows. |
lib/admin-html.ts, lib/admin-stamps.ts |
Single-operator admin UI. |
lib/inference.ts |
Provider-side (not used by gateway). |
modes/gateway/index.ts |
handleChat is refactored into src/gateway/handleChat.ts. |
Drift policy
-
No edits to vendored files. The one explicit exception is
lib/logger.ts(re-exports the project logger so vendored code shares the same pino instance). Any further required change must be filed upstream first. -
Re-sync upstream every two weeks:
diff -ru ../t4t/container/src/lib/ src/t4t/lib/ diff -ru ../t4t/container/src/modes/gateway/{models,selector}.ts \ src/t4t/gateway/{models,selector}.tsBump the SHA at the top of this file when re-syncing.
-
If upstream renames or restructures these files, mirror the change here in the same commit that updates the SHA.