@jeffusion/bungee-core 5.26.0 → 6.0.2

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.
Files changed (71) hide show
  1. package/dist/config-storage-worker.js +455 -223
  2. package/dist/main.js +803 -437
  3. package/dist/observability-worker.js +0 -10
  4. package/dist/plugins/anthropic-request-sanitizer/index.js.map +2 -2
  5. package/dist/plugins/anthropic-request-sanitizer/manifest.json +1 -1
  6. package/dist/plugins/anthropic-tool-name-transformer/index.js.map +2 -2
  7. package/dist/plugins/anthropic-tool-name-transformer/manifest.json +1 -1
  8. package/dist/plugins/chatgpt-oauth/control.js.map +1 -1
  9. package/dist/plugins/chatgpt-oauth/index.js.map +2 -2
  10. package/dist/plugins/chatgpt-oauth/manifest.json +1 -1
  11. package/dist/plugins/codex-router/control.js.map +1 -1
  12. package/dist/plugins/codex-router/index.js +2 -2
  13. package/dist/plugins/codex-router/index.js.map +3 -3
  14. package/dist/plugins/codex-router/manifest.json +1 -1
  15. package/dist/plugins/deepseek-reasoning-fix/index.js.map +2 -2
  16. package/dist/plugins/deepseek-reasoning-fix/manifest.json +1 -1
  17. package/dist/plugins/key-access/control.js.map +1 -1
  18. package/dist/plugins/key-access/index.js.map +2 -2
  19. package/dist/plugins/key-access/ingress.js.map +1 -1
  20. package/dist/plugins/key-access/manifest.json +1 -1
  21. package/dist/plugins/key-rate-limit/index.js.map +2 -2
  22. package/dist/plugins/key-rate-limit/manifest.json +1 -1
  23. package/dist/plugins/llm-protocol-adapter/control.js +2 -2
  24. package/dist/plugins/llm-protocol-adapter/control.js.map +4 -4
  25. package/dist/plugins/llm-protocol-adapter/index.js +2 -2
  26. package/dist/plugins/llm-protocol-adapter/index.js.map +3 -3
  27. package/dist/plugins/llm-protocol-adapter/manifest.json +1 -1
  28. package/dist/plugins/model-mapping/index.js.map +2 -2
  29. package/dist/plugins/model-mapping/manifest.json +1 -1
  30. package/dist/plugins/models-dev/index.js.map +2 -2
  31. package/dist/plugins/models-dev/manifest.json +1 -1
  32. package/dist/plugins/signature-repair/index.js.map +2 -2
  33. package/dist/plugins/signature-repair/manifest.json +1 -1
  34. package/dist/plugins/token-budget/control.js.map +1 -1
  35. package/dist/plugins/token-budget/index.js.map +2 -2
  36. package/dist/plugins/token-budget/manifest.json +1 -1
  37. package/dist/plugins/token-metering/index.js.map +2 -2
  38. package/dist/plugins/token-metering/manifest.json +1 -1
  39. package/dist/plugins/token-stats/control.js.map +1 -1
  40. package/dist/plugins/token-stats/index.js.map +2 -2
  41. package/dist/plugins/token-stats/manifest.json +1 -1
  42. package/dist/plugins/user-auth/control.js +3911 -0
  43. package/dist/plugins/{local-accounts → user-auth}/control.js.map +8 -5
  44. package/dist/plugins/{local-accounts → user-auth}/index.js +6 -6
  45. package/dist/plugins/{local-accounts → user-auth}/index.js.map +6 -6
  46. package/dist/plugins/user-auth/manifest.json +735 -0
  47. package/dist/plugins/user-auth/ui/ConnectionEditor.svelte +137 -0
  48. package/dist/plugins/user-auth/ui/Login.svelte +87 -0
  49. package/dist/plugins/user-auth/ui/LoginProviderIcon.svelte +19 -0
  50. package/dist/plugins/user-auth/ui/LoginSettings.svelte +141 -0
  51. package/dist/plugins/user-auth/ui/Profile.svelte +185 -0
  52. package/dist/plugins/{local-accounts → user-auth}/ui/RecoveryHelp.svelte +3 -3
  53. package/dist/plugins/user-auth/ui/SessionPolicy.svelte +104 -0
  54. package/dist/plugins/user-auth/ui/Settings.svelte +14 -0
  55. package/dist/plugins/user-auth/ui/SettingsSection.svelte +32 -0
  56. package/dist/plugins/user-auth/ui/Setup.svelte +38 -0
  57. package/dist/plugins/user-auth/ui/TurnstileChallenge.svelte +26 -0
  58. package/dist/plugins/user-auth/ui/TurnstileSettings.svelte +81 -0
  59. package/dist/plugins/user-auth/ui/Users.svelte +95 -0
  60. package/dist/plugins/user-auth/ui/assets/LICENSE.txt +30 -0
  61. package/dist/plugins/user-auth/ui/assets/github.svg +1 -0
  62. package/dist/plugins/user-auth/ui/assets/google.svg +1 -0
  63. package/dist/plugins/user-auth/ui/assets/microsoft.svg +1 -0
  64. package/dist/plugins/user-auth/ui/contracts.ts +16 -0
  65. package/dist/plugins/{local-accounts → user-auth}/ui/login-errors.ts +4 -1
  66. package/dist/plugins/user-auth/ui/turnstile.ts +21 -0
  67. package/package.json +2 -2
  68. package/dist/plugins/local-accounts/control.js +0 -715
  69. package/dist/plugins/local-accounts/manifest.json +0 -223
  70. package/dist/plugins/local-accounts/ui/Login.svelte +0 -47
  71. package/dist/plugins/local-accounts/ui/Settings.svelte +0 -117
@@ -5,9 +5,9 @@
5
5
  "/** Shared process sink; the public SDK must not bundle file transports into plugins. */\ntype Context = Readonly<Record<string, unknown>>;\ntype LogMethod = { (context: Context, message?: string): void; (message: string): void };\nexport interface PluginLogSink {\n info: LogMethod; warn: LogMethod; error: LogMethod; debug: LogMethod; fatal: LogMethod;\n child(bindings: Context): PluginLogSink;\n}\nconst sinkKey = Symbol.for('@jeffusion/bungee/plugin-log-sink');\nexport function installPluginLogSink(sink: PluginLogSink): void {\n (globalThis as Record<symbol, unknown>)[sinkKey] = sink;\n}\nfunction createLogger(bindings: Context = {}): PluginLogSink {\n const method = (level: 'info' | 'warn' | 'error' | 'debug' | 'fatal'): LogMethod =>\n (value: Context | string, message?: string) => {\n const sink = (globalThis as Record<symbol, unknown>)[sinkKey] as PluginLogSink | undefined;\n if (sink) {\n if (typeof value === 'string') sink[level](bindings, value);\n else sink[level]({...bindings, ...value}, message);\n } else if (level !== 'debug' || process.env.LOG_LEVEL === 'debug') {\n const write = level === 'fatal' ? console.error : console[level];\n write(message ?? (typeof value === 'string' ? value : ''), typeof value === 'string' ? bindings : {...bindings, ...value});\n }\n };\n return {info: method('info'), warn: method('warn'), error: method('error'), debug: method('debug'),\n fatal: method('fatal'), child: extra => createLogger({...bindings, ...extra})};\n}\nexport const logger = createLogger();\n",
6
6
  "/**\n * Hook 实现类\n *\n * 提供 4 种 Hook 类型的实现:\n * - AsyncParallelHook: 异步并行执行\n * - AsyncSeriesHook: 异步串行执行\n * - AsyncSeriesBailHook: 异步串行可中断\n * - AsyncSeriesWaterfallHook: 异步串行瀑布\n */\n\nimport { logger } from '../plugin-logger';\n/** Host-supplied view refresh, run between every waterfall tap. */\nexport const WATERFALL_VIEW_TRANSFORM = Symbol('waterfall-view-transform');\nimport type {\n TapInfo,\n Tap,\n IAsyncParallelHook,\n IAsyncSeriesHook,\n IAsyncSeriesBailHook,\n IAsyncSeriesWaterfallHook,\n IAsyncSeriesMapHook,\n HookStats,\n} from './types';\n\n/**\n * 标准化 TapInfo\n */\nfunction normalizeTapInfo(info: TapInfo | string): TapInfo {\n if (typeof info === 'string') {\n return { name: info, stage: 0 };\n }\n return { ...info, stage: info.stage ?? 0 };\n}\n\n/**\n * 基础 Hook 类\n */\nabstract class BaseHook<T extends any[]> {\n protected taps: Tap<T, any>[] = [];\n protected name: string;\n protected callCount = 0;\n protected totalTimeMs = 0;\n\n constructor(name?: string) {\n this.name = name ?? 'anonymous';\n }\n\n /**\n * 同步注册\n */\n tap(info: TapInfo | string, fn: (...args: T) => any): void {\n const tapInfo = normalizeTapInfo(info);\n this.taps.push({ info: tapInfo, type: 'sync', fn });\n this.sortTaps();\n }\n\n /**\n * 异步回调风格注册\n */\n tapAsync(info: TapInfo | string, fn: (...args: any[]) => void): void {\n const tapInfo = normalizeTapInfo(info);\n this.taps.push({ info: tapInfo, type: 'async', fn });\n this.sortTaps();\n }\n\n /**\n * Promise 风格注册\n */\n tapPromise(info: TapInfo | string, fn: (...args: T) => Promise<any>): void {\n const tapInfo = normalizeTapInfo(info);\n this.taps.push({ info: tapInfo, type: 'promise', fn });\n this.sortTaps();\n }\n\n /**\n * 检查是否有注册的回调\n */\n hasCallbacks(): boolean {\n return this.taps.length > 0;\n }\n\n /**\n * 获取统计信息\n */\n getStats(): HookStats {\n return {\n name: this.name,\n tapCount: this.taps.length,\n callCount: this.callCount,\n totalTimeMs: this.totalTimeMs,\n avgTimeMs: this.callCount > 0 ? this.totalTimeMs / this.callCount : 0,\n };\n }\n\n /**\n * 重置统计信息\n */\n resetStats(): void {\n this.callCount = 0;\n this.totalTimeMs = 0;\n }\n\n /**\n * 清空所有注册的回调\n */\n clear(): void {\n this.taps = [];\n }\n\n /**\n * 按 stage 排序(稳定排序)\n */\n private sortTaps(): void {\n this.taps.sort((a, b) => (a.info.stage ?? 0) - (b.info.stage ?? 0));\n }\n\n /**\n * 执行单个 tap\n */\n protected async executeTap<R>(\n tap: Tap<T, R>,\n args: T\n ): Promise<R | undefined> {\n try {\n if (tap.type === 'sync') {\n return tap.fn(...args);\n } else if (tap.type === 'promise') {\n return await tap.fn(...args);\n } else {\n // async (callback style)\n return await new Promise<R | undefined>((resolve, reject) => {\n const done = (err?: Error, result?: R) => {\n if (err) reject(err);\n else resolve(result);\n };\n tap.fn(...args, done);\n });\n }\n } catch (error) {\n logger.error(\n { error, hookName: this.name, pluginName: tap.info.name },\n 'Error in hook callback'\n );\n throw error;\n }\n }\n}\n\n/** Synchronous providers use the same registration, ordering and statistics as async hooks. */\nexport class SyncBailHook<T extends any[] = [], R = unknown> extends BaseHook<T> {\n override tapAsync(): never { throw new Error('synchronous provider requires tap'); }\n override tapPromise(): never { throw new Error('synchronous provider requires tap'); }\n call(...args: T): R | undefined {\n const started = performance.now();\n this.callCount++;\n try {\n for (const tap of this.taps) {\n const result = tap.fn(...args);\n if (result && typeof result.then === 'function') throw new Error('synchronous provider returned a Promise');\n if (result !== undefined) return result as R;\n }\n return undefined;\n } finally { this.totalTimeMs += performance.now() - started; }\n }\n}\n\n/**\n * 异步并行 Hook\n * 所有回调并行执行,全部完成后返回\n */\nexport class AsyncParallelHook<T extends any[] = []>\n extends BaseHook<T>\n implements IAsyncParallelHook<T>\n{\n async promise(...args: T): Promise<void> {\n if (this.taps.length === 0) return;\n\n const startTime = performance.now();\n this.callCount++;\n\n try {\n // 并行执行所有回调,错误独立处理不影响其他\n await Promise.all(\n this.taps.map(async (tap) => {\n try {\n await this.executeTap(tap, args);\n } catch (error) {\n // 并行 Hook 中单个回调的错误不应影响其他回调\n logger.error(\n { error, hookName: this.name, pluginName: tap.info.name },\n 'Error in parallel hook callback (ignored)'\n );\n }\n })\n );\n } finally {\n this.totalTimeMs += performance.now() - startTime;\n }\n }\n}\n\n/**\n * 异步串行 Hook\n * 所有回调按顺序串行执行\n */\nexport class AsyncSeriesHook<T extends any[] = []>\n extends BaseHook<T>\n implements IAsyncSeriesHook<T>\n{\n async promise(...args: T): Promise<void> {\n if (this.taps.length === 0) return;\n\n const startTime = performance.now();\n this.callCount++;\n\n try {\n for (const tap of this.taps) {\n await this.executeTap(tap, args);\n }\n } finally {\n this.totalTimeMs += performance.now() - startTime;\n }\n }\n}\n\n/**\n * 异步串行可中断 Hook\n * 任意回调返回非 undefined 值则停止执行并返回该值\n */\nexport class AsyncSeriesBailHook<T extends any[] = [], R = any>\n extends BaseHook<T>\n implements IAsyncSeriesBailHook<T, R>\n{\n async promise(...args: T): Promise<R | undefined> {\n if (this.taps.length === 0) return undefined;\n\n const startTime = performance.now();\n this.callCount++;\n\n try {\n for (const tap of this.taps) {\n const result = await this.executeTap<R>(tap, args);\n if (result !== undefined) {\n logger.debug(\n { hookName: this.name, pluginName: tap.info.name },\n 'Hook bailed with result'\n );\n return result;\n }\n }\n return undefined;\n } finally {\n this.totalTimeMs += performance.now() - startTime;\n }\n }\n}\n\n/**\n * 异步串行瀑布 Hook\n * 每个回调的返回值作为下一个回调的第一个参数\n */\nexport class AsyncSeriesWaterfallHook<T, A extends any[] = []>\n extends BaseHook<[T, ...A]>\n implements IAsyncSeriesWaterfallHook<T, A>\n{\n async promise(value: T, ...args: A): Promise<T> {\n if (this.taps.length === 0) return value;\n\n const startTime = performance.now();\n this.callCount++;\n\n try {\n let current = value;\n for (const tap of this.taps) {\n const result = await this.executeTap<T>(tap, [current, ...args] as [T, ...A]);\n // 只有返回非 undefined 时才更新值\n if (result !== undefined) {\n const transform = args[0]?.[WATERFALL_VIEW_TRANSFORM];\n current = typeof transform === 'function' ? await transform(result,current) : result;\n }\n }\n return current;\n } finally {\n this.totalTimeMs += performance.now() - startTime;\n }\n }\n}\n\n/**\n * 异步串行映射 Hook\n * 支持 N:M 转换:每个回调处理输入,可以返回 0 到多个输出\n *\n * 执行流程:\n * 1. 初始输入:单个 chunk\n * 2. 每个插件处理当前的所有 chunks,返回新的 chunks 数组\n * 3. 下一个插件处理上一步的所有输出\n *\n * 返回值约定:\n * - null/undefined: 不处理,原样输出当前 chunk\n * - []: 缓冲当前 chunk,不输出(N:0)\n * - [chunk]: 1:1 转换\n * - [chunk1, chunk2, ...]: 1:M 拆分\n *\n * 性能优化:\n * - 同步优先执行:sync tap 直接同步调用,跳过 Promise 开销\n * - 适用于流式响应处理等高频调用场景\n */\nexport class AsyncSeriesMapHook<T, A extends any[] = []>\n extends BaseHook<[T, ...A]>\n implements IAsyncSeriesMapHook<T, A>\n{\n /**\n * 同步执行单个 tap(跳过 Promise 开销)\n */\n private executeTapSync<R>(tap: Tap<[T, ...A], R>, args: [T, ...A]): R | undefined {\n try {\n return tap.fn(...args);\n } catch (error) {\n logger.error(\n { error, hookName: this.name, pluginName: tap.info.name },\n 'Error in hook callback'\n );\n throw error;\n }\n }\n\n async promise(value: T, ...args: A): Promise<T[]> {\n // 如果没有注册任何回调,直接返回原始值\n if (this.taps.length === 0) return [value];\n\n const startTime = performance.now();\n this.callCount++;\n\n try {\n // 初始输入为单个 chunk\n let chunks: T[] = [value];\n\n // 依次应用每个插件的转换\n for (const tap of this.taps) {\n const newChunks: T[] = [];\n\n // 对当前的每个 chunk 应用转换\n for (const chunk of chunks) {\n try {\n // 同步优先执行:sync tap 直接同步调用,跳过 Promise 开销\n const result = tap.type === 'sync'\n ? this.executeTapSync<T[] | null | undefined>(tap, [chunk, ...args] as [T, ...A])\n : await this.executeTap<T[] | null | undefined>(tap, [chunk, ...args] as [T, ...A]);\n\n if (result === null || result === undefined) {\n // 不处理,原样输出\n newChunks.push(chunk);\n } else if (Array.isArray(result)) {\n // N:M 转换\n // [] = 缓冲(不输出)\n // [item] = 1:1 转换\n // [item1, item2, ...] = 1:M 拆分\n newChunks.push(...result);\n } else {\n // 非法返回值,警告并原样输出\n logger.warn(\n { hookName: this.name, pluginName: tap.info.name, result },\n 'AsyncSeriesMapHook callback must return an array or null'\n );\n newChunks.push(chunk);\n }\n } catch (error) {\n // 单个 chunk 处理失败,记录错误并原样输出\n logger.error(\n { error, hookName: this.name, pluginName: tap.info.name },\n 'Error in AsyncSeriesMapHook callback'\n );\n if ((args[0] as { strict?: boolean } | undefined)?.strict) {\n throw error;\n }\n newChunks.push(chunk);\n }\n }\n\n chunks = newChunks;\n }\n\n return chunks;\n } finally {\n this.totalTimeMs += performance.now() - startTime;\n }\n }\n}\n",
