threadforge 0.1.1 → 0.2.1

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 (358) hide show
  1. package/README.md +52 -20
  2. package/bin/forge.js +2 -1058
  3. package/bin/host-commands.d.ts +2 -0
  4. package/bin/host-commands.d.ts.map +1 -0
  5. package/bin/host-commands.js +7 -8
  6. package/bin/platform-commands.d.ts +2 -0
  7. package/bin/platform-commands.d.ts.map +1 -0
  8. package/bin/platform-commands.js +118 -36
  9. package/dist/cli/base-command.d.ts +12 -0
  10. package/dist/cli/base-command.d.ts.map +1 -0
  11. package/dist/cli/base-command.js +25 -0
  12. package/dist/cli/base-command.js.map +1 -0
  13. package/dist/cli/commands/build.d.ts +10 -0
  14. package/dist/cli/commands/build.d.ts.map +1 -0
  15. package/dist/cli/commands/build.js +110 -0
  16. package/dist/cli/commands/build.js.map +1 -0
  17. package/dist/cli/commands/deploy.d.ts +12 -0
  18. package/dist/cli/commands/deploy.d.ts.map +1 -0
  19. package/dist/cli/commands/deploy.js +143 -0
  20. package/dist/cli/commands/deploy.js.map +1 -0
  21. package/dist/cli/commands/dev.d.ts +10 -0
  22. package/dist/cli/commands/dev.d.ts.map +1 -0
  23. package/dist/cli/commands/dev.js +138 -0
  24. package/dist/cli/commands/dev.js.map +1 -0
  25. package/dist/cli/commands/generate.d.ts +10 -0
  26. package/dist/cli/commands/generate.d.ts.map +1 -0
  27. package/dist/cli/commands/generate.js +76 -0
  28. package/dist/cli/commands/generate.js.map +1 -0
  29. package/dist/cli/commands/host.d.ts +8 -0
  30. package/dist/cli/commands/host.d.ts.map +1 -0
  31. package/dist/cli/commands/host.js +20 -0
  32. package/dist/cli/commands/host.js.map +1 -0
  33. package/dist/cli/commands/init.d.ts +16 -0
  34. package/dist/cli/commands/init.d.ts.map +1 -0
  35. package/dist/cli/commands/init.js +246 -0
  36. package/dist/cli/commands/init.js.map +1 -0
  37. package/dist/cli/commands/platform.d.ts +8 -0
  38. package/dist/cli/commands/platform.d.ts.map +1 -0
  39. package/dist/cli/commands/platform.js +20 -0
  40. package/dist/cli/commands/platform.js.map +1 -0
  41. package/dist/cli/commands/restart.d.ts +8 -0
  42. package/dist/cli/commands/restart.d.ts.map +1 -0
  43. package/dist/cli/commands/restart.js +13 -0
  44. package/dist/cli/commands/restart.js.map +1 -0
  45. package/dist/cli/commands/scaffold/frontend.d.ts +10 -0
  46. package/dist/cli/commands/scaffold/frontend.d.ts.map +1 -0
  47. package/dist/cli/commands/scaffold/frontend.js +130 -0
  48. package/dist/cli/commands/scaffold/frontend.js.map +1 -0
  49. package/dist/cli/commands/scaffold/react.d.ts +7 -0
  50. package/dist/cli/commands/scaffold/react.d.ts.map +1 -0
  51. package/dist/cli/commands/scaffold/react.js +12 -0
  52. package/dist/cli/commands/scaffold/react.js.map +1 -0
  53. package/dist/cli/commands/scale.d.ts +8 -0
  54. package/dist/cli/commands/scale.d.ts.map +1 -0
  55. package/dist/cli/commands/scale.js +13 -0
  56. package/dist/cli/commands/scale.js.map +1 -0
  57. package/dist/cli/commands/start.d.ts +10 -0
  58. package/dist/cli/commands/start.d.ts.map +1 -0
  59. package/dist/cli/commands/start.js +71 -0
  60. package/dist/cli/commands/start.js.map +1 -0
  61. package/dist/cli/commands/status.d.ts +11 -0
  62. package/dist/cli/commands/status.d.ts.map +1 -0
  63. package/dist/cli/commands/status.js +60 -0
  64. package/dist/cli/commands/status.js.map +1 -0
  65. package/dist/cli/commands/stop.d.ts +10 -0
  66. package/dist/cli/commands/stop.d.ts.map +1 -0
  67. package/dist/cli/commands/stop.js +89 -0
  68. package/dist/cli/commands/stop.js.map +1 -0
  69. package/dist/cli/util/config-discovery.d.ts +8 -0
  70. package/dist/cli/util/config-discovery.d.ts.map +1 -0
  71. package/dist/cli/util/config-discovery.js +70 -0
  72. package/dist/cli/util/config-discovery.js.map +1 -0
  73. package/dist/cli/util/config-patcher.d.ts +17 -0
  74. package/dist/cli/util/config-patcher.d.ts.map +1 -0
  75. package/dist/cli/util/config-patcher.js +439 -0
  76. package/dist/cli/util/config-patcher.js.map +1 -0
  77. package/dist/cli/util/frontend-dev.d.ts +8 -0
  78. package/dist/cli/util/frontend-dev.d.ts.map +1 -0
  79. package/dist/cli/util/frontend-dev.js +117 -0
  80. package/dist/cli/util/frontend-dev.js.map +1 -0
  81. package/dist/cli/util/process.d.ts +5 -0
  82. package/dist/cli/util/process.d.ts.map +1 -0
  83. package/dist/cli/util/process.js +17 -0
  84. package/dist/cli/util/process.js.map +1 -0
  85. package/dist/cli/util/templates.d.ts +10 -0
  86. package/dist/cli/util/templates.d.ts.map +1 -0
  87. package/dist/cli/util/templates.js +157 -0
  88. package/dist/cli/util/templates.js.map +1 -0
  89. package/dist/core/AlertSink.d.ts +83 -0
  90. package/dist/core/AlertSink.d.ts.map +1 -0
  91. package/dist/core/AlertSink.js +126 -0
  92. package/dist/core/AlertSink.js.map +1 -0
  93. package/dist/core/DirectMessageBus.d.ts +88 -0
  94. package/dist/core/DirectMessageBus.d.ts.map +1 -0
  95. package/dist/core/DirectMessageBus.js +352 -0
  96. package/dist/core/DirectMessageBus.js.map +1 -0
  97. package/dist/core/EndpointResolver.d.ts +111 -0
  98. package/dist/core/EndpointResolver.d.ts.map +1 -0
  99. package/dist/core/EndpointResolver.js +336 -0
  100. package/dist/core/EndpointResolver.js.map +1 -0
  101. package/dist/core/ForgeContext.d.ts +221 -0
  102. package/dist/core/ForgeContext.d.ts.map +1 -0
  103. package/dist/core/ForgeContext.js +1169 -0
  104. package/dist/core/ForgeContext.js.map +1 -0
  105. package/dist/core/ForgeEndpoints.d.ts +71 -0
  106. package/dist/core/ForgeEndpoints.d.ts.map +1 -0
  107. package/dist/core/ForgeEndpoints.js +442 -0
  108. package/dist/core/ForgeEndpoints.js.map +1 -0
  109. package/dist/core/ForgeHost.d.ts +82 -0
  110. package/dist/core/ForgeHost.d.ts.map +1 -0
  111. package/dist/core/ForgeHost.js +107 -0
  112. package/dist/core/ForgeHost.js.map +1 -0
  113. package/dist/core/ForgePlatform.d.ts +96 -0
  114. package/dist/core/ForgePlatform.d.ts.map +1 -0
  115. package/dist/core/ForgePlatform.js +136 -0
  116. package/dist/core/ForgePlatform.js.map +1 -0
  117. package/dist/core/ForgeWebSocket.d.ts +56 -0
  118. package/dist/core/ForgeWebSocket.d.ts.map +1 -0
  119. package/dist/core/ForgeWebSocket.js +415 -0
  120. package/dist/core/ForgeWebSocket.js.map +1 -0
  121. package/dist/core/Ingress.d.ts +329 -0
  122. package/dist/core/Ingress.d.ts.map +1 -0
  123. package/dist/core/Ingress.js +694 -0
  124. package/dist/core/Ingress.js.map +1 -0
  125. package/dist/core/Interceptors.d.ts +134 -0
  126. package/dist/core/Interceptors.d.ts.map +1 -0
  127. package/dist/core/Interceptors.js +416 -0
  128. package/dist/core/Interceptors.js.map +1 -0
  129. package/dist/core/Logger.d.ts +20 -0
  130. package/dist/core/Logger.d.ts.map +1 -0
  131. package/dist/core/Logger.js +77 -0
  132. package/dist/core/Logger.js.map +1 -0
  133. package/dist/core/MessageBus.d.ts +15 -0
  134. package/dist/core/MessageBus.d.ts.map +1 -0
  135. package/dist/core/MessageBus.js +18 -0
  136. package/dist/core/MessageBus.js.map +1 -0
  137. package/dist/core/Prometheus.d.ts +80 -0
  138. package/dist/core/Prometheus.d.ts.map +1 -0
  139. package/dist/core/Prometheus.js +332 -0
  140. package/dist/core/Prometheus.js.map +1 -0
  141. package/dist/core/RequestContext.d.ts +214 -0
  142. package/dist/core/RequestContext.d.ts.map +1 -0
  143. package/dist/core/RequestContext.js +556 -0
  144. package/dist/core/RequestContext.js.map +1 -0
  145. package/dist/core/Router.d.ts +45 -0
  146. package/dist/core/Router.d.ts.map +1 -0
  147. package/dist/core/Router.js +285 -0
  148. package/dist/core/Router.js.map +1 -0
  149. package/dist/core/RoutingStrategy.d.ts +116 -0
  150. package/dist/core/RoutingStrategy.d.ts.map +1 -0
  151. package/dist/core/RoutingStrategy.js +306 -0
  152. package/dist/core/RoutingStrategy.js.map +1 -0
  153. package/dist/core/RpcConfig.d.ts +72 -0
  154. package/dist/core/RpcConfig.d.ts.map +1 -0
  155. package/dist/core/RpcConfig.js +127 -0
  156. package/dist/core/RpcConfig.js.map +1 -0
  157. package/dist/core/SignatureCache.d.ts +81 -0
  158. package/dist/core/SignatureCache.d.ts.map +1 -0
  159. package/dist/core/SignatureCache.js +172 -0
  160. package/dist/core/SignatureCache.js.map +1 -0
  161. package/dist/core/StaticFileServer.d.ts +34 -0
  162. package/dist/core/StaticFileServer.d.ts.map +1 -0
  163. package/dist/core/StaticFileServer.js +497 -0
  164. package/dist/core/StaticFileServer.js.map +1 -0
  165. package/dist/core/Supervisor.d.ts +198 -0
  166. package/dist/core/Supervisor.d.ts.map +1 -0
  167. package/dist/core/Supervisor.js +1418 -0
  168. package/dist/core/Supervisor.js.map +1 -0
  169. package/dist/core/ThreadAllocator.d.ts +52 -0
  170. package/dist/core/ThreadAllocator.d.ts.map +1 -0
  171. package/dist/core/ThreadAllocator.js +174 -0
  172. package/dist/core/ThreadAllocator.js.map +1 -0
  173. package/dist/core/WorkerChannelManager.d.ts +130 -0
  174. package/dist/core/WorkerChannelManager.d.ts.map +1 -0
  175. package/dist/core/WorkerChannelManager.js +956 -0
  176. package/dist/core/WorkerChannelManager.js.map +1 -0
  177. package/dist/core/config-enums.d.ts +41 -0
  178. package/dist/core/config-enums.d.ts.map +1 -0
  179. package/dist/core/config-enums.js +59 -0
  180. package/dist/core/config-enums.js.map +1 -0
  181. package/dist/core/config.d.ts +159 -0
  182. package/dist/core/config.d.ts.map +1 -0
  183. package/dist/core/config.js +694 -0
  184. package/dist/core/config.js.map +1 -0
  185. package/dist/core/host-config.d.ts +146 -0
  186. package/dist/core/host-config.d.ts.map +1 -0
  187. package/dist/core/host-config.js +312 -0
  188. package/dist/core/host-config.js.map +1 -0
  189. package/dist/core/ipc-errors.d.ts +27 -0
  190. package/dist/core/ipc-errors.d.ts.map +1 -0
  191. package/dist/core/ipc-errors.js +36 -0
  192. package/dist/core/ipc-errors.js.map +1 -0
  193. package/dist/core/network-utils.d.ts +35 -0
  194. package/dist/core/network-utils.d.ts.map +1 -0
  195. package/dist/core/network-utils.js +145 -0
  196. package/dist/core/network-utils.js.map +1 -0
  197. package/dist/core/platform-config.d.ts +142 -0
  198. package/dist/core/platform-config.d.ts.map +1 -0
  199. package/dist/core/platform-config.js +299 -0
  200. package/dist/core/platform-config.js.map +1 -0
  201. package/dist/decorators/ServiceProxy.d.ts +175 -0
  202. package/dist/decorators/ServiceProxy.d.ts.map +1 -0
  203. package/dist/decorators/ServiceProxy.js +969 -0
  204. package/dist/decorators/ServiceProxy.js.map +1 -0
  205. package/dist/decorators/index.d.ts +146 -0
  206. package/dist/decorators/index.d.ts.map +1 -0
  207. package/dist/decorators/index.js +545 -0
  208. package/dist/decorators/index.js.map +1 -0
  209. package/dist/deploy/NginxGenerator.d.ts +165 -0
  210. package/dist/deploy/NginxGenerator.d.ts.map +1 -0
  211. package/dist/deploy/NginxGenerator.js +781 -0
  212. package/dist/deploy/NginxGenerator.js.map +1 -0
  213. package/dist/deploy/PlatformManifestGenerator.d.ts +43 -0
  214. package/dist/deploy/PlatformManifestGenerator.d.ts.map +1 -0
  215. package/dist/deploy/PlatformManifestGenerator.js +80 -0
  216. package/dist/deploy/PlatformManifestGenerator.js.map +1 -0
  217. package/dist/deploy/RouteManifestGenerator.d.ts +42 -0
  218. package/dist/deploy/RouteManifestGenerator.d.ts.map +1 -0
  219. package/dist/deploy/RouteManifestGenerator.js +105 -0
  220. package/dist/deploy/RouteManifestGenerator.js.map +1 -0
  221. package/dist/deploy/index.d.ts +210 -0
  222. package/dist/deploy/index.d.ts.map +1 -0
  223. package/dist/deploy/index.js +918 -0
  224. package/dist/deploy/index.js.map +1 -0
  225. package/dist/frontend/FrontendDevLifecycle.d.ts +26 -0
  226. package/dist/frontend/FrontendDevLifecycle.d.ts.map +1 -0
  227. package/dist/frontend/FrontendDevLifecycle.js +60 -0
  228. package/dist/frontend/FrontendDevLifecycle.js.map +1 -0
  229. package/dist/frontend/FrontendPluginOrchestrator.d.ts +64 -0
  230. package/dist/frontend/FrontendPluginOrchestrator.d.ts.map +1 -0
  231. package/dist/frontend/FrontendPluginOrchestrator.js +167 -0
  232. package/dist/frontend/FrontendPluginOrchestrator.js.map +1 -0
  233. package/dist/frontend/SiteResolver.d.ts +33 -0
  234. package/dist/frontend/SiteResolver.d.ts.map +1 -0
  235. package/dist/frontend/SiteResolver.js +53 -0
  236. package/dist/frontend/SiteResolver.js.map +1 -0
  237. package/dist/frontend/StaticMountRegistry.d.ts +36 -0
  238. package/dist/frontend/StaticMountRegistry.d.ts.map +1 -0
  239. package/dist/frontend/StaticMountRegistry.js +94 -0
  240. package/dist/frontend/StaticMountRegistry.js.map +1 -0
  241. package/dist/frontend/index.d.ts +7 -0
  242. package/dist/frontend/index.d.ts.map +1 -0
  243. package/{src → dist}/frontend/index.js +4 -2
  244. package/dist/frontend/index.js.map +1 -0
  245. package/dist/frontend/pathUtils.d.ts +8 -0
  246. package/dist/frontend/pathUtils.d.ts.map +1 -0
  247. package/dist/frontend/pathUtils.js +17 -0
  248. package/dist/frontend/pathUtils.js.map +1 -0
  249. package/dist/frontend/plugins/index.d.ts +2 -0
  250. package/dist/frontend/plugins/index.d.ts.map +1 -0
  251. package/{src → dist}/frontend/plugins/index.js +1 -1
  252. package/dist/frontend/plugins/index.js.map +1 -0
  253. package/dist/frontend/plugins/viteFrontend.d.ts +51 -0
  254. package/dist/frontend/plugins/viteFrontend.d.ts.map +1 -0
  255. package/dist/frontend/plugins/viteFrontend.js +134 -0
  256. package/dist/frontend/plugins/viteFrontend.js.map +1 -0
  257. package/dist/frontend/types.d.ts +25 -0
  258. package/dist/frontend/types.d.ts.map +1 -0
  259. package/dist/frontend/types.js +2 -0
  260. package/dist/frontend/types.js.map +1 -0
  261. package/dist/index.d.ts +17 -0
  262. package/dist/index.d.ts.map +1 -0
  263. package/dist/index.js +32 -0
  264. package/dist/index.js.map +1 -0
  265. package/dist/internals.d.ts +21 -0
  266. package/dist/internals.d.ts.map +1 -0
  267. package/{src → dist}/internals.js +12 -14
  268. package/dist/internals.js.map +1 -0
  269. package/dist/plugins/PluginManager.d.ts +209 -0
  270. package/dist/plugins/PluginManager.d.ts.map +1 -0
  271. package/dist/plugins/PluginManager.js +365 -0
  272. package/dist/plugins/PluginManager.js.map +1 -0
  273. package/dist/plugins/ScopedPostgres.d.ts +78 -0
  274. package/dist/plugins/ScopedPostgres.d.ts.map +1 -0
  275. package/dist/plugins/ScopedPostgres.js +190 -0
  276. package/dist/plugins/ScopedPostgres.js.map +1 -0
  277. package/dist/plugins/ScopedRedis.d.ts +88 -0
  278. package/dist/plugins/ScopedRedis.d.ts.map +1 -0
  279. package/dist/plugins/ScopedRedis.js +169 -0
  280. package/dist/plugins/ScopedRedis.js.map +1 -0
  281. package/dist/plugins/index.d.ts +289 -0
  282. package/dist/plugins/index.d.ts.map +1 -0
  283. package/dist/plugins/index.js +1942 -0
  284. package/dist/plugins/index.js.map +1 -0
  285. package/dist/plugins/types.d.ts +59 -0
  286. package/dist/plugins/types.d.ts.map +1 -0
  287. package/dist/plugins/types.js +2 -0
  288. package/dist/plugins/types.js.map +1 -0
  289. package/dist/registry/ServiceRegistry.d.ts +305 -0
  290. package/dist/registry/ServiceRegistry.d.ts.map +1 -0
  291. package/dist/registry/ServiceRegistry.js +735 -0
  292. package/dist/registry/ServiceRegistry.js.map +1 -0
  293. package/dist/scaling/ScaleAdvisor.d.ts +214 -0
  294. package/dist/scaling/ScaleAdvisor.d.ts.map +1 -0
  295. package/dist/scaling/ScaleAdvisor.js +526 -0
  296. package/dist/scaling/ScaleAdvisor.js.map +1 -0
  297. package/dist/services/Service.d.ts +164 -0
  298. package/dist/services/Service.d.ts.map +1 -0
  299. package/dist/services/Service.js +106 -0
  300. package/dist/services/Service.js.map +1 -0
  301. package/dist/services/worker-bootstrap.d.ts +15 -0
  302. package/dist/services/worker-bootstrap.d.ts.map +1 -0
  303. package/dist/services/worker-bootstrap.js +744 -0
  304. package/dist/services/worker-bootstrap.js.map +1 -0
  305. package/dist/templates/auth-service.d.ts +42 -0
  306. package/dist/templates/auth-service.d.ts.map +1 -0
  307. package/dist/templates/auth-service.js +54 -0
  308. package/dist/templates/auth-service.js.map +1 -0
  309. package/dist/templates/identity-service.d.ts +50 -0
  310. package/dist/templates/identity-service.d.ts.map +1 -0
  311. package/dist/templates/identity-service.js +62 -0
  312. package/dist/templates/identity-service.js.map +1 -0
  313. package/dist/types/contract.d.ts +120 -0
  314. package/dist/types/contract.d.ts.map +1 -0
  315. package/dist/types/contract.js +69 -0
  316. package/dist/types/contract.js.map +1 -0
  317. package/package.json +78 -20
  318. package/src/core/DirectMessageBus.js +0 -364
  319. package/src/core/EndpointResolver.js +0 -259
  320. package/src/core/ForgeContext.js +0 -2236
  321. package/src/core/ForgeHost.js +0 -122
  322. package/src/core/ForgePlatform.js +0 -145
  323. package/src/core/Ingress.js +0 -768
  324. package/src/core/Interceptors.js +0 -420
  325. package/src/core/MessageBus.js +0 -321
  326. package/src/core/Prometheus.js +0 -305
  327. package/src/core/RequestContext.js +0 -413
  328. package/src/core/RoutingStrategy.js +0 -330
  329. package/src/core/Supervisor.js +0 -1349
  330. package/src/core/ThreadAllocator.js +0 -196
  331. package/src/core/WorkerChannelManager.js +0 -879
  332. package/src/core/config.js +0 -637
  333. package/src/core/host-config.js +0 -311
  334. package/src/core/network-utils.js +0 -166
  335. package/src/core/platform-config.js +0 -308
  336. package/src/decorators/ServiceProxy.js +0 -904
  337. package/src/decorators/index.js +0 -571
  338. package/src/deploy/NginxGenerator.js +0 -865
  339. package/src/deploy/PlatformManifestGenerator.js +0 -96
  340. package/src/deploy/RouteManifestGenerator.js +0 -112
  341. package/src/deploy/index.js +0 -984
  342. package/src/frontend/FrontendDevLifecycle.js +0 -65
  343. package/src/frontend/FrontendPluginOrchestrator.js +0 -187
  344. package/src/frontend/SiteResolver.js +0 -63
  345. package/src/frontend/StaticMountRegistry.js +0 -90
  346. package/src/frontend/plugins/viteFrontend.js +0 -79
  347. package/src/frontend/types.js +0 -35
  348. package/src/index.js +0 -58
  349. package/src/plugins/PluginManager.js +0 -537
  350. package/src/plugins/ScopedPostgres.js +0 -192
  351. package/src/plugins/ScopedRedis.js +0 -142
  352. package/src/plugins/index.js +0 -1756
  353. package/src/registry/ServiceRegistry.js +0 -797
  354. package/src/scaling/ScaleAdvisor.js +0 -442
  355. package/src/services/Service.js +0 -195
  356. package/src/services/worker-bootstrap.js +0 -679
  357. package/src/templates/auth-service.js +0 -65
  358. package/src/templates/identity-service.js +0 -75
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Ingress.js","sourceRoot":"","sources":["../../src/core/Ingress.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,134 @@
1
+ export interface CallContext {
2
+ from: string;
3
+ target: string;
4
+ method: string;
5
+ args: unknown[];
6
+ deadline: number;
7
+ metadata: Record<string, unknown>;
8
+ attempt: number;
9
+ timeout?: number;
10
+ isColocated?: boolean;
11
+ }
12
+ type NextFunction = () => Promise<unknown>;
13
+ type InterceptorFunction = (callCtx: CallContext, next: NextFunction) => Promise<unknown>;
14
+ type FinalHandler = (callCtx: CallContext) => Promise<unknown>;
15
+ interface Logger {
16
+ debug(message: string, data: Record<string, unknown>): void;
17
+ warn(message: string, data: Record<string, unknown>): void;
18
+ }
19
+ interface Metrics {
20
+ rpcCall?: (durationSecs: number, labels: Record<string, string>) => void;
21
+ counter?: (name: string, value: number, labels: Record<string, string>) => void;
22
+ histogram?: (name: string, value: number, labels: Record<string, string>) => void;
23
+ }
24
+ /**
25
+ * Run a call through an interceptor chain.
26
+ *
27
+ * Interceptors MAY call next() multiple times (e.g., the retry interceptor
28
+ * invokes next() on each attempt). Downstream interceptors and the final
29
+ * handler should therefore be idempotent-safe.
30
+ */
31
+ export declare function runInterceptorChain(interceptors: InterceptorFunction[], callCtx: CallContext, finalHandler: FinalHandler): Promise<unknown>;
32
+ /**
33
+ * Propagates deadlines across service boundaries.
34
+ *
35
+ * If gateway sets a 5s timeout, and the users service call takes
36
+ * 2s, the billing service call from users only gets 3s — not a
37
+ * fresh 5s.
38
+ *
39
+ * This prevents cascading timeouts where each service adds its
40
+ * own full timeout on top.
41
+ */
42
+ export declare function deadlineInterceptor(defaultTimeoutMs?: number): InterceptorFunction;
43
+ /**
44
+ * Logs every RPC call with duration and outcome.
45
+ * Integrates with the service's structured logger.
46
+ */
47
+ export declare function loggingInterceptor(logger: Logger | null): InterceptorFunction;
48
+ /**
49
+ * Implements the circuit breaker pattern.
50
+ *
51
+ * States:
52
+ * CLOSED → Normal operation. Tracks failure rate.
53
+ * OPEN → Calls fail immediately. Checked periodically.
54
+ * HALF → Allows one probe call. Success → CLOSED, failure → OPEN.
55
+ *
56
+ * Prevents a failing service from consuming resources on the
57
+ * calling side. Without this, a slow/dead service causes thread
58
+ * starvation as pending requests pile up.
59
+ */
60
+ interface CircuitBreakerOptions {
61
+ failureThreshold?: number;
62
+ /** Percentage-based failure rate threshold (0-100). When set, the breaker
63
+ * opens if the failure rate within the sliding window exceeds this value
64
+ * AND the minimum sample count is met. Takes precedence over failureThreshold. */
65
+ failureRateThreshold?: number;
66
+ /** Minimum number of calls in the window before failure rate is evaluated.
67
+ * Prevents the breaker from opening on a single failure out of 2 calls. */
68
+ minimumCallCount?: number;
69
+ resetTimeoutMs?: number;
70
+ successThreshold?: number;
71
+ windowMs?: number;
72
+ /** Number of concurrent probe requests allowed in half-open state.
73
+ * Allows multiple requests to test the downstream service before deciding
74
+ * whether to close or re-open. Default: 1 (legacy behavior). */
75
+ halfOpenMaxProbes?: number;
76
+ }
77
+ interface CircuitBreakerStats {
78
+ state: "closed" | "open" | "half-open";
79
+ failureCount: number;
80
+ successCount: number;
81
+ totalCalls: number;
82
+ failureRate: number;
83
+ nextAttemptTime: string | null;
84
+ }
85
+ export declare class CircuitBreaker {
86
+ failureThreshold: number;
87
+ failureRateThreshold: number;
88
+ minimumCallCount: number;
89
+ resetTimeoutMs: number;
90
+ successThreshold: number;
91
+ halfOpenMaxProbes: number;
92
+ private _windowMs;
93
+ state: "closed" | "open" | "half-open";
94
+ failureCount: number;
95
+ successCount: number;
96
+ lastFailureTime: number;
97
+ nextAttemptTime: number;
98
+ private _failureWindow;
99
+ private _successWindow;
100
+ private _probeInFlight;
101
+ constructor(options?: CircuitBreakerOptions);
102
+ /** Prune expired entries from sliding windows and return current counts */
103
+ private _pruneWindows;
104
+ /** Check if the breaker should open based on current window state */
105
+ private _shouldOpen;
106
+ createInterceptor(): InterceptorFunction;
107
+ get stats(): CircuitBreakerStats;
108
+ }
109
+ /**
110
+ * Determine if an error is retryable given an idempotency setting.
111
+ */
112
+ export declare function isRetryable(err: Error, idempotent: boolean | undefined): boolean;
113
+ interface RetryOptions {
114
+ maxAttempts?: number;
115
+ baseDelayMs?: number;
116
+ maxDelayMs?: number;
117
+ idempotent?: boolean;
118
+ serviceName?: string;
119
+ }
120
+ export declare function retryInterceptor(options?: RetryOptions): InterceptorFunction;
121
+ /**
122
+ * Tracks RPC metrics (call count, latency histogram, error rate).
123
+ */
124
+ export declare function metricsInterceptor(metrics: Metrics | null): InterceptorFunction;
125
+ interface BulkheadOptions {
126
+ maxConcurrent?: number;
127
+ }
128
+ /**
129
+ * Limits concurrent outgoing calls per service to prevent
130
+ * cascade failures. Uses a simple counter — no external deps.
131
+ */
132
+ export declare function bulkheadInterceptor(options?: BulkheadOptions): InterceptorFunction;
133
+ export {};
134
+ //# sourceMappingURL=Interceptors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Interceptors.d.ts","sourceRoot":"","sources":["../../src/core/Interceptors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,416 @@
1
+ import { normalizeErrorCode } from "./Prometheus.js";
2
+ /**
3
+ * Run a call through an interceptor chain.
4
+ *
5
+ * Interceptors MAY call next() multiple times (e.g., the retry interceptor
6
+ * invokes next() on each attempt). Downstream interceptors and the final
7
+ * handler should therefore be idempotent-safe.
8
+ */
9
+ export async function runInterceptorChain(interceptors, callCtx, finalHandler) {
10
+ let index = 0;
11
+ async function next() {
12
+ if (index >= interceptors.length) {
13
+ return finalHandler(callCtx);
14
+ }
15
+ const interceptor = interceptors[index++];
16
+ return interceptor(callCtx, next);
17
+ }
18
+ return next();
19
+ }
20
+ // ─── Deadline Propagation ───────────────────────────────────
21
+ /**
22
+ * Propagates deadlines across service boundaries.
23
+ *
24
+ * If gateway sets a 5s timeout, and the users service call takes
25
+ * 2s, the billing service call from users only gets 3s — not a
26
+ * fresh 5s.
27
+ *
28
+ * This prevents cascading timeouts where each service adds its
29
+ * own full timeout on top.
30
+ */
31
+ export function deadlineInterceptor(defaultTimeoutMs = 5000) {
32
+ return async function deadline(callCtx, next) {
33
+ // If no deadline set yet, create one
34
+ if (!callCtx.deadline) {
35
+ callCtx.deadline = Date.now() + defaultTimeoutMs;
36
+ }
37
+ // Check if we've already exceeded the deadline
38
+ const remaining = callCtx.deadline - Date.now();
39
+ if (remaining <= 0) {
40
+ const err = new Error(`Deadline exceeded before calling ${callCtx.target}.${callCtx.method}` + ` (from ${callCtx.from})`);
41
+ err.code = "DEADLINE_EXCEEDED";
42
+ throw err;
43
+ }
44
+ // Pass the remaining time as the timeout for the actual call
45
+ callCtx.timeout = remaining;
46
+ // Add deadline to metadata so the receiving service knows
47
+ callCtx.metadata.deadline = callCtx.deadline;
48
+ return next();
49
+ };
50
+ }
51
+ // ─── Logging ────────────────────────────────────────────────
52
+ /**
53
+ * Logs every RPC call with duration and outcome.
54
+ * Integrates with the service's structured logger.
55
+ */
56
+ export function loggingInterceptor(logger) {
57
+ return async function logging(callCtx, next) {
58
+ const start = performance.now();
59
+ try {
60
+ const result = await next();
61
+ const duration = performance.now() - start;
62
+ if (logger) {
63
+ logger.debug("RPC call", {
64
+ target: callCtx.target,
65
+ method: callCtx.method,
66
+ duration: `${duration.toFixed(2)}ms`,
67
+ attempt: callCtx.attempt,
68
+ });
69
+ }
70
+ return result;
71
+ }
72
+ catch (err) {
73
+ const duration = performance.now() - start;
74
+ if (logger) {
75
+ logger.warn("RPC call failed", {
76
+ target: callCtx.target,
77
+ method: callCtx.method,
78
+ duration: `${duration.toFixed(2)}ms`,
79
+ error: err.message,
80
+ attempt: callCtx.attempt,
81
+ });
82
+ }
83
+ throw err;
84
+ }
85
+ };
86
+ }
87
+ export class CircuitBreaker {
88
+ failureThreshold;
89
+ failureRateThreshold;
90
+ minimumCallCount;
91
+ resetTimeoutMs;
92
+ successThreshold;
93
+ halfOpenMaxProbes;
94
+ _windowMs;
95
+ state;
96
+ failureCount;
97
+ successCount;
98
+ lastFailureTime;
99
+ nextAttemptTime;
100
+ _failureWindow;
101
+ _successWindow;
102
+ _probeInFlight;
103
+ constructor(options = {}) {
104
+ this.failureThreshold = options.failureThreshold ?? 15;
105
+ this.failureRateThreshold = options.failureRateThreshold ?? 0;
106
+ this.minimumCallCount = options.minimumCallCount ?? 10;
107
+ this.resetTimeoutMs = options.resetTimeoutMs ?? 10000;
108
+ this.successThreshold = options.successThreshold ?? 2;
109
+ this.halfOpenMaxProbes = options.halfOpenMaxProbes ?? 1;
110
+ /** H-IPC-1: Sliding window duration for failure counting (default 60s) */
111
+ this._windowMs = options.windowMs ?? 60_000;
112
+ this.state = "closed";
113
+ this.failureCount = 0;
114
+ this.successCount = 0;
115
+ this.lastFailureTime = 0;
116
+ this.nextAttemptTime = 0;
117
+ /** H-IPC-1: Sliding window of failure timestamps */
118
+ this._failureWindow = [];
119
+ /** Sliding window of success timestamps for failure rate calculation */
120
+ this._successWindow = [];
121
+ this._probeInFlight = 0;
122
+ }
123
+ /** Prune expired entries from sliding windows and return current counts */
124
+ _pruneWindows(now) {
125
+ const cutoff = now - this._windowMs;
126
+ while (this._failureWindow.length > 0 && this._failureWindow[0] < cutoff) {
127
+ this._failureWindow.shift();
128
+ }
129
+ while (this._successWindow.length > 0 && this._successWindow[0] < cutoff) {
130
+ this._successWindow.shift();
131
+ }
132
+ const failures = this._failureWindow.length;
133
+ const successes = this._successWindow.length;
134
+ return { failures, successes, total: failures + successes };
135
+ }
136
+ /** Check if the breaker should open based on current window state */
137
+ _shouldOpen(failures, total) {
138
+ // Percentage-based threshold takes precedence when configured
139
+ if (this.failureRateThreshold > 0) {
140
+ if (total < this.minimumCallCount)
141
+ return false;
142
+ const rate = (failures / total) * 100;
143
+ return rate >= this.failureRateThreshold;
144
+ }
145
+ // Fall back to absolute count threshold
146
+ return failures >= this.failureThreshold;
147
+ }
148
+ createInterceptor() {
149
+ const breaker = this;
150
+ return async function circuitBreaker(callCtx, next) {
151
+ // Fast-path: skip circuit breaker for colocated (in-process) calls —
152
+ // they can't fail due to network issues so tracking failures is meaningless.
153
+ if (callCtx.isColocated)
154
+ return next();
155
+ if (breaker.state === "open") {
156
+ if (Date.now() < breaker.nextAttemptTime) {
157
+ const err = new Error(`Circuit breaker OPEN for ${callCtx.target}.${callCtx.method}` +
158
+ ` — service appears unavailable. Retry after ${new Date(breaker.nextAttemptTime).toISOString()}`);
159
+ err.code = "CIRCUIT_OPEN";
160
+ throw err;
161
+ }
162
+ // Allow up to halfOpenMaxProbes concurrent probe requests in half-open.
163
+ // Safe in single-threaded JS: no await between check and set,
164
+ // so no other microtask can interleave here.
165
+ if (breaker._probeInFlight >= breaker.halfOpenMaxProbes) {
166
+ const err = new Error(`Circuit breaker OPEN for ${callCtx.target}.${callCtx.method}` +
167
+ ` — probe already in flight. Retry after ${new Date(breaker.nextAttemptTime).toISOString()}`);
168
+ err.code = "CIRCUIT_OPEN";
169
+ throw err;
170
+ }
171
+ breaker._probeInFlight++;
172
+ breaker.state = "half-open";
173
+ }
174
+ else if (breaker.state === "half-open") {
175
+ // Concurrent call while already in half-open — check probe limit
176
+ if (breaker._probeInFlight >= breaker.halfOpenMaxProbes) {
177
+ const err = new Error(`Circuit breaker OPEN for ${callCtx.target}.${callCtx.method}` +
178
+ ` — probe already in flight. Retry after ${new Date(breaker.nextAttemptTime).toISOString()}`);
179
+ err.code = "CIRCUIT_OPEN";
180
+ throw err;
181
+ }
182
+ breaker._probeInFlight++;
183
+ }
184
+ try {
185
+ const result = await next();
186
+ // Success
187
+ if (breaker.state === "half-open") {
188
+ breaker.successCount++;
189
+ breaker._probeInFlight = Math.max(0, breaker._probeInFlight - 1);
190
+ if (breaker.successCount >= breaker.successThreshold) {
191
+ // Threshold met — close circuit and reset all state
192
+ breaker.state = "closed";
193
+ breaker.failureCount = 0;
194
+ breaker.successCount = 0;
195
+ breaker._failureWindow.length = 0;
196
+ breaker._successWindow.length = 0;
197
+ breaker._probeInFlight = 0;
198
+ }
199
+ // If threshold not yet met, probeInFlight was decremented above,
200
+ // allowing the next probe request through.
201
+ }
202
+ else {
203
+ // Track successes in closed state for failure rate calculation
204
+ breaker._successWindow.push(Date.now());
205
+ }
206
+ // H-IPC-1: In closed state, don't reset failureCount on success.
207
+ // Use sliding window — old failures expire naturally.
208
+ return result;
209
+ }
210
+ catch (err) {
211
+ // Only count dependency availability failures toward the breaker.
212
+ // Local load-shedding (concurrency/bulkhead) is expected under pressure
213
+ // and must not be interpreted as downstream outage.
214
+ const isTransient = isBreakerTransientFailure(err);
215
+ if (isTransient) {
216
+ // H-IPC-1: Use sliding window for failure counting — prune expired entries
217
+ const now = Date.now();
218
+ breaker._failureWindow.push(now);
219
+ const { failures, total } = breaker._pruneWindows(now);
220
+ breaker.failureCount = failures;
221
+ breaker.lastFailureTime = now;
222
+ if (breaker.state === "half-open") {
223
+ // Decrement probe counter so next probe can be attempted
224
+ breaker._probeInFlight = Math.max(0, breaker._probeInFlight - 1);
225
+ // Transient probe failure — back to open
226
+ breaker.state = "open";
227
+ breaker.nextAttemptTime = Date.now() + breaker.resetTimeoutMs * (0.75 + Math.random() * 0.5);
228
+ breaker.successCount = 0;
229
+ }
230
+ else if (breaker._shouldOpen(failures, total)) {
231
+ breaker.state = "open";
232
+ breaker.nextAttemptTime = Date.now() + breaker.resetTimeoutMs;
233
+ }
234
+ }
235
+ else if (breaker.state === "half-open") {
236
+ // Non-transient errors (4xx) in half-open: decrement probe counter, stay half-open
237
+ breaker._probeInFlight = Math.max(0, breaker._probeInFlight - 1);
238
+ }
239
+ throw err;
240
+ }
241
+ };
242
+ }
243
+ get stats() {
244
+ const now = Date.now();
245
+ const { failures, total } = this._pruneWindows(now);
246
+ return {
247
+ state: this.state,
248
+ failureCount: failures,
249
+ successCount: this.successCount,
250
+ totalCalls: total,
251
+ failureRate: total > 0 ? Math.round((failures / total) * 100) : 0,
252
+ nextAttemptTime: this.state === "open" ? new Date(this.nextAttemptTime).toISOString() : null,
253
+ };
254
+ }
255
+ }
256
+ // ─── Retry ──────────────────────────────────────────────────
257
+ // Errors where the request was never sent (always safe to retry)
258
+ const PRE_SEND_PATTERNS = ["ECONNREFUSED", "no workers"];
259
+ // Errors where the request may have been partially sent (only retry if idempotent)
260
+ const POST_SEND_PATTERNS = ["ECONNRESET", "EPIPE", "ETIMEDOUT", "timed out"];
261
+ /**
262
+ * Determine if an error is retryable given an idempotency setting.
263
+ */
264
+ export function isRetryable(err, idempotent) {
265
+ if (idempotent === false)
266
+ return false;
267
+ // INT-M1: HTTP 503 (Service Unavailable) is the canonical "try again later" status
268
+ if (err.statusCode === 503)
269
+ return true;
270
+ const msg = err.message?.toLowerCase() ?? "";
271
+ const isPreSend = PRE_SEND_PATTERNS.some((p) => msg.includes(p.toLowerCase()));
272
+ if (isPreSend)
273
+ return true;
274
+ const isPostSend = POST_SEND_PATTERNS.some((p) => msg.includes(p.toLowerCase()));
275
+ if (isPostSend && idempotent === true)
276
+ return true;
277
+ // When idempotent is undefined, post-send errors are NOT retryable
278
+ return false;
279
+ }
280
+ const _retryDeprecationWarnedServices = new Set();
281
+ export function retryInterceptor(options = {}) {
282
+ const callerName = options.serviceName ?? "unknown";
283
+ if (!_retryDeprecationWarnedServices.has(callerName)) {
284
+ _retryDeprecationWarnedServices.add(callerName);
285
+ console.warn(`[Interceptors] retryInterceptor is deprecated for service "${callerName}" — retry logic is handled by ServiceProxy.createProxiedMethod(). This interceptor is now a no-op passthrough.`);
286
+ }
287
+ // Return a passthrough interceptor instead of throwing, so existing
288
+ // chains that include retryInterceptor don't break at startup.
289
+ return async function retryNoop(_callCtx, next) {
290
+ return next();
291
+ };
292
+ }
293
+ // ─── Metrics ────────────────────────────────────────────────
294
+ /**
295
+ * Tracks RPC metrics (call count, latency histogram, error rate).
296
+ */
297
+ export function metricsInterceptor(metrics) {
298
+ return async function rpcMetrics(callCtx, next) {
299
+ const start = performance.now();
300
+ const labels = {
301
+ target: callCtx.target,
302
+ method: callCtx.method,
303
+ };
304
+ const hasRpcCall = Boolean(metrics && typeof metrics.rpcCall === "function");
305
+ const hasCounter = Boolean(metrics && typeof metrics.counter === "function");
306
+ const hasHistogram = Boolean(metrics && typeof metrics.histogram === "function");
307
+ try {
308
+ const result = await next();
309
+ const durationSecs = (performance.now() - start) / 1000;
310
+ if (metrics) {
311
+ if (hasRpcCall) {
312
+ metrics.rpcCall(durationSecs, { ...labels, status: "success" });
313
+ }
314
+ else {
315
+ // Backward compatibility for lightweight metrics adapters in tests/apps
316
+ // that expose generic counter/histogram methods only.
317
+ if (hasCounter)
318
+ metrics.counter("rpc_calls_total", 1, { ...labels, status: "success" });
319
+ if (hasHistogram)
320
+ metrics.histogram("rpc_call_duration_seconds", durationSecs, labels);
321
+ }
322
+ }
323
+ return result;
324
+ }
325
+ catch (err) {
326
+ const durationSecs = (performance.now() - start) / 1000;
327
+ if (metrics) {
328
+ if (hasRpcCall) {
329
+ metrics.rpcCall(durationSecs, { ...labels, status: "error" });
330
+ }
331
+ else {
332
+ if (hasCounter)
333
+ metrics.counter("rpc_calls_total", 1, { ...labels, status: "error" });
334
+ if (hasHistogram)
335
+ metrics.histogram("rpc_call_duration_seconds", durationSecs, labels);
336
+ }
337
+ if (hasCounter) {
338
+ metrics.counter(hasRpcCall ? "forge_rpc_errors_total" : "rpc_errors_total", 1, {
339
+ ...labels,
340
+ error: normalizeErrorCode(err),
341
+ });
342
+ }
343
+ }
344
+ throw err;
345
+ }
346
+ };
347
+ }
348
+ /**
349
+ * Limits concurrent outgoing calls per service to prevent
350
+ * cascade failures. Uses a simple counter — no external deps.
351
+ */
352
+ export function bulkheadInterceptor(options = {}) {
353
+ const maxConcurrent = options.maxConcurrent ?? 100;
354
+ const inFlight = new Map();
355
+ return async function bulkhead(callCtx, next) {
356
+ // Fast-path: skip bulkhead for colocated (in-process) calls —
357
+ // they share the same event loop and don't consume network resources.
358
+ if (callCtx.isColocated)
359
+ return next();
360
+ const target = callCtx.target;
361
+ const current = inFlight.get(target) ?? 0;
362
+ if (current >= maxConcurrent) {
363
+ const err = new Error(`Bulkhead limit reached for service "${target}": ${current}/${maxConcurrent} concurrent calls. ` +
364
+ `Rejecting ${callCtx.method}.`);
365
+ err.code = "BULKHEAD_FULL";
366
+ err.statusCode = 503;
367
+ err.localAdmission = true;
368
+ throw err;
369
+ }
370
+ inFlight.set(target, current + 1);
371
+ try {
372
+ const result = await next();
373
+ return result;
374
+ }
375
+ finally {
376
+ const count = inFlight.get(target) ?? 1;
377
+ if (count <= 1) {
378
+ inFlight.delete(target);
379
+ }
380
+ else {
381
+ inFlight.set(target, count - 1);
382
+ }
383
+ }
384
+ };
385
+ }
386
+ function isLocalAdmissionControlError(err) {
387
+ if (!err || typeof err !== "object")
388
+ return false;
389
+ const e = err;
390
+ if (e.localAdmission === true)
391
+ return true;
392
+ if (e.code === "CONCURRENCY_LIMIT" || e.code === "BULKHEAD_FULL")
393
+ return true;
394
+ if (e.statusCode === 503) {
395
+ const msg = e.message?.toLowerCase?.() ?? "";
396
+ if (msg.includes("concurrency limit") || msg.includes("bulkhead limit")) {
397
+ return true;
398
+ }
399
+ }
400
+ return false;
401
+ }
402
+ function isBreakerTransientFailure(err) {
403
+ if (!err || typeof err !== "object")
404
+ return false;
405
+ const e = err;
406
+ if (e.code === "CIRCUIT_OPEN")
407
+ return false;
408
+ if (isLocalAdmissionControlError(err))
409
+ return false;
410
+ // Preserve existing behavior: errors without explicit statusCode are treated
411
+ // as transient failures unless they were explicitly classified above.
412
+ if (typeof e.statusCode !== "number")
413
+ return true;
414
+ return e.statusCode >= 500;
415
+ }
416
+ //# sourceMappingURL=Interceptors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Interceptors.js","sourceRoot":"","sources":["../../src/core/Interceptors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * O5: Structured logger with service context and log level filtering.
3
+ */
4
+ export declare class Logger {
5
+ serviceName: string;
6
+ workerId: number;
7
+ _level: number;
8
+ _redactedFields: Set<string>;
9
+ constructor(serviceName: string, workerId: number);
10
+ /**
11
+ * O5: Set the log level dynamically.
12
+ */
13
+ setLogLevel(level: "error" | "warn" | "info" | "debug"): void;
14
+ _log(level: string, message: string, meta?: Record<string, unknown>): void;
15
+ debug(msg: string, meta?: Record<string, unknown>): void;
16
+ info(msg: string, meta?: Record<string, unknown>): void;
17
+ warn(msg: string, meta?: Record<string, unknown>): void;
18
+ error(msg: string, meta?: Record<string, unknown>): void;
19
+ }
20
+ //# sourceMappingURL=Logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../src/core/Logger.ts"],"names":[],"mappings":"AAyBA;;GAEG;AACH,qBAAa,MAAM;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;gBAEjB,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAQjD;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI;IAM7D,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,IAAI;IAiB9E,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIxD,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIvD,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIvD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAGzD"}