@agentronics/sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/detection/webmcp.ts","../src/detection/dom.ts","../src/detection/detectors/registry.ts","../src/detection/index.ts","../src/auth/identity.ts","../src/auth/trustLevel.ts","../src/auth/methods/bearer.ts","../src/auth/methods/detectionAsAuth.ts","../src/auth/methods/extensionToken.ts","../src/auth/methods/oauth2.ts","../src/auth/methods/selfDeclaration.ts","../src/auth/methods/sessionLink.ts","../src/auth/methods/xAgentHeader.ts","../src/auth/engine.ts","../src/auth/agentContext.ts","../src/authz/rateLimiter.ts","../src/authz/engine.ts","../src/authz/policyCache.ts","../src/authz/overlay.ts","../src/authz/domEnforcer.ts","../src/memory/storage.ts","../src/memory/store.ts","../src/memory/siteMemory.ts","../src/memory/memoryCache.ts","../src/memory/delivery/metaTags.ts","../src/memory/delivery/overlay.ts","../src/memory/delivery/wellKnownClient.ts","../src/tools/registry.ts","../src/tools/progression.ts","../src/tools/surfacing.ts","../src/tools/groups.ts","../src/tools/tokenEstimate.ts","../src/tools/webmcpAdapter.ts","../src/observability/buffer.ts","../src/observability/sampler.ts","../src/observability/scrub.ts","../src/observability/tracer.ts","../src/observability/exporters/console.ts","../src/observability/exporters/gateway.ts","../src/observability/exporters/webhook.ts","../src/init.ts"],"names":["readModelContext","value","detectWebMcp","options","pollMs","start","ctx","buildIdentity","resolve","HEADLESS_UA_PATTERNS","checkWebdriver","checkChromedriver","keys","k","checkPlugins","desktop","empty","checkHeadlessUa","ua","hit","re","checkLanguages","langs","checkPermissions","hasChrome","SIGNALS","detectDom","threshold","signals","totalWeight","hitWeight","name","check","result","confidence","bundledDetectors","createDetectorRegistry","initial","detectors","detector","status","all","includeResearch","identity","detectAgent","custom","webmcp","dom","claim","createIdentityStore","presented","input","parsed","IdentityClaim","AgentronicsError","next","detected","isHigherTrust","highestTrust","identities","best","TRUST_RANK","bearer","context","verified","detectionAsAuth","extensionToken","oauth2","identityFromClaim","selfDeclaration","sessionLink","xAgentHeader","vendor","rawClass","proof","parsedClass","AgentClass","defaultAuthMethods","createAuthEngine","methods","onTrace","methodResults","method","trace","INITIAL","createAgentContextStore","state","listeners","notify","listener","source","memoryStorage","map","key","browserStorage","decode","raw","createRateLimiter","storage","rule","now","storageKey","existing","resetAt","count","matchTool","pattern","tool","meetsTrust","have","need","meetsClass","DEFAULT_DECISION","rateLimitKey","classPart","vendorPart","trustPart","createPolicyEngine","rules","PolicyRule","rateLimiter","rate","createPolicyCache","gatewayUrl","siteId","publishableKey","fetcher","snapshot","response","body","showDenyOverlay","message","durationMs","documentRef","node","installDomEnforcer","policyEngine","getIdentity","selector","handler","event","target","evaluation","inMemoryBackend","store","webStorageBackend","prefix","out","i","PREFIX","createBackends","hasWindow","session","user","isExpired","record","encode","createMemoryStore","backends","emit","scope","backend","ttl","MemoryEntry","cloneSiteMemory","memory","SiteMemorySchema","stamp","createSiteMemoryStore","SITE_MEMORY_DEFAULT","cachedSnapshot","invalidate","snap","provide","merged","update","path","parts","cursor","provideForPage","SiteMemoryPageContext","found","createMemoryCache","META_PREFIX","JSONLD_ID","safeJson","setMeta","doc","content","tag","removeByName","installMetaTags","schemaType","script","OVERLAY_ID","styles","hidden","summarize","pages","workflows","ui","installMemoryOverlay","host","WELL_KNOWN_PATH","fetchWellKnownContext","origin","signal","fetchInit","payload","createToolRegistry","evaluate","setPolicies","listPolicies","tools","disabled","writePolicyFor","item","includeDisabled","policy","output","createProgressionStore","config","stageMap","stage","current","enabled","transitionTo","trigger","from","toolName","transition","t","previous","passesTrust","minTrust","passesClass","allowed","passesStage","decideSurfacing","trust","cls","surfaceTools","explainSurfacing","DEFAULT_GROUP","groupTools","bucket","a","b","list","stableStringify","estimateToolTokens","descriptor","characters","estimateBudget","perTool","sum","entry","resolveProvider","toDescriptor","invoke","createWebMcpAdapter","handle","provider","createTraceBuffer","limit","events","clampRate","fallback","createSampler","traceRate","errorRate","random","REDACTED","cloneJson","redactPath","head","rest","scrubValue","paths","cloned","DEFAULT_SCRUB_PATHS","randomId","cryptoApi","createTracer","bufferSize","sessionId","scrubPaths","exporters","onExporterError","samplerOptions","buffer","sampler","TraceEvent","exporter","error","createConsoleExporter","createGatewayExporter","batch","sleep","ms","createWebhookExporter","url","maxRetries","queueLimit","readQueue","attempt","writeQueue","queueKey","DEFAULT_GATEWAY_URL","resolveGatewayUrl","provided","init","debug","policies","kind","classifyApiKey","PUBLISHABLE_KEY_PREFIX","traceEnabled","tracerOptions","tracer","emitTrace","identityStore","authOptions","auth","agentContext","policyCache","siteMemoryOptions","siteMemory","memoryCache","detect","detectOptions","opts","progression","surfacingContext","surfaceFor","handleToolInvoked","metaTags","overlay","handles","wellKnownOptions","memorySnapshot","surfaced"],"mappings":"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","file":"init-only.cjs","sourcesContent":["import type { AgentIdentity } from '@agentronics/protocol'\n\ninterface ModelContextLike {\n client?: string\n vendor?: string\n tools?: unknown[]\n}\n\nconst readModelContext = (): ModelContextLike | null => {\n if (typeof navigator === 'undefined') return null\n const value = (navigator as unknown as { modelContext?: ModelContextLike }).modelContext\n return value && typeof value === 'object' ? value : null\n}\n\nexport interface DetectWebMcpOptions {\n /**\n * Some extensions inject `navigator.modelContext` after first paint. Poll for this many\n * milliseconds before giving up. Set to 0 to read synchronously and return immediately.\n */\n pollMs?: number\n}\n\nexport const detectWebMcp = async (\n options: DetectWebMcpOptions = {}\n): Promise<AgentIdentity | null> => {\n const { pollMs = 500 } = options\n const start = Date.now()\n\n while (true) {\n const ctx = readModelContext()\n if (ctx) return buildIdentity(ctx)\n if (Date.now() - start >= pollMs) return null\n await new Promise((resolve) => setTimeout(resolve, 50))\n }\n}\n\nconst buildIdentity = (ctx: ModelContextLike): AgentIdentity => ({\n class: 'webmcp',\n trust: 'detected',\n confidence: 1,\n vendor: ctx.vendor ?? ctx.client ?? null,\n userAgent: typeof navigator === 'undefined' ? null : navigator.userAgent,\n detectionVersion: '2026.04',\n signals: {\n webmcp: true,\n toolCount: Array.isArray(ctx.tools) ? ctx.tools.length : 0,\n },\n})\n","import type { AgentIdentity } from '@agentronics/protocol'\n\ninterface SignalResult {\n hit: boolean\n weight: number\n detail?: string\n}\n\nconst HEADLESS_UA_PATTERNS = [/HeadlessChrome/i, /Headless/i, /PhantomJS/i, /SlimerJS/i]\n\nconst checkWebdriver = (): SignalResult => {\n const value =\n typeof navigator !== 'undefined' && (navigator as Navigator & { webdriver?: boolean }).webdriver\n return { hit: value === true, weight: 0.6, detail: 'navigator.webdriver === true' }\n}\n\nconst checkChromedriver = (): SignalResult => {\n if (typeof window === 'undefined') return { hit: false, weight: 0.5 }\n const keys = Object.keys(window).filter((k) => k.startsWith('cdc_'))\n return { hit: keys.length > 0, weight: 0.5, detail: `window.${keys[0] ?? 'cdc_*'}` }\n}\n\nconst checkPlugins = (): SignalResult => {\n if (typeof navigator === 'undefined' || !navigator.plugins) return { hit: false, weight: 0.2 }\n const desktop = /Win|Mac|Linux/.test(navigator.userAgent ?? '')\n const empty = navigator.plugins.length === 0\n return { hit: desktop && empty, weight: 0.2, detail: 'desktop UA with no plugins' }\n}\n\nconst checkHeadlessUa = (): SignalResult => {\n if (typeof navigator === 'undefined') return { hit: false, weight: 0.7 }\n const ua = navigator.userAgent ?? ''\n const hit = HEADLESS_UA_PATTERNS.some((re) => re.test(ua))\n return hit ? { hit, weight: 0.7, detail: `headless UA: ${ua}` } : { hit, weight: 0.7 }\n}\n\nconst checkLanguages = (): SignalResult => {\n if (typeof navigator === 'undefined') return { hit: false, weight: 0.15 }\n const langs = navigator.languages\n return {\n hit: !langs || langs.length === 0,\n weight: 0.15,\n detail: 'navigator.languages empty',\n }\n}\n\nconst checkPermissions = (): SignalResult => {\n if (typeof navigator === 'undefined') return { hit: false, weight: 0.1 }\n const hasChrome = 'chrome' in window\n const ua = navigator.userAgent ?? ''\n const looksChrome = /Chrome\\//.test(ua) && !/Edg\\//.test(ua)\n return {\n hit: looksChrome && !hasChrome,\n weight: 0.2,\n detail: 'Chrome UA without window.chrome',\n }\n}\n\nconst SIGNALS = {\n webdriver: checkWebdriver,\n chromedriver: checkChromedriver,\n headlessUa: checkHeadlessUa,\n languages: checkLanguages,\n permissions: checkPermissions,\n plugins: checkPlugins,\n} as const\n\nexport type DomSignalName = keyof typeof SIGNALS\n\nexport interface DetectDomOptions {\n /** Floor below which we report no DOM agent. Defaults to 0.4. */\n threshold?: number\n}\n\nexport const detectDom = (options: DetectDomOptions = {}): AgentIdentity | null => {\n const { threshold = 0.4 } = options\n\n const signals: Record<string, unknown> = {}\n let totalWeight = 0\n let hitWeight = 0\n\n for (const [name, check] of Object.entries(SIGNALS)) {\n const result = check()\n totalWeight += result.weight\n signals[name] = { hit: result.hit, weight: result.weight, detail: result.detail }\n if (result.hit) hitWeight += result.weight\n }\n\n const confidence = totalWeight === 0 ? 0 : hitWeight / totalWeight\n if (confidence < threshold) return null\n\n return {\n class: 'dom',\n trust: 'detected',\n confidence,\n vendor: null,\n userAgent: typeof navigator === 'undefined' ? null : navigator.userAgent,\n detectionVersion: '2026.04',\n signals,\n }\n}\n","import type { AgentIdentity } from '@agentronics/protocol'\nimport { detectDom } from '../dom.js'\nimport { detectWebMcp } from '../webmcp.js'\n\nexport type DetectorStatus = 'stable' | 'beta' | 'research'\n\nexport interface Detector {\n id: string\n status: DetectorStatus\n detect(): AgentIdentity | null | Promise<AgentIdentity | null>\n}\n\nexport const bundledDetectors = (): Detector[] => [\n {\n id: 'webmcp.model-context',\n status: 'stable',\n detect: () => detectWebMcp({ pollMs: 0 }),\n },\n {\n id: 'dom.automation-heuristics',\n status: 'beta',\n detect: () => detectDom(),\n },\n]\n\nexport const createDetectorRegistry = (initial: Detector[] = bundledDetectors()) => {\n const detectors = new Map(initial.map((detector) => [detector.id, detector]))\n\n return {\n register(detector: Detector) {\n detectors.set(detector.id, detector)\n },\n list(status?: DetectorStatus): Detector[] {\n const all = [...detectors.values()]\n return status ? all.filter((detector) => detector.status === status) : all\n },\n async detectAll(includeResearch = false): Promise<AgentIdentity | null> {\n for (const detector of detectors.values()) {\n if (detector.status === 'research' && !includeResearch) continue\n const identity = await detector.detect()\n if (identity) return identity\n }\n return null\n },\n }\n}\n\nexport type DetectorRegistry = ReturnType<typeof createDetectorRegistry>\n","import type { AgentIdentity } from '@agentronics/protocol'\nimport { detectWebMcp, type DetectWebMcpOptions } from './webmcp.js'\nimport { detectDom, type DetectDomOptions } from './dom.js'\nimport { createDetectorRegistry, type Detector } from './detectors/registry.js'\n\nexport interface DetectAgentOptions {\n webmcp?: DetectWebMcpOptions | false\n dom?: DetectDomOptions | false\n customDetectors?: Detector[]\n experimental?: boolean\n}\n\n/**\n * Run the full detection pipeline. WebMCP wins if present (exact match), then DOM heuristics.\n * Returns `null` if no agent class fires above its threshold — caller should treat as \"human or\n * undetectable agent.\"\n */\nexport const detectAgent = async (\n options: DetectAgentOptions = {}\n): Promise<AgentIdentity | null> => {\n if (options.customDetectors?.length) {\n const custom = await createDetectorRegistry(options.customDetectors).detectAll(Boolean(options.experimental))\n if (custom) return custom\n }\n if (options.webmcp !== false) {\n const webmcp = await detectWebMcp(options.webmcp ?? {})\n if (webmcp) return webmcp\n }\n if (options.dom !== false) {\n const dom = detectDom(options.dom ?? {})\n if (dom) return dom\n }\n return null\n}\n\nexport { detectWebMcp } from './webmcp.js'\nexport type { DetectWebMcpOptions } from './webmcp.js'\nexport { detectDom } from './dom.js'\nexport type { DetectDomOptions, DomSignalName } from './dom.js'\nexport { declareAgent } from './declare.js'\nexport type { DeclareAgentInput } from './declare.js'\nexport { createDetectorRegistry, bundledDetectors } from './detectors/registry.js'\nexport type { Detector, DetectorRegistry, DetectorStatus } from './detectors/registry.js'\nexport { createSignatureLoader } from './detectors/signatureLoader.js'\nexport type { DetectorSignature, SignatureLoader } from './detectors/signatureLoader.js'\n","import {\n AgentronicsError,\n IdentityClaim,\n isHigherTrust,\n type AgentIdentity,\n type IdentityClaim as IdentityClaimType,\n} from '@agentronics/protocol'\n\nexport interface PresentIdentityOptions extends IdentityClaimType {\n /**\n * If false, accept the claim as `declared` (no remote verification).\n * If true, the claim is staged for the gateway to verify; trust is `declared` until then.\n */\n verifyRemotely?: boolean\n}\n\nexport interface PresentedIdentity {\n identity: AgentIdentity\n claim: IdentityClaimType\n}\n\nconst buildIdentity = (claim: IdentityClaimType): AgentIdentity => ({\n class: claim.class,\n trust: 'declared',\n confidence: 1,\n vendor: claim.vendor,\n userAgent: typeof navigator === 'undefined' ? null : navigator.userAgent,\n detectionVersion: '2026.04',\n signals: {\n declared: true,\n hasToken: true,\n tokenExpiresAt: claim.expiresAt ?? null,\n },\n})\n\nexport const createIdentityStore = () => {\n let presented: PresentedIdentity | null = null\n\n return {\n present(input: PresentIdentityOptions): PresentedIdentity {\n const parsed = IdentityClaim.safeParse(input)\n if (!parsed.success) {\n throw new AgentronicsError(\n 'invalid_api_key',\n `Invalid identity claim: ${parsed.error.issues[0]?.message ?? 'unknown'}`\n )\n }\n const next: PresentedIdentity = {\n claim: parsed.data,\n identity: buildIdentity(parsed.data),\n }\n presented = next\n return next\n },\n\n clear() {\n presented = null\n },\n\n /** Return the presented identity if it outranks the supplied detection. */\n preferOver(detected: AgentIdentity | null): AgentIdentity | null {\n if (!presented) return detected\n if (!detected) return presented.identity\n return isHigherTrust(presented.identity.trust, detected.trust)\n ? presented.identity\n : detected\n },\n\n snapshot(): PresentedIdentity | null {\n return presented\n },\n }\n}\n\nexport type IdentityStore = ReturnType<typeof createIdentityStore>\n","import { TRUST_RANK, type TrustLevel } from '@agentronics/protocol'\n\nexport interface TrustDerivationInput {\n detected?: boolean\n declared?: boolean\n verified?: boolean\n linked?: boolean\n}\n\nexport const deriveTrustLevel = ({\n detected,\n declared,\n verified,\n linked,\n}: TrustDerivationInput): TrustLevel => {\n if (linked) return 'linked'\n if (verified) return 'verified'\n if (declared) return 'declared'\n if (detected) return 'detected'\n return 'detected'\n}\n\nexport const highestTrust = <T extends { trust: TrustLevel }>(identities: T[]): T | null => {\n let best: T | null = null\n for (const identity of identities) {\n if (!best || TRUST_RANK[identity.trust] > TRUST_RANK[best.trust]) best = identity\n }\n return best\n}\n","import type { AuthMethod } from '../engine.js'\n\nexport const bearer = (): AuthMethod => ({\n name: 'bearer',\n async authenticate(input, context) {\n if (!input.bearerToken) return null\n const verified = await context.verifyToken?.('bearer', input.bearerToken)\n return {\n class: input.classHint ?? 'dom',\n trust: verified?.trust ?? 'verified',\n confidence: 1,\n vendor: verified?.vendor ?? input.vendorHint ?? 'bearer',\n userAgent: typeof navigator === 'undefined' ? null : navigator.userAgent,\n detectionVersion: '2026.04',\n signals: { bearer: true, verifiedRemotely: Boolean(verified) },\n }\n },\n})\n","import type { AgentIdentity } from '@agentronics/protocol'\nimport type { AuthMethod } from '../engine.js'\n\nexport const detectionAsAuth = (): AuthMethod => ({\n name: 'detection',\n async authenticate(input) {\n return input.detected ?? null\n },\n})\n\nexport const cloneDetectedIdentity = (identity: AgentIdentity): AgentIdentity => ({\n ...identity,\n signals: { ...identity.signals },\n})\n","import type { AuthMethod } from '../engine.js'\n\nexport const extensionToken = (): AuthMethod => ({\n name: 'extensionToken',\n async authenticate(input, context) {\n if (!input.extensionToken) return null\n const verified = await context.verifyToken?.('extensionToken', input.extensionToken)\n return {\n class: 'dom',\n trust: verified?.trust ?? 'verified',\n confidence: 1,\n vendor: verified?.vendor ?? input.vendorHint ?? 'browser-extension',\n userAgent: typeof navigator === 'undefined' ? null : navigator.userAgent,\n detectionVersion: '2026.04',\n signals: { extensionToken: true, verifiedRemotely: Boolean(verified) },\n }\n },\n})\n","import type { AuthMethod } from '../engine.js'\n\nexport const oauth2 = (): AuthMethod => ({\n name: 'oauth2',\n async authenticate(input, context) {\n if (!input.oauth2AccessToken) return null\n const verified = await context.verifyToken?.('oauth2', input.oauth2AccessToken)\n return {\n class: input.classHint ?? 'webmcp',\n trust: input.oauth2Subject ? 'linked' : verified?.trust ?? 'verified',\n confidence: 1,\n vendor: verified?.vendor ?? input.vendorHint ?? 'oauth2',\n userAgent: typeof navigator === 'undefined' ? null : navigator.userAgent,\n detectionVersion: '2026.04',\n signals: {\n oauth2: true,\n subject: input.oauth2Subject ?? null,\n verifiedRemotely: Boolean(verified),\n },\n }\n },\n})\n","import {\n IdentityClaim,\n type AgentIdentity,\n type IdentityClaim as IdentityClaimRecord,\n} from '@agentronics/protocol'\nimport type { AuthMethod } from '../engine.js'\n\nconst identityFromClaim = (claim: IdentityClaimRecord): AgentIdentity => ({\n class: claim.class,\n trust: 'declared',\n confidence: 1,\n vendor: claim.vendor,\n userAgent: typeof navigator === 'undefined' ? null : navigator.userAgent,\n detectionVersion: '2026.04',\n signals: {\n declared: true,\n hasToken: true,\n tokenExpiresAt: claim.expiresAt ?? null,\n },\n})\n\nexport const selfDeclaration = (): AuthMethod => ({\n name: 'selfDeclaration',\n async authenticate(input) {\n if (!input.declaration) return null\n return identityFromClaim(IdentityClaim.parse(input.declaration))\n },\n})\n","import type { AuthMethod } from '../engine.js'\n\nexport const sessionLink = (): AuthMethod => ({\n name: 'sessionLink',\n async authenticate(input, context) {\n if (!input.sessionLinkToken) return null\n const verified = await context.verifyToken?.('sessionLink', input.sessionLinkToken)\n return {\n class: input.classHint ?? 'screenshot',\n trust: input.linkedUserId ? 'linked' : verified?.trust ?? 'verified',\n confidence: 1,\n vendor: verified?.vendor ?? input.vendorHint ?? 'session-link',\n userAgent: typeof navigator === 'undefined' ? null : navigator.userAgent,\n detectionVersion: '2026.04',\n signals: {\n sessionLink: true,\n linkedUserId: input.linkedUserId ?? null,\n verifiedRemotely: Boolean(verified),\n },\n }\n },\n})\n","import { AgentClass } from '@agentronics/protocol'\nimport type { AuthMethod } from '../engine.js'\n\nexport const xAgentHeader = (): AuthMethod => ({\n name: 'xAgentHeader',\n async authenticate(input) {\n if (!input.xAgentHeader) return null\n const [vendor = 'x-agent', rawClass = 'dom', proof] = input.xAgentHeader.split(';')\n const parsedClass = AgentClass.safeParse(rawClass)\n\n return {\n class: parsedClass.success ? parsedClass.data : 'dom',\n trust: proof ? 'verified' : 'declared',\n confidence: proof ? 1 : 0.8,\n vendor,\n userAgent: typeof navigator === 'undefined' ? null : navigator.userAgent,\n detectionVersion: '2026.04',\n signals: { xAgentHeader: true, hasProof: Boolean(proof) },\n }\n },\n})\n","import type {\n AgentClass,\n AgentIdentity,\n IdentityClaim,\n VerificationResult,\n} from '@agentronics/protocol'\nimport type { TraceInput } from '../observability/tracer.js'\nimport { highestTrust } from './trustLevel.js'\nimport { bearer } from './methods/bearer.js'\nimport { detectionAsAuth } from './methods/detectionAsAuth.js'\nimport { extensionToken } from './methods/extensionToken.js'\nimport { oauth2 } from './methods/oauth2.js'\nimport { selfDeclaration } from './methods/selfDeclaration.js'\nimport { sessionLink } from './methods/sessionLink.js'\nimport { xAgentHeader } from './methods/xAgentHeader.js'\n\nexport type AuthMethodName =\n | 'detection'\n | 'selfDeclaration'\n | 'bearer'\n | 'xAgentHeader'\n | 'extensionToken'\n | 'sessionLink'\n | 'oauth2'\n\nexport interface AuthInput {\n detected?: AgentIdentity | null\n declaration?: IdentityClaim\n bearerToken?: string\n xAgentHeader?: string\n extensionToken?: string\n sessionLinkToken?: string\n linkedUserId?: string\n oauth2AccessToken?: string\n oauth2Subject?: string\n vendorHint?: string\n classHint?: AgentClass\n}\n\nexport interface AuthContext {\n verifyToken?: (\n method: Exclude<AuthMethodName, 'detection' | 'selfDeclaration' | 'xAgentHeader'>,\n token: string\n ) => Promise<VerificationResult | null>\n}\n\nexport interface AuthMethod {\n name: AuthMethodName\n authenticate(input: AuthInput, context: AuthContext): Promise<AgentIdentity | null>\n}\n\nexport interface AuthEngineOptions {\n methods?: AuthMethod[]\n context?: AuthContext\n onTrace?: (input: TraceInput) => void\n}\n\nexport const defaultAuthMethods = (): AuthMethod[] => [\n detectionAsAuth(),\n selfDeclaration(),\n bearer(),\n xAgentHeader(),\n extensionToken(),\n sessionLink(),\n oauth2(),\n]\n\nexport const createAuthEngine = ({\n methods = defaultAuthMethods(),\n context = {},\n onTrace,\n}: AuthEngineOptions = {}) => ({\n async authenticate(input: AuthInput): Promise<AgentIdentity | null> {\n const identities: AgentIdentity[] = []\n const methodResults: Record<string, boolean> = {}\n\n for (const method of methods) {\n const identity = await method.authenticate(input, context)\n methodResults[method.name] = Boolean(identity)\n if (identity) identities.push(identity)\n }\n\n const identity = highestTrust(identities)\n const trace: TraceInput = {\n type: identity ? 'auth.identity_presented' : 'sdk.error',\n agent: identity,\n outcome: identity ? 'success' : 'error',\n metadata: { methods: methodResults },\n }\n if (!identity) trace.error = 'No auth method produced an identity.'\n onTrace?.(trace)\n return identity\n },\n\n methods(): AuthMethodName[] {\n return methods.map((method) => method.name)\n },\n})\n\nexport type AuthEngine = ReturnType<typeof createAuthEngine>\n","import type { AgentIdentity } from '@agentronics/protocol'\n\nexport interface AgentContextSnapshot {\n identity: AgentIdentity | null\n source: 'detect' | 'declare' | 'authenticate' | 'cleared' | 'initial'\n updatedAt: string | null\n}\n\nexport type AgentContextListener = (snapshot: AgentContextSnapshot) => void\n\nconst INITIAL: AgentContextSnapshot = {\n identity: null,\n source: 'initial',\n updatedAt: null,\n}\n\nexport const createAgentContextStore = () => {\n let state: AgentContextSnapshot = INITIAL\n const listeners = new Set<AgentContextListener>()\n\n const notify = () => {\n if (listeners.size === 0) return\n listeners.forEach((listener) => listener(state))\n }\n\n return {\n snapshot(): AgentContextSnapshot {\n return state\n },\n set(identity: AgentIdentity | null, source: AgentContextSnapshot['source']) {\n state = { identity, source, updatedAt: new Date().toISOString() }\n notify()\n },\n subscribe(listener: AgentContextListener): () => void {\n listeners.add(listener)\n return () => {\n listeners.delete(listener)\n }\n },\n }\n}\n\nexport type AgentContextStore = ReturnType<typeof createAgentContextStore>\n","export interface RateLimitRule {\n max: number\n windowSeconds: number\n}\n\nexport interface RateLimitResult {\n allowed: boolean\n remaining: number\n resetAt: number\n}\n\ninterface Bucket {\n count: number\n resetAt: number\n}\n\nexport interface RateLimiterStorage {\n read(key: string): string | null\n write(key: string, value: string): void\n}\n\nconst memoryStorage = (): RateLimiterStorage => {\n const map = new Map<string, string>()\n return {\n read: (key) => map.get(key) ?? null,\n write: (key, value) => {\n map.set(key, value)\n },\n }\n}\n\nconst browserStorage = (): RateLimiterStorage => {\n if (typeof window === 'undefined' || !window.localStorage) return memoryStorage()\n return {\n read: (key) => {\n try {\n return window.localStorage.getItem(key)\n } catch {\n return null\n }\n },\n write: (key, value) => {\n try {\n window.localStorage.setItem(key, value)\n } catch {\n // Quota/storage failures should not crash policy evaluation.\n }\n },\n }\n}\n\nconst decode = (raw: string | null): Bucket | null => {\n if (!raw) return null\n try {\n const parsed = JSON.parse(raw) as Bucket\n if (\n typeof parsed === 'object' &&\n parsed !== null &&\n Number.isFinite(parsed.count) &&\n Number.isFinite(parsed.resetAt)\n ) {\n return parsed\n }\n } catch {\n return null\n }\n return null\n}\n\nexport const createRateLimiter = (storage: RateLimiterStorage = browserStorage()) => ({\n consume(key: string, rule: RateLimitRule, now = Date.now()): RateLimitResult {\n const storageKey = `agtx:rate:${key}`\n const existing = decode(storage.read(storageKey))\n const resetAt =\n existing && existing.resetAt > now ? existing.resetAt : now + rule.windowSeconds * 1000\n const count = existing && existing.resetAt > now ? existing.count + 1 : 1\n storage.write(storageKey, JSON.stringify({ count, resetAt }))\n\n return {\n allowed: count <= rule.max,\n remaining: Math.max(0, rule.max - count),\n resetAt,\n }\n },\n})\n\nexport type RateLimiter = ReturnType<typeof createRateLimiter>\n","import {\n PolicyRule,\n TRUST_RANK,\n type AgentIdentity,\n type PolicyDecision,\n type PolicyEvaluation,\n type PolicyRule as PolicyRuleType,\n} from '@agentronics/protocol'\nimport { createRateLimiter, type RateLimiter } from './rateLimiter.js'\n\nconst matchTool = (pattern: string, tool: string): boolean => {\n if (pattern === '*' || pattern === tool) return true\n if (!pattern.includes('*')) return false\n const regex = new RegExp('^' + pattern.replace(/[.+?^${}()|[\\]\\\\]/g, '\\\\$&').replace(/\\*/g, '.*') + '$')\n return regex.test(tool)\n}\n\nconst meetsTrust = (identity: AgentIdentity | null, rule: PolicyRuleType): boolean => {\n const have = identity ? TRUST_RANK[identity.trust] : -1\n const need = TRUST_RANK[rule.minTrust]\n return have >= need\n}\n\nconst meetsClass = (identity: AgentIdentity | null, rule: PolicyRuleType): boolean => {\n if (rule.allowedClasses.length === 0) return true\n if (!identity) return false\n return rule.allowedClasses.includes(identity.class)\n}\n\nconst DEFAULT_DECISION: PolicyDecision = 'review'\n\nexport interface EvaluateInput {\n tool: string\n identity: AgentIdentity | null\n}\n\nconst rateLimitKey = (tool: string, identity: AgentIdentity | null): string => {\n const classPart = identity?.class ?? 'unknown'\n const vendorPart = identity?.vendor ?? 'unknown'\n const trustPart = identity?.trust ?? 'none'\n return `${tool}:${classPart}:${vendorPart}:${trustPart}`\n}\n\nexport interface PolicyEngineOptions {\n rateLimiter?: RateLimiter\n}\n\nexport const createPolicyEngine = (\n initial: PolicyRuleType[] = [],\n options: PolicyEngineOptions = {}\n) => {\n let rules: PolicyRuleType[] = initial.map((rule) => PolicyRule.parse(rule))\n const rateLimiter = options.rateLimiter ?? createRateLimiter()\n\n return {\n set(next: PolicyRuleType[]) {\n rules = next.map((rule) => PolicyRule.parse(rule))\n },\n\n list(): PolicyRuleType[] {\n return [...rules]\n },\n\n evaluate({ tool, identity }: EvaluateInput): PolicyEvaluation {\n for (const rule of rules) {\n if (!matchTool(rule.tool, tool)) continue\n if (!meetsTrust(identity, rule)) {\n return {\n decision: 'deny',\n ruleId: rule.id,\n reason: `Rule \"${rule.id}\" requires trust >= ${rule.minTrust}.`,\n }\n }\n if (!meetsClass(identity, rule)) {\n return {\n decision: 'deny',\n ruleId: rule.id,\n reason: `Rule \"${rule.id}\" restricts to classes: ${rule.allowedClasses.join(', ')}.`,\n }\n }\n if (rule.rateLimit) {\n const rate = rateLimiter.consume(rateLimitKey(tool, identity), rule.rateLimit)\n if (!rate.allowed) {\n return {\n decision: 'deny',\n ruleId: rule.id,\n reason: `Rule \"${rule.id}\" rate limit exceeded. Resets at ${new Date(rate.resetAt).toISOString()}.`,\n }\n }\n }\n return {\n decision: rule.decision,\n ruleId: rule.id,\n reason: `Matched rule \"${rule.id}\".`,\n }\n }\n return {\n decision: DEFAULT_DECISION,\n ruleId: null,\n reason: `No rule matched tool \"${tool}\". Falling back to \"${DEFAULT_DECISION}\".`,\n }\n },\n }\n}\n\nexport type PolicyEngine = ReturnType<typeof createPolicyEngine>\n","import { PolicyRule, type PolicyRule as PolicyRuleRecord } from '@agentronics/protocol'\n\nexport interface PolicyCacheOptions {\n gatewayUrl: string\n siteId: string\n publishableKey: string\n fetcher?: typeof fetch\n}\n\nexport interface PolicyCacheSnapshot {\n policies: PolicyRuleRecord[]\n etag: string | null\n}\n\nexport const createPolicyCache = ({\n gatewayUrl,\n siteId,\n publishableKey,\n fetcher = fetch,\n}: PolicyCacheOptions) => {\n let snapshot: PolicyCacheSnapshot = { policies: [], etag: null }\n\n return {\n snapshot(): PolicyCacheSnapshot {\n return {\n policies: [...snapshot.policies],\n etag: snapshot.etag,\n }\n },\n\n async sync(): Promise<PolicyCacheSnapshot> {\n const response = await fetcher(\n `${gatewayUrl.replace(/\\/$/, '')}/v1/sites/${encodeURIComponent(siteId)}/policies`,\n {\n headers: {\n authorization: `Bearer ${publishableKey}`,\n ...(snapshot.etag ? { 'if-none-match': snapshot.etag } : {}),\n },\n }\n )\n if (response.status === 304) return this.snapshot()\n if (!response.ok) throw new Error(`Policy sync failed with status ${response.status}.`)\n\n const body = (await response.json()) as { policies?: unknown }\n const policies = PolicyRule.array().parse(body.policies ?? [])\n snapshot = {\n policies,\n etag: response.headers.get('etag'),\n }\n return this.snapshot()\n },\n }\n}\n\nexport type PolicyCache = ReturnType<typeof createPolicyCache>\n","export interface DenyOverlayOptions {\n message?: string\n durationMs?: number\n documentRef?: Document\n}\n\nexport const showDenyOverlay = ({\n message = 'Agent action blocked by site policy.',\n durationMs = 2400,\n documentRef = typeof document === 'undefined' ? undefined : document,\n}: DenyOverlayOptions = {}) => {\n if (!documentRef?.body) return null\n\n const node = documentRef.createElement('div')\n node.setAttribute('role', 'status')\n node.setAttribute('data-agentronics-deny-overlay', 'true')\n node.textContent = message\n Object.assign(node.style, {\n position: 'fixed',\n zIndex: '2147483647',\n left: '50%',\n bottom: '24px',\n transform: 'translateX(-50%)',\n maxWidth: 'min(520px, calc(100vw - 32px))',\n padding: '12px 16px',\n borderRadius: '8px',\n background: '#07091A',\n color: '#F4F4F5',\n border: '1px solid #6366F1',\n boxShadow: '0 20px 48px -16px rgba(7,9,26,0.55)',\n font: \"13px/1.45 'Space Mono', ui-monospace, SFMono-Regular, Menlo, monospace\",\n })\n\n documentRef.body.appendChild(node)\n window.setTimeout(() => node.remove(), durationMs)\n return node\n}\n","import type { AgentIdentity } from '@agentronics/protocol'\nimport { showDenyOverlay } from './overlay.js'\nimport type { PolicyEngine } from './engine.js'\n\nexport interface DomEnforcerOptions {\n policyEngine: PolicyEngine\n getIdentity: () => AgentIdentity | null | Promise<AgentIdentity | null>\n documentRef?: Document\n selector?: string\n}\n\nexport const installDomEnforcer = ({\n policyEngine,\n getIdentity,\n documentRef = typeof document === 'undefined' ? undefined : document,\n selector = '[data-agentronics-tool]',\n}: DomEnforcerOptions) => {\n if (!documentRef) return { uninstall: () => undefined }\n\n const handler = (event: Event) => {\n const target = event.target instanceof Element ? event.target.closest(selector) : null\n if (!(target instanceof HTMLElement)) return\n const tool = target.dataset.agentronicsTool\n if (!tool) return\n\n void Promise.resolve(getIdentity()).then((identity) => {\n const evaluation = policyEngine.evaluate({ tool, identity })\n if (evaluation.decision !== 'deny') return\n event.preventDefault()\n event.stopPropagation()\n showDenyOverlay({ message: evaluation.reason, documentRef })\n })\n }\n\n documentRef.addEventListener('click', handler, true)\n return {\n uninstall: () => documentRef.removeEventListener('click', handler, true),\n }\n}\n","import type { MemoryScope } from '@agentronics/protocol'\n\nexport interface ScopeBackend {\n read(key: string): string | null\n write(key: string, value: string): void\n remove(key: string): void\n keys(): string[]\n}\n\nconst inMemoryBackend = (): ScopeBackend => {\n const store = new Map<string, string>()\n return {\n read: (key) => store.get(key) ?? null,\n write: (key, value) => {\n store.set(key, value)\n },\n remove: (key) => {\n store.delete(key)\n },\n keys: () => [...store.keys()],\n }\n}\n\nconst webStorageBackend = (storage: Storage, prefix: string): ScopeBackend => ({\n read: (key) => {\n try {\n return storage.getItem(prefix + key)\n } catch {\n return null\n }\n },\n write: (key, value) => {\n try {\n storage.setItem(prefix + key, value)\n } catch {\n // quota exceeded or storage disabled — fail silently, the in-memory fallback is acceptable\n }\n },\n remove: (key) => {\n try {\n storage.removeItem(prefix + key)\n } catch {\n // ignore\n }\n },\n keys: () => {\n const out: string[] = []\n try {\n for (let i = 0; i < storage.length; i++) {\n const k = storage.key(i)\n if (k && k.startsWith(prefix)) out.push(k.slice(prefix.length))\n }\n } catch {\n // ignore\n }\n return out\n },\n})\n\nconst PREFIX = 'agtx:'\n\nexport const createBackends = (): Record<MemoryScope, ScopeBackend> => {\n const hasWindow = typeof window !== 'undefined'\n const session =\n hasWindow && typeof window.sessionStorage !== 'undefined'\n ? webStorageBackend(window.sessionStorage, PREFIX + 'session:')\n : inMemoryBackend()\n const user =\n hasWindow && typeof window.localStorage !== 'undefined'\n ? webStorageBackend(window.localStorage, PREFIX + 'user:')\n : inMemoryBackend()\n return {\n session,\n user,\n org: inMemoryBackend(),\n }\n}\n","import { MemoryEntry, type MemoryScope } from '@agentronics/protocol'\nimport type { TraceInput } from '../observability/tracer.js'\nimport { createBackends, type ScopeBackend } from './storage.js'\n\ninterface StoredRecord {\n value: unknown\n expiresAt: number | null\n updatedAt: string\n}\n\nconst isExpired = (record: StoredRecord, now: number): boolean =>\n record.expiresAt !== null && record.expiresAt <= now\n\nconst decode = (raw: string | null): StoredRecord | null => {\n if (!raw) return null\n try {\n const parsed = JSON.parse(raw) as StoredRecord\n if (typeof parsed !== 'object' || parsed === null) return null\n return parsed\n } catch {\n return null\n }\n}\n\nconst encode = (record: StoredRecord): string => JSON.stringify(record)\n\nexport interface MemoryGetOptions {\n scope?: MemoryScope\n}\n\nexport interface MemorySetOptions {\n scope?: MemoryScope\n ttlSeconds?: number\n}\n\nexport interface MemoryStoreOptions {\n onTrace?: (input: TraceInput) => void\n}\n\nexport const createMemoryStore = (options: MemoryStoreOptions = {}) => {\n const backends: Record<MemoryScope, ScopeBackend> = createBackends()\n const emit = (input: TraceInput) => {\n options.onTrace?.(input)\n }\n\n const get = (key: string, options: MemoryGetOptions = {}): unknown => {\n const scope = options.scope ?? 'session'\n const backend = backends[scope]\n const record = decode(backend.read(key))\n if (!record) {\n emit({ type: 'memory.accessed', metadata: { operation: 'get', key, scope, hit: false } })\n return undefined\n }\n if (isExpired(record, Date.now())) {\n backend.remove(key)\n emit({ type: 'memory.accessed', metadata: { operation: 'get', key, scope, hit: false, expired: true } })\n return undefined\n }\n emit({ type: 'memory.accessed', metadata: { operation: 'get', key, scope, hit: true } })\n return record.value\n }\n\n const set = (key: string, value: unknown, options: MemorySetOptions = {}): MemoryEntry => {\n const scope = options.scope ?? 'session'\n const ttl = options.ttlSeconds ?? null\n const now = Date.now()\n const record: StoredRecord = {\n value,\n expiresAt: ttl === null ? null : now + ttl * 1000,\n updatedAt: new Date(now).toISOString(),\n }\n backends[scope].write(key, encode(record))\n emit({ type: 'memory.updated', metadata: { operation: 'set', key, scope, ttlSeconds: ttl } })\n return MemoryEntry.parse({\n key,\n value,\n scope,\n ttlSeconds: ttl,\n updatedAt: record.updatedAt,\n })\n }\n\n const remove = (key: string, options: MemoryGetOptions = {}) => {\n const scope = options.scope ?? 'session'\n backends[scope].remove(key)\n emit({ type: 'memory.updated', metadata: { operation: 'remove', key, scope } })\n }\n\n const list = (options: MemoryGetOptions = {}): MemoryEntry[] => {\n const scope = options.scope ?? 'session'\n const backend = backends[scope]\n const now = Date.now()\n const out: MemoryEntry[] = []\n for (const key of backend.keys()) {\n const record = decode(backend.read(key))\n if (!record) continue\n if (isExpired(record, now)) {\n backend.remove(key)\n continue\n }\n out.push(\n MemoryEntry.parse({\n key,\n value: record.value,\n scope,\n ttlSeconds:\n record.expiresAt === null ? null : Math.max(0, Math.round((record.expiresAt - now) / 1000)),\n updatedAt: record.updatedAt,\n })\n )\n }\n emit({ type: 'memory.accessed', metadata: { operation: 'list', scope, count: out.length } })\n return out\n }\n\n const clear = (options: MemoryGetOptions = {}) => {\n const scope = options.scope ?? 'session'\n const backend = backends[scope]\n const count = backend.keys().length\n for (const key of backend.keys()) backend.remove(key)\n emit({ type: 'memory.updated', metadata: { operation: 'clear', scope, count } })\n }\n\n return { get, set, remove, list, clear }\n}\n\nexport type MemoryStore = ReturnType<typeof createMemoryStore>\n","import {\n SITE_MEMORY_DEFAULT,\n SiteMemory as SiteMemorySchema,\n SiteMemoryPageContext,\n type SiteMemory,\n} from '@agentronics/protocol'\nimport type { TraceInput } from '../observability/tracer.js'\n\nexport interface SiteMemoryStoreOptions {\n initial?: Partial<SiteMemory>\n onTrace?: (input: TraceInput) => void\n}\n\nexport interface ProvideForPageInput {\n path: string\n payload: Record<string, unknown>\n}\n\nconst cloneSiteMemory = (memory: SiteMemory): SiteMemory =>\n // Round-trip via the schema so callers always receive a validated, defaulted snapshot.\n SiteMemorySchema.parse(JSON.parse(JSON.stringify(memory)))\n\nconst stamp = (memory: SiteMemory): SiteMemory => ({\n ...memory,\n updatedAt: new Date().toISOString(),\n})\n\nexport type SiteMemoryListener = (snapshot: SiteMemory) => void\n\nexport const createSiteMemoryStore = (options: SiteMemoryStoreOptions = {}) => {\n let state: SiteMemory = SiteMemorySchema.parse({\n ...SITE_MEMORY_DEFAULT,\n ...(options.initial ?? {}),\n })\n let cachedSnapshot: SiteMemory | null = null\n const listeners = new Set<SiteMemoryListener>()\n const emit = (input: TraceInput) => {\n options.onTrace?.(input)\n }\n const invalidate = () => {\n cachedSnapshot = null\n }\n const notify = () => {\n if (listeners.size === 0) return\n const snap = cloneSiteMemory(state)\n cachedSnapshot = snap\n listeners.forEach((listener) => listener(snap))\n }\n\n const provide = (next: Partial<SiteMemory>): SiteMemory => {\n const merged = SiteMemorySchema.parse({\n ...state,\n ...next,\n // Workflows/policies/uiGuidance/pageContexts merge by key so partial provides do not nuke siblings.\n workflows: { ...state.workflows, ...(next.workflows ?? {}) },\n policies: { ...state.policies, ...(next.policies ?? {}) },\n uiGuidance: { ...state.uiGuidance, ...(next.uiGuidance ?? {}) },\n pageContexts: { ...state.pageContexts, ...(next.pageContexts ?? {}) },\n })\n state = stamp(merged)\n invalidate()\n emit({\n type: 'memory.updated',\n metadata: { kind: 'site', operation: 'provide', keys: Object.keys(next) },\n })\n notify()\n return snapshot()\n }\n\n const update = (path: string, value: unknown): SiteMemory => {\n const parts = path.split('.').filter(Boolean)\n if (parts.length === 0) {\n throw new Error('siteMemory.update() requires a non-empty dot-path.')\n }\n const next = JSON.parse(JSON.stringify(state)) as Record<string, unknown>\n let cursor: Record<string, unknown> = next\n for (let i = 0; i < parts.length - 1; i++) {\n const key = parts[i]!\n const existing = cursor[key]\n if (typeof existing !== 'object' || existing === null || Array.isArray(existing)) {\n cursor[key] = {}\n }\n cursor = cursor[key] as Record<string, unknown>\n }\n cursor[parts[parts.length - 1]!] = value\n state = stamp(SiteMemorySchema.parse(next))\n invalidate()\n emit({ type: 'memory.updated', metadata: { kind: 'site', operation: 'update', path } })\n notify()\n return snapshot()\n }\n\n const provideForPage = (input: ProvideForPageInput): SiteMemoryPageContext => {\n const context = SiteMemoryPageContext.parse({\n path: input.path,\n payload: input.payload,\n updatedAt: new Date().toISOString(),\n })\n state = stamp({\n ...state,\n pageContexts: { ...state.pageContexts, [input.path]: context },\n })\n invalidate()\n emit({\n type: 'memory.updated',\n metadata: { kind: 'site', operation: 'provideForPage', path: input.path },\n })\n notify()\n return { ...context, payload: { ...context.payload } }\n }\n\n const snapshot = (): SiteMemory => {\n if (!cachedSnapshot) cachedSnapshot = cloneSiteMemory(state)\n return cachedSnapshot\n }\n\n const get = (path?: string): unknown => {\n emit({\n type: 'memory.accessed',\n metadata: { kind: 'site', operation: path ? 'get' : 'snapshot', path: path ?? null },\n })\n if (!path) return cloneSiteMemory(state)\n const parts = path.split('.').filter(Boolean)\n let cursor: unknown = state\n for (const key of parts) {\n if (typeof cursor !== 'object' || cursor === null) return undefined\n cursor = (cursor as Record<string, unknown>)[key]\n }\n return cursor\n }\n\n const getForPage = (path: string): SiteMemoryPageContext | null => {\n emit({\n type: 'memory.accessed',\n metadata: { kind: 'site', operation: 'getForPage', path },\n })\n const found = state.pageContexts[path]\n return found ? { ...found, payload: { ...found.payload } } : null\n }\n\n const replace = (next: SiteMemory): SiteMemory => {\n state = stamp(SiteMemorySchema.parse(next))\n invalidate()\n notify()\n return snapshot()\n }\n\n const subscribe = (listener: SiteMemoryListener): (() => void) => {\n listeners.add(listener)\n return () => {\n listeners.delete(listener)\n }\n }\n\n return { provide, update, provideForPage, snapshot, get, getForPage, replace, subscribe }\n}\n\nexport type SiteMemoryStore = ReturnType<typeof createSiteMemoryStore>\n","import { SiteMemory as SiteMemorySchema, type SiteMemory } from '@agentronics/protocol'\n\nexport interface MemoryCacheOptions {\n gatewayUrl: string\n siteId: string\n publishableKey: string\n fetcher?: typeof fetch\n}\n\nexport interface MemoryCacheSnapshot {\n memory: SiteMemory | null\n etag: string | null\n}\n\nexport const createMemoryCache = ({\n gatewayUrl,\n siteId,\n publishableKey,\n fetcher = fetch,\n}: MemoryCacheOptions) => {\n let snapshot: MemoryCacheSnapshot = { memory: null, etag: null }\n\n return {\n snapshot(): MemoryCacheSnapshot {\n return {\n memory: snapshot.memory ? SiteMemorySchema.parse(snapshot.memory) : null,\n etag: snapshot.etag,\n }\n },\n\n async sync(): Promise<MemoryCacheSnapshot> {\n const response = await fetcher(\n `${gatewayUrl.replace(/\\/$/, '')}/v1/sites/${encodeURIComponent(siteId)}/memory`,\n {\n headers: {\n authorization: `Bearer ${publishableKey}`,\n ...(snapshot.etag ? { 'if-none-match': snapshot.etag } : {}),\n },\n }\n )\n if (response.status === 304) return this.snapshot()\n if (!response.ok) throw new Error(`Memory sync failed with status ${response.status}.`)\n\n const body = (await response.json()) as { memory?: unknown }\n const memory = SiteMemorySchema.parse(body.memory ?? {})\n snapshot = {\n memory,\n etag: response.headers.get('etag'),\n }\n return this.snapshot()\n },\n }\n}\n\nexport type MemoryCache = ReturnType<typeof createMemoryCache>\n","import type { SiteMemory } from '@agentronics/protocol'\n\nconst META_PREFIX = 'agent-context-'\nconst JSONLD_ID = 'agentronics-site-context'\n\nexport interface MetaTagsOptions {\n doc?: Document\n snapshot: SiteMemory\n schemaType?: string\n}\n\nconst safeJson = (value: unknown): string => {\n try {\n return JSON.stringify(value)\n } catch {\n return '{}'\n }\n}\n\nconst setMeta = (doc: Document, name: string, content: string) => {\n let tag = doc.querySelector<HTMLMetaElement>(`meta[name=\"${name}\"]`)\n if (!tag) {\n tag = doc.createElement('meta')\n tag.setAttribute('name', name)\n doc.head.appendChild(tag)\n }\n tag.setAttribute('content', content)\n}\n\nconst removeByName = (doc: Document, name: string) => {\n doc.querySelectorAll(`meta[name=\"${name}\"]`).forEach((node) => node.remove())\n}\n\nexport const installMetaTags = ({\n doc = typeof document === 'undefined' ? (null as unknown as Document) : document,\n snapshot,\n schemaType = 'WebSite',\n}: MetaTagsOptions): { uninstall: () => void } => {\n if (!doc) return { uninstall: () => {} }\n\n setMeta(doc, `${META_PREFIX}version`, snapshot.version)\n setMeta(doc, `${META_PREFIX}updated-at`, snapshot.updatedAt ?? new Date().toISOString())\n if (snapshot.siteMap?.navigation?.flow) {\n setMeta(doc, `${META_PREFIX}flow`, snapshot.siteMap.navigation.flow)\n }\n setMeta(doc, `${META_PREFIX}workflows`, Object.keys(snapshot.workflows).join(','))\n\n let script = doc.getElementById(JSONLD_ID) as HTMLScriptElement | null\n if (!script) {\n script = doc.createElement('script')\n script.type = 'application/ld+json'\n script.id = JSONLD_ID\n doc.head.appendChild(script)\n }\n script.textContent = safeJson({\n '@context': 'https://schema.org',\n '@type': schemaType,\n name: 'Agentronics Site Memory',\n agentronics: snapshot,\n })\n\n return {\n uninstall: () => {\n removeByName(doc, `${META_PREFIX}version`)\n removeByName(doc, `${META_PREFIX}updated-at`)\n removeByName(doc, `${META_PREFIX}flow`)\n removeByName(doc, `${META_PREFIX}workflows`)\n doc.getElementById(JSONLD_ID)?.remove()\n },\n }\n}\n","import type { SiteMemory } from '@agentronics/protocol'\n\nconst OVERLAY_ID = 'agentronics-memory-overlay'\n\nexport interface MemoryOverlayOptions {\n doc?: Document\n snapshot: SiteMemory\n hidden?: boolean\n}\n\nconst styles = (hidden: boolean): string => `\nposition: fixed;\nbottom: 16px;\nright: 16px;\nmax-width: 320px;\npadding: 10px 12px;\nbackground: rgba(17, 24, 39, 0.92);\ncolor: #f9fafb;\nfont: 12px/1.45 ui-monospace, SFMono-Regular, Menlo, monospace;\nborder-radius: 8px;\nz-index: 2147483647;\nopacity: ${hidden ? '0' : '1'};\npointer-events: ${hidden ? 'none' : 'auto'};\nbox-shadow: 0 12px 32px rgba(15, 23, 42, 0.35);\n`\n\nconst summarize = (snapshot: SiteMemory): string => {\n const pages = snapshot.siteMap?.pages?.length ?? 0\n const workflows = Object.keys(snapshot.workflows).length\n const ui = Object.keys(snapshot.uiGuidance).length\n return `Agentronics site memory · pages:${pages} · workflows:${workflows} · ui-hints:${ui}`\n}\n\nexport const installMemoryOverlay = ({\n doc = typeof document === 'undefined' ? (null as unknown as Document) : document,\n snapshot,\n hidden = false,\n}: MemoryOverlayOptions): { uninstall: () => void; refresh: (next: SiteMemory) => void } => {\n if (!doc) return { uninstall: () => {}, refresh: () => {} }\n\n let host = doc.getElementById(OVERLAY_ID) as HTMLDivElement | null\n if (!host) {\n host = doc.createElement('div')\n host.id = OVERLAY_ID\n host.setAttribute('role', 'note')\n host.setAttribute('aria-label', 'Agentronics site memory summary')\n host.setAttribute('data-agent-context', 'overlay')\n doc.body.appendChild(host)\n }\n host.setAttribute('style', styles(hidden))\n host.textContent = summarize(snapshot)\n\n return {\n uninstall: () => {\n host?.remove()\n },\n refresh: (next: SiteMemory) => {\n if (!host) return\n host.textContent = summarize(next)\n },\n }\n}\n","import { SiteMemory as SiteMemorySchema, type SiteMemory } from '@agentronics/protocol'\n\nexport const WELL_KNOWN_PATH = '/.well-known/agent-context.json'\n\nexport interface WellKnownClientOptions {\n origin?: string\n fetcher?: typeof fetch\n signal?: AbortSignal\n}\n\nexport const fetchWellKnownContext = async ({\n origin,\n fetcher = fetch,\n signal,\n}: WellKnownClientOptions = {}): Promise<SiteMemory | null> => {\n const target =\n (origin ? origin.replace(/\\/$/, '') : typeof window !== 'undefined' ? window.location.origin : '') +\n WELL_KNOWN_PATH\n if (!target.startsWith('http')) {\n return null\n }\n const fetchInit: RequestInit = { headers: { accept: 'application/json' } }\n if (signal !== undefined) fetchInit.signal = signal\n const response = await fetcher(target, fetchInit)\n if (!response.ok) {\n if (response.status === 404) return null\n throw new Error(`well-known agent-context fetch failed with status ${response.status}.`)\n }\n const payload = (await response.json()) as unknown\n return SiteMemorySchema.parse(payload)\n}\n\nexport interface ServeWellKnownOptions {\n snapshot: SiteMemory\n}\n\n/**\n * Returns a JSON string suitable for /.well-known/agent-context.json. Hosts proxy this\n * through their CDN/edge so any agent can fetch it with no SDK installed.\n */\nexport const serializeWellKnownContext = ({ snapshot }: ServeWellKnownOptions): string =>\n JSON.stringify(SiteMemorySchema.parse(snapshot))\n","import type { AgentIdentity, PolicyEvaluation, PolicyRule } from '@agentronics/protocol'\nimport type { TraceInput } from '../observability/tracer.js'\n\nexport interface GovernedTool<Input = unknown, Output = unknown> {\n name: string\n version?: string\n group?: string\n description?: string\n inputSchema?: Record<string, unknown>\n stage?: string\n authz?: Omit<PolicyRule, 'id' | 'tool'>\n rateLimit?: PolicyRule['rateLimit']\n execute: (input: Input, context: { identity: AgentIdentity | null }) => Promise<Output> | Output\n}\n\nexport interface ToolRegistryOptions {\n evaluate: (tool: string, options?: { identity?: AgentIdentity | null }) => Promise<PolicyEvaluation>\n setPolicies?: (rules: PolicyRule[]) => void\n listPolicies?: () => PolicyRule[]\n onTrace?: (input: TraceInput) => void\n}\n\nexport interface ToolRegistry {\n register(tool: GovernedTool): () => void\n unregister(name: string): void\n enable(name: string): void\n disable(name: string): void\n isEnabled(name: string): boolean\n list(options?: { includeDisabled?: boolean }): GovernedTool[]\n get(name: string): GovernedTool | undefined\n execute<Input, Output>(\n name: string,\n input: Input,\n identity?: AgentIdentity | null\n ): Promise<Output>\n}\n\nexport const createToolRegistry = ({\n evaluate,\n setPolicies,\n listPolicies,\n onTrace,\n}: ToolRegistryOptions): ToolRegistry => {\n const tools = new Map<string, GovernedTool>()\n const disabled = new Set<string>()\n\n const writePolicyFor = (tool: GovernedTool) => {\n if (!tool.authz || !setPolicies || !listPolicies) return\n const rule: PolicyRule = {\n id: `tool:${tool.name}`,\n tool: tool.name,\n ...tool.authz,\n rateLimit: tool.rateLimit ?? tool.authz.rateLimit,\n }\n setPolicies([...listPolicies().filter((item) => item.id !== rule.id), rule])\n }\n\n return {\n register(tool) {\n tools.set(tool.name, tool)\n disabled.delete(tool.name)\n writePolicyFor(tool)\n onTrace?.({\n type: 'tool.registered',\n tool: tool.name,\n metadata: {\n version: tool.version ?? null,\n group: tool.group ?? null,\n stage: tool.stage ?? null,\n },\n })\n return () => {\n tools.delete(tool.name)\n disabled.delete(tool.name)\n }\n },\n unregister(name) {\n tools.delete(name)\n disabled.delete(name)\n },\n enable(name) {\n if (!tools.has(name) || !disabled.has(name)) return\n disabled.delete(name)\n onTrace?.({\n type: 'tool.surfaced',\n tool: name,\n metadata: { state: 'enabled' },\n })\n },\n disable(name) {\n if (!tools.has(name) || disabled.has(name)) return\n disabled.add(name)\n onTrace?.({\n type: 'tool.surfaced',\n tool: name,\n metadata: { state: 'disabled' },\n })\n },\n isEnabled: (name) => tools.has(name) && !disabled.has(name),\n list({ includeDisabled = false } = {}) {\n const all = [...tools.values()]\n return includeDisabled ? all : all.filter((tool) => !disabled.has(tool.name))\n },\n get: (name) => tools.get(name),\n async execute<Input, Output>(\n name: string,\n input: Input,\n identity: AgentIdentity | null = null\n ): Promise<Output> {\n const tool = tools.get(name) as GovernedTool<Input, Output> | undefined\n if (!tool) throw new Error(`Tool \"${name}\" is not registered.`)\n if (disabled.has(name)) {\n const policy: PolicyEvaluation = {\n decision: 'deny',\n ruleId: `tool:${name}`,\n reason: 'Tool is disabled.',\n }\n onTrace?.({ type: 'tool.executed', tool: name, agent: identity, policy, outcome: 'blocked' })\n throw new Error(policy.reason)\n }\n const policy = await evaluate(name, { identity })\n if (policy.decision === 'deny') {\n onTrace?.({ type: 'tool.executed', tool: name, agent: identity, policy, outcome: 'blocked' })\n throw new Error(policy.reason)\n }\n const output = await tool.execute(input, { identity })\n onTrace?.({ type: 'tool.executed', tool: name, agent: identity, policy, outcome: 'success' })\n return output\n },\n }\n}\n","import type { TraceInput } from '../observability/tracer.js'\n\nexport interface ProgressionTransition {\n on: string\n to: string\n}\n\nexport interface ProgressionStage {\n name: string\n enables?: string[]\n transitions?: ProgressionTransition[]\n}\n\nexport interface ProgressionConfig {\n initial: string\n stages: ProgressionStage[]\n}\n\nexport interface ProgressionStore {\n current(): string\n enabledStages(): string[]\n notify(toolName: string): { changed: boolean; from: string; to: string }\n set(stage: string): { changed: boolean; from: string; to: string }\n reset(): void\n snapshot(): { current: string; enabled: string[] }\n}\n\nexport const createProgressionStore = (\n config: ProgressionConfig,\n options: { onTrace?: (input: TraceInput) => void } = {}\n): ProgressionStore => {\n const stageMap = new Map<string, ProgressionStage>()\n for (const stage of config.stages) stageMap.set(stage.name, stage)\n if (!stageMap.has(config.initial)) {\n throw new Error(`Initial stage \"${config.initial}\" is not declared in progression stages.`)\n }\n\n let current = config.initial\n\n const enabled = (): string[] => {\n const stage = stageMap.get(current)\n return stage?.enables ? [current, ...stage.enables] : [current]\n }\n\n const transitionTo = (next: string, trigger: string): { changed: boolean; from: string; to: string } => {\n const from = current\n if (!stageMap.has(next)) {\n throw new Error(`Cannot transition to unknown stage \"${next}\".`)\n }\n if (next === current) return { changed: false, from, to: next }\n current = next\n options.onTrace?.({\n type: 'tool.progressed',\n metadata: { from, to: next, trigger },\n })\n return { changed: true, from, to: next }\n }\n\n return {\n current: () => current,\n enabledStages: () => enabled(),\n notify(toolName) {\n const stage = stageMap.get(current)\n const transition = stage?.transitions?.find((t) => t.on === toolName)\n if (!transition) return { changed: false, from: current, to: current }\n return transitionTo(transition.to, toolName)\n },\n set(stage) {\n return transitionTo(stage, 'manual')\n },\n reset() {\n const previous = current\n current = config.initial\n if (previous !== current) {\n options.onTrace?.({\n type: 'tool.progressed',\n metadata: { from: previous, to: current, trigger: 'reset' },\n })\n }\n },\n snapshot: () => ({ current, enabled: enabled() }),\n }\n}\n","import type { AgentIdentity, TrustLevel } from '@agentronics/protocol'\nimport { TRUST_RANK } from '@agentronics/protocol'\nimport type { GovernedTool } from './registry.js'\n\nexport interface SurfacingContext {\n identity: AgentIdentity | null\n stage?: string | null\n enabledStages?: string[]\n}\n\nexport interface SurfacingDecision {\n tool: GovernedTool\n visible: boolean\n reason: string\n}\n\nconst passesTrust = (tool: GovernedTool, identity: AgentIdentity | null): { ok: boolean; reason: string } => {\n const minTrust = tool.authz?.minTrust as TrustLevel | undefined\n if (!minTrust) return { ok: true, reason: 'no-trust-floor' }\n if (!identity) return { ok: false, reason: `requires-trust:${minTrust}` }\n if (TRUST_RANK[identity.trust] < TRUST_RANK[minTrust]) {\n return { ok: false, reason: `trust-too-low:${identity.trust}<${minTrust}` }\n }\n return { ok: true, reason: 'trust-ok' }\n}\n\nconst passesClass = (tool: GovernedTool, identity: AgentIdentity | null): { ok: boolean; reason: string } => {\n const allowed = tool.authz?.allowedClasses ?? []\n if (allowed.length === 0) return { ok: true, reason: 'no-class-restriction' }\n if (!identity) return { ok: false, reason: `requires-class:${allowed.join('|')}` }\n if (!allowed.includes(identity.class)) {\n return { ok: false, reason: `class-not-allowed:${identity.class}` }\n }\n return { ok: true, reason: 'class-ok' }\n}\n\nconst passesStage = (tool: GovernedTool, context: SurfacingContext): { ok: boolean; reason: string } => {\n if (!tool.stage) return { ok: true, reason: 'no-stage' }\n if (context.enabledStages && context.enabledStages.includes(tool.stage)) {\n return { ok: true, reason: `stage-enabled:${tool.stage}` }\n }\n if (context.stage === tool.stage) return { ok: true, reason: `stage-active:${tool.stage}` }\n return { ok: false, reason: `stage-locked:${tool.stage}` }\n}\n\nexport const decideSurfacing = (\n tool: GovernedTool,\n context: SurfacingContext\n): SurfacingDecision => {\n const trust = passesTrust(tool, context.identity)\n if (!trust.ok) return { tool, visible: false, reason: trust.reason }\n const cls = passesClass(tool, context.identity)\n if (!cls.ok) return { tool, visible: false, reason: cls.reason }\n const stage = passesStage(tool, context)\n if (!stage.ok) return { tool, visible: false, reason: stage.reason }\n if (tool.authz?.decision === 'deny') {\n return { tool, visible: false, reason: 'authz-deny' }\n }\n return { tool, visible: true, reason: 'visible' }\n}\n\nexport const surfaceTools = (\n tools: GovernedTool[],\n context: SurfacingContext\n): GovernedTool[] => tools.filter((tool) => decideSurfacing(tool, context).visible)\n\nexport const explainSurfacing = (\n tools: GovernedTool[],\n context: SurfacingContext\n): SurfacingDecision[] => tools.map((tool) => decideSurfacing(tool, context))\n","import type { GovernedTool } from './registry.js'\n\nexport const DEFAULT_GROUP = 'default'\n\nexport interface ToolGroupSummary {\n name: string\n tools: GovernedTool[]\n}\n\nexport const groupTools = (tools: GovernedTool[]): ToolGroupSummary[] => {\n const map = new Map<string, GovernedTool[]>()\n for (const tool of tools) {\n const key = tool.group ?? DEFAULT_GROUP\n const bucket = map.get(key) ?? []\n bucket.push(tool)\n map.set(key, bucket)\n }\n return [...map.entries()]\n .sort(([a], [b]) => a.localeCompare(b))\n .map(([name, list]) => ({ name, tools: list }))\n}\n\nexport const listGroupNames = (tools: GovernedTool[]): string[] =>\n [...new Set(tools.map((tool) => tool.group ?? DEFAULT_GROUP))].sort()\n","import type { GovernedTool } from './registry.js'\n\nconst APPROX_CHARS_PER_TOKEN = 4\n\nconst stableStringify = (value: unknown): string => {\n if (value === null || typeof value !== 'object') return JSON.stringify(value)\n if (Array.isArray(value)) return `[${value.map(stableStringify).join(',')}]`\n const keys = Object.keys(value as Record<string, unknown>).sort()\n return `{${keys\n .map((key) => `${JSON.stringify(key)}:${stableStringify((value as Record<string, unknown>)[key])}`)\n .join(',')}}`\n}\n\nexport interface ToolTokenEstimate {\n name: string\n characters: number\n tokens: number\n}\n\nexport interface TokenBudgetReport {\n total: number\n perTool: ToolTokenEstimate[]\n}\n\nexport const estimateToolTokens = (tool: GovernedTool): ToolTokenEstimate => {\n const descriptor = {\n name: tool.name,\n version: tool.version ?? null,\n group: tool.group ?? null,\n description: tool.description ?? null,\n inputSchema: tool.inputSchema ?? null,\n authz: tool.authz ?? null,\n rateLimit: tool.rateLimit ?? null,\n }\n const characters = stableStringify(descriptor).length\n return { name: tool.name, characters, tokens: Math.ceil(characters / APPROX_CHARS_PER_TOKEN) }\n}\n\nexport const estimateBudget = (tools: GovernedTool[]): TokenBudgetReport => {\n const perTool = tools.map(estimateToolTokens)\n const total = perTool.reduce((sum, entry) => sum + entry.tokens, 0)\n return { total, perTool }\n}\n","import type { GovernedTool } from './registry.js'\n\nexport interface WebMcpToolDescriptor {\n name: string\n description?: string\n inputSchema?: Record<string, unknown>\n invoke(input?: unknown): Promise<unknown>\n}\n\nexport interface WebMcpProvider {\n provideContext(payload: { tools: WebMcpToolDescriptor[] }): { revoke: () => void }\n}\n\nexport interface WebMcpAdapterOptions {\n provider?: WebMcpProvider\n doc?: { defaultView?: WindowLike | null } | null\n invoke?: (tool: GovernedTool, input: unknown) => Promise<unknown>\n}\n\ninterface WindowLike {\n navigator?: { modelContext?: WebMcpProvider }\n}\n\nconst resolveProvider = (options: WebMcpAdapterOptions): WebMcpProvider | null => {\n if (options.provider) return options.provider\n const win = options.doc?.defaultView ?? (typeof globalThis !== 'undefined' ? (globalThis as WindowLike) : null)\n return win?.navigator?.modelContext ?? null\n}\n\nconst toDescriptor = (\n tool: GovernedTool,\n invoke: (tool: GovernedTool, input: unknown) => Promise<unknown>\n): WebMcpToolDescriptor => {\n const descriptor: WebMcpToolDescriptor = {\n name: tool.name,\n invoke: (input) => invoke(tool, input),\n }\n if (tool.description !== undefined) descriptor.description = tool.description\n if (tool.inputSchema !== undefined) descriptor.inputSchema = tool.inputSchema\n return descriptor\n}\n\nexport interface WebMcpAdapter {\n publish(tools: GovernedTool[]): { revoked: boolean }\n revoke(): void\n available(): boolean\n}\n\nexport const createWebMcpAdapter = (options: WebMcpAdapterOptions = {}): WebMcpAdapter => {\n const invoke = options.invoke ?? (async (tool, input) => tool.execute(input as never, { identity: null }))\n let handle: { revoke: () => void } | null = null\n\n return {\n publish(tools) {\n const provider = resolveProvider(options)\n if (!provider) return { revoked: false }\n handle?.revoke()\n handle = provider.provideContext({ tools: tools.map((tool) => toDescriptor(tool, invoke)) })\n return { revoked: true }\n },\n revoke() {\n handle?.revoke()\n handle = null\n },\n available: () => Boolean(resolveProvider(options)),\n }\n}\n","import type { TraceEvent as TraceEventRecord } from '@agentronics/protocol'\n\nexport interface TraceBuffer {\n add(event: TraceEventRecord): void\n list(): TraceEventRecord[]\n clear(): void\n}\n\nexport const createTraceBuffer = (limit = 500): TraceBuffer => {\n const events: TraceEventRecord[] = []\n\n return {\n add(event) {\n events.push(event)\n if (events.length > limit) events.splice(0, events.length - limit)\n },\n list() {\n return [...events]\n },\n clear() {\n events.length = 0\n },\n }\n}\n","import type { TraceEvent as TraceEventRecord } from '@agentronics/protocol'\n\nexport interface SamplerOptions {\n traceRate?: number\n errorRate?: number\n random?: () => number\n}\n\nconst clampRate = (value: number | undefined, fallback: number): number => {\n if (value === undefined) return fallback\n return Math.max(0, Math.min(1, value))\n}\n\nexport const createSampler = (options: SamplerOptions = {}) => {\n const traceRate = clampRate(options.traceRate, 1)\n const errorRate = clampRate(options.errorRate, 1)\n const random = options.random ?? Math.random\n\n return {\n shouldKeep(event: Pick<TraceEventRecord, 'outcome'>): boolean {\n const rate = event.outcome === 'error' ? errorRate : traceRate\n return random() < rate\n },\n }\n}\n\nexport type TraceSampler = ReturnType<typeof createSampler>\n","const REDACTED = '[REDACTED]'\n\nconst cloneJson = (value: unknown): unknown => {\n if (value === undefined) return undefined\n return JSON.parse(JSON.stringify(value)) as unknown\n}\n\nconst redactPath = (target: unknown, parts: string[]): void => {\n if (parts.length === 0 || typeof target !== 'object' || target === null) return\n const [head, ...rest] = parts\n if (!head) return\n\n if (Array.isArray(target)) {\n for (const item of target) redactPath(item, parts)\n return\n }\n\n const record = target as Record<string, unknown>\n if (!(head in record)) return\n if (rest.length === 0) {\n record[head] = REDACTED\n return\n }\n redactPath(record[head], rest)\n}\n\nexport const scrubValue = <T>(value: T, paths: string[] = []): T => {\n if (paths.length === 0) return value\n const cloned = cloneJson(value) as T\n for (const path of paths) redactPath(cloned, path.split('.').filter(Boolean))\n return cloned\n}\n\nexport const DEFAULT_SCRUB_PATHS = [\n 'metadata.password',\n 'metadata.token',\n 'metadata.authorization',\n 'metadata.cookie',\n]\n","import {\n TraceEvent,\n type TraceEvent as TraceEventRecord,\n type TraceEventType,\n} from '@agentronics/protocol'\nimport { createTraceBuffer, type TraceBuffer } from './buffer.js'\nimport { createSampler, type SamplerOptions } from './sampler.js'\nimport { DEFAULT_SCRUB_PATHS, scrubValue } from './scrub.js'\n\nexport interface TraceExporter {\n name: string\n export(events: TraceEventRecord[]): Promise<void> | void\n}\n\nexport interface TraceInput {\n type: TraceEventType\n outcome?: TraceEventRecord['outcome']\n tool?: string\n agent?: TraceEventRecord['agent']\n policy?: TraceEventRecord['policy']\n durationMs?: number\n error?: string\n metadata?: Record<string, unknown>\n}\n\nexport interface TracerOptions extends SamplerOptions {\n siteId: string\n bufferSize?: number\n sessionId?: string\n scrubPaths?: string[]\n exporters?: TraceExporter[]\n onExporterError?: (error: unknown, exporter: TraceExporter, event: TraceEventRecord) => void\n}\n\nexport interface Tracer {\n readonly sessionId: string\n emit(input: TraceInput): Promise<TraceEventRecord | null>\n list(): TraceEventRecord[]\n clear(): void\n}\n\nconst randomId = (prefix: string): string => {\n const cryptoApi = globalThis.crypto\n if (cryptoApi && 'randomUUID' in cryptoApi) return `${prefix}_${cryptoApi.randomUUID()}`\n return `${prefix}_${Date.now().toString(36)}_${Math.random().toString(36).slice(2)}`\n}\n\nexport const createTracer = ({\n siteId,\n bufferSize,\n sessionId = randomId('ses'),\n scrubPaths = DEFAULT_SCRUB_PATHS,\n exporters = [],\n onExporterError,\n ...samplerOptions\n}: TracerOptions): Tracer => {\n const buffer: TraceBuffer = createTraceBuffer(bufferSize)\n const sampler = createSampler(samplerOptions)\n\n return {\n sessionId,\n async emit(input) {\n const event = TraceEvent.parse(\n scrubValue(\n {\n id: randomId('trc'),\n siteId,\n sessionId,\n occurredAt: new Date().toISOString(),\n outcome: input.outcome ?? 'success',\n metadata: {},\n ...input,\n },\n scrubPaths\n )\n )\n\n if (!sampler.shouldKeep(event)) return null\n buffer.add(event)\n\n await Promise.all(\n exporters.map(async (exporter) => {\n try {\n await exporter.export([event])\n } catch (error) {\n onExporterError?.(error, exporter, event)\n }\n })\n )\n\n return event\n },\n list: () => buffer.list(),\n clear: () => buffer.clear(),\n }\n}\n","import type { TraceEvent as TraceEventRecord } from '@agentronics/protocol'\nimport type { TraceExporter } from '../tracer.js'\n\nexport const createConsoleExporter = (): TraceExporter => ({\n name: 'console',\n export(events: TraceEventRecord[]) {\n for (const event of events) {\n console.info('[agentronics:trace]', event.type, event)\n }\n },\n})\n","import type { TraceBatch, TraceEvent as TraceEventRecord } from '@agentronics/protocol'\nimport type { TraceExporter } from '../tracer.js'\n\nexport interface GatewayExporterOptions {\n gatewayUrl: string\n publishableKey: string\n fetcher?: typeof fetch\n}\n\nexport const createGatewayExporter = ({\n gatewayUrl,\n publishableKey,\n fetcher = fetch,\n}: GatewayExporterOptions): TraceExporter => ({\n name: 'gateway',\n async export(events: TraceEventRecord[]) {\n const batch: TraceBatch = { publishableKey, events }\n await fetcher(`${gatewayUrl.replace(/\\/$/, '')}/v1/traces`, {\n method: 'POST',\n headers: {\n 'content-type': 'application/json',\n authorization: `Bearer ${publishableKey}`,\n },\n body: JSON.stringify(batch),\n })\n },\n})\n","import type { TraceEvent as TraceEventRecord } from '@agentronics/protocol'\nimport type { TraceExporter } from '../tracer.js'\n\nexport interface WebhookExporterOptions {\n url: string\n fetcher?: typeof fetch\n maxRetries?: number\n queueLimit?: number\n}\n\nconst sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms))\n\nexport const createWebhookExporter = ({\n url,\n fetcher = fetch,\n maxRetries = 2,\n queueLimit = 500,\n}: WebhookExporterOptions): TraceExporter => ({\n name: 'webhook',\n async export(events: TraceEventRecord[]) {\n const queued = readQueue(url)\n const batch = [...queued, ...events].slice(-queueLimit)\n let attempt = 0\n while (true) {\n const response = await fetcher(url, {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: JSON.stringify({ events: batch }),\n })\n if (response.ok) {\n writeQueue(url, [])\n return\n }\n if (attempt >= maxRetries) {\n writeQueue(url, batch)\n throw new Error(`Webhook exporter failed with status ${response.status}.`)\n }\n attempt += 1\n await sleep(100 * attempt)\n }\n },\n})\n\nconst queueKey = (url: string) => `agtx:webhook:${url}`\n\nconst readQueue = (url: string): TraceEventRecord[] => {\n if (typeof window === 'undefined' || !window.localStorage) return []\n try {\n const raw = window.localStorage.getItem(queueKey(url))\n return raw ? (JSON.parse(raw) as TraceEventRecord[]) : []\n } catch {\n return []\n }\n}\n\nconst writeQueue = (url: string, events: TraceEventRecord[]): void => {\n if (typeof window === 'undefined' || !window.localStorage) return\n try {\n if (events.length === 0) {\n window.localStorage.removeItem(queueKey(url))\n return\n }\n window.localStorage.setItem(queueKey(url), JSON.stringify(events))\n } catch {\n // If storage is unavailable, webhook export failure still surfaces via the thrown error.\n }\n}\n","import {\n AgentronicsError,\n classifyApiKey,\n PUBLISHABLE_KEY_PREFIX,\n type AgentIdentity,\n type PolicyEvaluation,\n type PolicyRule,\n type TraceEvent,\n} from '@agentronics/protocol'\nimport { detectAgent, type DetectAgentOptions } from './detection/index.js'\nimport {\n createIdentityStore,\n type PresentedIdentity,\n type PresentIdentityOptions,\n} from './auth/identity.js'\nimport { createAuthEngine, type AuthContext, type AuthEngine, type AuthInput } from './auth/engine.js'\nimport { createAgentContextStore, type AgentContextStore } from './auth/agentContext.js'\nimport { createPolicyEngine, type PolicyEngine } from './authz/engine.js'\nimport { createPolicyCache, type PolicyCache } from './authz/policyCache.js'\nimport { installDomEnforcer } from './authz/domEnforcer.js'\nimport { createMemoryStore, type MemoryStore } from './memory/store.js'\nimport {\n createSiteMemoryStore,\n type SiteMemoryStore,\n type ProvideForPageInput,\n} from './memory/siteMemory.js'\nimport { createMemoryCache, type MemoryCache } from './memory/memoryCache.js'\nimport {\n installMetaTags,\n installMemoryOverlay,\n fetchWellKnownContext,\n} from './memory/delivery/index.js'\nimport { createToolRegistry, type GovernedTool, type ToolRegistry } from './tools/registry.js'\nimport {\n createProgressionStore,\n type ProgressionConfig,\n type ProgressionStore,\n} from './tools/progression.js'\nimport { surfaceTools, explainSurfacing, type SurfacingDecision } from './tools/surfacing.js'\nimport { groupTools, type ToolGroupSummary } from './tools/groups.js'\nimport { estimateBudget, type TokenBudgetReport } from './tools/tokenEstimate.js'\nimport { createWebMcpAdapter, type WebMcpAdapter } from './tools/webmcpAdapter.js'\nimport type { SiteMemory } from '@agentronics/protocol'\nimport {\n createConsoleExporter,\n createGatewayExporter,\n createTracer,\n createWebhookExporter,\n type TraceExporter,\n type Tracer,\n} from './observability/index.js'\n\nexport interface InitOptions {\n publishableKey: string\n siteId?: string\n /**\n * Override the gateway URL the SDK calls. **Reserved for local development\n * only** — the only accepted values are `localhost` / `127.0.0.1` URLs (so\n * `pnpm dev` against a local gateway works). Any other value throws at\n * `init()` time.\n *\n * Production deployments must omit this option. The SDK is hard-coded to\n * call `https://gateway.agentronics.dev`. Custom backends are not\n * supported, by design — see the project README + LICENSE NOTICE.\n *\n * @internal — kept on the public type only so dev tooling type-checks.\n */\n gatewayUrl?: string\n debug?: boolean\n policies?: PolicyRule[]\n siteMemory?: Partial<SiteMemory>\n auth?: AuthContext\n progression?: ProgressionConfig\n tools?: GovernedTool[]\n trace?: {\n enabled?: boolean\n bufferSize?: number\n traceRate?: number\n errorRate?: number\n scrubPaths?: string[]\n exporters?: TraceExporter[]\n gateway?: boolean\n webhookUrl?: string\n }\n}\n\nexport interface AgentronicsClient {\n readonly publishableKey: string\n readonly siteId: string\n readonly gatewayUrl: string\n readonly debug: boolean\n readonly memory: MemoryStore\n readonly siteMemory: SiteMemoryStore\n readonly memoryCache: MemoryCache\n readonly tracer: Tracer\n readonly auth: AuthEngine\n readonly agentContext: AgentContextStore\n readonly authz: PolicyEngine\n readonly policyCache: PolicyCache\n readonly tools: ToolRegistry\n readonly progression: ProgressionStore | null\n readonly webmcp: WebMcpAdapter\n detect(options?: DetectAgentOptions): Promise<AgentIdentity | null>\n authenticate(input: AuthInput): Promise<AgentIdentity | null>\n presentIdentity(input: PresentIdentityOptions): PresentedIdentity\n clearIdentity(): void\n presentedIdentity(): PresentedIdentity | null\n setPolicies(rules: PolicyRule[]): void\n listPolicies(): PolicyRule[]\n evaluate(tool: string, options?: { identity?: AgentIdentity | null }): Promise<PolicyEvaluation>\n syncPolicies(): Promise<PolicyRule[]>\n syncSiteMemory(): Promise<SiteMemory | null>\n provideSiteMemory(memory: Partial<SiteMemory>): SiteMemory\n provideForPage(input: ProvideForPageInput): void\n installMemoryDelivery(options?: {\n metaTags?: boolean\n overlay?: boolean\n }): { uninstall: () => void }\n fetchWellKnown(origin?: string): Promise<SiteMemory | null>\n installDomEnforcer(): { uninstall: () => void }\n registerTool(tool: GovernedTool): () => void\n surfaceTools(options?: { identity?: AgentIdentity | null }): GovernedTool[]\n explainSurfacing(options?: { identity?: AgentIdentity | null }): SurfacingDecision[]\n groupedTools(options?: { identity?: AgentIdentity | null }): ToolGroupSummary[]\n estimateTokens(options?: { identity?: AgentIdentity | null }): TokenBudgetReport\n publishToWebMcp(options?: { identity?: AgentIdentity | null }): { revoked: boolean; surfaced: number }\n notifyToolInvoked(toolName: string): void\n traces(): TraceEvent[]\n clearTraces(): void\n /**\n * Sanity-check the publishable key + gateway URL. Hits `GET /v1/health` and\n * resolves to `{ ok: true, ... }` on 2xx, `{ ok: false, status, error }`\n * otherwise. Doesn't throw — designed for \"did my key wire up correctly?\"\n * UX without forcing the host page into a try/catch.\n */\n ping(): Promise<{ ok: true; status: number; body: unknown } | { ok: false; status: number; error: string }>\n}\n\nconst DEFAULT_GATEWAY_URL = 'https://gateway.agentronics.dev'\n\n/**\n * Lock the SDK to the canonical Agentronics gateway. The only override\n * accepted is a localhost / 127.0.0.1 URL — purely so contributors running\n * `pnpm dev` can hit a local gateway. Any other value (a competing host, a\n * proxy, an MITM target) throws synchronously, before any traces are\n * emitted.\n *\n * The Agentronics SDK is licensed under Apache 2.0 but is designed to\n * operate exclusively against the Agentronics service. Self-hosted /\n * third-party backends are not supported.\n */\nconst resolveGatewayUrl = (provided: string | undefined): string => {\n if (provided === undefined) return DEFAULT_GATEWAY_URL\n if (provided === DEFAULT_GATEWAY_URL) return provided\n let parsed: URL\n try {\n parsed = new URL(provided)\n } catch {\n throw new Error(\n `Agentronics SDK: \\`gatewayUrl\\` is not a valid URL: ${provided}`\n )\n }\n if (parsed.hostname === 'localhost' || parsed.hostname === '127.0.0.1') {\n return provided\n }\n throw new Error(\n `Agentronics SDK does not support custom gateway URLs. ` +\n `Omit \\`gatewayUrl\\` to use the canonical https://gateway.agentronics.dev. ` +\n `The only accepted override is a localhost / 127.0.0.1 URL for local development. ` +\n `Got: ${provided}`\n )\n}\n\nexport const init = (options: InitOptions): AgentronicsClient => {\n const {\n publishableKey,\n siteId = 'default',\n debug = false,\n policies = [],\n trace = {},\n } = options\n const gatewayUrl = resolveGatewayUrl(options.gatewayUrl)\n\n const kind = classifyApiKey(publishableKey)\n if (kind === 'secret') {\n throw new AgentronicsError(\n 'wrong_key_kind',\n 'A secret key was passed to Agentronics.init(). Browser code must use a publishable key (agtx_pk_*).'\n )\n }\n if (kind !== 'publishable') {\n throw new AgentronicsError(\n 'invalid_api_key',\n `Agentronics.init() expected a key starting with \"${PUBLISHABLE_KEY_PREFIX}\".`\n )\n }\n\n const traceEnabled = trace.enabled ?? true\n const exporters = [\n ...(debug ? [createConsoleExporter()] : []),\n ...(trace.gateway ? [createGatewayExporter({ gatewayUrl, publishableKey })] : []),\n ...(trace.webhookUrl ? [createWebhookExporter({ url: trace.webhookUrl })] : []),\n ...(trace.exporters ?? []),\n ]\n const tracerOptions: Parameters<typeof createTracer>[0] = {\n siteId,\n exporters: traceEnabled ? exporters : [],\n onExporterError: (error, exporter) => {\n if (debug) console.warn(`[agentronics] trace exporter \"${exporter.name}\" failed`, error)\n },\n }\n if (trace.bufferSize !== undefined) tracerOptions.bufferSize = trace.bufferSize\n if (trace.traceRate !== undefined) tracerOptions.traceRate = trace.traceRate\n if (trace.errorRate !== undefined) tracerOptions.errorRate = trace.errorRate\n if (trace.scrubPaths !== undefined) tracerOptions.scrubPaths = trace.scrubPaths\n const tracer = createTracer(tracerOptions)\n const emitTrace = (input: Parameters<Tracer['emit']>[0]) => {\n if (!traceEnabled) return\n void tracer.emit(input)\n }\n const identityStore = createIdentityStore()\n const authOptions: Parameters<typeof createAuthEngine>[0] = {\n onTrace: emitTrace,\n }\n if (options.auth !== undefined) authOptions.context = options.auth\n const auth = createAuthEngine(authOptions)\n const agentContext = createAgentContextStore()\n const policyEngine = createPolicyEngine(policies)\n const policyCache = createPolicyCache({ gatewayUrl, siteId, publishableKey })\n const memory = createMemoryStore({ onTrace: emitTrace })\n const siteMemoryOptions: Parameters<typeof createSiteMemoryStore>[0] = {\n onTrace: emitTrace,\n }\n if (options.siteMemory !== undefined) siteMemoryOptions.initial = options.siteMemory\n const siteMemory = createSiteMemoryStore(siteMemoryOptions)\n const memoryCache = createMemoryCache({ gatewayUrl, siteId, publishableKey })\n\n const detect = async (detectOptions?: DetectAgentOptions) => {\n const start = Date.now()\n const detected = await detectAgent(detectOptions)\n const identity = identityStore.preferOver(detected)\n if (traceEnabled) {\n await tracer.emit({\n type: identity ? 'agent.detected' : 'agent.missed',\n agent: identity,\n durationMs: Date.now() - start,\n metadata: {\n detectedClass: detected?.class ?? null,\n presented: identityStore.snapshot() !== null,\n },\n })\n }\n agentContext.set(identity, 'detect')\n return identity\n }\n const evaluate = async (tool: string, opts: { identity?: AgentIdentity | null } = {}) => {\n const start = Date.now()\n const identity = opts.identity !== undefined ? opts.identity : await detect()\n const policy = policyEngine.evaluate({ tool, identity })\n if (traceEnabled) {\n await tracer.emit({\n type: 'authz.evaluated',\n tool,\n agent: identity,\n policy,\n outcome: policy.decision === 'deny' ? 'blocked' : 'success',\n durationMs: Date.now() - start,\n })\n }\n return policy\n }\n const tools = createToolRegistry({\n evaluate,\n setPolicies: (rules) => policyEngine.set(rules),\n listPolicies: () => policyEngine.list(),\n onTrace: emitTrace,\n })\n for (const tool of options.tools ?? []) tools.register(tool)\n\n const progression = options.progression\n ? createProgressionStore(options.progression, { onTrace: emitTrace })\n : null\n\n const surfacingContext = (identity: AgentIdentity | null) => {\n const ctx: { identity: AgentIdentity | null; stage?: string; enabledStages?: string[] } = {\n identity,\n }\n if (progression) {\n ctx.stage = progression.current()\n ctx.enabledStages = progression.enabledStages()\n }\n return ctx\n }\n\n const surfaceFor = (identity: AgentIdentity | null) =>\n surfaceTools(tools.list(), surfacingContext(identity))\n\n const handleToolInvoked = (toolName: string) => {\n if (!progression) return\n const transition = progression.notify(toolName)\n if (transition.changed) webmcp.publish(surfaceFor(null))\n }\n\n const webmcp = createWebMcpAdapter({\n invoke: async (tool, input) => {\n const result = await tools.execute(tool.name, input, null)\n handleToolInvoked(tool.name)\n return result\n },\n })\n\n return Object.freeze({\n publishableKey,\n siteId,\n gatewayUrl,\n debug,\n memory,\n siteMemory,\n memoryCache,\n tracer,\n auth,\n agentContext,\n authz: policyEngine,\n policyCache,\n tools,\n progression,\n webmcp,\n detect,\n authenticate: async (input: AuthInput) => {\n const identity = await auth.authenticate(input)\n agentContext.set(identity, 'authenticate')\n return identity\n },\n presentIdentity: (input: PresentIdentityOptions) => {\n const presented = identityStore.present(input)\n emitTrace({\n type: 'auth.identity_presented',\n agent: presented.identity,\n metadata: { vendor: presented.identity.vendor, class: presented.identity.class },\n })\n agentContext.set(presented.identity, 'declare')\n return presented\n },\n clearIdentity: () => {\n identityStore.clear()\n emitTrace({ type: 'auth.identity_cleared' })\n agentContext.set(null, 'cleared')\n },\n presentedIdentity: () => identityStore.snapshot(),\n setPolicies: (rules: PolicyRule[]) => {\n policyEngine.set(rules)\n emitTrace({ type: 'authz.policies_set', metadata: { count: rules.length } })\n },\n listPolicies: () => policyEngine.list(),\n syncPolicies: async () => {\n const snapshot = await policyCache.sync()\n policyEngine.set(snapshot.policies)\n emitTrace({ type: 'authz.policies_set', metadata: { count: snapshot.policies.length, synced: true } })\n return snapshot.policies\n },\n syncSiteMemory: async () => {\n const snapshot = await memoryCache.sync()\n if (snapshot.memory) {\n siteMemory.replace(snapshot.memory)\n emitTrace({\n type: 'memory.updated',\n metadata: { kind: 'site', operation: 'sync', etag: snapshot.etag },\n })\n }\n return snapshot.memory\n },\n provideSiteMemory: (next: Partial<SiteMemory>) => siteMemory.provide(next),\n provideForPage: (input: ProvideForPageInput) => {\n siteMemory.provideForPage(input)\n },\n installMemoryDelivery: ({ metaTags = true, overlay = false } = {}) => {\n const handles: Array<{ uninstall: () => void }> = []\n if (metaTags) handles.push(installMetaTags({ snapshot: siteMemory.snapshot() }))\n if (overlay) handles.push(installMemoryOverlay({ snapshot: siteMemory.snapshot() }))\n return {\n uninstall: () => {\n handles.forEach((handle) => handle.uninstall())\n },\n }\n },\n fetchWellKnown: async (origin?: string) => {\n const wellKnownOptions: Parameters<typeof fetchWellKnownContext>[0] = {}\n if (origin !== undefined) wellKnownOptions.origin = origin\n const memorySnapshot = await fetchWellKnownContext(wellKnownOptions)\n if (memorySnapshot) {\n siteMemory.replace(memorySnapshot)\n emitTrace({\n type: 'memory.updated',\n metadata: { kind: 'site', operation: 'wellKnown', origin: origin ?? null },\n })\n }\n return memorySnapshot\n },\n installDomEnforcer: () =>\n installDomEnforcer({\n policyEngine,\n getIdentity: () => detect({ webmcp: { pollMs: 0 } }),\n }),\n registerTool: (tool: GovernedTool) => tools.register(tool),\n surfaceTools: ({ identity = null }: { identity?: AgentIdentity | null } = {}) => surfaceFor(identity),\n explainSurfacing: ({ identity = null }: { identity?: AgentIdentity | null } = {}) =>\n explainSurfacing(tools.list(), surfacingContext(identity)),\n groupedTools: ({ identity = null }: { identity?: AgentIdentity | null } = {}) => groupTools(surfaceFor(identity)),\n estimateTokens: ({ identity = null }: { identity?: AgentIdentity | null } = {}) => estimateBudget(surfaceFor(identity)),\n publishToWebMcp: ({ identity = null }: { identity?: AgentIdentity | null } = {}) => {\n const surfaced = surfaceFor(identity)\n const result = webmcp.publish(surfaced)\n surfaced.forEach((tool) => {\n emitTrace({\n type: 'tool.surfaced',\n tool: tool.name,\n metadata: { state: 'published', trust: identity?.trust ?? null, group: tool.group ?? null },\n })\n })\n return { revoked: result.revoked, surfaced: surfaced.length }\n },\n notifyToolInvoked: (toolName: string) => handleToolInvoked(toolName),\n evaluate,\n traces: () => tracer.list(),\n clearTraces: () => tracer.clear(),\n async ping() {\n try {\n const response = await fetch(`${gatewayUrl.replace(/\\/$/, '')}/v1/health`, {\n method: 'GET',\n headers: { authorization: `Bearer ${publishableKey}` },\n })\n if (!response.ok) {\n return { ok: false as const, status: response.status, error: `gateway returned ${response.status}` }\n }\n const body = (await response.json().catch(() => null)) ?? {}\n return { ok: true as const, status: response.status, body }\n } catch (error) {\n return {\n ok: false as const,\n status: 0,\n error: error instanceof Error ? error.message : String(error),\n }\n }\n },\n })\n}\n"]}
@@ -0,0 +1,3 @@
1
+ export { A as AgentronicsClient, I as InitOptions, ac as init } from './init-only-6SWFNqud.cjs';
2
+ import '@agentronics/protocol';
3
+ import './webmcp-C4ikhM4g.cjs';
@@ -0,0 +1,3 @@
1
+ export { A as AgentronicsClient, I as InitOptions, ac as init } from './init-only-DrZymcuA.js';
2
+ import '@agentronics/protocol';
3
+ import './webmcp-C4ikhM4g.js';