7
7
  "import type { WebSocketObservationEvent, WebSocketHandshakeContext, GatewayWebSocketInput, GatewayWebSocketResult } from '../gateway/websocket-contracts';\n/**\n * Bungee Plugin Hooks 定义\n *\n * 定义了插件系统中所有可用的 Hook 及其上下文类型。\n * 每个 Hook 有预设的执行模式(Parallel/Series/Bail/Waterfall),\n * 插件通过 register() 方法选择合适的注册方式。\n */\n\nimport {\n SyncBailHook,\n AsyncParallelHook,\n AsyncSeriesBailHook,\n AsyncSeriesWaterfallHook,\n AsyncSeriesMapHook,\n} from './impl';\nimport type { PluginServices } from '../plugin-services';\nimport type { PluginStorage, SSEEnvelope, PluginConfigValue } from '../plugin.types';\nimport type { InterceptResult, PluginPhase } from '@jeffusion/bungee-types';\nimport type { RawResponseResult } from '../plugin-control/contracts';\nimport type { GatewayBodyArguments, GatewayRequestArguments, GatewayForwardArguments, GatewayResponseRuleArguments, GatewayBodyRuleArguments, GatewayQueryRuleArguments, GatewayHeaderRuleArguments, GatewayCorsArguments, GatewayRouteInput, GatewayRouteDecision, GatewayDispatchInput, GatewayDispatchDecision, DispatchRequestInput, DispatchRequestDecision, GatewayAdmissionInput, GatewayAdmissionDecision, GatewayAdmissionSessionInput, GatewayAdmissionPrepareInput, GatewaySelectInput, GatewaySelectDecision, GatewayFailoverInput, GatewayRetryInput, GatewayLogInput, GatewayLogResult } from '../gateway/contracts';\nimport type { WorkerRequestAdmission, PreparedAdmissionAttempt } from '../data-admission/worker';\nimport type { FailoverCoordinator } from '../worker/upstream/failover-coordinator';\nimport type { ProxyRequestResult } from '../gateway/forward-plugin';\nimport type { PrepareResponseResult } from '../gateway/response-plugin';\nimport type { BodySource } from '../gateway/body-service';\nimport type { BodyHandle, BodyViewIdentity } from '../gateway/body-contracts';\n\n// ============ 上下文类型定义 ============\n\n/**\n * 请求上下文(只读部分)\n */\nexport interface RequestContext {\n /** HTTP 方法 */\n readonly method: string;\n /** 原始请求 URL */\n readonly originalUrl: URL;\n /** 客户端 IP */\n readonly clientIP: string;\n /** 请求唯一 ID */\n readonly requestId: string;\n /** 路由 ID */\n readonly routeId?: string;\n /** 上游 ID */\n readonly upstreamId?: string;\n}\n\n/**\n * 可修改的请求上下文\n */\nexport interface MutableRequestContext extends RequestContext {\n readonly bodyHandle?: BodyHandle;\n /** 目标 URL(可修改) */\n url: URL;\n /** 请求头(可修改) */\n headers: Record<string, string>;\n /** 请求体(可修改) */\n body: any;\n /** Plugin-owned JSON metadata carried through request phases and isolated per attempt. */\n annotations?: Record<string, PluginConfigValue>;\n}\n\n/** Immutable final attempt boundary, after all rewrites and before upstream connection. */\nexport interface OutboundValidationContext extends RequestContext {\n readonly url: string;\n readonly model: string | null;\n readonly body: unknown;\n /** Deep-frozen snapshot of the final attempt annotations. */\n readonly annotations?: Readonly<Record<string, PluginConfigValue>>;\n readonly attemptId: string;\n readonly signal?: AbortSignal;\n}\n\n/**\n * 响应上下文\n */\nexport interface ResponseContext extends RequestContext {\n readonly bodyHandle?: BodyHandle;\n /** 响应对象 */\n response: Response;\n /** 请求延迟(毫秒) */\n readonly latencyMs: number;\n}\n\n/** Strict raw response boundary. Unlike legacy response hooks, failures propagate. */\nexport interface RawResponseContext extends RequestContext {\n /** Actual selected upstream URL after request hooks and rewrites. */\n readonly upstreamUrl?: string;\n readonly bodyHandle?: BodyHandle;\n readonly signal: AbortSignal;\n readonly attemptId: string;\n /** Redacts credentials acquired by the host without exposing them to plugins. */\n readonly redactDiagnostic?: (message: string) => string;\n}\n\nexport type AttemptObservationOutcome = 'completed' | 'failed' | 'cancelled';\nexport type AttemptObservationEvent = Readonly<{\n /** Host-derived credential identity; never copied from client headers. */\n keyId?: string | null;\n requestId: string;\n routeId: string;\n attemptId: string;\n upstreamId: string;\n /** Identifies the independent observation branch and the exact body version. */\n direction?: 'request' | 'response';\n representation?: 'wire' | 'decoded' | 'json' | 'sse';\n view?: BodyViewIdentity;\n consumerId?: string;\n /**\n * Cooperative validity lease for this delivery. It becomes false after the callback\n * resolves/rejects or the host times it out. Plugins must check it after every await\n * and immediately before mutating state; a timed-out callback cannot be forcibly stopped.\n */\n isActive: () => boolean;\n} & (\n | { phase: 'selected' }\n | { phase: 'request'; url: string; body: unknown }\n | { phase: 'response'; status: number; protocol: 'json' | 'sse'; body: Record<string, unknown>; envelope?: SSEEnvelope }\n | { phase: 'incomplete'; reason: 'observer-timeout' | 'observer-error' | 'raw-response-incomplete' | 'buffer-limit' | 'frame-limit' | 'frame-truncated' | 'decode-error' | 'unsupported-encoding' }\n | { phase: 'end'; outcome: AttemptObservationOutcome; sent: boolean }\n | { phase: 'request-end' }\n)>;\n\n/** Parallel observer dispatch must surface failures so the request host can disable a broken observer. */\nclass AttemptObservationHook extends AsyncParallelHook<[AttemptObservationEvent]> {\n override async promise(...args: [AttemptObservationEvent]): Promise<void> {\n if (this.taps.length === 0) return;\n const startedAt = performance.now();\n this.callCount++;\n try {\n await Promise.all(this.taps.map((tap) => this.executeTap(tap, args)));\n } finally {\n this.totalTimeMs += performance.now() - startedAt;\n }\n }\n}\n\n/** Strict, isolated WebSocket observers use the same plugin registration contract. */\nclass WebSocketObservationHook extends AsyncParallelHook<[WebSocketObservationEvent]> {\n override async promise(...args: [WebSocketObservationEvent]): Promise<void> {\n this.callCount++;\n const started = performance.now();\n try { await Promise.all(this.taps.map(tap => this.executeTap(tap, args))); }\n finally { this.totalTimeMs += performance.now() - started; }\n }\n}\n\n/**\n * 错误上下文\n */\nexport interface ErrorContext extends RequestContext {\n /** 错误对象 */\n readonly error: Error;\n /** 请求头 */\n headers: Record<string, string>;\n /** 请求体 */\n body: any;\n}\n\n/**\n * 流式数据块上下文\n *\n * 性能优化:chunkIndex/isFirstChunk/isLastChunk 不再是 readonly,\n * 保存当前事件序号与本次响应内的插件状态\n */\nexport interface StreamChunkContext extends RequestContext {\n /** 块索引 */\n chunkIndex: number;\n /** 是否为第一个块 */\n isFirstChunk: boolean;\n /** 是否为最后一个块 */\n isLastChunk: boolean;\n /**\n * 流状态存储\n * 每个插件可以使用此 Map 存储跨 chunk 的状态\n * Key 由插件自行管理\n */\n streamState: Map<string, any>;\n /**\n * 请求日志对象(用于调试)\n */\n readonly request?: any;\n /** Strict raw-response processing must propagate plugin failures. */\n readonly strict?: boolean;\n /** Metadata of the current SSE event, independent from its JSON payload. */\n readonly sseEvent?: SSEEnvelope;\n}\n\n/**\n * 请求完成上下文\n */\nexport interface FinallyContext extends RequestContext {\n /** 请求是否成功 */\n readonly success: boolean;\n /** 请求延迟(毫秒) */\n readonly latencyMs: number;\n /** 响应状态码(如果有) */\n readonly statusCode?: number;\n}\n\n/**\n * 插件作用域信息\n * 用于需要按作用域隔离数据的插件\n */\nexport interface PluginScopeInfo {\n /** 作用域类型 */\n type: 'global' | 'route' | 'service' | 'upstream';\n phase?: PluginPhase;\n routeId?: string;\n serviceName?: string;\n upstreamId?: string;\n /** @deprecated Use phase + routeId/serviceName/upstreamId instead */\n id?: string;\n}\n\n/**\n * 插件初始化上下文\n */\nexport interface PluginInitContext {\n /** Host-generated providers have no application binding; configured instances do. */\n readonly initializationKind?: 'automatic-provider' | 'configured';\n /** Host-controlled, dependency-restricted public service facade. */\n readonly services?: PluginServices;\n readonly dispatchTargets?: readonly import('../gateway/contracts').GatewayDispatchTarget[];\n /** 插件配置 */\n config: Record<string, any>;\n /** 插件存储 */\n storage: PluginStorage;\n /** 插件日志 */\n logger: PluginLogger;\n /**\n * 作用域信息(可选)\n *\n * 用于需要按作用域隔离数据的插件。\n * 注意:Storage 默认是插件级别共享的,如需隔离请在 key 中添加作用域前缀\n *\n * @example\n * // 按作用域隔离 storage key\n * const scopedKey = ctx.scope\n * ? `${ctx.scope.type}:${ctx.scope.id || 'default'}:${key}`\n * : key;\n * await this.storage.set(scopedKey, value);\n */\n scope?: PluginScopeInfo;\n}\n\n/**\n * 插件日志接口\n */\nexport interface PluginLogger {\n debug(msg: string, data?: object): void;\n info(msg: string, data?: object): void;\n warn(msg: string, data?: object): void;\n error(msg: string, data?: object): void;\n}\n\n// ============ Plugin Hooks 工厂 ============\n\n/**\n * 创建一组新的 Plugin Hooks\n *\n * 每个请求应该创建独立的 hooks 实例,以避免状态污染。\n * 或者使用单例 hooks,在请求处理开始前清理状态。\n */\nexport function createPluginHooks(): PluginHooks {\n return {\n onGatewayWebSocket: new AsyncSeriesBailHook<[GatewayWebSocketInput], GatewayWebSocketResult>('onGatewayWebSocket'),\n onWebSocketSessionMode: new AsyncSeriesBailHook<[URL], 'responses'>('onWebSocketSessionMode'),\n onWebSocketHandshake: new AsyncSeriesWaterfallHook<WebSocketHandshakeContext>('onWebSocketHandshake'),\n onWebSocketObservation: new WebSocketObservationHook('onWebSocketObservation'),\n onGatewayBody: new SyncBailHook<GatewayBodyArguments, BodySource>('onGatewayBody'),\n onGatewayRequest: new AsyncSeriesBailHook<GatewayRequestArguments, Response>('onGatewayRequest'),\n onGatewayRoute: new AsyncSeriesBailHook<[GatewayRouteInput], GatewayRouteDecision>('onGatewayRoute'),\n onGatewayDispatch: new AsyncSeriesBailHook<[GatewayDispatchInput], GatewayDispatchDecision>('onGatewayDispatch'),\n onDispatchRequest: new AsyncSeriesBailHook<[DispatchRequestInput], DispatchRequestDecision>('onDispatchRequest'),\n onGatewayAdmission: new AsyncSeriesBailHook<[GatewayAdmissionInput], GatewayAdmissionDecision>('onGatewayAdmission'),\n onGatewayAdmissionSession: new AsyncSeriesBailHook<[GatewayAdmissionSessionInput], WorkerRequestAdmission>('onGatewayAdmissionSession'),\n onGatewayAdmissionPrepare: new AsyncSeriesBailHook<[GatewayAdmissionPrepareInput], PreparedAdmissionAttempt[]>('onGatewayAdmissionPrepare'),\n onGatewaySelect: new AsyncSeriesBailHook<[GatewaySelectInput], GatewaySelectDecision>('onGatewaySelect'),\n onGatewayFailover: new AsyncSeriesBailHook<[GatewayFailoverInput], FailoverCoordinator>('onGatewayFailover'),\n onGatewayRetry: new AsyncSeriesBailHook<[GatewayRetryInput], ProxyRequestResult>('onGatewayRetry'),\n onGatewayHeaderRules: new AsyncSeriesBailHook<GatewayHeaderRuleArguments, true>('onGatewayHeaderRules'),\n onGatewayCors: new AsyncSeriesBailHook<GatewayCorsArguments, Response>('onGatewayCors'),\n onGatewayForward: new AsyncSeriesBailHook<GatewayForwardArguments, ProxyRequestResult>('onGatewayForward'),\n onGatewayBodyRules: new AsyncSeriesBailHook<GatewayBodyRuleArguments, Record<string, any>>('onGatewayBodyRules'),\n onGatewayQueryRules: new AsyncSeriesBailHook<GatewayQueryRuleArguments, URLSearchParams>('onGatewayQueryRules'),\n onGatewayResponseRules: new AsyncSeriesBailHook<GatewayResponseRuleArguments, PrepareResponseResult>('onGatewayResponseRules'),\n onGatewayLog: new AsyncSeriesBailHook<[GatewayLogInput], GatewayLogResult>('onGatewayLog'),\n /**\n * 请求初始化\n *\n * 执行模式:AsyncParallel(并行)\n * 用途:初始化插件状态、记录请求开始、早期验证\n * 注意:此阶段不应修改请求,仅用于初始化\n */\n onRequestInit: new AsyncParallelHook<[RequestContext]>('onRequestInit'),\n\n /**\n * 请求前处理\n *\n * 执行模式:AsyncSeriesWaterfall(串行瀑布)\n * 用途:修改请求 URL、Headers、Body\n * 每个插件接收上一个插件修改后的 context,返回修改后的 context\n */\n onBeforeRequest: new AsyncSeriesWaterfallHook<MutableRequestContext>('onBeforeRequest'),\n onValidateOutbound: new AsyncSeriesWaterfallHook<OutboundValidationContext>('onValidateOutbound'),\n\n /**\n * 请求拦截\n *\n * 执行模式:AsyncSeriesBail(串行可中断)\n * 用途:短路请求,直接返回响应(如缓存命中、限流拒绝)\n * 返回 respond action 则停止后续处理并返回该响应\n */\n onInterceptRequest: new AsyncSeriesBailHook<[MutableRequestContext], InterceptResult>('onInterceptRequest'),\n\n /**\n * 响应处理\n *\n * 执行模式:AsyncSeriesWaterfall(串行瀑布)\n * 用途:修改响应、记录日志、缓存响应\n * 每个插件接收上一个插件处理后的 Response\n */\n onResponse: new AsyncSeriesWaterfallHook<Response, [ResponseContext]>('onResponse'),\n\n /**\n * Raw upstream response hook. This runs once after fetch and before any\n * legacy response/SSE processing. Its completion promise is part of the\n * request outcome and must not be swallowed by resilient stream wrappers.\n */\n onRawResponse: new AsyncSeriesWaterfallHook<RawResponseResult, [RawResponseContext]>('onRawResponse'),\n\n /** Independent read-only attempt lifecycle observer. */\n onAttemptObservation: new AttemptObservationHook('onAttemptObservation'),\n\n /**\n * 流式响应块处理\n *\n * 执行模式:AsyncSeriesMap(串行映射,支持 N:M 转换)\n * 用途:处理 SSE 流的每个数据块,支持拆分、合并、过滤\n *\n * 返回值约定:\n * - null/undefined: 不处理,原样输出\n * - []: 缓冲当前 chunk,不输出(N:0)\n * - [chunk]: 1:1 转换\n * - [chunk1, chunk2, ...]: 1:M 拆分\n */\n onStreamChunk: new AsyncSeriesMapHook<SSEEnvelope, [StreamChunkContext]>('onStreamChunk'),\n\n /**\n * 流结束时刷新缓冲区\n *\n * 执行模式:AsyncSeriesWaterfall(串行瀑布)\n * 用途:在流结束时输出缓冲区中剩余的数据\n *\n * 每个插件接收上一个插件输出的 chunks 数组,返回处理后的 chunks 数组\n */\n onFlushStream: new AsyncSeriesWaterfallHook<SSEEnvelope[], [StreamChunkContext]>('onFlushStream'),\n\n /**\n * 错误处理\n *\n * 执行模式:AsyncParallel(并行)\n * 用途:错误日志、错误上报、告警\n * 注意:错误处理插件的异常会被捕获但不影响其他插件\n */\n onError: new AsyncParallelHook<[ErrorContext]>('onError'),\n\n /**\n * 请求完成(无论成功失败)\n *\n * 执行模式:AsyncParallel(并行)\n * 用途:清理资源、记录指标、完成统计\n */\n onFinally: new AsyncParallelHook<[FinallyContext]>('onFinally'),\n };\n}\n\n/**\n * Plugin Hooks 类型\n */\nexport interface PluginHooks {\n onGatewayWebSocket: AsyncSeriesBailHook<[GatewayWebSocketInput], GatewayWebSocketResult>;\n onWebSocketSessionMode: AsyncSeriesBailHook<[URL], 'responses'>;\n onWebSocketHandshake: AsyncSeriesWaterfallHook<WebSocketHandshakeContext>;\n onWebSocketObservation: WebSocketObservationHook;\n onGatewayBody: SyncBailHook<GatewayBodyArguments, BodySource>;\n onGatewayHeaderRules: AsyncSeriesBailHook<GatewayHeaderRuleArguments, true>;\n onGatewayCors: AsyncSeriesBailHook<GatewayCorsArguments, Response>;\n onGatewayRequest: AsyncSeriesBailHook<GatewayRequestArguments, Response>;\n onGatewayRoute: AsyncSeriesBailHook<[GatewayRouteInput], GatewayRouteDecision>;\n onGatewayDispatch: AsyncSeriesBailHook<[GatewayDispatchInput], GatewayDispatchDecision>;\n onDispatchRequest: AsyncSeriesBailHook<[DispatchRequestInput], DispatchRequestDecision>;\n onGatewayAdmission: AsyncSeriesBailHook<[GatewayAdmissionInput], GatewayAdmissionDecision>;\n onGatewayAdmissionSession: AsyncSeriesBailHook<[GatewayAdmissionSessionInput], WorkerRequestAdmission>;\n onGatewayAdmissionPrepare: AsyncSeriesBailHook<[GatewayAdmissionPrepareInput], PreparedAdmissionAttempt[]>;\n onGatewaySelect: AsyncSeriesBailHook<[GatewaySelectInput], GatewaySelectDecision>;\n onGatewayFailover: AsyncSeriesBailHook<[GatewayFailoverInput], FailoverCoordinator>;\n onGatewayRetry: AsyncSeriesBailHook<[GatewayRetryInput], ProxyRequestResult>;\n onGatewayForward: AsyncSeriesBailHook<GatewayForwardArguments, ProxyRequestResult>;\n onGatewayBodyRules: AsyncSeriesBailHook<GatewayBodyRuleArguments, Record<string, any>>;\n onGatewayQueryRules: AsyncSeriesBailHook<GatewayQueryRuleArguments, URLSearchParams>;\n onGatewayResponseRules: AsyncSeriesBailHook<GatewayResponseRuleArguments, PrepareResponseResult>;\n onGatewayLog: AsyncSeriesBailHook<[GatewayLogInput], GatewayLogResult>;\n onRequestInit: AsyncParallelHook<[RequestContext]>;\n onBeforeRequest: AsyncSeriesWaterfallHook<MutableRequestContext>;\n onValidateOutbound: AsyncSeriesWaterfallHook<OutboundValidationContext>;\n onInterceptRequest: AsyncSeriesBailHook<[MutableRequestContext], InterceptResult>;\n onResponse: AsyncSeriesWaterfallHook<Response, [ResponseContext]>;\n onRawResponse: AsyncSeriesWaterfallHook<RawResponseResult, [RawResponseContext]>;\n onAttemptObservation: AttemptObservationHook;\n onStreamChunk: AsyncSeriesMapHook<SSEEnvelope, [StreamChunkContext]>;\n onFlushStream: AsyncSeriesWaterfallHook<SSEEnvelope[], [StreamChunkContext]>;\n onError: AsyncParallelHook<[ErrorContext]>;\n onFinally: AsyncParallelHook<[FinallyContext]>;\n}\n\n/**\n * 获取所有 Hook 的统计信息\n */\nexport function getHooksStats(hooks: PluginHooks) {\n return Object.fromEntries(Object.entries(hooks).map(([name, hook]) => [name, hook.getStats()]));\n}\nexport function resetHooksStats(hooks: PluginHooks): void {\n for (const hook of Object.values(hooks)) hook.resetStats();\n}\nexport function clearHooks(hooks: PluginHooks): void {\n for (const hook of Object.values(hooks)) hook.clear();\n}\n",
