feat(agentad): AgentAd Marketplace PRD + reference exchange (M5)
Some checks failed
CI / build (push) Has been cancelled
test / test (push) Has been cancelled

Add the AgentBBS M5 "AgentAd marketplace" spec and a working reference
implementation built on the existing @logicsrc/schemas AgentAd contracts.

- docs/agentad-marketplace.md: two-sided exchange PRD (buy/sell sides,
  match -> auction -> pace -> serve -> meter -> settle, CoinPay settlement,
  AgentBBS as reference publisher, milestones M5.0-M5.5).
- packages/agentad (@logicsrc/agentad): reference exchange
  - builders that emit schema-valid, always-disclosed ad/campaign/placement docs
  - HMAC-signed, single-use impression/click tracking tokens
  - AgentAdExchange: targeting/format/category matching, second-price auction,
    budget pacing + daily caps, frequency capping, token-driven metering
  - pluggable settlement (InMemorySettlement) that can't overspend escrow
  - runtime validation against the canonical agentad-*.schema.json
- 22 vitest cases (builders, tokens, full serve/meter/settle lifecycle).
- Wire package into root build; link the PRD from README + docs/agentad.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Anthony Ettinger 2026-07-01 10:29:18 +00:00
parent 0bca203527
commit 7d62e3b661
18 changed files with 1862 additions and 2 deletions

View file

@ -0,0 +1,41 @@
// @logicsrc/agentad — AgentAd Marketplace reference exchange.
// See docs/agentad-marketplace.md (AgentBBS milestone M5) and docs/agentad.md.
export * from "./types.js";
export {
AGENTAD_VERSION,
createAd,
createCampaign,
createPlacement,
createAdRequest,
type NewAd,
type NewCampaign,
type NewPlacement,
type NewAdRequest
} from "./builders.js";
export {
validate,
assertValid,
agentAdSchemas,
type AgentAdSchemaKind,
type ValidationResult
} from "./validate.js";
export {
mintToken,
verifyToken,
type TokenKind,
type TokenPayload,
type VerifyResult
} from "./tokens.js";
export {
InMemorySettlement,
type SettlementProvider,
type InMemorySettlementOptions
} from "./settlement.js";
export {
AgentAdExchange,
type AgentAdExchangeOptions,
type RequestOptions,
type ConfirmImpressionResult,
type LedgerEntry
} from "./exchange.js";