8
- "import type { PluginConfigConstraint, PluginRuntimeScope } from '@jeffusion/bungee-types';\nexport type { PluginConfigConstraint, PluginAllowedTuplesConstraint, PluginRuntimeScope } from '@jeffusion/bungee-types';\n/**\n * Plugin 系统类型定义\n */\n\n/**\n * 插件配置值类型\n * 定义了插件配置中允许的值类型,比 `any` 更具体\n */\nexport type PluginConfigValue =\n | string\n | number\n | boolean\n | null\n | PluginConfigValue[]\n | { [key: string]: PluginConfigValue };\n\nexport interface CredentialOutboundHeaderProfile {\n readonly passthrough: readonly string[];\n readonly set: Readonly<Record<string, string>>;\n}\n\nexport interface CredentialRequestPolicy {\n readonly pathname: string;\n readonly methods: readonly string[];\n readonly outboundHeaders?: CredentialOutboundHeaderProfile;\n}\n\n// ============ Manifest 类型定义 ============\n\n/**\n * 插件 manifest.json 规范\n *\n * manifest.json 是插件的声明性配置文件,作为插件元数据的唯一真相来源。\n * 框架通过读取此文件来发现插件能力,无需执行插件代码。\n *\n * @example\n * ```json\n * {\n * \"name\": \"token-stats\",\n * \"version\": \"1.0.0\",\n * \"description\": \"Track AI API token usage\",\n * \"main\": \"server/index.ts\",\n * \"ui\": {\n * \"components\": [\n * { \"name\": \"TokenStatsChart\", \"entry\": \"ui/TokenStatsChart.svelte\" }\n * ]\n * },\n * \"contributes\": {\n * \"nativeWidgets\": [...],\n * \"api\": [...]\n * },\n * \"translations\": { \"en\": {...}, \"zh-CN\": {...} }\n * }\n * ```\n */\nexport interface PluginManifest {\n /**\n * 插件唯一标识符(必填)\n * 用于路由、存储命名空间等\n */\n name: string;\n\n /**\n * 插件版本号(必填)\n * 遵循 semver 规范\n */\n version: string;\n\n schemaVersion?: number | string;\n artifactKind?: string;\n\n /**\n * 插件描述(支持翻译键)\n */\n description?: string;\n\n /**\n * 图标(Material Icon 名称或 URL)\n */\n icon?: string;\n\n /**\n * 作者信息\n */\n author?: string | {\n name: string;\n email?: string;\n url?: string;\n };\n\n /**\n * 许可证\n */\n license?: string;\n\n /**\n * 项目主页\n */\n homepage?: string;\n\n /**\n * 代码仓库\n */\n repository?: string | {\n type: string;\n url: string;\n };\n\n /**\n * 关键词(用于搜索)\n */\n keywords?: string[];\n\n /**\n * 服务端入口配置\n */\n main?: string;\n\n capabilities?: string[];\n /** Global providers run once whenever activated; global-and-scoped also retains application bindings. Defaults to scoped. */\n runtimeScope?: PluginRuntimeScope;\n services?: import('./plugin-services').PluginServiceDeclarations;\n /** Optional control-plane runtime capability. */\n ingress?: { entry: string };\n management?: { loginComponent?: string };\n control?: {\n entry: string;\n rpc: Array<{\n name: string;\n access: 'bound-attempt';\n }>;\n };\n /**\n * UI 扩展模式(冻结边界)\n * - none: 无 UI 扩展\n * - native-static: 原生静态组件(依赖构建期注册表,不支持运行时注入)\n * - sandbox-iframe: 独立沙箱扩展(通过 iframe 隔离,独立服务资源)\n */\n uiExtensionMode?: 'none' | 'native-static' | 'sandbox-iframe';\n\n /**\n * UI 组件配置\n */\n ui?: {\n /**\n * 组件列表\n * 用于自动注册到组件白名单\n */\n components?: Array<{\n /** 组件名称(用于 nativeWidgets.component 引用) */\n name: string;\n /** 组件入口文件路径(相对于插件根目录) */\n entry: string;\n }>;\n };\n\n /**\n * 权限声明\n * 用于安全预检(用户上传插件场景)\n */\n permissions?: Array<\n | 'network' // 网络访问\n | 'storage' // 持久化存储\n | 'filesystem' // 文件系统访问\n | string // 自定义权限\n >;\n\n /**\n * 插件依赖\n */\n dependencies?: Record<string, string>;\n\n /** Optional providers are never included in automatic activation closure. */\n optionalDependencies?: Record<string, string>;\n\n /**\n * 引擎版本要求\n */\n engines?: {\n bungee?: string;\n node?: string;\n };\n\n /**\n * 贡献点配置\n */\n contributes?: {\n /**\n * 原生仪表板组件\n */\n nativeWidgets?: Array<{\n id: string;\n title: string;\n size: 'small' | 'medium' | 'large' | 'full';\n component: string;\n presentation?: 'kpi';\n props?: Record<string, any>;\n }>;\n\n /**\n * API 端点\n */\n api?: Array<{\n path: string;\n methods: Array<'GET' | 'POST' | 'PUT' | 'DELETE'>;\n handler: string;\n execution: 'control';\n capability?: string;\n methodCapabilities?: Record<string,string>;\n }>;\n resourceExtensions?: Array<{resource:'api-key';component:string;path:'/keys/:keyId'}>;\n upstreamSources?: Array<{\n id: string;\n label: string;\n listAccounts: string;\n createDraft: string;\n credentialPolicy: {\n allowedOrigins: string[];\n allowedRequests: CredentialRequestPolicy[];\n allowedHeaderNames: string[];\n };\n }>;\n\n /**\n * iframe 仪表板组件(Legacy)\n */\n widgets?: Array<{\n title: string;\n path: string;\n size?: 'small' | 'medium' | 'large' | 'full';\n }>;\n\n /**\n * 导航菜单\n */\n navigation?: Array<{\n label: string;\n path: string;\n icon?: string;\n target?: 'sidebar' | 'header';\n component?: string;\n }>;\n\n /**\n * 设置页路径\n */\n settings?: string;\n\n /**\n * 原生静态设置组件名称(仅 builtin 插件可声明)\n */\n nativeSettingsComponent?: string;\n\n /**\n * 命令贡献\n */\n commands?: Array<{\n command: string;\n title: string;\n category?: string;\n icon?: string;\n }>;\n };\n\n /**\n * UI 展示元数据(新架构)\n * 用于存放 UI 相关的元数据,支持翻译键\n */\n metadata?: {\n /** 显示名称(支持翻译键) */\n name?: string;\n /** 描述(支持翻译键) */\n description?: string;\n /** 图标 */\n icon?: string;\n /** 贡献点配置(与顶层 contributes 合并) */\n contributes?: PluginManifest['contributes'];\n };\n\n /**\n * 配置 Schema\n * 用于动态生成配置表单\n */\n configSchema?: PluginConfigField[];\n configConstraints?: readonly PluginConfigConstraint[];\n\n /**\n * 多语言翻译\n */\n translations?: PluginTranslations;\n}\n\n/**\n * 从 manifest 加载的插件信息\n * 包含 manifest 数据和解析后的路径信息\n */\nexport interface LoadedPluginManifest extends PluginManifest {\n /** 插件根目录的绝对路径 */\n pluginDir: string;\n /** manifest.json 文件的绝对路径 */\n manifestPath: string;\n /** 服务端入口的绝对路径 */\n mainPath?: string;\n /** 控制面入口的绝对路径 */\n controlPath?: string;\n uiAssetsPath?: string;\n}\n\n// 导出 Hook 系统类型\nexport type {\n PluginHooks,\n RequestContext,\n MutableRequestContext,\n ResponseContext,\n ErrorContext,\n StreamChunkContext,\n FinallyContext,\n PluginInitContext,\n PluginLogger,\n} from './hooks';\n\nexport { createPluginHooks, clearHooks, getHooksStats, resetHooksStats } from './hooks';\nexport type { TapInfo } from './hooks';\n\n/**\n * 插件配置字段类型\n */\nexport type PluginConfigFieldType =\n | 'string' // 文本输入\n | 'number' // 数字输入\n | 'boolean' // 复选框\n | 'select' // 单选下拉\n | 'multiselect' // 多选下拉\n | 'textarea' // 多行文本\n | 'json' // JSON 编辑器\n | 'gateway_target'\n | 'model_mapping'\n | 'object' // 对象(嵌套表单)\n | 'array'; // 数组(列表编辑器)\n\n/**\n * 验证规则\n */\nexport interface ValidationRule {\n /**\n * 正则表达式模式\n */\n pattern?: string;\n\n /**\n * 最小值/最小长度\n */\n min?: number;\n\n /**\n * 最大值/最大长度\n */\n max?: number;\n\n /**\n * 自定义错误消息\n */\n message?: string;\n}\n\n/**\n * 字段转换规则(可序列化)\n * 用于定义虚拟字段与实际字段之间的转换关系\n */\nexport interface FieldTransform {\n /**\n * 转换类型\n */\n type: 'split' | 'concat' | 'compute';\n\n /**\n * split 类型专用:分隔符\n * @example '-' 将 \"a-b\" 拆分为 [\"a\", \"b\"]\n */\n separator?: string;\n\n /**\n * split/concat 类型专用:目标字段列表\n * @example ['from', 'to']\n */\n fields?: string[];\n}\n\nexport type PluginShowIfCondition =\n | {\n field: string;\n value: PluginConfigValue;\n }\n | {\n all: PluginShowIfCondition[];\n }\n | {\n any: PluginShowIfCondition[];\n };\n\n/**\n * 插件翻译内容\n *\n * 用于为插件的 UI 元素提供多语言支持\n *\n * 格式说明:\n * - 第一层 key 为语言代码(如 'en', 'zh-CN')\n * - 第二层 key 为翻译键(使用点号分隔的扁平结构)\n * - 系统会自动为所有翻译键添加 `plugins.{pluginName}` 前缀\n *\n * @example\n * ```typescript\n * static readonly translations: PluginTranslations = {\n * 'en': {\n * 'field.label': 'Field Label',\n * 'field.description': 'Field description text',\n * 'options.value1.label': 'Option 1'\n * },\n * 'zh-CN': {\n * 'field.label': '字段标签',\n * 'field.description': '字段描述文本',\n * 'options.value1.label': '选项 1'\n * }\n * };\n * ```\n */\nexport type PluginTranslations = Record<string, Record<string, string>>;\n\n/**\n * 插件配置字段定义\n * 用于动态生成配置表单\n */\nexport interface PluginConfigField {\n /**\n * 字段名(配置对象的 key)\n */\n name: string;\n\n /**\n * 字段类型\n */\n type: PluginConfigFieldType;\n\n /**\n * 显示标签(支持 i18n key 或直接字符串)\n */\n label: string;\n\n /**\n * 是否必填\n */\n required?: boolean;\n\n /**\n * 默认值\n */\n default?: PluginConfigValue;\n\n /**\n * select/multiselect 的选项列表\n */\n options?: Array<{\n label: string;\n value: string;\n description?: string;\n }>;\n\n /**\n * 描述/帮助文本\n */\n description?: string;\n\n /**\n * 占位符文本\n */\n placeholder?: string;\n\n catalogPlugin?: string;\n sourceCatalogProviderField?: string;\n targetCatalogProviderField?: string;\n\n /**\n * 验证规则\n */\n validation?: ValidationRule;\n\n /**\n * 条件显示(依赖其他字段的值)\n */\n showIf?: PluginShowIfCondition;\n\n /**\n * 子字段定义(type=object 时使用)\n */\n properties?: PluginConfigField[];\n\n /**\n * 数组元素类型(type=array 时使用)\n */\n items?: PluginConfigField;\n\n /**\n * 字段转换规则(可序列化)\n * 定义虚拟字段与实际字段之间的映射关系\n *\n * 当设置此属性时:\n * - 该字段为\"虚拟字段\",仅用于 UI 交互\n * - UI 输入值会根据转换规则展开为多个实际字段\n * - 实际字段的值会根据转换规则合并显示在 UI 中\n * - 虚拟字段本身不会保存到配置中\n *\n * @example\n * // 将 \"anthropic-openai\" 拆分为 { from: \"anthropic\", to: \"openai\" }\n * fieldTransform: {\n * type: 'split',\n * separator: '-',\n * fields: ['from', 'to']\n * }\n */\n fieldTransform?: FieldTransform;\n}\n\n/**\n * 类型守卫:检查插件类是否有 configSchema\n */\nexport function hasConfigSchema(\n PluginClass: any\n): PluginClass is { configSchema: PluginConfigField[] } {\n return 'configSchema' in PluginClass && Array.isArray(PluginClass.configSchema);\n}\n\n/**\n * Plugin 存储接口\n * 提供基于 Key-Value 的持久化存储能力\n */\n/** Trusted observation plugins may execute SQL only against access.db, never config.db.\n * Callers must perform database work within the callback; hosts revoke subsequent operations.\n */\nexport interface PluginObservationStorage {\n withDatabase<T>(operation: (database: import('bun:sqlite').Database) => T): T;\n}\n\n/** Result of a strict, side-effect-free namespaced KV read. */\nexport type PluginStorageReadResult<T> =\n | { readonly found: false }\n | { readonly found: true; readonly value: T };\n\nexport interface PluginStorage {\n readonly observation?: PluginObservationStorage;\n /** Immediate namespaced KV access for cross-process shared values. */\n uncached?(): PluginStorage;\n /** Flush pending KV writes during host disposal. */\n flush?(): Promise<void>;\n\n /** Legacy embedder extension; the core does not construct or grant it by name. */\n readonly metering?: TokenStatsMeteringStorage;\n /**\n * 获取值\n * @param key 键\n * @returns 值,如果不存在则返回 null\n */\n get<T = any>(key: string): Promise<T | null>;\n\n /**\n * 严格只读获取值:直接读取当前命名空间的已提交数据。\n * 不访问/回填/刷新 LRU 缓存,也不清除过期记录;SQL/JSON 错误直接抛出。\n * 有效 JSON null 视为 found:true,缺失或已过期视为 found:false。\n * 可选仅为既有 embedder / 测试 fixture 的源码兼容;Bungee 实际存储实现必须提供。\n */\n readStrict?<T = unknown>(key: string): Promise<PluginStorageReadResult<T>>;\n\n /**\n * 设置值\n * @param key 键\n * @param value 值(必须可序列化)\n * @param ttlSeconds 过期时间(秒),可选\n */\n set(key: string, value: any, ttlSeconds?: number): Promise<void>;\n\n /**\n * 删除值\n * @param key 键\n */\n delete(key: string): Promise<void>;\n\n /**\n * 获取所有键(支持前缀过滤)\n * @param prefix 前缀,可选\n */\n keys(prefix?: string): Promise<string[]>;\n\n /**\n * 清空存储(仅限当前插件的命名空间)\n */\n clear(): Promise<void>;\n\n /**\n * 原子递增操作\n * 原子地递增指定对象字段的值,避免并发竞争\n * @param key 键\n * @param field 字段名\n * @param delta 递增量(默认1,可为负数)\n * @returns 递增后的新值\n */\n increment(key: string, field: string, delta?: number): Promise<number>;\n\n /**\n * 比较并交换操作\n * 仅当当前值等于期望值时,才更新为新值(原子操作)\n * @param key 键\n * @param field 字段名\n * @param expected 期望的当前值\n * @param newValue 新值\n * @returns 是否更新成功\n */\n compareAndSet(key: string, field: string, expected: any, newValue: any): Promise<boolean>;\n}\n\nexport type TokenStatsMetricName =\n | 'inputTokens' | 'outputTokens' | 'officialInputTokens' | 'officialOutputTokens'\n | 'estimatedInputTokens' | 'estimatedOutputTokens' | 'cacheReadTokens' | 'cacheWriteTokens'\n | 'partialOutputs' | 'logicalRequests' | 'upstreamAttempts' | 'observationIncompleteAttempts'\n | 'inputAuthorityOfficial' | 'inputAuthorityLocal' | 'inputAuthorityHeuristic' | 'inputAuthorityPartial' | 'inputAuthorityNone'\n | 'outputAuthorityOfficial' | 'outputAuthorityLocal' | 'outputAuthorityHeuristic' | 'outputAuthorityPartial' | 'outputAuthorityNone';\n\nexport type TokenStatsMetrics = Partial<Record<TokenStatsMetricName, number>>;\n\nexport type TokenStatsGroupBy = 'model' | 'time';\nexport type TokenStatsRange = '1h' | '12h' | '24h' | '1d' | '7d' | '30d' | 'day' | 'week' | 'month';\n\nexport type TokenStatsValueSource = 'usage' | 'estimated' | 'partial' | 'unknown';\n\n/** One ended upstream attempt; provider is the wire protocol family, not a vendor name. */\nexport interface TokenStatsAttempt {\n readonly key_id?: string | null;\n readonly attempt_id: string;\n readonly request_id: string;\n readonly finished_at_ms: number;\n readonly route_id: string;\n readonly upstream_id: string;\n readonly provider: string;\n readonly outcome: string;\n readonly model: string;\n readonly input_tokens: number | null;\n readonly output_tokens: number | null;\n readonly input_source: TokenStatsValueSource;\n readonly output_source: TokenStatsValueSource;\n readonly cache_read_tokens: number | null;\n readonly cache_write_tokens: number | null;\n readonly cost_usd: number | null;\n readonly observation_incomplete: boolean;\n}\n\nexport type TokenStatsSnapshotMetrics = Record<TokenStatsMetricName, number> & {\n readonly estimatedCostUsd: number | null;\n};\n\nexport interface TokenStatsMeteringStorage {\n listClientModels?(input: {page?:number;pageSize?:number;keyword?:string}): Promise<{models:string[];total:number;page:number;pageSize:number}>;\n recordAttempt(row: TokenStatsAttempt): Promise<void>;\n queryWindowSnapshot(input: {\n asOfMs: number;\n range: TokenStatsRange;\n groupBy: TokenStatsGroupBy;\n timeZone?: string;\n keyId?: string;\n }): Promise<{\n all: TokenStatsSnapshotMetrics;\n data: Array<{ dimension: string; bucketStartMs?: number; metrics: TokenStatsSnapshotMetrics }>;\n bucketMs?: number;\n bucketStarts?: number[];\n /** Exclusive end of the last displayed bucket; calendar axes include future periods. */\n bucketEndMs?: number;\n present: boolean;\n }>;\n}\n\n/**\n * Plugin 元数据接口\n * 用于 UI 展示和系统集成\n */\nexport interface PluginMetadata {\n /**\n * 显示名称(支持翻译键或直接字符串)\n * 默认使用插件的 name,此字段用于提供更友好的 UI 显示名\n *\n * 支持翻译键格式:包含 `.` 且不包含空格\n * @example 'metadata.displayName' // 翻译键,会自动翻译\n * @example 'My Plugin' // 直接字符串,不翻译\n */\n name?: string;\n\n /**\n * 插件描述(支持翻译键或直接字符串)\n * 用于 UI 展示插件的详细说明\n *\n * 支持翻译键格式:包含 `.` 且不包含空格\n * @example 'metadata.description' // 翻译键,会自动翻译\n * @example 'A demo plugin for testing' // 直接字符串,不翻译\n */\n description?: string;\n\n /**\n * 图标(Material Icon 名称或 URL)\n */\n icon?: string;\n\n /**\n * 作者信息\n */\n author?: {\n name: string;\n email?: string;\n url?: string;\n } | string;\n\n /**\n * 许可证\n */\n license?: string;\n\n /**\n * 项目主页\n */\n homepage?: string;\n\n /**\n * 代码仓库\n */\n repository?: {\n type: string;\n url: string;\n } | string;\n\n /**\n * 关键词(用于搜索)\n */\n keywords?: string[];\n\n /**\n * 分类\n */\n categories?: string[];\n\n /**\n * 插件激活事件\n * 声明插件何时被激活\n */\n activationEvents?: string[];\n\n /**\n * 插件能力声明\n * 声明插件使用的系统能力\n */\n /**\n * 插件权限声明\n * 声明插件需要的系统权限(如 network, storage, api:routes 等)\n */\n permissions?: string[];\n\n capabilities?: {\n /**\n * 是否需要网络访问\n */\n network?: boolean;\n\n /**\n * 是否需要文件系统访问\n */\n filesystem?: boolean;\n\n /**\n * 是否需要数据库访问\n */\n database?: boolean;\n\n /**\n * 自定义能力声明\n */\n custom?: string[];\n };\n\n /**\n * 依赖的其他插件\n */\n dependencies?: Record<string, string>;\n\n /**\n * 可选依赖\n */\n optionalDependencies?: Record<string, string>;\n\n /**\n * 引擎版本要求\n */\n engines?: {\n bungee?: string;\n node?: string;\n };\n\n /**\n * 贡献点配置\n * 统一声明插件提供的 UI 和功能能力\n */\n contributes?: {\n /**\n * 导航集成\n */\n navigation?: Array<{\n label: string;\n path: string;\n icon?: string;\n target?: 'sidebar' | 'header'; // 默认 sidebar\n /** Optional statically registered native page component. */\n component?: string;\n }>;\n\n /**\n * 仪表板集成\n */\n widgets?: Array<{\n title: string;\n path: string;\n size?: 'small' | 'medium' | 'large' | 'full'; // small=1x1, medium=2x1, large=2x2, full=4x2\n }>;\n\n /**\n * 设置页路径\n */\n settings?: string;\n\n /**\n * 命令贡献\n * 声明插件提供的命令\n */\n commands?: Array<{\n command: string;\n title: string;\n category?: string;\n icon?: string;\n }>;\n\n /**\n * 配置贡献\n * 声明插件的配置项\n */\n configuration?: {\n title?: string;\n properties: Record<string, {\n type: 'string' | 'number' | 'boolean' | 'array' | 'object';\n default?: any;\n description?: string;\n enum?: any[];\n items?: any;\n properties?: any;\n }>;\n };\n\n /**\n * 原生仪表板组件(非 iframe)\n *\n * 与 widgets 不同,nativeWidgets 直接渲染为 Svelte 组件,\n * 可以复用主应用的图表库和样式系统。\n *\n * 安全说明:组件必须是内置的,插件只能通过 component 名称引用白名单中的组件\n *\n * @example\n * ```typescript\n * nativeWidgets: [{\n * id: 'token-stats-chart',\n * title: 'Token 统计',\n * size: 'medium',\n * component: 'TokenStatsChart',\n * props: { days: 7 }\n * }]\n * ```\n */\n nativeWidgets?: Array<{\n /** 唯一标识符 */\n id: string;\n /** 显示标题(支持 i18n key) */\n title: string;\n /** 尺寸:small=1x1, medium=2x1, large=2x2, full=4x2 */\n size: 'small' | 'medium' | 'large' | 'full';\n /** 组件名称(映射到内置组件白名单) */\n component: string;\n presentation?: 'kpi';\n /** 传递给组件的 props */\n props?: Record<string, any>;\n }>;\n\n /**\n * API 端点贡献\n *\n * 允许插件注册自己的 API 端点,端点路径强制在 /api/plugins/:pluginName/ 命名空间下。\n * 只有 global scope 的插件实例才能处理 API 请求。\n *\n * @example\n * ```typescript\n * api: [{\n * path: '/stats', // 实际路径: /api/plugins/my-plugin/stats\n * methods: ['GET'],\n * handler: 'getStats', // 调用控制面处理器的 getStats 方法\n * execution: 'control'\n * }]\n * ```\n */\n api?: Array<{\n /** 相对路径(相对于 /api/plugins/:pluginName) */\n path: string;\n /** 支持的 HTTP 方法 */\n methods: Array<'GET' | 'POST' | 'PUT' | 'DELETE'>;\n /** 处理器方法名(Plugin 类的方法) */\n handler: string;\n execution: 'control';\n capability?: string;\n methodCapabilities?: Record<string,string>;\n }>;\n };\n\n /**\n * @deprecated 使用 contributes.widgets 和 contributes.settings 代替\n */\n ui?: {\n dashboard?: Array<{\n id: string;\n title: string;\n path: string;\n size?: { w: number; h: number };\n }>;\n settings?: string;\n };\n}\n\n\n// ============ Plugin 接口 ============\n\nimport type { PluginHooks, PluginInitContext } from './hooks';\n\n/**\n * Plugin 接口(基于 Hook Registry 模式)\n *\n * 所有插件必须实现此接口。插件不再直接定义钩子方法,而是通过 register(hooks) 方法注册回调。\n *\n * @example\n * ```typescript\n * export const MyPlugin = definePlugin(\n * class implements Plugin {\n * static readonly name = 'my-plugin';\n * static readonly version = '1.0.0';\n *\n * bodyRequirements(): PluginBodyRequirements { return { request: 'none' }; }\n * register(hooks: PluginHooks) {\n * // 并行执行的初始化(非阻塞)\n * hooks.onRequestInit.tapPromise({ name: 'my-plugin' }, async (ctx) => {\n * await this.recordMetric();\n * });\n *\n * // 串行执行的请求修改(阻塞)\n * hooks.onBeforeRequest.tapPromise({ name: 'my-plugin' }, async (ctx) => {\n * ctx.headers['X-Custom'] = 'value';\n * return ctx;\n * });\n * }\n * }\n * );\n * ```\n */\n/** SDK 3: content demand is evaluated before reading each selected request body. */\nexport interface PluginBodyRequirementContext {\n readonly requestId: string;\n readonly method: string;\n readonly url: URL;\n readonly routeId?: string;\n readonly serviceId?: string;\n readonly upstreamId?: string;\n readonly stage: 'route' | 'selected';\n}\nexport interface PluginBodyRequirements {\n readonly request: 'none' | 'json-read' | 'json-write';\n readonly response?: readonly ('json' | 'sse-json')[];\n /** Replay retention is independent of content decoding. */\n readonly replay?: boolean;\n /** Optional bounded observation never upgrades forwarding demands. */\n readonly observe?: Readonly<{ request?: boolean; response?: boolean; sse?: boolean }>;\n}\nexport interface SSEEnvelope {\n data: string;\n json?: unknown;\n event?: string;\n id?: string;\n retry?: string;\n comments?: string[];\n /** Original complete event; remove after modifying data or metadata. */\n raw?: string;\n}\nexport interface Plugin {\n bodyRequirements(context: PluginBodyRequirementContext): PluginBodyRequirements;\n resolveAdmissionModel?: import('./data-admission/worker').WorkerAdmissionPlugin['resolveAdmissionModel'];\n prepareAdmissionAttempt?: import('./data-admission/worker').WorkerAdmissionPlugin['prepareAdmissionAttempt'];\n /**\n * 插件初始化\n * 在 register 之前调用,用于初始化配置和资源\n */\n init?(context: PluginInitContext): Promise<void>;\n\n /**\n * 注册 Hooks\n * 插件在此方法中选择需要的 hooks 并注册回调\n *\n * 流式处理现在也通过 Hook 注册:\n * - hooks.onStreamChunk: 处理流式响应的每个 chunk(支持 N:M 转换)\n * - hooks.onFlushStream: 流结束时刷新缓冲区\n */\n register(hooks: PluginHooks): void;\n\n /**\n * 重置状态(对象池使用)\n */\n reset?(): void | Promise<void>;\n\n /**\n * 插件销毁\n */\n onDestroy?(): Promise<void>;\n}\n\n/**\n * Plugin 构造器类型\n * 约束插件类必须提供静态元数据\n */\nexport type PluginConstructor = {\n new (...args: any[]): Plugin;\n\n /**\n * 插件唯一标识符(静态属性,必填)\n */\n readonly name: string;\n\n /**\n * 插件版本号(静态属性,必填)\n */\n readonly version: string;\n\n /**\n * 插件配置 Schema(静态属性,可选)\n * 如果插件需要配置,应定义此静态属性来描述配置项\n */\n readonly configSchema?: PluginConfigField[];\n\n /**\n * 插件扩展元数据(静态属性,可选)\n * 用于 UI 集成、权限声明、依赖管理等高级功能\n */\n readonly metadata?: PluginMetadata;\n\n /**\n * 插件翻译内容(静态属性,可选)\n *\n * 用于提供插件 UI 元素的多语言翻译\n * 系统会自动收集并注册到前端 i18n 系统\n */\n readonly translations?: PluginTranslations;\n\n};\n\n/**\n * 插件定义辅助函数\n * 提供编译时类型检查,确保插件满足所有静态和实例要求\n *\n * @example\n * ```typescript\n * export const MyPlugin = definePlugin(\n * class implements Plugin {\n * static readonly name = 'my-plugin';\n * static readonly version = '1.0.0';\n * static readonly metadata = {\n * name: 'My Plugin',\n * description: 'My plugin description',\n * icon: 'extension'\n * };\n *\n * constructor(options: MyOptions) { }\n *\n * bodyRequirements(): PluginBodyRequirements { return { request: 'none' }; }\n * register(hooks: PluginHooks) {\n * hooks.onBeforeRequest.tapPromise({ name: 'my-plugin' }, async (ctx) => {\n * // Plugin logic here\n * return ctx;\n * });\n * }\n * }\n * );\n *\n * export default MyPlugin;\n * ```\n */\nexport function definePlugin<T extends Plugin>(\n plugin: PluginConstructor & { new(...args: any[]): T }\n): typeof plugin {\n return plugin;\n}\n\n/**\n * 运行时辅助函数:获取插件实例的名称\n * 从插件类的静态属性读取\n */\nexport function getPluginName(plugin: Plugin): string {\n return (plugin.constructor as PluginConstructor).name;\n}\n\n/**\n * 运行时辅助函数:获取插件实例的版本\n * 从插件类的静态属性读取\n */\nexport function getPluginVersion(plugin: Plugin): string {\n return (plugin.constructor as PluginConstructor).version;\n}\n\n/**\n * 运行时辅助函数:获取插件实例的描述\n * 从插件类的 metadata.description 静态属性读取\n */\nexport function getPluginDescription(plugin: Plugin): string | undefined {\n return (plugin.constructor as PluginConstructor).metadata?.description;\n}\n\n/**\n * 运行时辅助函数:获取插件实例的元数据\n * 从插件类的静态属性读取\n */\nexport function getPluginMetadata(plugin: Plugin): PluginMetadata | undefined {\n return (plugin.constructor as PluginConstructor).metadata;\n}\n",
8
+ "import type { PluginConfigConstraint, PluginRuntimeScope } from '@jeffusion/bungee-types';\nexport type { PluginConfigConstraint, PluginAllowedTuplesConstraint, PluginRuntimeScope } from '@jeffusion/bungee-types';\n/**\n * Plugin 系统类型定义\n */\n\n/**\n * 插件配置值类型\n * 定义了插件配置中允许的值类型,比 `any` 更具体\n */\nexport type PluginConfigValue =\n | string\n | number\n | boolean\n | null\n | PluginConfigValue[]\n | { [key: string]: PluginConfigValue };\n\nexport interface CredentialOutboundHeaderProfile {\n readonly passthrough: readonly string[];\n readonly set: Readonly<Record<string, string>>;\n}\n\nexport interface CredentialRequestPolicy {\n readonly pathname: string;\n readonly methods: readonly string[];\n readonly outboundHeaders?: CredentialOutboundHeaderProfile;\n}\n\n// ============ Manifest 类型定义 ============\n\n/**\n * 插件 manifest.json 规范\n *\n * manifest.json 是插件的声明性配置文件,作为插件元数据的唯一真相来源。\n * 框架通过读取此文件来发现插件能力,无需执行插件代码。\n *\n * @example\n * ```json\n * {\n * \"name\": \"token-stats\",\n * \"version\": \"1.0.0\",\n * \"description\": \"Track AI API token usage\",\n * \"main\": \"server/index.ts\",\n * \"ui\": {\n * \"components\": [\n * { \"name\": \"TokenStatsChart\", \"entry\": \"ui/TokenStatsChart.svelte\" }\n * ]\n * },\n * \"contributes\": {\n * \"nativeWidgets\": [...],\n * \"api\": [...]\n * },\n * \"translations\": { \"en\": {...}, \"zh-CN\": {...} }\n * }\n * ```\n */\nexport interface PluginManifest {\n /**\n * 插件唯一标识符(必填)\n * 用于路由、存储命名空间等\n */\n name: string;\n\n /**\n * 插件版本号(必填)\n * 遵循 semver 规范\n */\n version: string;\n\n schemaVersion?: number | string;\n artifactKind?: string;\n\n /**\n * 插件描述(支持翻译键)\n */\n description?: string;\n\n /**\n * 图标(Material Icon 名称或 URL)\n */\n icon?: string;\n\n /**\n * 作者信息\n */\n author?: string | {\n name: string;\n email?: string;\n url?: string;\n };\n\n /**\n * 许可证\n */\n license?: string;\n\n /**\n * 项目主页\n */\n homepage?: string;\n\n /**\n * 代码仓库\n */\n repository?: string | {\n type: string;\n url: string;\n };\n\n /**\n * 关键词(用于搜索)\n */\n keywords?: string[];\n\n /**\n * 服务端入口配置\n */\n main?: string;\n\n capabilities?: string[];\n /** Global providers run once whenever activated; global-and-scoped also retains application bindings. Defaults to scoped. */\n runtimeScope?: PluginRuntimeScope;\n services?: import('./plugin-services').PluginServiceDeclarations;\n /** Optional control-plane runtime capability. */\n ingress?: { entry: string };\n management?: { loginComponent?: string; setupComponent?: string };\n control?: {\n entry: string;\n rpc: Array<{\n name: string;\n access: 'bound-attempt';\n }>;\n };\n /**\n * UI 扩展模式(冻结边界)\n * - none: 无 UI 扩展\n * - native-static: 原生静态组件(依赖构建期注册表,不支持运行时注入)\n * - sandbox-iframe: 独立沙箱扩展(通过 iframe 隔离,独立服务资源)\n */\n uiExtensionMode?: 'none' | 'native-static' | 'sandbox-iframe';\n\n /**\n * UI 组件配置\n */\n ui?: {\n /**\n * 组件列表\n * 用于自动注册到组件白名单\n */\n components?: Array<{\n /** 组件名称(用于 nativeWidgets.component 引用) */\n name: string;\n /** 组件入口文件路径(相对于插件根目录) */\n entry: string;\n }>;\n };\n\n /**\n * 权限声明\n * 用于安全预检(用户上传插件场景)\n */\n permissions?: Array<\n | 'network' // 网络访问\n | 'storage' // 持久化存储\n | 'filesystem' // 文件系统访问\n | string // 自定义权限\n >;\n\n /**\n * 插件依赖\n */\n dependencies?: Record<string, string>;\n\n /** Optional providers are never included in automatic activation closure. */\n optionalDependencies?: Record<string, string>;\n\n /**\n * 引擎版本要求\n */\n engines?: {\n bungee?: string;\n node?: string;\n };\n\n /**\n * 贡献点配置\n */\n contributes?: {\n /**\n * 原生仪表板组件\n */\n nativeWidgets?: Array<{\n id: string;\n title: string;\n size: 'small' | 'medium' | 'large' | 'full';\n component: string;\n presentation?: 'kpi';\n props?: Record<string, any>;\n }>;\n\n /**\n * API 端点\n */\n api?: Array<{\n path: string;\n methods: Array<'GET' | 'POST' | 'PUT' | 'DELETE'>;\n handler: string;\n execution: 'control';\n capability?: string;\n methodCapabilities?: Record<string,string>;\n }>;\n resourceExtensions?: Array<{resource:'api-key';component:string;path:'/keys/:keyId'}>;\n upstreamSources?: Array<{\n id: string;\n label: string;\n listAccounts: string;\n createDraft: string;\n credentialPolicy: {\n allowedOrigins: string[];\n allowedRequests: CredentialRequestPolicy[];\n allowedHeaderNames: string[];\n };\n }>;\n\n /**\n * iframe 仪表板组件(Legacy)\n */\n widgets?: Array<{\n title: string;\n path: string;\n size?: 'small' | 'medium' | 'large' | 'full';\n }>;\n\n /**\n * 导航菜单\n */\n navigation?: Array<{\n label: string;\n path: string;\n icon?: string;\n target?: 'sidebar' | 'header';\n component?: string;\n }>;\n\n /**\n * 设置页路径\n */\n settings?: string;\n\n /**\n * 原生静态设置组件名称(仅 builtin 插件可声明)\n */\n nativeSettingsComponent?: string;\n\n /**\n * 命令贡献\n */\n commands?: Array<{\n command: string;\n title: string;\n category?: string;\n icon?: string;\n }>;\n };\n\n /**\n * UI 展示元数据(新架构)\n * 用于存放 UI 相关的元数据,支持翻译键\n */\n metadata?: {\n /** 显示名称(支持翻译键) */\n name?: string;\n /** 描述(支持翻译键) */\n description?: string;\n /** 图标 */\n icon?: string;\n /** 贡献点配置(与顶层 contributes 合并) */\n contributes?: PluginManifest['contributes'];\n };\n\n /**\n * 配置 Schema\n * 用于动态生成配置表单\n */\n configSchema?: PluginConfigField[];\n configConstraints?: readonly PluginConfigConstraint[];\n\n /**\n * 多语言翻译\n */\n translations?: PluginTranslations;\n}\n\n/**\n * 从 manifest 加载的插件信息\n * 包含 manifest 数据和解析后的路径信息\n */\nexport interface LoadedPluginManifest extends PluginManifest {\n /** 插件根目录的绝对路径 */\n pluginDir: string;\n /** manifest.json 文件的绝对路径 */\n manifestPath: string;\n /** 服务端入口的绝对路径 */\n mainPath?: string;\n /** 控制面入口的绝对路径 */\n controlPath?: string;\n uiAssetsPath?: string;\n}\n\n// 导出 Hook 系统类型\nexport type {\n PluginHooks,\n RequestContext,\n MutableRequestContext,\n ResponseContext,\n ErrorContext,\n StreamChunkContext,\n FinallyContext,\n PluginInitContext,\n PluginLogger,\n} from './hooks';\n\nexport { createPluginHooks, clearHooks, getHooksStats, resetHooksStats } from './hooks';\nexport type { TapInfo } from './hooks';\n\n/**\n * 插件配置字段类型\n */\nexport type PluginConfigFieldType =\n | 'string' // 文本输入\n | 'number' // 数字输入\n | 'boolean' // 复选框\n | 'select' // 单选下拉\n | 'multiselect' // 多选下拉\n | 'textarea' // 多行文本\n | 'json' // JSON 编辑器\n | 'gateway_target'\n | 'model_mapping'\n | 'object' // 对象(嵌套表单)\n | 'array'; // 数组(列表编辑器)\n\n/**\n * 验证规则\n */\nexport interface ValidationRule {\n /**\n * 正则表达式模式\n */\n pattern?: string;\n\n /**\n * 最小值/最小长度\n */\n min?: number;\n\n /**\n * 最大值/最大长度\n */\n max?: number;\n\n /**\n * 自定义错误消息\n */\n message?: string;\n}\n\n/**\n * 字段转换规则(可序列化)\n * 用于定义虚拟字段与实际字段之间的转换关系\n */\nexport interface FieldTransform {\n /**\n * 转换类型\n */\n type: 'split' | 'concat' | 'compute';\n\n /**\n * split 类型专用:分隔符\n * @example '-' 将 \"a-b\" 拆分为 [\"a\", \"b\"]\n */\n separator?: string;\n\n /**\n * split/concat 类型专用:目标字段列表\n * @example ['from', 'to']\n */\n fields?: string[];\n}\n\nexport type PluginShowIfCondition =\n | {\n field: string;\n value: PluginConfigValue;\n }\n | {\n all: PluginShowIfCondition[];\n }\n | {\n any: PluginShowIfCondition[];\n };\n\n/**\n * 插件翻译内容\n *\n * 用于为插件的 UI 元素提供多语言支持\n *\n * 格式说明:\n * - 第一层 key 为语言代码(如 'en', 'zh-CN')\n * - 第二层 key 为翻译键(使用点号分隔的扁平结构)\n * - 系统会自动为所有翻译键添加 `plugins.{pluginName}` 前缀\n *\n * @example\n * ```typescript\n * static readonly translations: PluginTranslations = {\n * 'en': {\n * 'field.label': 'Field Label',\n * 'field.description': 'Field description text',\n * 'options.value1.label': 'Option 1'\n * },\n * 'zh-CN': {\n * 'field.label': '字段标签',\n * 'field.description': '字段描述文本',\n * 'options.value1.label': '选项 1'\n * }\n * };\n * ```\n */\nexport type PluginTranslations = Record<string, Record<string, string>>;\n\n/**\n * 插件配置字段定义\n * 用于动态生成配置表单\n */\nexport interface PluginConfigField {\n /**\n * 字段名(配置对象的 key)\n */\n name: string;\n\n /**\n * 字段类型\n */\n type: PluginConfigFieldType;\n\n /**\n * 显示标签(支持 i18n key 或直接字符串)\n */\n label: string;\n\n /**\n * 是否必填\n */\n required?: boolean;\n\n /**\n * 默认值\n */\n default?: PluginConfigValue;\n\n /**\n * select/multiselect 的选项列表\n */\n options?: Array<{\n label: string;\n value: string;\n description?: string;\n }>;\n\n /**\n * 描述/帮助文本\n */\n description?: string;\n\n /**\n * 占位符文本\n */\n placeholder?: string;\n\n catalogPlugin?: string;\n sourceCatalogProviderField?: string;\n targetCatalogProviderField?: string;\n\n /**\n * 验证规则\n */\n validation?: ValidationRule;\n\n /**\n * 条件显示(依赖其他字段的值)\n */\n showIf?: PluginShowIfCondition;\n\n /**\n * 子字段定义(type=object 时使用)\n */\n properties?: PluginConfigField[];\n\n /**\n * 数组元素类型(type=array 时使用)\n */\n items?: PluginConfigField;\n\n /**\n * 字段转换规则(可序列化)\n * 定义虚拟字段与实际字段之间的映射关系\n *\n * 当设置此属性时:\n * - 该字段为\"虚拟字段\",仅用于 UI 交互\n * - UI 输入值会根据转换规则展开为多个实际字段\n * - 实际字段的值会根据转换规则合并显示在 UI 中\n * - 虚拟字段本身不会保存到配置中\n *\n * @example\n * // 将 \"anthropic-openai\" 拆分为 { from: \"anthropic\", to: \"openai\" }\n * fieldTransform: {\n * type: 'split',\n * separator: '-',\n * fields: ['from', 'to']\n * }\n */\n fieldTransform?: FieldTransform;\n}\n\n/**\n * 类型守卫:检查插件类是否有 configSchema\n */\nexport function hasConfigSchema(\n PluginClass: any\n): PluginClass is { configSchema: PluginConfigField[] } {\n return 'configSchema' in PluginClass && Array.isArray(PluginClass.configSchema);\n}\n\n/**\n * Plugin 存储接口\n * 提供基于 Key-Value 的持久化存储能力\n */\n/** Trusted observation plugins may execute SQL only against access.db, never config.db.\n * Callers must perform database work within the callback; hosts revoke subsequent operations.\n */\nexport interface PluginObservationStorage {\n withDatabase<T>(operation: (database: import('bun:sqlite').Database) => T): T;\n}\n\n/** Result of a strict, side-effect-free namespaced KV read. */\nexport type PluginStorageReadResult<T> =\n | { readonly found: false }\n | { readonly found: true; readonly value: T };\n\nexport interface PluginStorage {\n readonly observation?: PluginObservationStorage;\n /** Immediate namespaced KV access for cross-process shared values. */\n uncached?(): PluginStorage;\n /** Flush pending KV writes during host disposal. */\n flush?(): Promise<void>;\n\n /** Legacy embedder extension; the core does not construct or grant it by name. */\n readonly metering?: TokenStatsMeteringStorage;\n /**\n * 获取值\n * @param key 键\n * @returns 值,如果不存在则返回 null\n */\n get<T = any>(key: string): Promise<T | null>;\n\n /**\n * 严格只读获取值:直接读取当前命名空间的已提交数据。\n * 不访问/回填/刷新 LRU 缓存,也不清除过期记录;SQL/JSON 错误直接抛出。\n * 有效 JSON null 视为 found:true,缺失或已过期视为 found:false。\n * 可选仅为既有 embedder / 测试 fixture 的源码兼容;Bungee 实际存储实现必须提供。\n */\n readStrict?<T = unknown>(key: string): Promise<PluginStorageReadResult<T>>;\n\n /**\n * 设置值\n * @param key 键\n * @param value 值(必须可序列化)\n * @param ttlSeconds 过期时间(秒),可选\n */\n set(key: string, value: any, ttlSeconds?: number): Promise<void>;\n\n /**\n * 删除值\n * @param key 键\n */\n delete(key: string): Promise<void>;\n\n /**\n * 获取所有键(支持前缀过滤)\n * @param prefix 前缀,可选\n */\n keys(prefix?: string): Promise<string[]>;\n\n /**\n * 清空存储(仅限当前插件的命名空间)\n */\n clear(): Promise<void>;\n\n /**\n * 原子递增操作\n * 原子地递增指定对象字段的值,避免并发竞争\n * @param key 键\n * @param field 字段名\n * @param delta 递增量(默认1,可为负数)\n * @returns 递增后的新值\n */\n increment(key: string, field: string, delta?: number): Promise<number>;\n\n /**\n * 比较并交换操作\n * 仅当当前值等于期望值时,才更新为新值(原子操作)\n * @param key 键\n * @param field 字段名\n * @param expected 期望的当前值\n * @param newValue 新值\n * @returns 是否更新成功\n */\n compareAndSet(key: string, field: string, expected: any, newValue: any): Promise<boolean>;\n}\n\nexport type TokenStatsMetricName =\n | 'inputTokens' | 'outputTokens' | 'officialInputTokens' | 'officialOutputTokens'\n | 'estimatedInputTokens' | 'estimatedOutputTokens' | 'cacheReadTokens' | 'cacheWriteTokens'\n | 'partialOutputs' | 'logicalRequests' | 'upstreamAttempts' | 'observationIncompleteAttempts'\n | 'inputAuthorityOfficial' | 'inputAuthorityLocal' | 'inputAuthorityHeuristic' | 'inputAuthorityPartial' | 'inputAuthorityNone'\n | 'outputAuthorityOfficial' | 'outputAuthorityLocal' | 'outputAuthorityHeuristic' | 'outputAuthorityPartial' | 'outputAuthorityNone';\n\nexport type TokenStatsMetrics = Partial<Record<TokenStatsMetricName, number>>;\n\nexport type TokenStatsGroupBy = 'model' | 'time';\nexport type TokenStatsRange = '1h' | '12h' | '24h' | '1d' | '7d' | '30d' | 'day' | 'week' | 'month';\n\nexport type TokenStatsValueSource = 'usage' | 'estimated' | 'partial' | 'unknown';\n\n/** One ended upstream attempt; provider is the wire protocol family, not a vendor name. */\nexport interface TokenStatsAttempt {\n readonly key_id?: string | null;\n readonly attempt_id: string;\n readonly request_id: string;\n readonly finished_at_ms: number;\n readonly route_id: string;\n readonly upstream_id: string;\n readonly provider: string;\n readonly outcome: string;\n readonly model: string;\n readonly input_tokens: number | null;\n readonly output_tokens: number | null;\n readonly input_source: TokenStatsValueSource;\n readonly output_source: TokenStatsValueSource;\n readonly cache_read_tokens: number | null;\n readonly cache_write_tokens: number | null;\n readonly cost_usd: number | null;\n readonly observation_incomplete: boolean;\n}\n\nexport type TokenStatsSnapshotMetrics = Record<TokenStatsMetricName, number> & {\n readonly estimatedCostUsd: number | null;\n};\n\nexport interface TokenStatsMeteringStorage {\n listClientModels?(input: {page?:number;pageSize?:number;keyword?:string}): Promise<{models:string[];total:number;page:number;pageSize:number}>;\n recordAttempt(row: TokenStatsAttempt): Promise<void>;\n queryWindowSnapshot(input: {\n asOfMs: number;\n range: TokenStatsRange;\n groupBy: TokenStatsGroupBy;\n timeZone?: string;\n keyId?: string;\n }): Promise<{\n all: TokenStatsSnapshotMetrics;\n data: Array<{ dimension: string; bucketStartMs?: number; metrics: TokenStatsSnapshotMetrics }>;\n bucketMs?: number;\n bucketStarts?: number[];\n /** Exclusive end of the last displayed bucket; calendar axes include future periods. */\n bucketEndMs?: number;\n present: boolean;\n }>;\n}\n\n/**\n * Plugin 元数据接口\n * 用于 UI 展示和系统集成\n */\nexport interface PluginMetadata {\n /**\n * 显示名称(支持翻译键或直接字符串)\n * 默认使用插件的 name,此字段用于提供更友好的 UI 显示名\n *\n * 支持翻译键格式:包含 `.` 且不包含空格\n * @example 'metadata.displayName' // 翻译键,会自动翻译\n * @example 'My Plugin' // 直接字符串,不翻译\n */\n name?: string;\n\n /**\n * 插件描述(支持翻译键或直接字符串)\n * 用于 UI 展示插件的详细说明\n *\n * 支持翻译键格式:包含 `.` 且不包含空格\n * @example 'metadata.description' // 翻译键,会自动翻译\n * @example 'A demo plugin for testing' // 直接字符串,不翻译\n */\n description?: string;\n\n /**\n * 图标(Material Icon 名称或 URL)\n */\n icon?: string;\n\n /**\n * 作者信息\n */\n author?: {\n name: string;\n email?: string;\n url?: string;\n } | string;\n\n /**\n * 许可证\n */\n license?: string;\n\n /**\n * 项目主页\n */\n homepage?: string;\n\n /**\n * 代码仓库\n */\n repository?: {\n type: string;\n url: string;\n } | string;\n\n /**\n * 关键词(用于搜索)\n */\n keywords?: string[];\n\n /**\n * 分类\n */\n categories?: string[];\n\n /**\n * 插件激活事件\n * 声明插件何时被激活\n */\n activationEvents?: string[];\n\n /**\n * 插件能力声明\n * 声明插件使用的系统能力\n */\n /**\n * 插件权限声明\n * 声明插件需要的系统权限(如 network, storage, api:routes 等)\n */\n permissions?: string[];\n\n capabilities?: {\n /**\n * 是否需要网络访问\n */\n network?: boolean;\n\n /**\n * 是否需要文件系统访问\n */\n filesystem?: boolean;\n\n /**\n * 是否需要数据库访问\n */\n database?: boolean;\n\n /**\n * 自定义能力声明\n */\n custom?: string[];\n };\n\n /**\n * 依赖的其他插件\n */\n dependencies?: Record<string, string>;\n\n /**\n * 可选依赖\n */\n optionalDependencies?: Record<string, string>;\n\n /**\n * 引擎版本要求\n */\n engines?: {\n bungee?: string;\n node?: string;\n };\n\n /**\n * 贡献点配置\n * 统一声明插件提供的 UI 和功能能力\n */\n contributes?: {\n /**\n * 导航集成\n */\n navigation?: Array<{\n label: string;\n path: string;\n icon?: string;\n target?: 'sidebar' | 'header'; // 默认 sidebar\n /** Optional statically registered native page component. */\n component?: string;\n }>;\n\n /**\n * 仪表板集成\n */\n widgets?: Array<{\n title: string;\n path: string;\n size?: 'small' | 'medium' | 'large' | 'full'; // small=1x1, medium=2x1, large=2x2, full=4x2\n }>;\n\n /**\n * 设置页路径\n */\n settings?: string;\n\n /**\n * 命令贡献\n * 声明插件提供的命令\n */\n commands?: Array<{\n command: string;\n title: string;\n category?: string;\n icon?: string;\n }>;\n\n /**\n * 配置贡献\n * 声明插件的配置项\n */\n configuration?: {\n title?: string;\n properties: Record<string, {\n type: 'string' | 'number' | 'boolean' | 'array' | 'object';\n default?: any;\n description?: string;\n enum?: any[];\n items?: any;\n properties?: any;\n }>;\n };\n\n /**\n * 原生仪表板组件(非 iframe)\n *\n * 与 widgets 不同,nativeWidgets 直接渲染为 Svelte 组件,\n * 可以复用主应用的图表库和样式系统。\n *\n * 安全说明:组件必须是内置的,插件只能通过 component 名称引用白名单中的组件\n *\n * @example\n * ```typescript\n * nativeWidgets: [{\n * id: 'token-stats-chart',\n * title: 'Token 统计',\n * size: 'medium',\n * component: 'TokenStatsChart',\n * props: { days: 7 }\n * }]\n * ```\n */\n nativeWidgets?: Array<{\n /** 唯一标识符 */\n id: string;\n /** 显示标题(支持 i18n key) */\n title: string;\n /** 尺寸:small=1x1, medium=2x1, large=2x2, full=4x2 */\n size: 'small' | 'medium' | 'large' | 'full';\n /** 组件名称(映射到内置组件白名单) */\n component: string;\n presentation?: 'kpi';\n /** 传递给组件的 props */\n props?: Record<string, any>;\n }>;\n\n /**\n * API 端点贡献\n *\n * 允许插件注册自己的 API 端点,端点路径强制在 /api/plugins/:pluginName/ 命名空间下。\n * 只有 global scope 的插件实例才能处理 API 请求。\n *\n * @example\n * ```typescript\n * api: [{\n * path: '/stats', // 实际路径: /api/plugins/my-plugin/stats\n * methods: ['GET'],\n * handler: 'getStats', // 调用控制面处理器的 getStats 方法\n * execution: 'control'\n * }]\n * ```\n */\n api?: Array<{\n /** 相对路径(相对于 /api/plugins/:pluginName) */\n path: string;\n /** 支持的 HTTP 方法 */\n methods: Array<'GET' | 'POST' | 'PUT' | 'DELETE'>;\n /** 处理器方法名(Plugin 类的方法) */\n handler: string;\n execution: 'control';\n capability?: string;\n methodCapabilities?: Record<string,string>;\n }>;\n };\n\n /**\n * @deprecated 使用 contributes.widgets 和 contributes.settings 代替\n */\n ui?: {\n dashboard?: Array<{\n id: string;\n title: string;\n path: string;\n size?: { w: number; h: number };\n }>;\n settings?: string;\n };\n}\n\n\n// ============ Plugin 接口 ============\n\nimport type { PluginHooks, PluginInitContext } from './hooks';\n\n/**\n * Plugin 接口(基于 Hook Registry 模式)\n *\n * 所有插件必须实现此接口。插件不再直接定义钩子方法,而是通过 register(hooks) 方法注册回调。\n *\n * @example\n * ```typescript\n * export const MyPlugin = definePlugin(\n * class implements Plugin {\n * static readonly name = 'my-plugin';\n * static readonly version = '1.0.0';\n *\n * bodyRequirements(): PluginBodyRequirements { return { request: 'none' }; }\n * register(hooks: PluginHooks) {\n * // 并行执行的初始化(非阻塞)\n * hooks.onRequestInit.tapPromise({ name: 'my-plugin' }, async (ctx) => {\n * await this.recordMetric();\n * });\n *\n * // 串行执行的请求修改(阻塞)\n * hooks.onBeforeRequest.tapPromise({ name: 'my-plugin' }, async (ctx) => {\n * ctx.headers['X-Custom'] = 'value';\n * return ctx;\n * });\n * }\n * }\n * );\n * ```\n */\n/** SDK 3: content demand is evaluated before reading each selected request body. */\nexport interface PluginBodyRequirementContext {\n readonly requestId: string;\n readonly method: string;\n readonly url: URL;\n readonly routeId?: string;\n readonly serviceId?: string;\n readonly upstreamId?: string;\n readonly stage: 'route' | 'selected';\n}\nexport interface PluginBodyRequirements {\n readonly request: 'none' | 'json-read' | 'json-write';\n readonly response?: readonly ('json' | 'sse-json')[];\n /** Replay retention is independent of content decoding. */\n readonly replay?: boolean;\n /** Optional bounded observation never upgrades forwarding demands. */\n readonly observe?: Readonly<{ request?: boolean; response?: boolean; sse?: boolean }>;\n}\nexport interface SSEEnvelope {\n data: string;\n json?: unknown;\n event?: string;\n id?: string;\n retry?: string;\n comments?: string[];\n /** Original complete event; remove after modifying data or metadata. */\n raw?: string;\n}\nexport interface Plugin {\n bodyRequirements(context: PluginBodyRequirementContext): PluginBodyRequirements;\n resolveAdmissionModel?: import('./data-admission/worker').WorkerAdmissionPlugin['resolveAdmissionModel'];\n prepareAdmissionAttempt?: import('./data-admission/worker').WorkerAdmissionPlugin['prepareAdmissionAttempt'];\n /**\n * 插件初始化\n * 在 register 之前调用,用于初始化配置和资源\n */\n init?(context: PluginInitContext): Promise<void>;\n\n /**\n * 注册 Hooks\n * 插件在此方法中选择需要的 hooks 并注册回调\n *\n * 流式处理现在也通过 Hook 注册:\n * - hooks.onStreamChunk: 处理流式响应的每个 chunk(支持 N:M 转换)\n * - hooks.onFlushStream: 流结束时刷新缓冲区\n */\n register(hooks: PluginHooks): void;\n\n /**\n * 重置状态(对象池使用)\n */\n reset?(): void | Promise<void>;\n\n /**\n * 插件销毁\n */\n onDestroy?(): Promise<void>;\n}\n\n/**\n * Plugin 构造器类型\n * 约束插件类必须提供静态元数据\n */\nexport type PluginConstructor = {\n new (...args: any[]): Plugin;\n\n /**\n * 插件唯一标识符(静态属性,必填)\n */\n readonly name: string;\n\n /**\n * 插件版本号(静态属性,必填)\n */\n readonly version: string;\n\n /**\n * 插件配置 Schema(静态属性,可选)\n * 如果插件需要配置,应定义此静态属性来描述配置项\n */\n readonly configSchema?: PluginConfigField[];\n\n /**\n * 插件扩展元数据(静态属性,可选)\n * 用于 UI 集成、权限声明、依赖管理等高级功能\n */\n readonly metadata?: PluginMetadata;\n\n /**\n * 插件翻译内容(静态属性,可选)\n *\n * 用于提供插件 UI 元素的多语言翻译\n * 系统会自动收集并注册到前端 i18n 系统\n */\n readonly translations?: PluginTranslations;\n\n};\n\n/**\n * 插件定义辅助函数\n * 提供编译时类型检查,确保插件满足所有静态和实例要求\n *\n * @example\n * ```typescript\n * export const MyPlugin = definePlugin(\n * class implements Plugin {\n * static readonly name = 'my-plugin';\n * static readonly version = '1.0.0';\n * static readonly metadata = {\n * name: 'My Plugin',\n * description: 'My plugin description',\n * icon: 'extension'\n * };\n *\n * constructor(options: MyOptions) { }\n *\n * bodyRequirements(): PluginBodyRequirements { return { request: 'none' }; }\n * register(hooks: PluginHooks) {\n * hooks.onBeforeRequest.tapPromise({ name: 'my-plugin' }, async (ctx) => {\n * // Plugin logic here\n * return ctx;\n * });\n * }\n * }\n * );\n *\n * export default MyPlugin;\n * ```\n */\nexport function definePlugin<T extends Plugin>(\n plugin: PluginConstructor & { new(...args: any[]): T }\n): typeof plugin {\n return plugin;\n}\n\n/**\n * 运行时辅助函数:获取插件实例的名称\n * 从插件类的静态属性读取\n */\nexport function getPluginName(plugin: Plugin): string {\n return (plugin.constructor as PluginConstructor).name;\n}\n\n/**\n * 运行时辅助函数:获取插件实例的版本\n * 从插件类的静态属性读取\n */\nexport function getPluginVersion(plugin: Plugin): string {\n return (plugin.constructor as PluginConstructor).version;\n}\n\n/**\n * 运行时辅助函数:获取插件实例的描述\n * 从插件类的 metadata.description 静态属性读取\n */\nexport function getPluginDescription(plugin: Plugin): string | undefined {\n return (plugin.constructor as PluginConstructor).metadata?.description;\n}\n\n/**\n * 运行时辅助函数:获取插件实例的元数据\n * 从插件类的静态属性读取\n */\nexport function getPluginMetadata(plugin: Plugin): PluginMetadata | undefined {\n return (plugin.constructor as PluginConstructor).metadata;\n}\n",
9
9
  "import type { SSEEnvelope } from '../plugin.types';\n\n/** Explicit protocol output mapping. Original event names are never inferred from payload.type. */\nexport function protocolSSEOutput(payloads: readonly unknown[], protocol: string, source?: SSEEnvelope): SSEEnvelope[] {\n return payloads.map((json, index) => {\n const envelope: SSEEnvelope = { data: JSON.stringify(json), json };\n if (source?.id !== undefined) envelope.id = source.id;\n if (source?.retry !== undefined) envelope.retry = source.retry;\n if (index === 0 && source?.comments) envelope.comments = [...source.comments];\n // These converters deliberately create Anthropic/Responses protocol event names.\n if ((protocol === 'anthropic' || protocol === 'responses') && json !== null && typeof json === 'object') {\n const type = (json as Record<string, unknown>).type;\n if (typeof type === 'string') envelope.event = type;\n }\n return envelope;\n });\n}\n",
10
- "import type { PluginDurableState, DurableJson } from './plugin-durable-state';\n\n/** Anonymous is an explicit, signed data identity; it carries no key authority. */\nexport type DataPrincipal = { readonly domain: string; readonly keyId: string; readonly credentialVersion: number };\nexport const ANONYMOUS_PRINCIPAL: DataPrincipal = Object.freeze({domain: 'anonymous', keyId: '', credentialVersion: 0});\nexport interface AdmissionRequirement { readonly plugin: string; readonly routeIds: readonly string[] }\n/** Public contracts. Business rules belong to the implementing plugin. */\nexport interface ManagementSubject {\n readonly id: string;\n readonly provider: string;\n readonly capabilities: readonly string[];\n readonly requiresPasswordChange?: boolean;\n}\nexport interface ManagementProvider {\n authenticate(request: Request): Promise<ManagementSubject | null>;\n authorize(subject: ManagementSubject, capability: string): Promise<boolean>;\n login(request: Request): Promise<Response>;\n logout(request: Request): Promise<Response>;\n bootstrap(input: unknown): Promise<void>;\n hasIdentity(): Promise<boolean>;\n revokeSessions(): Promise<void>;\n validateWrite?(request: Request): void;\n csrfToken?(request: Request): string | undefined;\n /** Optional browser cookie renewal after successful session verification. Must not extend the server-side absolute deadline. */\n sessionCookie?(request: Request): Promise<string | undefined>;\n}\nexport interface AdmissionTarget {\n /** Host-pinned entry scope for one internal handoff. */\n readonly entryRouteId?: string;\n readonly requestId: string;\n readonly attemptId: string;\n readonly principal: DataPrincipal;\n readonly routeId: string;\n readonly serviceId: string | null;\n readonly upstreamId: string;\n readonly url: string;\n readonly model: string | null;\n readonly now: number;\n}\nexport interface AdmissionDenial {\n readonly error: string;\n readonly status: 401 | 403 | 429 | 503 | 422;\n readonly retryAfter?: number;\n}\nexport interface AdmissionPlan {\n /** A complete JSON state replacement, staged by Host before the common decision. */\n readonly state?: DurableJson;\n /** Immutable policy snapshot retained by the grant for subsequent attempts. */\n readonly snapshot?: DurableJson;\n readonly denial?: AdmissionDenial;\n}\nexport interface IngressPlugin {\n /** Effective policy demand; no policy means no content decoding. */\n bodyRequirements(target: AdmissionTarget, policy: DurableJson): { readonly request: 'none' | 'json-read' };\n /** Optional per-principal state. Policies are frozen; plans receive only this key's clones.\n * Expiry must mean absence is behaviorally equivalent to retaining the state. */\n keyedState?: {\n readonly capacity: number;\n policyForKey(policy: DurableJson, keyId: string): DurableJson;\n expiresAt(state: DurableJson): number;\n reconcile(state: DurableJson, policy: DurableJson, now: number): DurableJson;\n };\n authenticate?(request: Request, policy: DurableJson, now: number): DataPrincipal | null;\n resolveIdentity?(target: AdmissionTarget, policy: DurableJson): DataPrincipal;\n /** Pure access decision before preparation/cache reuse; never plans or debits state. */\n authorize?(target: AdmissionTarget, policy: DurableJson): AdmissionDenial | null;\n plan(target: AdmissionTarget, policy: DurableJson, state: DurableJson): AdmissionPlan;\n beforeAttempt?(target: AdmissionTarget, snapshot: DurableJson): AdmissionDenial | null;\n}\nexport interface IngressPluginModule { createIngress(): IngressPlugin }\nexport interface PluginStateRpcContext {\n readonly state: PluginDurableState;\n readonly requestId: string;\n readonly attemptId: string;\n readonly principal: DataPrincipal;\n}\nexport interface PluginPolicyPublication {\n readonly version: number;\n readonly value: DurableJson;\n}\n",
10
+ "import type { PluginDurableState, DurableJson } from './plugin-durable-state';\n\n/** Anonymous is an explicit, signed data identity; it carries no key authority. */\nexport type DataPrincipal = { readonly domain: string; readonly keyId: string; readonly credentialVersion: number };\nexport const ANONYMOUS_PRINCIPAL: DataPrincipal = Object.freeze({domain: 'anonymous', keyId: '', credentialVersion: 0});\nexport interface AdmissionRequirement { readonly plugin: string; readonly routeIds: readonly string[] }\n/** Public contracts. Business rules belong to the implementing plugin. */\nexport interface ManagementSubject {\n readonly id: string;\n readonly provider: string;\n readonly capabilities: readonly string[];\n readonly requiresPasswordChange?: boolean;\n}\nexport interface ManagementProvider {\n setupStatus(): Promise<'uninitialized' | 'ready'>;\n initialize(request: Request): Promise<Response>;\n authenticate(request: Request): Promise<ManagementSubject | null>;\n authorize(subject: ManagementSubject, capability: string): Promise<boolean>;\n login(request: Request): Promise<Response>;\n /** Public login interactions are dispatched only to the selected provider. */\n loginOptions?(request: Request): Promise<Response>;\n beginLogin?(request: Request): Promise<Response>;\n completeLogin?(request: Request): Promise<Response>;\n logout(request: Request): Promise<Response>;\n bootstrap(input: unknown): Promise<void>;\n hasIdentity(): Promise<boolean>;\n revokeSessions(): Promise<void>;\n validateWrite?(request: Request): void;\n csrfToken?(request: Request): string | undefined;\n /** Optional browser cookie renewal after successful session verification. Must not extend the server-side absolute deadline. */\n sessionCookie?(request: Request): Promise<string | undefined>;\n}\nexport interface AdmissionTarget {\n /** Host-pinned entry scope for one internal handoff. */\n readonly entryRouteId?: string;\n readonly requestId: string;\n readonly attemptId: string;\n readonly principal: DataPrincipal;\n readonly routeId: string;\n readonly serviceId: string | null;\n readonly upstreamId: string;\n readonly url: string;\n readonly model: string | null;\n readonly now: number;\n}\nexport interface AdmissionDenial {\n readonly error: string;\n readonly status: 401 | 403 | 429 | 503 | 422;\n readonly retryAfter?: number;\n}\nexport interface AdmissionPlan {\n /** A complete JSON state replacement, staged by Host before the common decision. */\n readonly state?: DurableJson;\n /** Immutable policy snapshot retained by the grant for subsequent attempts. */\n readonly snapshot?: DurableJson;\n readonly denial?: AdmissionDenial;\n}\nexport interface IngressPlugin {\n /** Effective policy demand; no policy means no content decoding. */\n bodyRequirements(target: AdmissionTarget, policy: DurableJson): { readonly request: 'none' | 'json-read' };\n /** Optional per-principal state. Policies are frozen; plans receive only this key's clones.\n * Expiry must mean absence is behaviorally equivalent to retaining the state. */\n keyedState?: {\n readonly capacity: number;\n policyForKey(policy: DurableJson, keyId: string): DurableJson;\n expiresAt(state: DurableJson): number;\n reconcile(state: DurableJson, policy: DurableJson, now: number): DurableJson;\n };\n authenticate?(request: Request, policy: DurableJson, now: number): DataPrincipal | null;\n resolveIdentity?(target: AdmissionTarget, policy: DurableJson): DataPrincipal;\n /** Pure access decision before preparation/cache reuse; never plans or debits state. */\n authorize?(target: AdmissionTarget, policy: DurableJson): AdmissionDenial | null;\n plan(target: AdmissionTarget, policy: DurableJson, state: DurableJson): AdmissionPlan;\n beforeAttempt?(target: AdmissionTarget, snapshot: DurableJson): AdmissionDenial | null;\n}\nexport interface IngressPluginModule { createIngress(): IngressPlugin }\nexport interface PluginStateRpcContext {\n readonly state: PluginDurableState;\n readonly requestId: string;\n readonly attemptId: string;\n readonly principal: DataPrincipal;\n}\nexport interface PluginPolicyPublication {\n readonly version: number;\n readonly value: DurableJson;\n}\n",
11
11
  "export interface DataAdmissionErrorDetails { message?: string; param?: string }\nfunction safeDetails(details?: DataAdmissionErrorDetails): DataAdmissionErrorDetails | undefined {\n if (!details) return undefined;\n const message = typeof details.message === 'string' && details.message.length <= 512 && !/[\\x00-\\x1f\\x7f]/.test(details.message) ? details.message : undefined;\n const param = typeof details.param === 'string' && details.param.length <= 256 && /^[a-zA-Z_$][\\w.$\\[\\]-]*$/.test(details.param) ? details.param : undefined;\n return message === undefined && param === undefined ? undefined : Object.freeze({message, param});\n}\n/** Shared inert error contract; importing it never loads admission runtime modules. */\nexport class DataAdmissionError extends Error {\n readonly name = 'DataAdmissionError';\n readonly details?: DataAdmissionErrorDetails;\n constructor(readonly status: number, readonly code: string, readonly retryAfter?: number, details?: DataAdmissionErrorDetails) {\n super(code); this.details = safeDetails(details);\n }\n}\n\n/** Plugin bundles have their own class identity; normalize their explicit error contract. */\nexport function normalizeAdmissionError(error: unknown): DataAdmissionError | null {\n if (error instanceof DataAdmissionError) return error;\n if (!(error instanceof Error) || error.name !== 'DataAdmissionError') return null;\n const value = error as Error & {status?: unknown; code?: unknown; retryAfter?: unknown; details?: DataAdmissionErrorDetails};\n if (typeof value.status !== 'number' || ![401,403,409,422,429,502,503].includes(value.status)\n || typeof value.code !== 'string' || !/^[a-zA-Z0-9_.-]{1,128}$/.test(value.code)\n || (value.retryAfter !== undefined && (typeof value.retryAfter !== 'number' || !Number.isFinite(value.retryAfter) || value.retryAfter < 0))) return null;\n return new DataAdmissionError(value.status,value.code,value.retryAfter as number | undefined,value.details);\n}\n",
12
12
  "import type { Database } from 'bun:sqlite';\n\n/** Plugin state initialization owns this DDL; constructors never modify schema. */\nexport const PLUGIN_DURABLE_STATE_SCHEMA_SQL = `\nCREATE TABLE IF NOT EXISTS plugin_durable_records (\n namespace TEXT NOT NULL, key TEXT NOT NULL, version INTEGER NOT NULL CHECK(version > 0),\n value_json TEXT NOT NULL, PRIMARY KEY(namespace, key)\n) STRICT;\n`;\nexport type DurableJson = null | boolean | number | string | DurableJson[] | { [key: string]: DurableJson };\nexport interface DurableRecord { readonly key: string; readonly version: number; readonly value: DurableJson }\nexport interface DurableMutation { key: string; expectedVersion: number; value: DurableJson }\n/** Pure data outbox request; callbacks and command identifiers are never accepted. */\nexport interface DurableTransactionOptions {\n readonly outbox: { readonly topic: string; readonly major: number;\n readonly maxEvents: number; readonly payload: Uint8Array };\n}\nexport interface PluginDurableState {\n get(key: string): Promise<DurableRecord | null>;\n list(): Promise<readonly DurableRecord[]>;\n transact(mutations: readonly DurableMutation[], options?: DurableTransactionOptions): Promise<readonly DurableRecord[]>;\n}\n/** Synchronous leaf, usable only by storage workers and offline tooling. */\nexport interface StorageDurableState {\n get(key: string): DurableRecord | null;\n list(): readonly DurableRecord[];\n transact(mutations: readonly DurableMutation[], extend?: () => void): readonly DurableRecord[];\n}\nexport class DurableStateConflictError extends Error {\n readonly code = 'durable_state_conflict';\n constructor() { super('Durable state version conflict'); this.name = 'DurableStateConflictError'; }\n}\n/** Plugins load as independent bundles, so the host's error has a different constructor. */\nexport function isDurableStateConflictError(error: unknown): error is DurableStateConflictError {\n return error instanceof Error && 'code' in error && error.code === 'durable_state_conflict';\n}\nconst MAX_BYTES = 1024 * 1024;\nfunction identifier(value: unknown): asserts value is string {\n if (typeof value !== 'string' || !/^[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$/.test(value)) throw new Error('Invalid durable state identifier');\n}\n/** Reject objects with behavior, lossy JSON values and cycles before JSON.stringify. */\nfunction encode(value: unknown): string {\n const ancestors = new Set<object>();\n function check(current: unknown, depth: number): void {\n if (depth > 64) throw new Error('Durable state nesting limit exceeded');\n if (current === null || typeof current === 'string' || typeof current === 'boolean') return;\n if (typeof current === 'number' && Number.isFinite(current)) return;\n if (typeof current !== 'object' || current === null || ancestors.has(current)) throw new Error('Durable state must be pure JSON');\n const array = Array.isArray(current);\n if (!array && Object.getPrototypeOf(current) !== Object.prototype && Object.getPrototypeOf(current) !== null) throw new Error('Durable state must be pure JSON');\n ancestors.add(current);\n const descriptors = Object.getOwnPropertyDescriptors(current);\n if (Reflect.ownKeys(current).some(key => typeof key === 'symbol')) throw new Error('Durable state must be pure JSON');\n if (array) {\n const length = (current as unknown[]).length;\n const indices = Object.keys(descriptors).filter(key => key !== 'length');\n if (indices.length !== length || indices.some((key, index) => key !== String(index))) throw new Error('Durable state must be pure JSON');\n }\n for (const [key, descriptor] of Object.entries(descriptors)) {\n if (array && key === 'length') continue;\n if (!descriptor.enumerable || !('value' in descriptor)) throw new Error('Durable state must be pure JSON');\n check(descriptor.value, depth + 1);\n }\n ancestors.delete(current);\n }\n check(value, 0);\n const json = JSON.stringify(value);\n if (Buffer.byteLength(json) > MAX_BYTES) throw new Error('Durable state size limit exceeded');\n return json;\n}\n/** Validate data before IPC structured cloning can erase prototypes or evaluate getters. */\nexport function validateDurableJson(value: unknown): void { encode(value); }\ntype Row = { key: string; version: number; value_json: string };\nfunction record(row: Row): DurableRecord {\n return Object.freeze({ key: row.key, version: row.version, value: JSON.parse(row.value_json) as DurableJson });\n}\n\n/** Host-only factory. Inject only the returned namespace capability into trusted plugins.\n * Consumers validate their own record schema. expectedVersion=0 requires absence.\n * Null values are retained records, so versions never reset.\n */\nexport class PluginDurableStateStore {\n constructor(private readonly db: Database) {}\n /**\n * Host-only: the shared database this store's records live in, so a host-owned\n * durable journal can run its own atomic planner/reader against exactly the\n * same `plugin_durable_records` rows the plugin sees. Never exposed through\n * `PluginServices` and never handed to a plugin.\n */\n get database(): Database { return this.db; }\n /** Async SDK shape for offline tools and leaf fixtures; production uses PluginStateClient. */\n forNamespace(namespace: string): PluginDurableState {\n const leaf = this.forStorageNamespace(namespace);\n return Object.freeze({get: async (key: string) => leaf.get(key), list: async () => leaf.list(),\n transact: async (mutations: readonly DurableMutation[], options?: DurableTransactionOptions) => {\n if (options !== undefined) throw new Error('Outbox requires the storage worker');\n return leaf.transact(mutations);\n }});\n }\n forStorageNamespace(namespace: string): StorageDurableState {\n identifier(namespace);\n const db = this.db;\n const get = (key: string): DurableRecord | null => {\n identifier(key);\n const row = db.query<Row, [string, string]>('SELECT key,version,value_json FROM plugin_durable_records WHERE namespace = ? AND key = ?').get(namespace, key);\n return row ? record(row) : null;\n };\n return Object.freeze({\n get,\n list: () => Object.freeze(db.query<Row, [string]>('SELECT key,version,value_json FROM plugin_durable_records WHERE namespace = ? ORDER BY key').all(namespace).map(record)),\n transact: (input: readonly DurableMutation[], extend?: () => void): readonly DurableRecord[] => {\n if (!Array.isArray(input) || input.length === 0 || input.length > 256) throw new Error('Invalid durable state command');\n const keys = new Set<string>();\n const mutations = input.map(mutation => {\n identifier(mutation.key);\n if (keys.has(mutation.key) || !Number.isSafeInteger(mutation.expectedVersion) || mutation.expectedVersion < 0 || mutation.expectedVersion >= Number.MAX_SAFE_INTEGER) throw new Error('Invalid durable state mutation');\n keys.add(mutation.key);\n return { key: mutation.key, expectedVersion: mutation.expectedVersion, json: encode(mutation.value) };\n });\n const commandJson = JSON.stringify(mutations);\n if (Buffer.byteLength(commandJson) > MAX_BYTES) throw new Error('Durable state command size limit exceeded');\n return db.transaction(() => {\n const results: DurableRecord[] = [];\n for (const mutation of mutations) {\n const current = get(mutation.key);\n if ((current?.version ?? 0) !== mutation.expectedVersion) throw new DurableStateConflictError();\n const version = mutation.expectedVersion + 1;\n db.query(`INSERT INTO plugin_durable_records(namespace,key,version,value_json) VALUES (?,?,?,?)\n ON CONFLICT(namespace,key) DO UPDATE SET version=excluded.version,value_json=excluded.value_json`).run(namespace, mutation.key, version, mutation.json);\n results.push(record({ key: mutation.key, version, value_json: mutation.json }));\n }\n extend?.();\n return Object.freeze(results);\n }).immediate();\n },\n });\n }\n}\n",
13
13
  "import { logger } from '../logger';\nimport type { AtomicReadSetResolver } from '../plugin-state/client';\n/**\n * Same-process host RPC adapter (P4): lets the canonical `PluginServiceHost`\n * lifecycle own RPC publications/consumption without a second plugin framework\n * and without faking a wire transport.\n *\n * The parent injects the trusted owner token, endpoint identity, required\n * placement/callee/journal callbacks, and the real host lease callback. Real\n * cross-process transport is NOT implemented: the required placement resolver\n * returns an exact endpoint registered in the exposed runtime, `ambiguous`, or\n * `null` meaning \"use the explicit local channel\". Commands run only through the\n * accepted runtime kernel. Journal-backed policies require `CommandJournal`;\n * application-owned `none` commands may execute without a journal and expose no\n * journal result/reconciliation capability. Caller identity, purpose, scope,\n * leases, and deadlines are host decisions; plugin call options may only carry\n * `signal`/`timeoutMs`/`operationId`, snapshotted without invoking accessors.\n *\n * Command binding errors are mapped once by the kernel to its fixed-code\n * `RpcInvocationError` (own `code`, no cause/message/raw operation id); the\n * client rebuilds a fresh public `RpcServiceError` from that code and the\n * validated operation id of the current call. No error instance is reused.\n */\nimport { assertSupportedServiceDeclarations, isCrossProcessSelfService } from './contracts';\nimport { AsyncLocalStorage } from 'node:async_hooks';\nimport { isProxy } from 'node:util/types';\nimport type {\n PluginServiceConsumption,\n PluginServiceDeclarations,\n PluginServiceProcess,\n PluginServicePublication,\n PluginServiceScope,\n} from './contracts';\nimport {\n RpcServiceRuntime,\n type RpcAdmissionGrant,\n type RpcAdmissionRequest,\n type RpcCaller,\n type RpcCommandAction,\n type RpcCommandExecution,\n type RpcCommandExecutor,\n type RpcDrainResult,\n type RpcEndpointBinding,\n type RpcEndpointHandle,\n type RpcHandlerContext,\n type RpcHandlerMap,\n type RpcInvocationErrorCode,\n type RpcInvokeRequest,\n type RpcRuntimeLimits,\n type RpcRuntimeStatus,\n} from './rpc-runtime';\nimport {\n type CommandAtomicPlanner,\n type CommandExternalExecutor,\n type CommandJournal,\n} from './command-journal';\nimport type { AsyncCommandJournal } from '../plugin-state/client';\nimport {\n defineRpcService,\n assertRpcData,\n encodeRpcJson,\n decodeRpcJson,\n RPC_JSON_MAX_BYTES,\n type RpcCallPurpose,\n type InferRpcData,\n type RpcCommandPolicy,\n type RpcJson,\n type RpcMethodDefinition,\n} from './wire-contract';\n\n/* -------------------------------------------------------------------------- */\n/* Fixed-code public errors */\n/* -------------------------------------------------------------------------- */\n\nexport type RpcServiceErrorCode =\n | RpcInvocationErrorCode\n | 'undeclared'\n | 'unavailable'\n | 'ambiguous_placement'\n | 'invalid_registration';\n\nconst SERVICE_ERROR_MESSAGES: Record<RpcServiceErrorCode, string> = {\n unauthorized: 'RPC call is not authorized',\n not_ready: 'RPC endpoint is not ready',\n retired: 'RPC endpoint is retiring',\n revoked: 'RPC endpoint generation was revoked',\n unsupported_method: 'RPC method is not published',\n wrong_purpose: 'RPC method is not published for this purpose',\n invalid_input: 'RPC input is not valid',\n invalid_output: 'RPC output is not valid',\n invalid_operation_id: 'RPC command operation id is invalid',\n overloaded: 'RPC runtime is at capacity',\n cancelled: 'RPC call was cancelled',\n timeout: 'RPC call deadline exceeded',\n unknown: 'RPC command outcome is unknown',\n capability_unavailable: 'RPC command execution is unavailable',\n closed: 'RPC runtime is closed',\n failed: 'RPC call failed',\n conflict: 'RPC command identity conflicts with an existing record',\n expired: 'RPC command result has expired',\n pending: 'RPC command is still pending',\n rejected: 'RPC command was rejected',\n missing: 'RPC command has no stored result',\n storage_failure: 'RPC command storage failed',\n deadlock: 'RPC call chain would deadlock',\n call_depth_exceeded: 'RPC call depth exceeded',\n undeclared: 'RPC service is not declared by the manifest',\n unavailable: 'RPC service is unavailable',\n ambiguous_placement: 'RPC service placement is ambiguous',\n invalid_registration: 'RPC registration is invalid',\n};\n\nconst SERVICE_ERROR_CODES = new Set<RpcServiceErrorCode>(Object.keys(SERVICE_ERROR_MESSAGES) as RpcServiceErrorCode[]);\n\n/** Fixed-code error. It never carries a provider cause, message, or payload. */\nexport class RpcServiceError extends Error {\n readonly name = 'RpcServiceError';\n readonly code: RpcServiceErrorCode;\n readonly operationId: string | null;\n\n constructor(code: RpcServiceErrorCode, operationId: string | null = null) {\n super(SERVICE_ERROR_MESSAGES[code]);\n this.code = code;\n this.operationId = operationId;\n }\n}\n\nfunction ownStringProperty(target: unknown, name: string): string | null {\n if (target === null || (typeof target !== 'object' && typeof target !== 'function')) return null;\n let descriptor: PropertyDescriptor | undefined;\n try { descriptor = Object.getOwnPropertyDescriptor(target, name); } catch { return null; }\n if (descriptor === undefined || !('value' in descriptor) || typeof descriptor.value !== 'string') return null;\n return descriptor.value;\n}\n\n/**\n * Rebuilds a fresh public error from the kernel's fixed code and the validated\n * operation id of THIS call. It never reuses the incoming instance, never reads\n * its operation id, and never reads a cause or message.\n */\nexport function toRpcServiceError(error: unknown, operationId: string | null): RpcServiceError {\n const raw = ownStringProperty(error, 'code');\n const code = raw !== null && SERVICE_ERROR_CODES.has(raw as RpcServiceErrorCode)\n ? raw as RpcServiceErrorCode\n : 'failed';\n return new RpcServiceError(code, operationId);\n}\n\n/* -------------------------------------------------------------------------- */\n/* Public types */\n/* -------------------------------------------------------------------------- */\n\nexport interface RpcCallOptions {\n readonly signal?: AbortSignal;\n readonly timeoutMs?: number;\n readonly operationId?: string;\n}\n\nexport type RpcCommandClientExtras<D extends RpcMethodDefinition> = D extends { readonly command: RpcCommandPolicy }\n ? {\n /** Durable committed result query; runs through the same runtime lease/deadline as execute. */\n queryResult(operationId: string): Promise<InferRpcData<D['output']>>;\n /** Explicit host-authorized reconciliation for an unknown command outcome. */\n reconcile(operationId: string, input: InferRpcData<D['input']>): Promise<InferRpcData<D['output']>>;\n }\n : Record<never, never>;\n\nexport type RpcMethodClient<D extends RpcMethodDefinition> =\n ((input: InferRpcData<D['input']>, options?: RpcCallOptions) => Promise<InferRpcData<D['output']>>)\n & RpcCommandClientExtras<D>;\n\n/** Public plugin-facing RPC client derived from a literal contract. */\nexport type AsyncRpcClient<M extends Record<string, RpcMethodDefinition>> = {\n readonly [K in keyof M]: RpcMethodClient<M[K]>;\n};\n\n/** Logical placement identity, independent of any physical address or generation. */\nexport interface HostRpcServiceDescriptor {\n readonly provider: string;\n readonly service: string;\n readonly major: number;\n readonly kind: 'rpc';\n readonly process: PluginServiceProcess;\n readonly scope: PluginServiceScope;\n}\n\n/** Physical endpoint identity supplied by the trusted host for one owner instance. */\nexport interface HostRpcLifecycleIdentity {\n readonly endpoint: string;\n readonly instance: string;\n readonly generation: number;\n readonly catalog: string;\n /** Trusted callee subject; never derived from plugin input. */\n readonly subject: string;\n}\n\n/** Canonical owner lifecycle view; the adapter never keeps a second copy. */\nexport interface HostRpcLifecycleState {\n readonly ready: boolean;\n readonly retiring: boolean;\n readonly revoked: boolean;\n}\n\n/** Host-minted invocation frame; the real principal lives in the host callee frame. */\nexport interface HostRpcInvocationContext {\n readonly purpose: RpcCallPurpose;\n /** Opaque host correlation token; the leaf only trusts the required resolver. */\n readonly token: object;\n readonly signal?: AbortSignal;\n readonly deadlineAt?: number;\n}\n\nexport interface HostRpcLeaseRequest {\n readonly role: 'caller' | 'callee';\n readonly plugin: string;\n readonly scope: string;\n readonly state: HostRpcLifecycleState;\n readonly purpose: RpcCallPurpose;\n readonly operationId: string | null;\n /** Logical target provider. */\n readonly provider: string;\n}\n\nexport interface HostRpcLeaseGrant {\n readonly release: () => void;\n /** Host-verified existing request lease; only honored for request/attempt. */\n readonly allowRetired?: boolean;\n}\n\nexport type HostRpcAcquireLease = (request: HostRpcLeaseRequest) => HostRpcLeaseGrant;\n\nexport interface HostRpcMethodCapability {\n /** Synchronous private-state CAS planner for a `local-transaction` command. */\n readonly atomic?: CommandAtomicPlanner;\n /** Explicit bounded read set for the production storage Worker. */\n readonly atomicReadSet?: AtomicReadSetResolver;\n /** Reconcile capability for an `external-contract` command. */\n readonly external?: CommandExternalExecutor;\n}\n\nexport type HostRpcCommandCapabilities<M extends Record<string, RpcMethodDefinition>> = {\n readonly [K in keyof M]?: HostRpcMethodCapability;\n};\n\n/** Everything the canonical host exposes for one owner to use RPC services. */\nexport interface HostRpcOwnerInput {\n readonly token: object;\n readonly plugin: string;\n /** Canonical owner scope: `'global'` or a trusted binding scope key. */\n readonly scope: string;\n readonly declarations: PluginServiceDeclarations;\n readonly dependencies: Readonly<Record<string, string>>;\n readonly lifecycle: HostRpcLifecycleIdentity;\n /** Canonical lifecycle source of truth; the adapter copies nothing. */\n readonly getLifecycleState: () => HostRpcLifecycleState;\n readonly acquireLease: HostRpcAcquireLease;\n readonly registerPublication?: (publication: PluginServicePublication) => void;\n readonly registerConsumption?: (consumption: PluginServiceConsumption, localProviderToken?: object) => void;\n readonly onDispose?: (cleanup: () => void) => void;\n readonly canCall?: (target: { readonly provider: string; readonly service: string; readonly major: number; readonly method: string }) => boolean;\n /** Required host invocation-frame resolver; null for plain plugin background calls. */\n readonly resolveInvocationContext: () => HostRpcInvocationContext | null;\n}\n\n/** Trusted peer broker input. This capability is never part of PluginServices. */\nexport interface HostRpcRemoteCallerInput extends HostRpcOwnerInput {\n readonly process: PluginServiceProcess;\n /** Must verify the current authenticated peer frame and logical caller authority. */\n readonly authorizeIncoming: (request: RpcAdmissionRequest, endpoint: NonNullable<ReturnType<RpcServiceRuntime['endpointInfo']>>) => boolean;\n}\n\nexport interface HostRpcRemoteCallerHandle {\n invokeTracked(request: Omit<RpcInvokeRequest, 'caller' | 'callerToken'>): ReturnType<RpcServiceRuntime['invokeTracked']>;\n dispose(): Promise<RpcDrainResult>;\n}\n\n/** Exact placement delegated to the host. `null` means \"use the explicit local channel\". */\nexport type HostRpcPlacementResolution =\n | { readonly kind: 'endpoint'; readonly endpoint: RpcEndpointHandle }\n | { readonly kind: 'ambiguous' }\n | null\n | undefined;\n\nexport interface HostRpcPlacementRequest {\n readonly provider: string;\n readonly service: string;\n readonly major: number;\n readonly method: string;\n readonly scope: PluginServiceScope;\n readonly bindingScope?: string;\n readonly caller: RpcCaller;\n readonly purpose?: RpcCallPurpose;\n}\n\nexport type HostRpcPlacementResolver = (request: HostRpcPlacementRequest) => HostRpcPlacementResolution;\n\nexport interface HostRpcJournalRequest {\n readonly provider: string;\n readonly service: string;\n readonly major: number;\n readonly method: string;\n readonly scope: PluginServiceScope;\n /** Binding scope key when `scope` is `binding`; keeps two bindings apart. */\n readonly bindingScope?: string;\n readonly policy: RpcCommandPolicy;\n readonly atomic?: CommandAtomicPlanner;\n /** Explicit bounded read set for the production storage Worker. */\n readonly atomicReadSet?: AtomicReadSetResolver;\n readonly external?: CommandExternalExecutor;\n}\n\n/** Host-owned durable journal factory; `null` refuses commands for this key. */\nexport type HostRpcJournalResolver = (request: HostRpcJournalRequest) => AsyncCommandJournal | CommandJournal | null;\n\n/** Trusted opaque callee context resolver. */\nexport type HostRpcCalleeResolver = (request: RpcAdmissionRequest, publication: HostRpcServiceDescriptor) => unknown;\n\n/**\n * Host-provided frame for one admitted native RPC handler. It lets the SAME\n * `PluginServiceHost` invocation store the real purpose/deadline/cancellation\n * for the duration of the handler, bound to the exact published owner, so a\n * channel operation started inside a native handler is authorized by the real\n * frame (never downgraded to `background`, never given a forged purpose).\n */\nexport interface HostRpcHandlerFrame {\n readonly purpose: RpcCallPurpose;\n readonly deadlineAt?: number;\n readonly signal?: AbortSignal;\n /** Exact published owner the call targets; `null` for a remote (peer) route. */\n readonly ownerToken: object | null;\n readonly operationId: string | null;\n}\n\nexport interface HostRpcJournalCleanupFailure {\n readonly operationId: string;\n readonly code: string;\n}\nexport interface HostRpcAdapterOptions {\n /** Resource cleanup reports separately and never replaces a business outcome. */\n readonly onJournalCleanupFailure?: (failure:HostRpcJournalCleanupFailure)=>void;\n readonly process: PluginServiceProcess;\n readonly limits?: RpcRuntimeLimits;\n readonly hostLifetime?: AbortSignal;\n readonly maxCallDepth?: number;\n /** Required host placement authority. */\n readonly resolvePlacement: HostRpcPlacementResolver;\n /** Required host journal authority. */\n readonly resolveJournal: HostRpcJournalResolver;\n /** Required trusted opaque callee frame authority. */\n readonly resolveCallee: HostRpcCalleeResolver;\n /**\n * Host callback that enters the exact published owner's trusted invocation\n * frame for one native handler call. The canonical `PluginServiceHost` wires\n * it to its OWN invocation store, so a native RPC handler shares one\n * purpose/deadline/cancel resolver with local dispatch and channel work.\n */\n readonly enterHostHandlerFrame?: (frame: HostRpcHandlerFrame, run: () => unknown) => unknown;\n}\n\nexport interface HostRpcPublication {\n readonly descriptor: HostRpcServiceDescriptor;\n}\n\n/** Host-only readonly directory entry for one real registered publication. */\nexport interface HostRpcPublicationView {\n readonly provider: string;\n readonly service: string;\n readonly major: number;\n readonly scope: PluginServiceScope;\n readonly scopeKey: string;\n readonly ready: boolean;\n readonly lifecycle: HostRpcLifecycleIdentity;\n /** The kernel-selected binding of the exact endpoint handle; never re-derived. */\n readonly binding: RpcEndpointBinding;\n}\n\nexport interface HostRpcOwnerHandle {\n readonly owner: HostRpcOwnerInput;\n publish<const M extends Record<string, RpcMethodDefinition>>(\n contract: { readonly id: string; readonly version: number; readonly methods: M },\n handlers: RpcHandlerMap<M, unknown>,\n capabilities?: HostRpcCommandCapabilities<M>,\n ): HostRpcPublication;\n consume<const M extends Record<string, RpcMethodDefinition>>(\n provider: string,\n contract: { readonly id: string; readonly version: number; readonly methods: M },\n ): AsyncRpcClient<M>;\n /** Canonical host hook: ready maps to kernel `markReady`. */\n markReady(): void;\n /** Canonical host hook: retirement maps to kernel `retire`. */\n retire(): void;\n /**\n * Canonical host hook: disposal maps to kernel `revoke` + bounded `drain`.\n * Returns the REAL drain verdict; `drained: false` is reported, never hidden.\n */\n dispose(): Promise<RpcDrainResult>;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Internal helpers */\n/* -------------------------------------------------------------------------- */\n\nconst SEP = '\\0';\nconst DEFAULT_MAX_CALL_DEPTH = 32;\nconst CALL_OPTION_KEYS = ['signal', 'timeoutMs', 'operationId'] as const;\nconst EMPTY_OPTIONS: RpcCallOptions = Object.freeze({});\n\ninterface ActiveFrame {\n readonly purpose: RpcCallPurpose;\n readonly depth: number;\n readonly chain: readonly string[];\n readonly deadlineAt: number;\n readonly signal: AbortSignal;\n}\n\n/** Host frame inheritance only: purpose, call chain, deadline, and cancellation. */\nconst FRAME_STORE = new AsyncLocalStorage<ActiveFrame>();\n\ninterface RegisteredPublication {\n readonly key: string;\n readonly handle: RpcEndpointHandle;\n readonly provider: string;\n readonly scopeKey: string;\n readonly scope: PluginServiceScope;\n readonly contractId: string;\n readonly contractVersion: number;\n readonly ownerState: OwnerState;\n}\n\ninterface OwnerState {\n readonly owner: HostRpcOwnerInput;\n readonly plugin: string;\n readonly scope: string;\n readonly scopeKind: PluginServiceScope;\n readonly callerSubject: string;\n readonly lifecycle: HostRpcLifecycleIdentity;\n readonly publications: Set<RegisteredPublication>;\n readonly process: PluginServiceProcess;\n readonly local: boolean;\n readonly authorizeIncoming?: HostRpcRemoteCallerInput['authorizeIncoming'];\n /** RPC capability revocation, independent of eventual resource reclamation. */\n revoked: boolean;\n released: boolean;\n}\n\ninterface CalleeInfo {\n readonly provider: string;\n readonly scopeKey: string;\n readonly scope: PluginServiceScope;\n readonly frame: unknown;\n /** Exact published owner token, or `null` for a remote (peer) route. */\n readonly ownerToken: object | null;\n}\n\ntype Handler = (input: unknown, context: RpcHandlerContext<unknown>) => unknown;\n\ntype RouteResolution =\n | { readonly kind: 'publication'; readonly publication: RegisteredPublication }\n | { readonly kind: 'remote'; readonly handle: RpcEndpointHandle }\n | { readonly kind: 'ambiguous' }\n | { readonly kind: 'missing' };\n\nconst CALLEE_INFO = new WeakMap<object, CalleeInfo>();\n\n/** Reads the trusted opaque callee frame the host resolver produced for an admitted call. */\nexport function readHostRpcCalleeFrame(callee: unknown): unknown {\n if (callee === null || typeof callee !== 'object') return null;\n return CALLEE_INFO.get(callee as object)?.frame ?? null;\n}\n\nfunction publicationKey(provider: string, scopeKey: string, service: string, major: number): string {\n return `${provider}${SEP}${scopeKey}${SEP}${service}${SEP}${major}`;\n}\n\nfunction scopeKindOf(scope: string): PluginServiceScope {\n return scope === 'global' ? 'global' : 'binding';\n}\n\nfunction callerSubjectFor(plugin: string, scope: string): string {\n return scope === 'global' ? plugin : `${plugin}@${scope}`;\n}\n\nfunction normalizeOperationId(operationId: unknown): string {\n if (typeof operationId !== 'string' || !/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/.test(operationId)) {\n throw new RpcServiceError('invalid_operation_id');\n }\n return operationId;\n}\n\n/** Combines cancellation signals without depending on `AbortSignal.any` being present. */\nfunction anySignal(signals: readonly AbortSignal[]): AbortSignal {\n if (signals.length === 1) return signals[0];\n const native = (AbortSignal as unknown as { any?: (values: AbortSignal[]) => AbortSignal }).any;\n if (typeof native === 'function') return native.call(AbortSignal, [...signals]);\n const controller = new AbortController();\n const abort = (): void => controller.abort();\n for (const signal of signals) {\n if (signal.aborted) { abort(); break; }\n signal.addEventListener('abort', abort, { once: true });\n }\n return controller.signal;\n}\n\nfunction requirePurpose(definition: RpcMethodDefinition, purpose: RpcCallPurpose): RpcCallPurpose {\n if (!definition.purposes.includes(purpose)) throw new RpcServiceError('wrong_purpose');\n return purpose;\n}\n\n/** Own-descriptor snapshot of the trusted lifecycle identity; no accessor ever runs. */\nfunction snapshotLifecycle(value: unknown): HostRpcLifecycleIdentity {\n if (value === null || typeof value !== 'object' || isProxy(value)) throw new RpcServiceError('invalid_registration');\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) throw new RpcServiceError('invalid_registration');\n const read = (name: string): unknown => {\n const descriptor = Object.getOwnPropertyDescriptor(value, name);\n if (descriptor === undefined || !descriptor.enumerable || !('value' in descriptor)) {\n throw new RpcServiceError('invalid_registration');\n }\n return descriptor.value;\n };\n const allowed = new Set(['endpoint', 'instance', 'generation', 'catalog', 'subject']);\n for (const key of Reflect.ownKeys(value)) {\n if (typeof key !== 'string' || !allowed.has(key)) throw new RpcServiceError('invalid_registration');\n }\n const endpoint = read('endpoint');\n const instance = read('instance');\n const generation = read('generation');\n const catalog = read('catalog');\n const subject = read('subject');\n if (typeof endpoint !== 'string' || !endpoint || typeof instance !== 'string' || !instance\n || !Number.isSafeInteger(generation) || (generation as number) < 1\n || typeof catalog !== 'string' || typeof subject !== 'string' || !subject) {\n throw new RpcServiceError('invalid_registration');\n }\n return Object.freeze({ endpoint, instance, generation: generation as number, catalog, subject });\n}\n\n/** Own-descriptor snapshot of a dependencies record; accessors are rejected, never invoked. */\nfunction snapshotDependencies(value: unknown): Readonly<Record<string, string>> {\n if (value === undefined) return Object.freeze({});\n if (value === null || typeof value !== 'object' || isProxy(value)) throw new RpcServiceError('invalid_registration');\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) throw new RpcServiceError('invalid_registration');\n const result: Record<string, string> = {};\n for (const key of Reflect.ownKeys(value)) {\n if (typeof key !== 'string') throw new RpcServiceError('invalid_registration');\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor === undefined || !descriptor.enumerable || !('value' in descriptor) || typeof descriptor.value !== 'string') {\n throw new RpcServiceError('invalid_registration');\n }\n result[key] = descriptor.value;\n }\n return Object.freeze(result);\n}\n\n/**\n * Copies own enumerable data-function properties only. Accessors, proxies,\n * prototype methods, symbol keys, and unknown keys are rejected before any value\n * is read, so no plugin getter ever runs.\n */\nfunction snapshotHandlers(methods: Record<string, RpcMethodDefinition>, handler: unknown): Map<string, Handler> {\n if (handler === null || typeof handler !== 'object' || isProxy(handler)) throw new RpcServiceError('invalid_registration');\n const prototype = Object.getPrototypeOf(handler);\n if (prototype !== Object.prototype && prototype !== null) throw new RpcServiceError('invalid_registration');\n const allowed = new Set(Object.keys(methods));\n const collected = new Map<string, Handler>();\n for (const key of Reflect.ownKeys(handler)) {\n if (typeof key !== 'string' || !allowed.has(key)) throw new RpcServiceError('invalid_registration');\n const descriptor = Object.getOwnPropertyDescriptor(handler, key);\n if (descriptor === undefined || !descriptor.enumerable || !('value' in descriptor) || typeof descriptor.value !== 'function') {\n throw new RpcServiceError('invalid_registration');\n }\n collected.set(key, descriptor.value as Handler);\n }\n for (const name of allowed) if (!collected.has(name)) throw new RpcServiceError('invalid_registration');\n return collected;\n}\n\n/**\n * Snapshots one command capability through own descriptors only. Proxies, accessors,\n * unknown keys, and non-function planner/reconcile values are rejected before any\n * value is read, so no plugin getter ever runs and no mutable capability object is\n * retained.\n */\nfunction snapshotCapability(value: unknown): HostRpcMethodCapability {\n if (value === null || typeof value !== 'object' || isProxy(value)) throw new RpcServiceError('invalid_registration');\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) throw new RpcServiceError('invalid_registration');\n let atomic: CommandAtomicPlanner | undefined;\n let atomicReadSet: AtomicReadSetResolver | undefined;\n let external: CommandExternalExecutor | undefined;\n for (const key of Reflect.ownKeys(value)) {\n if (typeof key !== 'string' || (key !== 'atomic' && key !== 'atomicReadSet' && key !== 'external')) throw new RpcServiceError('invalid_registration');\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor === undefined || !descriptor.enumerable || !('value' in descriptor)) {\n throw new RpcServiceError('invalid_registration');\n }\n if (key === 'atomicReadSet') {\n if (typeof descriptor.value !== 'function') throw new RpcServiceError('invalid_registration');\n atomicReadSet = descriptor.value as AtomicReadSetResolver;\n } else if (key === 'atomic') {\n if (typeof descriptor.value !== 'function') throw new RpcServiceError('invalid_registration');\n atomic = descriptor.value as CommandAtomicPlanner;\n } else {\n external = snapshotExternal(descriptor.value);\n }\n }\n const record: { atomic?: CommandAtomicPlanner; atomicReadSet?: AtomicReadSetResolver; external?: CommandExternalExecutor } = {};\n if (atomic !== undefined) record.atomic = atomic;\n if (atomicReadSet !== undefined) record.atomicReadSet = atomicReadSet;\n if (external !== undefined) record.external = external;\n return Object.freeze(record);\n}\n\n/** Snapshots the `external.reconcile` function without retaining the plugin's object. */\nfunction snapshotExternal(value: unknown): CommandExternalExecutor {\n if (value === null || typeof value !== 'object' || isProxy(value)) throw new RpcServiceError('invalid_registration');\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) throw new RpcServiceError('invalid_registration');\n for (const key of Reflect.ownKeys(value)) {\n if (key !== 'reconcile') throw new RpcServiceError('invalid_registration');\n }\n const descriptor = Object.getOwnPropertyDescriptor(value, 'reconcile');\n if (descriptor === undefined || !descriptor.enumerable || !('value' in descriptor) || typeof descriptor.value !== 'function') {\n throw new RpcServiceError('invalid_registration');\n }\n return Object.freeze({ reconcile: descriptor.value as CommandExternalExecutor['reconcile'] });\n}\n\n/**\n * Descriptor-safe snapshot of the command capabilities record. Every key must name a\n * declared command method; accessors, proxies, symbol keys, unknown/non-command\n * methods, and unknown capability fields are rejected before `register`, so a failed\n * snapshot can never leave a ghost endpoint. The snapshot is frozen and independent\n * of the plugin's mutable objects.\n */\nfunction snapshotCapabilities(\n methodTable: Record<string, RpcMethodDefinition>,\n value: unknown,\n): Readonly<Record<string, HostRpcMethodCapability>> | null {\n if (value === undefined) return null;\n if (value === null || typeof value !== 'object' || isProxy(value)) throw new RpcServiceError('invalid_registration');\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) throw new RpcServiceError('invalid_registration');\n const record: Record<string, HostRpcMethodCapability> = {};\n for (const key of Reflect.ownKeys(value)) {\n if (typeof key !== 'string' || !Object.hasOwn(methodTable, key)) throw new RpcServiceError('invalid_registration');\n const definition = methodTable[key];\n if (definition === undefined || definition.kind !== 'command') throw new RpcServiceError('invalid_registration');\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor === undefined || !descriptor.enumerable || !('value' in descriptor)) {\n throw new RpcServiceError('invalid_registration');\n }\n if (descriptor.value === undefined) continue;\n record[key] = snapshotCapability(descriptor.value);\n }\n return Object.freeze(record);\n}\n\n/** Snapshots plugin call options without invoking accessors or accepting unknown keys. */\nfunction snapshotCallOptions(options: RpcCallOptions | undefined): RpcCallOptions {\n if (options === undefined) return EMPTY_OPTIONS;\n if (options === null || typeof options !== 'object' || isProxy(options)) throw new RpcServiceError('invalid_input');\n const prototype = Object.getPrototypeOf(options);\n if (prototype !== Object.prototype && prototype !== null) throw new RpcServiceError('invalid_input');\n const result: { signal?: AbortSignal; timeoutMs?: number; operationId?: string } = {};\n for (const key of Reflect.ownKeys(options)) {\n if (typeof key !== 'string' || !(CALL_OPTION_KEYS as readonly string[]).includes(key)) {\n throw new RpcServiceError('invalid_input');\n }\n const descriptor = Object.getOwnPropertyDescriptor(options, key);\n if (descriptor === undefined || !descriptor.enumerable || !('value' in descriptor)) {\n throw new RpcServiceError('invalid_input');\n }\n (result as Record<string, unknown>)[key] = descriptor.value;\n }\n if (result.signal !== undefined && !(result.signal instanceof AbortSignal)) throw new RpcServiceError('invalid_input');\n if (result.timeoutMs !== undefined\n && (typeof result.timeoutMs !== 'number' || !Number.isSafeInteger(result.timeoutMs) || result.timeoutMs < 0)) {\n throw new RpcServiceError('invalid_input');\n }\n if (result.operationId !== undefined && typeof result.operationId !== 'string') throw new RpcServiceError('invalid_input');\n return Object.freeze(result);\n}\n\nfunction defineContract<const M extends Record<string, RpcMethodDefinition>>(\n contract: { readonly id: string; readonly version: number; readonly methods: M },\n): { readonly id: string; readonly version: number; readonly methods: M } {\n try {\n return defineRpcService(contract) as unknown as { readonly id: string; readonly version: number; readonly methods: M };\n } catch {\n throw new RpcServiceError('invalid_registration');\n }\n}\n\n/* -------------------------------------------------------------------------- */\n/* Adapter */\n/* -------------------------------------------------------------------------- */\n\nexport class HostRpcAdapter {\n readonly runtime: RpcServiceRuntime<unknown>;\n readonly #options: HostRpcAdapterOptions;\n readonly #process: PluginServiceProcess;\n readonly #maxCallDepth: number;\n readonly #ownersByToken = new WeakMap<object, OwnerState>();\n readonly #ownersByCaller = new Map<string, OwnerState>();\n readonly #publications = new Map<string, RegisteredPublication>();\n readonly #capabilities = new Map<string, Readonly<Record<string, HostRpcMethodCapability>>>();\n #closed = false;\n\n constructor(options: HostRpcAdapterOptions) {\n if (options === null || typeof options !== 'object' || typeof options.process !== 'string') {\n throw new RpcServiceError('invalid_registration');\n }\n if (typeof options.resolvePlacement !== 'function' || typeof options.resolveJournal !== 'function'\n || typeof options.resolveCallee !== 'function') {\n throw new RpcServiceError('invalid_registration');\n }\n this.#options = options;\n this.#process = options.process;\n this.#maxCallDepth = Number.isSafeInteger(options.maxCallDepth) && (options.maxCallDepth as number) > 0\n ? options.maxCallDepth as number : DEFAULT_MAX_CALL_DEPTH;\n this.runtime = new RpcServiceRuntime<unknown>({\n admit: (request) => this.#admit(request),\n commandExecutor: this.#commandExecutor(),\n hostLifetime: options.hostLifetime,\n limits: options.limits,\n });\n }\n\n status(): RpcRuntimeStatus {\n return this.runtime.status();\n }\n\n /**\n * Host-only readonly directory of this adapter's *real* registered\n * publications: the kernel-selected binding (endpoint/process/instance/\n * generation/catalog/scope/subject) of the exact endpoint handle, its owner\n * lifecycle identity and its current readiness. It is a plain snapshot for\n * host decision making (peer routing/validation); it grants nothing, exposes\n * no SDK surface and is never exposed through `PluginServices`.\n */\n publicationView(): readonly HostRpcPublicationView[] {\n const view: HostRpcPublicationView[] = [];\n for (const publication of this.#publications.values()) {\n const info = this.runtime.endpointInfo(publication.handle);\n if (info === null) continue;\n const lifecycle = publication.ownerState.lifecycle;\n const state = publication.ownerState.owner.getLifecycleState();\n view.push(Object.freeze({\n provider: publication.provider,\n service: publication.contractId,\n major: publication.contractVersion,\n scope: publication.scope,\n scopeKey: publication.scopeKey,\n ready: state.ready && !state.retiring && !state.revoked,\n lifecycle: Object.freeze({\n endpoint: lifecycle.endpoint, instance: lifecycle.instance,\n generation: lifecycle.generation, catalog: lifecycle.catalog, subject: lifecycle.subject,\n }),\n binding: info.binding,\n }));\n }\n return Object.freeze(view);\n }\n\n /** Closes the process runtime; the parent awaits this in the canonical shutdown. */\n async dispose(options: { readonly timeoutMs?: number } = {}) {\n this.#closed = true;\n return this.runtime.dispose(options);\n }\n\n /* ------------------------------ owners ---------------------------------- */\n\n createOwner(input: HostRpcOwnerInput): HostRpcOwnerHandle {\n return this.#ownerHandle(this.#createOwnerState(input, this.#process, true));\n }\n\n /** Imports an authenticated concrete caller, not a plugin instance or SDK facade. */\n createRemoteCaller(input: HostRpcRemoteCallerInput): HostRpcRemoteCallerHandle {\n if (!['control', 'worker', 'ingress'].includes(input?.process) || typeof input?.authorizeIncoming !== 'function') {\n throw new RpcServiceError('invalid_registration');\n }\n const authorize = input.authorizeIncoming;\n const state = this.#createOwnerState(input, input.process, false, authorize);\n return Object.freeze({\n invokeTracked: (request: Omit<RpcInvokeRequest, 'caller' | 'callerToken'>) => this.runtime.invokeTracked({\n ...request, caller: Object.freeze({ subject: state.callerSubject, scope: state.scopeKind }), callerToken: state.owner.token,\n }),\n dispose: () => this.#disposeOwner(state),\n });\n }\n\n #createOwnerState(input: HostRpcOwnerInput, process: PluginServiceProcess, local: boolean,\n authorizeIncoming?: HostRpcRemoteCallerInput['authorizeIncoming']): OwnerState {\n if (this.#closed) throw new RpcServiceError('closed');\n if (input === null || typeof input !== 'object' || input.token === null || typeof input.token !== 'object') {\n throw new RpcServiceError('invalid_registration');\n }\n if (typeof input.plugin !== 'string' || !input.plugin || typeof input.scope !== 'string' || !input.scope) {\n throw new RpcServiceError('invalid_registration');\n }\n if (typeof input.getLifecycleState !== 'function' || typeof input.acquireLease !== 'function'\n || typeof input.resolveInvocationContext !== 'function') {\n throw new RpcServiceError('invalid_registration');\n }\n if (this.#ownersByToken.has(input.token)) throw new RpcServiceError('invalid_registration');\n const callerSubject = callerSubjectFor(input.plugin, input.scope);\n if (local && this.#ownersByCaller.has(callerSubject)) throw new RpcServiceError('invalid_registration');\n const state: OwnerState = {\n owner: input,\n plugin: input.plugin,\n scope: input.scope,\n scopeKind: scopeKindOf(input.scope),\n callerSubject,\n lifecycle: snapshotLifecycle(input.lifecycle),\n publications: new Set(),\n process, local, authorizeIncoming,\n revoked: false,\n released: false,\n };\n // Fail closed before any publication: dependency records must be snapshot-clean.\n snapshotDependencies(input.dependencies);\n if (Object.hasOwn(input, 'optionalDependencies')) throw new RpcServiceError('invalid_registration');\n try { assertSupportedServiceDeclarations(input.declarations); } catch { throw new RpcServiceError('invalid_registration'); }\n this.#ownersByToken.set(input.token, state);\n if (local) this.#ownersByCaller.set(callerSubject, state);\n return state;\n }\n\n #ownerHandle(state: OwnerState): HostRpcOwnerHandle {\n return Object.freeze({\n owner: state.owner,\n publish: <const M extends Record<string, RpcMethodDefinition>>(\n contract: { readonly id: string; readonly version: number; readonly methods: M },\n handlers: RpcHandlerMap<M, unknown>,\n capabilities?: HostRpcCommandCapabilities<M>,\n ) => this.#publish(state, contract, handlers, capabilities),\n consume: <const M extends Record<string, RpcMethodDefinition>>(\n provider: string,\n contract: { readonly id: string; readonly version: number; readonly methods: M },\n ) => this.#consume(state, provider, contract),\n markReady: () => { this.#markReady(state); },\n retire: () => { this.#retire(state); },\n dispose: () => this.#disposeOwner(state),\n });\n }\n\n #markReady(state: OwnerState): void {\n if (state.revoked || state.released || this.#closed) throw new RpcServiceError('closed');\n for (const publication of state.publications) this.runtime.markReady(publication.handle);\n }\n\n #retire(state: OwnerState): void {\n if (state.released) return;\n for (const publication of state.publications) this.runtime.retire(publication.handle);\n }\n\n /** Revoke + REAL bounded drain. Resources are dropped only after a drained verdict. */\n async #disposeOwner(state: OwnerState): Promise<RpcDrainResult> {\n if (state.released) return Object.freeze({ drained: true, active: 0 });\n state.revoked = true;\n this.runtime.revokeCaller(state.callerSubject, state.owner.token);\n for (const publication of state.publications) this.runtime.revoke(publication.handle);\n const result = await this.runtime.drainOwner(state.callerSubject, [...state.publications].map(publication => publication.handle), { callerToken: state.owner.token });\n if (result.drained) this.#releaseOwner(state);\n return result;\n }\n\n /** Drops publication/capability/owner mapping so the same logical owner can be recreated. */\n #releaseOwner(state: OwnerState): void {\n for (const publication of state.publications) {\n this.#publications.delete(publication.key);\n this.#capabilities.delete(publication.key);\n }\n state.publications.clear();\n state.released = true;\n if (this.#ownersByCaller.get(state.callerSubject) === state) this.#ownersByCaller.delete(state.callerSubject);\n }\n\n /* ---------------------------- publications ------------------------------ */\n\n #publish<const M extends Record<string, RpcMethodDefinition>>(\n state: OwnerState,\n contractInput: { readonly id: string; readonly version: number; readonly methods: M },\n handlers: RpcHandlerMap<M, unknown>,\n capabilities?: HostRpcCommandCapabilities<M>,\n ): HostRpcPublication {\n const lifecycleState = state.owner.getLifecycleState();\n if (state.revoked || state.released || this.#closed || lifecycleState.revoked || lifecycleState.retiring) {\n throw new RpcServiceError('closed');\n }\n const contract = defineContract(contractInput);\n if (this.#matchPublication(state, contract.id, contract.version) === null) throw new RpcServiceError('undeclared');\n const key = publicationKey(state.plugin, state.scope, contract.id, contract.version);\n // Duplicate detection happens BEFORE register so no ghost endpoint is created.\n if (this.#publications.has(key)) throw new RpcServiceError('invalid_registration');\n const methodTable = contract.methods as Record<string, RpcMethodDefinition>;\n const collected = snapshotHandlers(methodTable, handlers);\n // Snapshot capabilities BEFORE `register`: a hostile accessor must fail closed with\n // zero endpoints and no parent publication callback, never leave a ghost endpoint.\n const capabilityRecord = snapshotCapabilities(methodTable, capabilities);\n const wrapped: Record<string, Handler> = {};\n for (const [name, definition] of Object.entries(methodTable)) {\n const chainKey = `${state.plugin}${SEP}${state.scope}${SEP}${contract.id}${SEP}${contract.version}${SEP}${name}`;\n wrapped[name] = this.#wrapHandler(collected.get(name) as Handler, definition, chainKey);\n }\n const binding: RpcEndpointBinding = {\n endpoint: state.lifecycle.endpoint,\n process: this.#process,\n instance: state.lifecycle.instance,\n generation: state.lifecycle.generation,\n catalog: state.lifecycle.catalog,\n scope: state.scopeKind,\n subject: state.lifecycle.subject,\n };\n let handle: RpcEndpointHandle;\n try {\n handle = this.runtime.register({\n provider: state.plugin,\n binding,\n contract,\n handler: wrapped as unknown as RpcHandlerMap<M, unknown>,\n });\n } catch {\n throw new RpcServiceError('invalid_registration');\n }\n const descriptor: HostRpcServiceDescriptor = Object.freeze({\n provider: state.plugin, service: contract.id, major: contract.version, kind: 'rpc',\n process: this.#process, scope: state.scopeKind,\n });\n const publication: RegisteredPublication = {\n key, handle, provider: state.plugin, scopeKey: state.scope, scope: state.scopeKind,\n contractId: contract.id, contractVersion: contract.version, ownerState: state,\n };\n this.#publications.set(key, publication);\n state.publications.add(publication);\n if (capabilityRecord !== null && Object.keys(capabilityRecord).length > 0) {\n this.#capabilities.set(key, capabilityRecord);\n }\n try {\n state.owner.registerPublication?.({\n id: contract.id, version: contract.version, kind: 'rpc', process: this.#process, scope: 'global',\n });\n } catch {\n // Roll back completely: no ghost endpoint, no reservation, no capability.\n this.runtime.revoke(handle);\n this.#publications.delete(key);\n this.#capabilities.delete(key);\n state.publications.delete(publication);\n throw new RpcServiceError('invalid_registration');\n }\n return Object.freeze({ descriptor });\n }\n\n #wrapHandler(original: Handler, definition: RpcMethodDefinition, chainKey: string): Handler {\n // Commands are framed once by `#commandExecutor` for the whole journal capability\n // (execute/query/reconcile); framing the business handler again here would inflate\n // depth and could manufacture false same-method cycles.\n if (definition.kind === 'command') return original;\n return (input, context) => this.#runInFrame(context, chainKey, () => original(input, context));\n }\n\n /** Runs `run` inside one inherited host frame: purpose, chain, deadline, cancellation. */\n #runInFrame(context: RpcHandlerContext<unknown>, chainKey: string, run: () => unknown): unknown {\n const parent = FRAME_STORE.getStore() ?? null;\n const depth = (parent?.depth ?? 0) + 1;\n if (depth > this.#maxCallDepth) throw new RpcServiceError('call_depth_exceeded', context.operationId);\n const actualDeadline = typeof context.deadlineAt === 'number' ? context.deadlineAt : Number.POSITIVE_INFINITY;\n const frame: ActiveFrame = Object.freeze({\n purpose: context.purpose,\n depth,\n chain: Object.freeze([...(parent?.chain ?? []), chainKey]),\n deadlineAt: parent === null ? actualDeadline : Math.min(parent.deadlineAt, actualDeadline),\n // A nested call must also abort when the parent call is cancelled.\n signal: parent === null ? context.signal : anySignal([parent.signal, context.signal]),\n });\n const enter = this.#options.enterHostHandlerFrame;\n if (enter === undefined) return FRAME_STORE.run(frame, run);\n // The canonical host enters its OWN live invocation frame for the exact\n // published owner, so channel work and nested local dispatch inside this\n // handler inherit the real purpose/deadline/cancel and the exact owner\n // authority instead of being re-interpreted as an unauthenticated background\n // task. `ownerToken` is host-private (`CALLEE_INFO`), never a payload field.\n const info = context.callee !== null && typeof context.callee === 'object'\n ? CALLEE_INFO.get(context.callee as object)\n : undefined;\n const hostFrame: HostRpcHandlerFrame = {\n purpose: frame.purpose,\n ...(Number.isFinite(frame.deadlineAt) ? { deadlineAt: frame.deadlineAt } : {}),\n signal: frame.signal,\n ownerToken: info?.ownerToken ?? null,\n operationId: context.operationId ?? null,\n };\n return FRAME_STORE.run(frame, () => enter(hostFrame, run));\n }\n\n /* ----------------------------- consumption ------------------------------ */\n\n #consume<const M extends Record<string, RpcMethodDefinition>>(\n state: OwnerState,\n provider: string,\n contractInput: { readonly id: string; readonly version: number; readonly methods: M },\n ): AsyncRpcClient<M> {\n if (state.released || this.#closed) throw new RpcServiceError('closed');\n if (typeof provider !== 'string' || !provider) throw new RpcServiceError('invalid_registration');\n const contract = defineContract(contractInput);\n const declaration = this.#matchConsumption(state, provider, contract.id, contract.version);\n if (declaration === null) throw new RpcServiceError('undeclared');\n if (!isCrossProcessSelfService(state.plugin, declaration, state.owner.declarations) && (provider === state.plugin || !Object.hasOwn(state.owner.dependencies, provider))) throw new RpcServiceError('undeclared');\n const scopeKey = 'global';\n const firstMethod = Object.keys(contract.methods as Record<string, RpcMethodDefinition>)[0];\n const route = this.#resolveRoute(state, { provider, service: contract.id, major: contract.version, method: firstMethod }, scopeKey);\n if (route.kind === 'ambiguous') throw new RpcServiceError('ambiguous_placement');\n if (route.kind === 'missing') {\n throw new RpcServiceError('unavailable');\n }\n state.owner.registerConsumption?.(declaration, route.kind === 'publication' ? route.publication.ownerState.owner.token : undefined);\n const methodTable = contract.methods as Record<string, RpcMethodDefinition>;\n const client: Record<string, unknown> = {};\n for (const [method, definition] of Object.entries(methodTable)) {\n client[method] = this.#makeMethodClient(state, provider, contract, method, definition);\n }\n return Object.freeze(client) as AsyncRpcClient<M>;\n }\n\n #makeMethodClient<const M extends Record<string, RpcMethodDefinition>>(\n state: OwnerState,\n provider: string,\n contract: { readonly id: string; readonly version: number; readonly methods: M },\n method: string,\n definition: RpcMethodDefinition,\n ): unknown {\n const target = { provider, service: contract.id, major: contract.version, method };\n const invoke = (action: RpcCommandAction | undefined, input: unknown, operationId: string | null, options: RpcCallOptions) =>\n this.#invokeAction(state, target, definition, action, input, operationId, options);\n const call = async (input: unknown, options?: RpcCallOptions): Promise<unknown> => {\n const snapshot = snapshotCallOptions(options);\n const operationId = this.#operationId(definition, snapshot);\n return invoke(definition.kind === 'command' ? 'execute' : undefined, input, operationId, snapshot);\n };\n if (definition.kind !== 'command') return call;\n const queryResult = (operationId: string): Promise<unknown> =>\n invoke('query-result', null, normalizeOperationId(operationId), EMPTY_OPTIONS);\n const reconcile = (operationId: string, input: unknown): Promise<unknown> =>\n invoke('reconcile', input, normalizeOperationId(operationId), EMPTY_OPTIONS);\n return Object.assign(call, { queryResult, reconcile });\n }\n\n #operationId(definition: RpcMethodDefinition, options: RpcCallOptions): string | null {\n const raw = options.operationId;\n if (definition.kind === 'query') {\n if (raw !== undefined) throw new RpcServiceError('invalid_operation_id');\n return null;\n }\n if (raw === undefined) throw new RpcServiceError('invalid_operation_id');\n return normalizeOperationId(raw);\n }\n\n async #invokeAction(\n state: OwnerState,\n target: { readonly provider: string; readonly service: string; readonly major: number; readonly method: string },\n definition: RpcMethodDefinition,\n action: RpcCommandAction | undefined,\n input: unknown,\n operationId: string | null,\n options: RpcCallOptions,\n ): Promise<RpcJson> {\n if (state.revoked || state.released || this.#closed) throw new RpcServiceError('closed', operationId);\n // The manifest consumption and its canonical dependency record are re-validated on\n // every call: a removed declaration or dependency is refused.\n const scopeKey = this.#targetScope(state, target);\n if (scopeKey === null) throw new RpcServiceError('undeclared', operationId);\n const parent = FRAME_STORE.getStore() ?? null;\n if (parent !== null && parent.chain.includes(`${target.provider}${SEP}${scopeKey}${SEP}${target.service}${SEP}${target.major}${SEP}${target.method}`)) {\n throw new RpcServiceError('deadlock');\n }\n // Enforce the consumer contract's own input schema/byte bound before the provider\n // sees the call. `query-result` carries only the null control DTO, never business input.\n if (action !== 'query-result') {\n try {\n const limit = definition.maxInputBytes ?? RPC_JSON_MAX_BYTES;\n input = decodeRpcJson(encodeRpcJson(input, limit), limit);\n assertRpcData(definition.input, input, limit);\n } catch {\n throw new RpcServiceError('invalid_input', operationId);\n }\n }\n const caller = Object.freeze({ subject: state.callerSubject, scope: state.scopeKind });\n // Resolve the host invocation frame exactly once; purpose and request share that snapshot.\n const invocation = state.owner.resolveInvocationContext();\n const purpose = this.#selectPurpose(state, definition, invocation);\n const route = this.#resolveRoute(state, target, scopeKey, purpose);\n if (route.kind === 'ambiguous') throw new RpcServiceError('ambiguous_placement');\n if (route.kind === 'missing') throw new RpcServiceError('unavailable');\n const request = this.#buildRequest(target, caller, purpose, input, operationId, action, options, parent, invocation, state.owner.token);\n try {\n const result = await this.runtime.invoke(request);\n try { assertRpcData(definition.output, result, definition.maxOutputBytes); }\n catch { throw new RpcServiceError('invalid_output', operationId); }\n return result;\n } catch (error) {\n throw toRpcServiceError(error, operationId);\n }\n }\n\n /** Purpose is inherited, never rank-converted; the method must explicitly allow it. */\n #selectPurpose(state: OwnerState, definition: RpcMethodDefinition, invocation: HostRpcInvocationContext | null): RpcCallPurpose {\n const parent = FRAME_STORE.getStore() ?? null;\n if (parent !== null) return requirePurpose(definition, parent.purpose);\n if (invocation !== null) return requirePurpose(definition, invocation.purpose);\n const ready = state.owner.getLifecycleState().ready;\n return requirePurpose(definition, ready ? 'background' : 'bootstrap');\n }\n\n #buildRequest(\n target: { readonly provider: string; readonly service: string; readonly major: number; readonly method: string },\n caller: RpcCaller,\n purpose: RpcCallPurpose,\n input: unknown,\n operationId: string | null,\n action: RpcCommandAction | undefined,\n options: RpcCallOptions,\n parent: ActiveFrame | null,\n invocation: HostRpcInvocationContext | null,\n callerToken: object,\n ) {\n let timeoutMs = options.timeoutMs;\n const deadlineAt = Math.min(parent?.deadlineAt ?? Infinity, invocation?.deadlineAt ?? Infinity);\n if (parent !== null && Number.isFinite(parent.deadlineAt)) {\n const remaining = Math.floor(parent.deadlineAt - Date.now());\n timeoutMs = timeoutMs === undefined ? remaining : Math.min(timeoutMs, remaining);\n }\n if (invocation?.deadlineAt !== undefined) {\n const remaining = Math.floor(invocation.deadlineAt - Date.now());\n timeoutMs = timeoutMs === undefined ? remaining : Math.min(timeoutMs, remaining);\n }\n if (timeoutMs !== undefined && (!Number.isSafeInteger(timeoutMs) || timeoutMs <= 0)) {\n throw new RpcServiceError('timeout', operationId);\n }\n const explicitSignal = options.signal;\n const parentSignal = parent?.signal;\n let signal = explicitSignal === undefined\n ? parentSignal\n : parentSignal === undefined ? explicitSignal : anySignal([explicitSignal, parentSignal]);\n if (invocation?.signal !== undefined) signal = signal === undefined ? invocation.signal : anySignal([signal, invocation.signal]);\n const request: {\n target: { provider: string; service: string; major: number; method: string };\n caller: RpcCaller;\n callerToken: object;\n purpose: RpcCallPurpose;\n input: unknown;\n operationId?: string;\n commandAction?: RpcCommandAction;\n signal?: AbortSignal;\n timeoutMs?: number;\n deadlineAt?: number;\n } = {\n target: { provider: target.provider, service: target.service, major: target.major, method: target.method },\n caller,\n callerToken,\n purpose,\n input,\n };\n if (operationId !== null) request.operationId = operationId;\n if (action !== undefined) request.commandAction = action;\n if (signal !== undefined) request.signal = signal;\n if (timeoutMs !== undefined) request.timeoutMs = timeoutMs;\n if (Number.isFinite(deadlineAt)) request.deadlineAt = deadlineAt;\n return request;\n }\n\n /* ------------------------------- routing -------------------------------- */\n\n #matchPublication(state: OwnerState, id: string, version: number): PluginServicePublication | null {\n return state.owner.declarations.provides?.find((value) =>\n value.id === id && value.version === version\n && (value.kind ?? 'local') === 'rpc'\n && value.process === this.#process\n && (value.scope ?? 'global') === 'global' && state.scope === 'global') ?? null;\n }\n\n #matchConsumption(state: OwnerState, provider: string, id: string, version: number): PluginServiceConsumption | null {\n return state.owner.declarations.consumes?.find((value) =>\n value.plugin === provider && value.id === id && value.version === version\n && (value.kind ?? 'local') === 'rpc'\n && value.process === state.process) ?? null;\n }\n\n #targetScope(\n state: OwnerState,\n target: { readonly provider: string; readonly service: string; readonly major: number },\n ): string | null {\n const consumption = state.owner.declarations.consumes?.find((value) =>\n value.plugin === target.provider && value.id === target.service && value.version === target.major\n && (value.kind ?? 'local') === 'rpc' && value.process === state.process) ?? null;\n if (consumption === null) return null;\n if (!isCrossProcessSelfService(state.plugin, consumption, state.owner.declarations) && (target.provider === state.plugin || !Object.hasOwn(state.owner.dependencies, target.provider))) return null;\n return 'global';\n }\n\n /** Host placement authority runs first; `null` opts into the explicit local channel. */\n #resolveRoute(\n state: OwnerState,\n target: { readonly provider: string; readonly service: string; readonly major: number; readonly method: string },\n scopeKey: string,\n purpose?: RpcCallPurpose,\n ): RouteResolution {\n let placement: HostRpcPlacementResolution;\n try {\n placement = this.#options.resolvePlacement({\n provider: target.provider,\n service: target.service,\n major: target.major,\n method: target.method,\n scope: scopeKey === 'global' ? 'global' : 'binding',\n ...(scopeKey === 'global' ? {} : { bindingScope: scopeKey }),\n caller: Object.freeze({ subject: state.callerSubject, scope: state.scopeKind }),\n purpose,\n });\n } catch {\n return { kind: 'missing' };\n }\n if (placement !== null && placement !== undefined) {\n if (placement.kind === 'ambiguous') return { kind: 'ambiguous' };\n return { kind: 'remote', handle: placement.endpoint };\n }\n const publication = this.#publications.get(publicationKey(target.provider, scopeKey, target.service, target.major));\n return publication === undefined ? { kind: 'missing' } : { kind: 'publication', publication };\n }\n\n /* ----------------------------- admission -------------------------------- */\n\n #admit(request: RpcAdmissionRequest): RpcAdmissionGrant<unknown> | null {\n if (this.#closed) return null;\n const state = request.callerToken === undefined ? this.#ownersByCaller.get(request.caller.subject)\n : this.#ownersByToken.get(request.callerToken);\n if (state === undefined || state.revoked || state.released) return null;\n if (state.callerSubject !== request.caller.subject\n || (request.caller.scope !== undefined && state.scopeKind !== request.caller.scope)) return null;\n const callerState = state.owner.getLifecycleState();\n if (callerState.revoked) return null;\n if (state.owner.canCall !== undefined && !state.owner.canCall({ ...request.target })) return null;\n if (!callerState.ready && request.purpose !== 'bootstrap') return null;\n const target = { ...request.target };\n const scopeKey = this.#targetScope(state, target);\n if (scopeKey === null) return null;\n const route = this.#resolveRoute(state, target, scopeKey, request.purpose);\n if (route.kind === 'ambiguous' || route.kind === 'missing') return null;\n const publication = route.kind === 'publication' ? route.publication : null;\n const endpoint = route.kind === 'publication' ? route.publication.handle : route.handle;\n // The callee publication is built from the REAL kernel-bound endpoint identity, never\n // from the adapter process or a plugin-supplied location. A foreign/unconfirmable\n // endpoint, or one whose provider/service/major/scope disagrees with the requested\n // target, is refused before any lease or callee frame is produced.\n const info = this.runtime.endpointInfo(endpoint);\n if (info === null) return null;\n if (info.provider !== target.provider || info.contract.id !== target.service || info.contract.version !== target.major) {\n return null;\n }\n const scope = info.binding.scope;\n if ((scopeKey === 'global') !== (scope === 'global')) return null;\n if (!state.local) {\n try { if (state.authorizeIncoming?.(request, info) !== true) return null; }\n catch { return null; }\n if (state.revoked || state.released || this.#closed) return null;\n }\n const provider = info.provider;\n // Logical clients can be relocated without retaining an unrelated local provider.\n const consumption = this.#matchConsumption(state, target.provider, target.service, target.major)!;\n state.owner.registerConsumption?.(consumption, publication?.ownerState.owner.token);\n // Resolve the trusted callee frame before any lease so a throwing host\n // resolver cannot leak leases.\n const hostFrame = this.#options.resolveCallee(\n request,\n Object.freeze({ provider, service: target.service, major: target.major, kind: 'rpc', process: info.binding.process, scope }),\n );\n // Caller lease holds the issuing owner for the whole call lifespan.\n let callerRelease: () => void = () => undefined;\n try {\n const lease = state.owner.acquireLease({\n role: 'caller', plugin: state.plugin, scope: state.scope, state: callerState,\n purpose: request.purpose, operationId: request.operationId, provider: target.provider,\n });\n if (lease === null || typeof lease !== 'object' || typeof lease.release !== 'function') return null;\n callerRelease = once(() => { try { lease.release(); } catch { /* host-owned */ } });\n } catch { return null; }\n // Callee lease holds the provider (local only). A callee the kernel will refuse\n // (revoked / retiring without an existing-lease proof / unready non-bootstrap)\n // is NOT leased here, so the kernel reports the exact state instead of a lease error.\n let calleeRelease: (() => void) | null = null;\n let allowRetired = false;\n if (publication !== null) {\n const calleeState = publication.ownerState.owner.getLifecycleState();\n const runnable = calleeState.revoked ? false\n : calleeState.retiring ? (request.purpose === 'request' || request.purpose === 'attempt')\n : (calleeState.ready || request.purpose === 'bootstrap');\n if (runnable) {\n try {\n const lease = publication.ownerState.owner.acquireLease({\n role: 'callee', plugin: publication.provider, scope: publication.scopeKey, state: calleeState,\n purpose: request.purpose, operationId: request.operationId, provider: target.provider,\n });\n if (lease === null || typeof lease !== 'object' || typeof lease.release !== 'function') {\n callerRelease();\n return null;\n }\n calleeRelease = once(() => { try { lease.release(); } catch { /* host-owned */ } });\n allowRetired = lease.allowRetired === true\n && (request.purpose === 'request' || request.purpose === 'attempt');\n } catch { callerRelease(); return null; }\n }\n }\n const callee = Object.freeze({});\n CALLEE_INFO.set(callee, { provider, scopeKey, scope, frame: hostFrame, ownerToken: publication?.ownerState.owner.token ?? null });\n const release = once(() => {\n try { calleeRelease?.(); } catch { /* host-owned */ }\n try { callerRelease(); } catch { /* host-owned */ }\n });\n // A host callback can synchronously dispose this capability before a task exists.\n // Recheck after every admission callback has returned, before handing the kernel a grant.\n if (state.revoked || state.released || this.#closed) { release(); return null; }\n return {\n endpoint, callee, release, callerToken: state.owner.token,\n allowUnready: request.purpose === 'bootstrap',\n allowRetired,\n };\n }\n\n /* ------------------------------ commands -------------------------------- */\n\n #commandExecutor(): RpcCommandExecutor<unknown> {\n const run = async (\n execution: Omit<RpcCommandExecution<unknown>, 'executeBusiness'>,\n action: RpcCommandAction,\n ): Promise<unknown> => {\n const callee = execution.context.callee;\n const info = callee !== null && typeof callee === 'object' ? CALLEE_INFO.get(callee as object) : undefined;\n if (info === undefined) throw new RpcServiceError('capability_unavailable', execution.operationId);\n const chainKey = `${info.provider}${SEP}${info.scopeKey}${SEP}${execution.contract.id}${SEP}${execution.contract.version}${SEP}${execution.method}`;\n const journal = this.#journalFor(info, execution);\n // Application-owned CAS/idempotency (e.g. a budget ledger or credential\n // version fence) has one transaction authority. No parallel journal is\n // created for an explicitly non-deduplicated command.\n if (journal === null && execution.definition.command?.deduplication === 'none') {\n if (action !== 'execute') throw new RpcServiceError('capability_unavailable', execution.operationId);\n return this.#runInFrame(execution.context, chainKey, () => (execution as RpcCommandExecution<unknown>).executeBusiness());\n }\n if (journal === null) throw new RpcServiceError('capability_unavailable', execution.operationId);\n // Every journal action (execute/query/reconcile) runs inside the real RPC frame so\n // the business handler and any nested external-reconcile RPC inherit purpose,\n // chain, deadline, and cancellation. Commands are framed once here, not in #wrapHandler.\n try {\n return await this.#runInFrame(execution.context, chainKey, () => {\n if (action === 'execute') return journal.execute(execution as RpcCommandExecution<unknown>);\n if (action === 'query-result') return journal.query(execution.operationId, execution.context.caller);\n return journal.reconcile(execution);\n });\n } finally {\n if ('close' in journal) {\n // Capability release is resource cleanup, separate from the acknowledged command.\n // A stuck or failed cleanup must not replace success, unknown, or its operation ID.\n void Promise.resolve().then(()=>journal.close()).catch(error=>{\n const rawCode=ownStringProperty(error,'code');\n const code=rawCode!==null&&['worker_failed','request_timeout','request_failed','close_unconfirmed','cleanup_overloaded','queue_full','result_unknown','storage_failure'].includes(rawCode)?rawCode:'failed';\n const failure=Object.freeze({operationId:execution.operationId,code});\n try{logger.error(failure,'Host RPC journal cleanup failed');}catch{/* Reporting cannot change the command outcome. */}\n try{this.#options.onJournalCleanupFailure?.(failure);}catch{/* Host reporting is independent of business completion. */}\n });\n }\n }\n\n };\n return {\n execute: (execution) => run(execution, 'execute'),\n queryResult: (execution) => run(execution, 'query-result'),\n reconcile: (execution) => run(execution, 'reconcile'),\n };\n }\n\n #journalFor(\n info: CalleeInfo,\n execution: Omit<RpcCommandExecution<unknown>, 'executeBusiness'>,\n ): AsyncCommandJournal | CommandJournal | null {\n const policy = execution.definition.command;\n if (policy === undefined) throw new RpcServiceError('capability_unavailable', execution.operationId);\n const capability = this.#capabilities.get(\n publicationKey(info.provider, info.scopeKey, execution.contract.id, execution.contract.version),\n )?.[execution.method];\n try {\n return this.#options.resolveJournal({\n provider: info.provider,\n service: execution.contract.id,\n major: execution.contract.version,\n method: execution.method,\n scope: info.scope,\n ...(info.scope === 'binding' ? { bindingScope: info.scopeKey } : {}),\n policy,\n ...(capability?.atomic === undefined ? {} : { atomic: capability.atomic }),\n ...(capability?.atomicReadSet === undefined ? {} : { atomicReadSet: capability.atomicReadSet }),\n ...(capability?.external === undefined ? {} : { external: capability.external }),\n }) ?? null;\n } catch {\n throw new RpcServiceError('capability_unavailable', execution.operationId);\n }\n }\n}\n\nfunction once(action: () => void): () => void {\n let done = false;\n return () => { if (done) return; done = true; action(); };\n}\n",
@@ -51,6 +51,6 @@
51
51
  "import { definePlugin, createPluginHooks, DataAdmissionError, logger, type Plugin, type PluginHooks, type PluginInitContext, type PluginConfigField } from '@jeffusion/bungee-core/plugin';\nimport { MODELS_DEV_CAPABILITIES_SERVICE_ID, MODELS_DEV_CAPABILITIES_CONTRACT_VERSION, type ModelsDevCapabilitiesService } from '../../models-dev/contract';\nimport { ADAPTER_PLUGIN, historyClient, historyRpc, CONVERSION_SERVICE_ID, CONVERSION_VERSION, type LLMProtocol, type ConversionService, type AdapterSession } from '../contract';\nimport { protocolRequestModel } from '@jeffusion/bungee-llms/plugin-api';\nimport { readModelIdentity } from '../contract';\nimport { conversionService } from './service';\nimport { responseHandler, adapterError } from './handler';\nimport manifest from '../manifest.json';\nexport function protocolForPath(path: string): LLMProtocol | null {\n if (/\\/responses$/.test(path))\n return 'responses';\n if (/\\/chat\\/completions$/.test(path))\n return 'chat_completions';\n if (/\\/messages$/.test(path))\n return 'anthropic_messages';\n if (/:(?:streamGenerateContent|generateContent)$/.test(path))\n return 'gemini_generate_content';\n return null;\n}\nexport function targetPath(path: string, protocol: LLMProtocol, model: string, streaming: boolean): string {\n const suffix = protocol === 'responses' ? '/responses' : protocol === 'chat_completions' ? '/chat/completions' : protocol === 'anthropic_messages' ? '/messages' : `/models/${encodeURIComponent(model)}:${streaming ? 'streamGenerateContent' : 'generateContent'}`;\n return path.replace(/\\/(?:responses|chat\\/completions|messages|models\\/[^/]+:(?:streamGenerateContent|generateContent))$/, suffix);\n}\nexport default definePlugin(class implements Plugin {\n static readonly name = 'llm-protocol-adapter';\n static readonly version = '1.0.0';\n static readonly configSchema = manifest.configSchema as unknown as PluginConfigField[];\n private service!: ConversionService;\n private applied = false;\n private active = new Map<string, {\n handler: Plugin;\n session: AdapterSession;\n }>();\n constructor(private options?: {\n sourceProtocol: LLMProtocol;\n targetProtocol: LLMProtocol;\n }) { }\n async init(context: PluginInitContext) {\n const catalog = context.services!.consume<ModelsDevCapabilitiesService>('models-dev', MODELS_DEV_CAPABILITIES_SERVICE_ID, MODELS_DEV_CAPABILITIES_CONTRACT_VERSION);\n this.service = conversionService(catalog, true, historyClient(context.services!.rpc!.consume(ADAPTER_PLUGIN, historyRpc)), context.services!.runBackground!);\n if (context.scope?.type === 'global')\n context.services!.publish(CONVERSION_SERVICE_ID, CONVERSION_VERSION, this.service);\n this.applied = context.initializationKind !== 'automatic-provider';\n if (this.applied && !this.service.describe().matrix.some(p => p.sourceProtocol === this.options?.sourceProtocol && p.targetProtocol === this.options?.targetProtocol && p.mode !== 'unsupported'))\n throw new Error('llm_adapter_invalid_protocol_pair');\n context.services!.onDispose(() => { this.service.dispose(); for (const value of this.active.values())\n value.session.dispose(); this.active.clear(); });\n }\n bodyRequirements(ctx: {\n method: string;\n url: URL;\n }) {\n return this.applied && ctx.method === 'POST' && protocolForPath(ctx.url.pathname) !== null ? { request: 'json-write' as const, ...(this.options?.sourceProtocol !== this.options?.targetProtocol ? { response: ['json' as const, 'sse-json' as const] } : {}) } : { request: 'none' as const };\n }\n register(hooks: PluginHooks) {\n if (!this.applied)\n return;\n hooks.onBeforeRequest.tap('llm-adapter.request', ctx => {\n if (ctx.method !== 'POST')\n return ctx;\n const source = protocolForPath(ctx.url.pathname);\n if (source === null) {\n if (/\\/(?:models|messages\\/count_tokens)$/.test(ctx.url.pathname))\n throw new DataAdmissionError(422, 'llm_adapter_unsupported_endpoint');\n return ctx;\n }\n if (source !== this.options!.sourceProtocol)\n throw new DataAdmissionError(422, 'llm_adapter_source_protocol_mismatch');\n if (this.active.has(ctx.requestId)) {\n // Endpoint hooks run again on ordinary attempts; keep the generation snapshot.\n if (source === this.options!.targetProtocol) return ctx;\n throw new DataAdmissionError(422, 'llm_adapter_duplicate_conversion');\n }\n let session: AdapterSession | undefined;\n let model: string;\n try {\n model = protocolRequestModel(source, ctx.body, ctx.url);\n session = this.service.createSession({ sourceProtocol: source, targetProtocol: this.options!.targetProtocol, model,\n modelIdentity: readModelIdentity(ctx.annotations),\n ...(source === 'gemini_generate_content' ? { streaming: ctx.url.pathname.endsWith(':streamGenerateContent') } : {}) });\n const result = session.convertRequest(ctx.body);\n if (source !== this.options!.targetProtocol) {\n if (result.diagnostics.length)\n logger.info({ requestId: ctx.requestId, diagnostics: structuredClone(result.diagnostics) }, 'llm_adapter_request_diagnostics');\n ctx.body = structuredClone(result.body);\n ctx.url.pathname = targetPath(ctx.url.pathname, this.options!.targetProtocol, model, result.streaming);\n if (this.options!.targetProtocol === 'gemini_generate_content' && result.streaming) ctx.url.searchParams.set('alt', 'sse');\n }\n } catch (error) {\n session?.dispose();\n adapterError(error);\n }\n const handler = responseHandler({ session, sourceProtocol: source, targetProtocol: this.options!.targetProtocol, model,\n validationOnly: source === this.options!.targetProtocol });\n this.active.set(ctx.requestId, { handler, session });\n return ctx;\n });\n // Register stable forwarding hooks once, per-request handlers contain no private readers.\n for (const name of ['onResponse', 'onStreamChunk', 'onFlushStream', 'onValidateOutbound', 'onError'] as const) {\n const target = hooks[name] as any;\n target.tapPromise(`llm-adapter.${name}`, async (...args: any[]) => {\n const ctx = name === 'onValidateOutbound' || name === 'onError' ? args[0] : args[1], value = this.active.get(ctx.requestId);\n if (!value)\n return name === 'onResponse' || name === 'onFlushStream' ? args[0] : undefined;\n // A new facade contains hooks only, it never invokes another plugin's lifecycle.\n const local = createPluginHooks();\n value.handler.register(local);\n return (local[name] as any).promise(...args);\n });\n }\n hooks.onFinally.tap('llm-adapter.dispose', ctx => { this.active.get(ctx.requestId)?.session.dispose(); this.active.delete(ctx.requestId); });\n }\n});\n"
52
52
  ],
53
53
  "mappings": "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",
54
- "debugId": "40CBB2F3F4855EA864756E2164756E21",
54
+ "debugId": "23A30C2E2CEA331E64756E2164756E21",
55
55
  "names": []
56
56
  }