mlform 0.1.2 → 0.1.4

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 (299) hide show
  1. package/README.md +241 -88
  2. package/dist/design-system-CrrSGfFB.js +1352 -0
  3. package/dist/engine-nnhWPT2L.js +5301 -0
  4. package/dist/kit-Dt_1Fxlc.js +76 -0
  5. package/dist/mlform/design-system.mjs +2 -0
  6. package/dist/mlform/engine.mjs +3 -0
  7. package/dist/mlform/kit.mjs +3 -0
  8. package/dist/mlform/primitives.mjs +2 -0
  9. package/dist/mlform/questionnaire.mjs +640 -0
  10. package/dist/mlform/transport.mjs +2 -0
  11. package/dist/mlform.mjs +4 -709
  12. package/dist/primitives-Pi-ztAr6.js +5063 -0
  13. package/dist/transport-A1RsnZhD.js +2143 -0
  14. package/dist/types/src/design-system/constants.d.ts +34 -0
  15. package/dist/types/src/design-system/contract/component-keys.d.ts +2 -0
  16. package/dist/types/src/design-system/contract/component-tokens.d.ts +5 -0
  17. package/dist/types/src/design-system/contract/global-tokens.d.ts +7 -0
  18. package/dist/types/src/design-system/contract/index.d.ts +4 -0
  19. package/dist/types/src/design-system/contract/token-keys.d.ts +12 -0
  20. package/dist/types/src/design-system/index.d.ts +8 -0
  21. package/dist/types/src/design-system/recipes/contrast.d.ts +2 -0
  22. package/dist/types/src/design-system/recipes/default.d.ts +2 -0
  23. package/dist/types/src/design-system/recipes/index.d.ts +4 -0
  24. package/dist/types/src/design-system/recipes/minimal.d.ts +2 -0
  25. package/dist/types/src/design-system/recipes/soft.d.ts +2 -0
  26. package/dist/types/src/design-system/registry/builtins.d.ts +5 -0
  27. package/dist/types/src/design-system/registry/create-registry.d.ts +2 -0
  28. package/dist/types/src/design-system/registry/deep-freeze.d.ts +5 -0
  29. package/dist/types/src/design-system/registry/define-recipe.d.ts +2 -0
  30. package/dist/types/src/design-system/registry/define-theme.d.ts +2 -0
  31. package/dist/types/src/design-system/registry/define-token-maps.d.ts +6 -0
  32. package/dist/types/src/design-system/registry/index.d.ts +5 -0
  33. package/dist/types/src/design-system/resolve/diagnostics.d.ts +9 -0
  34. package/dist/types/src/design-system/resolve/index.d.ts +5 -0
  35. package/dist/types/src/design-system/resolve/merge-config.d.ts +2 -0
  36. package/dist/types/src/design-system/resolve/migrate-tokens.d.ts +44 -0
  37. package/dist/types/src/design-system/resolve/resolve-mode.d.ts +6 -0
  38. package/dist/types/src/design-system/resolve/resolve-recipe.d.ts +2 -0
  39. package/dist/types/src/design-system/resolve/resolve-theme.d.ts +2 -0
  40. package/dist/types/src/design-system/resolve/resolve-tokens.d.ts +2 -0
  41. package/dist/types/src/design-system/runtime/apply-tokens.d.ts +4 -0
  42. package/dist/types/src/design-system/runtime/attach-design-system.d.ts +11 -0
  43. package/dist/types/src/design-system/runtime/create-stylesheet.d.ts +11 -0
  44. package/dist/types/src/design-system/runtime/declarations.d.ts +5 -0
  45. package/dist/types/src/design-system/runtime/design-system-controller.d.ts +9 -0
  46. package/dist/types/src/design-system/runtime/host-state.d.ts +3 -0
  47. package/dist/types/src/design-system/runtime/hydrate-design-system.d.ts +25 -0
  48. package/dist/types/src/design-system/runtime/index.d.ts +8 -0
  49. package/dist/types/src/design-system/themes/cobalt.d.ts +2 -0
  50. package/dist/types/src/design-system/themes/graphite.d.ts +2 -0
  51. package/dist/types/src/design-system/themes/index.d.ts +5 -0
  52. package/dist/types/src/design-system/themes/neutral.d.ts +2 -0
  53. package/dist/types/src/design-system/themes/sage.d.ts +2 -0
  54. package/dist/types/src/design-system/themes/sunset.d.ts +2 -0
  55. package/dist/types/src/design-system/tokens/base.d.ts +5 -0
  56. package/dist/types/src/design-system/tokens/contrast.d.ts +8 -0
  57. package/dist/types/src/design-system/tokens/density.d.ts +9 -0
  58. package/dist/types/src/design-system/tokens/forced-colors.d.ts +12 -0
  59. package/dist/types/src/design-system/tokens/index.d.ts +5 -0
  60. package/dist/types/src/design-system/tokens/motion.d.ts +2 -0
  61. package/dist/types/src/design-system/types.d.ts +225 -0
  62. package/dist/types/src/engine/builtins/fields/boolean.d.ts +8 -0
  63. package/dist/types/src/engine/builtins/fields/category.d.ts +11 -0
  64. package/dist/types/src/engine/builtins/fields/date.d.ts +9 -0
  65. package/dist/types/src/engine/builtins/fields/long-text.d.ts +10 -0
  66. package/dist/types/src/engine/builtins/fields/multi-choice.d.ts +12 -0
  67. package/dist/types/src/engine/builtins/fields/number.d.ts +11 -0
  68. package/dist/types/src/engine/builtins/fields/rating.d.ts +9 -0
  69. package/dist/types/src/engine/builtins/fields/series.d.ts +20 -0
  70. package/dist/types/src/engine/builtins/fields/single-choice.d.ts +12 -0
  71. package/dist/types/src/engine/builtins/fields/text.d.ts +10 -0
  72. package/dist/types/src/engine/builtins/index.d.ts +97 -0
  73. package/dist/types/src/engine/builtins/reports/classifier.d.ts +8 -0
  74. package/dist/types/src/engine/builtins/reports/regressor.d.ts +8 -0
  75. package/dist/types/src/engine/builtins/shared.d.ts +49 -0
  76. package/dist/types/src/engine/comparison.d.ts +2 -0
  77. package/dist/types/src/engine/constants.d.ts +51 -0
  78. package/dist/types/src/engine/declarative/explanation.d.ts +2 -0
  79. package/dist/types/src/engine/declarative/field.d.ts +2 -0
  80. package/dist/types/src/engine/declarative/presentation.d.ts +61 -0
  81. package/dist/types/src/engine/declarative/report.d.ts +2 -0
  82. package/dist/types/src/engine/equality.d.ts +4 -0
  83. package/dist/types/src/engine/errors.d.ts +28 -0
  84. package/dist/types/src/engine/explanations/controller.d.ts +13 -0
  85. package/dist/types/src/engine/explanations/index.d.ts +1 -0
  86. package/dist/types/src/engine/fields/controller.d.ts +30 -0
  87. package/dist/types/src/engine/fields/index.d.ts +1 -0
  88. package/dist/types/src/engine/form.d.ts +2 -0
  89. package/dist/types/src/engine/index.d.ts +11 -0
  90. package/dist/types/src/engine/paths.d.ts +2 -0
  91. package/dist/types/src/engine/registry/index.d.ts +26 -0
  92. package/dist/types/src/engine/reports/controller.d.ts +19 -0
  93. package/dist/types/src/engine/reports/index.d.ts +1 -0
  94. package/dist/types/src/engine/schema/index.d.ts +7 -0
  95. package/dist/types/src/engine/state/engine.d.ts +60 -0
  96. package/dist/types/src/engine/state/index.d.ts +3 -0
  97. package/dist/types/src/engine/state/snapshots.d.ts +5 -0
  98. package/dist/types/src/engine/state/store.d.ts +13 -0
  99. package/dist/types/src/engine/submission/abort.d.ts +15 -0
  100. package/dist/types/src/engine/submission/explanations.d.ts +2 -0
  101. package/dist/types/src/engine/submission/index.d.ts +5 -0
  102. package/dist/types/src/engine/submission/lifecycle.d.ts +16 -0
  103. package/dist/types/src/engine/submission/pipeline.d.ts +2 -0
  104. package/dist/types/src/engine/submission/reports.d.ts +12 -0
  105. package/dist/types/src/engine/submission/request.d.ts +23 -0
  106. package/dist/types/src/engine/submission/result.d.ts +4 -0
  107. package/dist/types/src/engine/submission/submitter.d.ts +40 -0
  108. package/dist/types/src/engine/types/explanation.d.ts +109 -0
  109. package/dist/types/src/engine/types/field.d.ts +172 -0
  110. package/dist/types/src/engine/types/form.d.ts +120 -0
  111. package/dist/types/src/engine/types/index.d.ts +9 -0
  112. package/dist/types/src/engine/types/pipeline.d.ts +31 -0
  113. package/dist/types/src/engine/types/registry.d.ts +17 -0
  114. package/dist/types/src/engine/types/report.d.ts +87 -0
  115. package/dist/types/src/engine/types/transport.d.ts +41 -0
  116. package/dist/types/src/engine/utils.d.ts +9 -0
  117. package/dist/types/src/engine/validation/conditions.d.ts +11 -0
  118. package/dist/types/src/engine/validation/field.d.ts +29 -0
  119. package/dist/types/src/engine/validation/form.d.ts +35 -0
  120. package/dist/types/src/engine/validation/index.d.ts +3 -0
  121. package/dist/types/src/engine/values.d.ts +2 -0
  122. package/dist/types/src/index.d.ts +7 -0
  123. package/dist/types/src/kit/constants.d.ts +4 -0
  124. package/dist/types/src/kit/defaults.d.ts +11 -0
  125. package/dist/types/src/kit/index.d.ts +4 -0
  126. package/dist/types/src/kit/mount-form.d.ts +3 -0
  127. package/dist/types/src/kit/types.d.ts +52 -0
  128. package/dist/types/src/primitives/base-async-report-element.d.ts +19 -0
  129. package/dist/types/src/primitives/base-explanation-element.d.ts +21 -0
  130. package/dist/types/src/primitives/base-field-element.d.ts +21 -0
  131. package/dist/types/src/primitives/base-report-element.d.ts +15 -0
  132. package/dist/types/src/primitives/components/declarative-explanation.d.ts +5 -0
  133. package/dist/types/src/primitives/components/declarative-field.d.ts +6 -0
  134. package/dist/types/src/primitives/components/declarative-report.d.ts +5 -0
  135. package/dist/types/src/primitives/components/explanation-panel.d.ts +22 -0
  136. package/dist/types/src/primitives/components/field-frame.d.ts +21 -0
  137. package/dist/types/src/primitives/components/form-errors.d.ts +19 -0
  138. package/dist/types/src/primitives/components/form-root.d.ts +29 -0
  139. package/dist/types/src/primitives/components/presentation.d.ts +4 -0
  140. package/dist/types/src/primitives/components/report-frame.d.ts +22 -0
  141. package/dist/types/src/primitives/components/submit-button.d.ts +21 -0
  142. package/dist/types/src/primitives/components/unsupported-component.d.ts +14 -0
  143. package/dist/types/src/primitives/constants.d.ts +94 -0
  144. package/dist/types/src/primitives/controller-binding.d.ts +32 -0
  145. package/dist/types/src/primitives/fields/boolean-field.d.ts +6 -0
  146. package/dist/types/src/primitives/fields/category-field.d.ts +6 -0
  147. package/dist/types/src/primitives/fields/date-field.d.ts +6 -0
  148. package/dist/types/src/primitives/fields/long-text-field.d.ts +6 -0
  149. package/dist/types/src/primitives/fields/multi-choice-field.d.ts +6 -0
  150. package/dist/types/src/primitives/fields/number-field.d.ts +8 -0
  151. package/dist/types/src/primitives/fields/rating-field.d.ts +6 -0
  152. package/dist/types/src/primitives/fields/series-field.d.ts +8 -0
  153. package/dist/types/src/primitives/fields/single-choice-field.d.ts +6 -0
  154. package/dist/types/src/primitives/fields/text-field.d.ts +6 -0
  155. package/dist/types/src/primitives/index.d.ts +8 -0
  156. package/dist/types/src/primitives/mount-form.d.ts +4 -0
  157. package/dist/types/src/primitives/register.d.ts +0 -0
  158. package/dist/types/src/primitives/registry.d.ts +3 -0
  159. package/dist/types/src/primitives/reports/classifier-report.d.ts +5 -0
  160. package/dist/types/src/primitives/reports/regressor-report.d.ts +5 -0
  161. package/dist/types/src/primitives/types.d.ts +128 -0
  162. package/dist/types/src/primitives/utils.d.ts +3 -0
  163. package/dist/types/src/questionnaire/constants.d.ts +31 -0
  164. package/dist/types/src/questionnaire/defaults.d.ts +8 -0
  165. package/dist/types/src/questionnaire/engine/controller.d.ts +12 -0
  166. package/dist/types/src/questionnaire/engine/schema.d.ts +9 -0
  167. package/dist/types/src/questionnaire/errors.d.ts +3 -0
  168. package/dist/types/src/questionnaire/index.d.ts +6 -0
  169. package/dist/types/src/questionnaire/mount.d.ts +3 -0
  170. package/dist/types/src/questionnaire/primitives/components/questionnaire-root.d.ts +23 -0
  171. package/dist/types/src/questionnaire/primitives/components/step-indicator.d.ts +14 -0
  172. package/dist/types/src/questionnaire/primitives/register.d.ts +0 -0
  173. package/dist/types/src/questionnaire/types.d.ts +69 -0
  174. package/dist/types/src/shared/errors.d.ts +3 -0
  175. package/dist/types/src/shared/index.d.ts +1 -0
  176. package/dist/types/src/transport/capabilities.d.ts +7 -0
  177. package/dist/types/src/transport/clone.d.ts +6 -0
  178. package/dist/types/src/transport/composition/fallback.d.ts +2 -0
  179. package/dist/types/src/transport/composition/fanout.d.ts +3 -0
  180. package/dist/types/src/transport/composition/hedged.d.ts +2 -0
  181. package/dist/types/src/transport/composition/index.d.ts +7 -0
  182. package/dist/types/src/transport/composition/load-balancing.d.ts +2 -0
  183. package/dist/types/src/transport/composition/pipeline.d.ts +2 -0
  184. package/dist/types/src/transport/composition/racing.d.ts +2 -0
  185. package/dist/types/src/transport/composition/routing.d.ts +3 -0
  186. package/dist/types/src/transport/constants.d.ts +34 -0
  187. package/dist/types/src/transport/errors.d.ts +36 -0
  188. package/dist/types/src/transport/index.d.ts +9 -0
  189. package/dist/types/src/transport/internal.d.ts +110 -0
  190. package/dist/types/src/transport/middleware/auth.d.ts +2 -0
  191. package/dist/types/src/transport/middleware/cache.d.ts +2 -0
  192. package/dist/types/src/transport/middleware/circuit-breaker.d.ts +2 -0
  193. package/dist/types/src/transport/middleware/dedup.d.ts +2 -0
  194. package/dist/types/src/transport/middleware/index.d.ts +12 -0
  195. package/dist/types/src/transport/middleware/logging.d.ts +2 -0
  196. package/dist/types/src/transport/middleware/metrics.d.ts +2 -0
  197. package/dist/types/src/transport/middleware/pipe.d.ts +2 -0
  198. package/dist/types/src/transport/middleware/rate-limit.d.ts +2 -0
  199. package/dist/types/src/transport/middleware/retry.d.ts +2 -0
  200. package/dist/types/src/transport/middleware/timeout.d.ts +2 -0
  201. package/dist/types/src/transport/middleware/tracing.d.ts +2 -0
  202. package/dist/types/src/transport/middleware/transform.d.ts +3 -0
  203. package/dist/types/src/transport/policy-context.d.ts +3 -0
  204. package/dist/types/src/transport/protocols/graphql.d.ts +2 -0
  205. package/dist/types/src/transport/protocols/grpc.d.ts +5 -0
  206. package/dist/types/src/transport/protocols/index.d.ts +5 -0
  207. package/dist/types/src/transport/protocols/json.d.ts +2 -0
  208. package/dist/types/src/transport/protocols/sse.d.ts +2 -0
  209. package/dist/types/src/transport/protocols/websocket.d.ts +2 -0
  210. package/dist/types/src/transport/runtime.d.ts +4 -0
  211. package/dist/types/src/transport/state/cache-store.d.ts +2 -0
  212. package/dist/types/src/transport/state/circuit-breaker.d.ts +2 -0
  213. package/dist/types/src/transport/state/health.d.ts +2 -0
  214. package/dist/types/src/transport/state/index.d.ts +5 -0
  215. package/dist/types/src/transport/state/rate-limiter.d.ts +2 -0
  216. package/dist/types/src/transport/state/session.d.ts +2 -0
  217. package/dist/types/src/transport/types/capabilities.d.ts +35 -0
  218. package/dist/types/src/transport/types/core.d.ts +57 -0
  219. package/dist/types/src/transport/types/events.d.ts +50 -0
  220. package/dist/types/src/transport/types/index.d.ts +7 -0
  221. package/dist/types/src/transport/types/middleware.d.ts +3 -0
  222. package/dist/types/src/transport/types/options.d.ts +258 -0
  223. package/dist/types/src/transport/types/session.d.ts +48 -0
  224. package/dist/types/src/transport/types/state.d.ts +46 -0
  225. package/package.json +93 -37
  226. package/dist/FieldStrategy-pPekBtH-.js +0 -2318
  227. package/dist/ModelTypes-B9_veCKB.js +0 -5
  228. package/dist/ReportStrategy-DY3GC_mJ.js +0 -23
  229. package/dist/boolean-field-Cd3uhIPj.js +0 -104
  230. package/dist/category-field-D_Ms1x9u.js +0 -73
  231. package/dist/classifier-prediction-C5QzorTo.js +0 -193
  232. package/dist/custom-element-ttkHUa8w.js +0 -13
  233. package/dist/date-field-Cg_ja679.js +0 -162
  234. package/dist/error-card-BwjPChwf.js +0 -195
  235. package/dist/field-wrapper-DqIQl76d.js +0 -177
  236. package/dist/ml-layout-Dx63KKf7.js +0 -332
  237. package/dist/mlform/extensions.mjs +0 -38
  238. package/dist/mlform/strategies.mjs +0 -292
  239. package/dist/number-field-CC2DrVEb.js +0 -165
  240. package/dist/property-jKFNMQpR.js +0 -561
  241. package/dist/range-field-Cr7LEtsJ.js +0 -98
  242. package/dist/regressor-prediction-C18dHlfK.js +0 -236
  243. package/dist/src/core/app/DescriptorItem.d.ts +0 -6
  244. package/dist/src/core/app/DescriptorRegistry.d.ts +0 -13
  245. package/dist/src/core/app/DescriptorService.d.ts +0 -22
  246. package/dist/src/core/app/DescriptorStrategy.d.ts +0 -11
  247. package/dist/src/core/app/index.d.ts +0 -4
  248. package/dist/src/core/domain/index.d.ts +0 -24
  249. package/dist/src/core/index.d.ts +0 -3
  250. package/dist/src/core/ui/error-card.d.ts +0 -38
  251. package/dist/src/core/ui/field-wrapper.d.ts +0 -23
  252. package/dist/src/core/ui/index.d.ts +0 -3
  253. package/dist/src/core/ui/ml-layout.d.ts +0 -23
  254. package/dist/src/extensions/app/FieldStrategy.d.ts +0 -10
  255. package/dist/src/extensions/app/ReportStrategy.d.ts +0 -9
  256. package/dist/src/extensions/app/index.d.ts +0 -2
  257. package/dist/src/extensions/domain/BaseField.d.ts +0 -7
  258. package/dist/src/extensions/domain/BaseModel.d.ts +0 -6
  259. package/dist/src/extensions/domain/index.d.ts +0 -2
  260. package/dist/src/extensions/index.d.ts +0 -3
  261. package/dist/src/extensions/ui/field-element.d.ts +0 -9
  262. package/dist/src/extensions/ui/index.d.ts +0 -1
  263. package/dist/src/index.d.ts +0 -1
  264. package/dist/src/mlform/index.d.ts +0 -1
  265. package/dist/src/mlform/mlform.d.ts +0 -27
  266. package/dist/src/mlform/mlform.types.d.ts +0 -11
  267. package/dist/src/strategies/app/BooleanStrategy.d.ts +0 -12
  268. package/dist/src/strategies/app/CategoryStrategy.d.ts +0 -13
  269. package/dist/src/strategies/app/ClassifierStrategy.d.ts +0 -15
  270. package/dist/src/strategies/app/DateStrategy.d.ts +0 -15
  271. package/dist/src/strategies/app/NumberStrategy.d.ts +0 -29
  272. package/dist/src/strategies/app/RegressorStrategy.d.ts +0 -15
  273. package/dist/src/strategies/app/TextStrategy.d.ts +0 -16
  274. package/dist/src/strategies/app/index.d.ts +0 -7
  275. package/dist/src/strategies/domain/BooleanField.d.ts +0 -10
  276. package/dist/src/strategies/domain/CategoryField.d.ts +0 -11
  277. package/dist/src/strategies/domain/ClassifierModel.d.ts +0 -11
  278. package/dist/src/strategies/domain/DateField.d.ts +0 -13
  279. package/dist/src/strategies/domain/FieldTypes.d.ts +0 -7
  280. package/dist/src/strategies/domain/ModelTypes.d.ts +0 -4
  281. package/dist/src/strategies/domain/NumberField.d.ts +0 -15
  282. package/dist/src/strategies/domain/RegressorModel.d.ts +0 -11
  283. package/dist/src/strategies/domain/TextField.d.ts +0 -14
  284. package/dist/src/strategies/domain/index.d.ts +0 -9
  285. package/dist/src/strategies/index.d.ts +0 -1
  286. package/dist/src/strategies/ui/boolean-field.d.ts +0 -13
  287. package/dist/src/strategies/ui/category-field.d.ts +0 -14
  288. package/dist/src/strategies/ui/classifier-prediction.d.ts +0 -39
  289. package/dist/src/strategies/ui/date-field.d.ts +0 -18
  290. package/dist/src/strategies/ui/index.d.ts +0 -8
  291. package/dist/src/strategies/ui/number-field.d.ts +0 -19
  292. package/dist/src/strategies/ui/range-field.d.ts +0 -17
  293. package/dist/src/strategies/ui/regressor-prediction.d.ts +0 -29
  294. package/dist/src/strategies/ui/text-field.d.ts +0 -17
  295. package/dist/state-CLlTRyl1.js +0 -12
  296. package/dist/test/_fixtures/DummyField.d.ts +0 -9
  297. package/dist/test/setup.d.ts +0 -1
  298. package/dist/test/unit/DummyField.test.d.ts +0 -1
  299. package/dist/text-field-DwP-Fa1w.js +0 -114
@@ -0,0 +1,2 @@
1
+ import { RetryOptions, TransportMiddleware } from '../types';
2
+ export declare const withRetry: (options: RetryOptions) => TransportMiddleware;
@@ -0,0 +1,2 @@
1
+ import { TransportMiddleware } from '../types';
2
+ export declare const withTimeout: (ms: number) => TransportMiddleware;
@@ -0,0 +1,2 @@
1
+ import { TransportMiddleware, TransportTraceOptions } from '../types';
2
+ export declare const withTracing: (options: TransportTraceOptions) => TransportMiddleware;
@@ -0,0 +1,3 @@
1
+ import { MaybePromise, SubmitRequest, TransportMiddleware } from '../types';
2
+ export declare const withRequestTransform: (transform: (request: SubmitRequest) => MaybePromise<SubmitRequest>) => TransportMiddleware;
3
+ export declare const withResponseTransform: (transform: (response: unknown, request: SubmitRequest) => MaybePromise<unknown>) => TransportMiddleware;
@@ -0,0 +1,3 @@
1
+ import { SubmitRequest, TransportPolicyContext } from './types';
2
+ export declare const getTransportPolicyContext: (request: SubmitRequest) => TransportPolicyContext;
3
+ export declare const withTransportPolicyContext: (request: SubmitRequest, policy: Partial<TransportPolicyContext>) => SubmitRequest;
@@ -0,0 +1,2 @@
1
+ import { GraphqlTransportOptions, Transport } from '../types';
2
+ export declare const createGraphqlTransport: (options: GraphqlTransportOptions) => Transport;
@@ -0,0 +1,5 @@
1
+ import { GrpcSessionTransportOptions, GrpcStreamTransportOptions, GrpcTransportOptions, GrpcUnaryTransportOptions, Transport } from '../types';
2
+ export declare const createGrpcUnaryTransport: (options: GrpcUnaryTransportOptions) => Transport;
3
+ export declare const createGrpcStreamTransport: (options: GrpcStreamTransportOptions) => Transport;
4
+ export declare const createGrpcSessionTransport: (options: GrpcSessionTransportOptions) => Transport;
5
+ export declare const createGrpcTransport: (options: GrpcTransportOptions) => Transport;
@@ -0,0 +1,5 @@
1
+ export * from './json';
2
+ export * from './graphql';
3
+ export * from './sse';
4
+ export * from './websocket';
5
+ export * from './grpc';
@@ -0,0 +1,2 @@
1
+ import { JsonTransportOptions, Transport } from '../types';
2
+ export declare const createJsonTransport: (options: JsonTransportOptions) => Transport;
@@ -0,0 +1,2 @@
1
+ import { SseTransportOptions, Transport } from '../types';
2
+ export declare const createSseTransport: (options: SseTransportOptions) => Transport;
@@ -0,0 +1,2 @@
1
+ import { WebSocketSessionTransportOptions } from '../types';
2
+ export declare const createWebSocketSessionTransport: (options: WebSocketSessionTransportOptions) => import('..').Transport<Record<string, unknown>, Record<string, unknown>>;
@@ -0,0 +1,4 @@
1
+ export * from './protocols';
2
+ export * from './middleware';
3
+ export * from './composition';
4
+ export * from './state';
@@ -0,0 +1,2 @@
1
+ import { TransportCacheStore } from '../types';
2
+ export declare const createMemoryTransportCacheStore: () => TransportCacheStore;
@@ -0,0 +1,2 @@
1
+ import { CircuitBreakerSharedState } from '../types';
2
+ export declare const createMemoryCircuitBreakerState: () => CircuitBreakerSharedState;
@@ -0,0 +1,2 @@
1
+ import { TransportHealthState } from '../types';
2
+ export declare const createMemoryTransportHealthState: <TTransportId extends string = string>() => TransportHealthState<TTransportId>;
@@ -0,0 +1,5 @@
1
+ export * from './session';
2
+ export * from './cache-store';
3
+ export * from './circuit-breaker';
4
+ export * from './rate-limiter';
5
+ export * from './health';
@@ -0,0 +1,2 @@
1
+ import { SharedRateLimiter } from '../types';
2
+ export declare const createMemorySharedRateLimiter: () => SharedRateLimiter;
@@ -0,0 +1,2 @@
1
+ import { SessionTransportOptions, Transport } from '../types';
2
+ export declare const createSessionTransport: (options: SessionTransportOptions) => Transport;
@@ -0,0 +1,35 @@
1
+ export type TransportAuthKind = "none" | "api-key" | "bearer" | "basic" | "oauth2" | "mtls" | "transport-context" | "custom";
2
+ export type TransportConsistency = "unknown" | "at-most-once" | "at-least-once" | "best-effort";
3
+ export type TransportDeliveryMode = "request-response" | "stream" | "session";
4
+ export type TransportBackpressureMode = "none" | "consumer-pull" | "bounded-buffer";
5
+ export interface TransportCapabilities {
6
+ modes: {
7
+ submit: boolean;
8
+ stream: boolean;
9
+ session: boolean;
10
+ };
11
+ safety: {
12
+ idempotent: boolean;
13
+ retrySafe: boolean;
14
+ cacheable: boolean;
15
+ hedgeSafe: boolean;
16
+ };
17
+ limits: {
18
+ maxPayloadBytes?: number;
19
+ maxBufferedMessages?: number;
20
+ };
21
+ auth: {
22
+ kinds: readonly TransportAuthKind[];
23
+ };
24
+ delivery: {
25
+ mode: TransportDeliveryMode;
26
+ consistency: TransportConsistency;
27
+ backpressure: TransportBackpressureMode;
28
+ };
29
+ }
30
+ export interface CapabilityRequirement {
31
+ modes?: Partial<TransportCapabilities["modes"]>;
32
+ safety?: Partial<TransportCapabilities["safety"]>;
33
+ authKinds?: readonly TransportAuthKind[];
34
+ maxPayloadBytes?: number;
35
+ }
@@ -0,0 +1,57 @@
1
+ import { TransportCapabilities } from './capabilities';
2
+ import { TransportStreamEvent } from './events';
3
+ import { TransportSession } from './session';
4
+ export type MaybePromise<T> = T | PromiseLike<T>;
5
+ export interface TransportPolicyContext {
6
+ scope: string;
7
+ source?: string;
8
+ backend?: string;
9
+ requestId?: string;
10
+ }
11
+ export interface SubmitRequestTransportContext {
12
+ headers?: HeadersInit;
13
+ credentials?: RequestCredentials;
14
+ attributes?: Record<string, unknown>;
15
+ policy?: TransportPolicyContext;
16
+ }
17
+ export interface SubmitRequestMetadata {
18
+ estimatedPayloadBytes?: number;
19
+ }
20
+ export interface SubmitRequest<TField extends Record<string, unknown> = Record<string, unknown>, TReport extends Record<string, unknown> = Record<string, unknown>> {
21
+ backend?: string;
22
+ values: Record<string, unknown>;
23
+ fieldValues: Record<string, unknown>;
24
+ serializedValues: Record<string, unknown>;
25
+ serializedFieldValues: Record<string, unknown>;
26
+ fields: readonly TField[];
27
+ reports: readonly TReport[];
28
+ transport?: SubmitRequestTransportContext;
29
+ metadata?: SubmitRequestMetadata;
30
+ signal?: AbortSignal;
31
+ }
32
+ export interface TransportResponse {
33
+ reports?: Record<string, unknown>;
34
+ meta?: Record<string, unknown>;
35
+ raw?: unknown;
36
+ }
37
+ export interface SubmitResult<TReportState extends Record<string, unknown> = Record<string, unknown>> {
38
+ backend?: string;
39
+ values: Record<string, unknown>;
40
+ fieldValues: Record<string, unknown>;
41
+ serializedValues: Record<string, unknown>;
42
+ serializedFieldValues: Record<string, unknown>;
43
+ reports: Record<string, unknown>;
44
+ reportStates: Record<string, TReportState>;
45
+ meta: Record<string, unknown>;
46
+ raw: unknown;
47
+ }
48
+ export interface Transport<TField extends Record<string, unknown> = Record<string, unknown>, TReport extends Record<string, unknown> = Record<string, unknown>> {
49
+ submit: (request: SubmitRequest<TField, TReport>) => Promise<unknown>;
50
+ stream?: (request: SubmitRequest<TField, TReport>) => AsyncIterable<TransportStreamEvent> | PromiseLike<AsyncIterable<TransportStreamEvent>>;
51
+ openSession?: (request: SubmitRequest<TField, TReport>) => MaybePromise<TransportSession>;
52
+ capabilities?: TransportCapabilities;
53
+ }
54
+ export interface SubmitOptions {
55
+ signal?: AbortSignal;
56
+ backend?: string;
57
+ }
@@ -0,0 +1,50 @@
1
+ export interface TransportStreamProgressEvent {
2
+ type: "progress";
3
+ loaded?: number;
4
+ total?: number;
5
+ message?: string;
6
+ meta?: Record<string, unknown>;
7
+ }
8
+ export interface TransportStreamMetaEvent {
9
+ type: "meta";
10
+ meta: Record<string, unknown>;
11
+ }
12
+ export interface TransportStreamChunkEvent {
13
+ type: "chunk";
14
+ chunk: unknown;
15
+ meta?: Record<string, unknown>;
16
+ }
17
+ export interface TransportStreamReportReplaceEvent {
18
+ type: "report-replace";
19
+ reportId: string;
20
+ payload: unknown;
21
+ meta?: Record<string, unknown>;
22
+ }
23
+ export interface TransportStreamReportPatchEvent {
24
+ type: "report-patch";
25
+ reportId: string;
26
+ patch: unknown;
27
+ strategy?: "replace" | "shallow-merge" | "deep-merge";
28
+ meta?: Record<string, unknown>;
29
+ }
30
+ export interface TransportStreamFieldUpdateEvent {
31
+ type: "field-update";
32
+ fieldId: string;
33
+ value?: unknown;
34
+ errors?: string[];
35
+ touched?: boolean;
36
+ dirty?: boolean;
37
+ status?: string;
38
+ meta?: Record<string, unknown>;
39
+ }
40
+ export interface TransportStreamResultEvent {
41
+ type: "result";
42
+ result: unknown;
43
+ meta?: Record<string, unknown>;
44
+ }
45
+ export interface TransportStreamErrorEvent {
46
+ type: "error";
47
+ error: unknown;
48
+ meta?: Record<string, unknown>;
49
+ }
50
+ export type TransportStreamEvent = TransportStreamProgressEvent | TransportStreamMetaEvent | TransportStreamChunkEvent | TransportStreamReportReplaceEvent | TransportStreamReportPatchEvent | TransportStreamFieldUpdateEvent | TransportStreamResultEvent | TransportStreamErrorEvent;
@@ -0,0 +1,7 @@
1
+ export * from './core';
2
+ export * from './capabilities';
3
+ export * from './events';
4
+ export * from './session';
5
+ export * from './options';
6
+ export * from './middleware';
7
+ export * from './state';
@@ -0,0 +1,3 @@
1
+ import { Transport } from './core';
2
+ export type TransportMiddleware = (transport: Transport) => Transport;
3
+ export type TransportCollection<TTransportId extends string = string> = Record<TTransportId, Transport> | readonly Transport[];
@@ -0,0 +1,258 @@
1
+ import { TransportCapabilities, CapabilityRequirement } from './capabilities';
2
+ import { MaybePromise, SubmitRequest, Transport, TransportPolicyContext, TransportResponse } from './core';
3
+ import { TransportStreamEvent } from './events';
4
+ import { TransportSession, TransportSessionMessage } from './session';
5
+ import { CircuitBreakerSharedState, SharedRateLimiter, TransportCacheStore, TransportHealthState } from './state';
6
+ import { TransportCollection } from './middleware';
7
+ export type JsonTransportMethod = "POST" | "PUT" | "PATCH" | "DELETE";
8
+ export interface JsonTransportOptions {
9
+ endpoint: string | URL;
10
+ source?: string;
11
+ fetch?: typeof globalThis.fetch;
12
+ method?: JsonTransportMethod;
13
+ headers?: HeadersInit | (() => MaybePromise<HeadersInit>);
14
+ credentials?: RequestCredentials;
15
+ body?: (request: SubmitRequest) => BodyInit | null | undefined;
16
+ parse?: (response: Response) => Promise<unknown>;
17
+ stream?: (response: Response, request: SubmitRequest) => MaybePromise<AsyncIterable<TransportStreamEvent>>;
18
+ }
19
+ export interface GraphqlTransportOptions {
20
+ endpoint: string | URL;
21
+ source?: string;
22
+ fetch?: typeof globalThis.fetch;
23
+ query: string | ((request: SubmitRequest) => MaybePromise<string>);
24
+ operationName?: string | ((request: SubmitRequest) => MaybePromise<string | undefined>);
25
+ variables?: (request: SubmitRequest) => MaybePromise<Record<string, unknown>>;
26
+ headers?: HeadersInit | (() => MaybePromise<HeadersInit>);
27
+ credentials?: RequestCredentials;
28
+ parse?: (response: Response) => Promise<unknown>;
29
+ resultPath?: "data" | `data.${string}`;
30
+ resolveResult?: (payload: unknown, request: SubmitRequest) => MaybePromise<unknown>;
31
+ }
32
+ export interface SseTransportOptions {
33
+ endpoint: string | URL;
34
+ source?: string;
35
+ fetch?: typeof globalThis.fetch;
36
+ method?: "POST" | "PUT" | "PATCH";
37
+ headers?: HeadersInit | (() => MaybePromise<HeadersInit>);
38
+ credentials?: RequestCredentials;
39
+ body?: (request: SubmitRequest) => BodyInit | null | undefined;
40
+ decodeEvent?: (event: {
41
+ id?: string;
42
+ event?: string;
43
+ data: string;
44
+ retry?: number;
45
+ }, request: SubmitRequest) => MaybePromise<TransportStreamEvent>;
46
+ resultEvent?: string | ((event: {
47
+ id?: string;
48
+ event?: string;
49
+ data: string;
50
+ retry?: number;
51
+ }) => boolean);
52
+ maxPayloadBytes?: number;
53
+ }
54
+ export interface WebSocketSessionTransportOptions {
55
+ url: string | URL | ((request: SubmitRequest) => MaybePromise<string | URL>);
56
+ source?: string;
57
+ WebSocket?: typeof globalThis.WebSocket;
58
+ protocols?: string | string[] | ((request: SubmitRequest) => MaybePromise<string | string[]>);
59
+ serializeMessage?: (message: unknown) => string | ArrayBuffer | Blob | Uint8Array;
60
+ deserializeMessage?: (data: string | ArrayBuffer | Blob) => MaybePromise<unknown>;
61
+ sessionInit?: TransportSessionMessage | ((request: SubmitRequest) => MaybePromise<TransportSessionMessage | undefined>);
62
+ closeTimeoutMs?: number;
63
+ maxBufferedMessages?: number;
64
+ bufferOverflow?: "close" | "drop-oldest" | "drop-newest" | "error";
65
+ }
66
+ export interface GrpcUnaryTransportOptions {
67
+ source?: string;
68
+ unary?: (request: SubmitRequest) => MaybePromise<unknown>;
69
+ capabilities?: TransportCapabilities;
70
+ }
71
+ export interface GrpcStreamTransportOptions {
72
+ source?: string;
73
+ stream: (request: SubmitRequest) => MaybePromise<AsyncIterable<TransportStreamEvent>>;
74
+ capabilities?: TransportCapabilities;
75
+ }
76
+ export interface GrpcSessionTransportOptions {
77
+ source?: string;
78
+ session: (request: SubmitRequest) => MaybePromise<TransportSession>;
79
+ capabilities?: TransportCapabilities;
80
+ }
81
+ export interface GrpcTransportOptions {
82
+ source?: string;
83
+ unary?: (request: SubmitRequest) => MaybePromise<unknown>;
84
+ stream?: (request: SubmitRequest) => MaybePromise<AsyncIterable<TransportStreamEvent>>;
85
+ session?: (request: SubmitRequest) => MaybePromise<TransportSession>;
86
+ capabilities?: TransportCapabilities;
87
+ }
88
+ export interface SessionTransportOptions {
89
+ submit?: Transport["submit"];
90
+ stream?: Transport["stream"];
91
+ openSession: NonNullable<Transport["openSession"]>;
92
+ capabilities?: TransportCapabilities;
93
+ }
94
+ export interface RoutingTransportOptions<TTransportId extends string = string> {
95
+ transports: Record<TTransportId, Transport>;
96
+ requiredCapabilities?: CapabilityRequirement;
97
+ selectTransport: (request: SubmitRequest, context: {
98
+ transportIds: readonly TTransportId[];
99
+ }) => MaybePromise<TTransportId>;
100
+ }
101
+ export interface WeightedRoutingTransportOptions<TTransportId extends string = string> {
102
+ transports: Record<TTransportId, Transport>;
103
+ requiredCapabilities?: CapabilityRequirement;
104
+ weights: Partial<Record<TTransportId, number>> | ((request: SubmitRequest, transportId: TTransportId) => MaybePromise<number>);
105
+ filter?: (transportId: TTransportId, request: SubmitRequest) => MaybePromise<boolean>;
106
+ }
107
+ export interface FanoutTransportResult<TTransportId extends string = string> {
108
+ id: TTransportId | undefined;
109
+ index: number;
110
+ response: TransportResponse;
111
+ }
112
+ export interface FanoutTransportFailure<TTransportId extends string = string> {
113
+ id: TTransportId | undefined;
114
+ index: number;
115
+ error: unknown;
116
+ }
117
+ export interface FanoutTransportOptions<TTransportId extends string = string> {
118
+ transports: TransportCollection<TTransportId>;
119
+ requiredCapabilities?: CapabilityRequirement;
120
+ filter?: (transportId: string, request: SubmitRequest) => MaybePromise<boolean>;
121
+ transformRequest?: (transportId: string, request: SubmitRequest) => MaybePromise<SubmitRequest>;
122
+ failurePolicy?: "fail-all" | "partial-success";
123
+ abortPolicy?: "wait-all" | "abort-pending-on-first-failure" | "abort-pending-on-first-success";
124
+ merge?: (context: {
125
+ request: SubmitRequest;
126
+ results: readonly FanoutTransportResult<TTransportId>[];
127
+ failures: readonly FanoutTransportFailure<TTransportId>[];
128
+ }) => MaybePromise<unknown>;
129
+ }
130
+ export interface FallbackTransportFailure<TTransportId extends string = string> {
131
+ id: TTransportId | undefined;
132
+ index: number;
133
+ error: unknown;
134
+ }
135
+ export interface FallbackTransportOptions<TTransportId extends string = string> {
136
+ transports: TransportCollection<TTransportId>;
137
+ shouldFallback?: (error: unknown, context: {
138
+ request: SubmitRequest;
139
+ id: TTransportId | undefined;
140
+ index: number;
141
+ failures: readonly FallbackTransportFailure<TTransportId>[];
142
+ }) => MaybePromise<boolean>;
143
+ }
144
+ export interface PipelineStage {
145
+ id?: string;
146
+ transport: Transport;
147
+ mapToNext?: (response: unknown, originalRequest: SubmitRequest) => MaybePromise<SubmitRequest>;
148
+ nextStageRequirements?: CapabilityRequirement;
149
+ }
150
+ export interface PipelineTransportOptions {
151
+ stages: readonly PipelineStage[];
152
+ }
153
+ export interface RacingTransportOptions {
154
+ transports: TransportCollection;
155
+ }
156
+ export interface HedgedTransportOptions<TTransportId extends string = string> {
157
+ transports: Record<TTransportId, Transport>;
158
+ hedgeDelayMs: number;
159
+ maxAttempts?: number;
160
+ allowUnsafeHedging?: boolean;
161
+ }
162
+ export interface QuorumFanoutTransportOptions<TTransportId extends string = string> extends FanoutTransportOptions<TTransportId> {
163
+ quorum: number;
164
+ }
165
+ export interface LoadBalancingTransportOptions<TTransportId extends string = string> {
166
+ transports: Record<TTransportId, Transport>;
167
+ requiredCapabilities?: CapabilityRequirement;
168
+ strategy?: "round-robin" | "least-loaded" | "random" | "weighted" | "health-weighted";
169
+ weights?: Partial<Record<TTransportId, number>> | ((request: SubmitRequest, transportId: TTransportId) => MaybePromise<number>);
170
+ healthState?: TransportHealthState<TTransportId>;
171
+ }
172
+ export interface RetryOptions {
173
+ attempts: number;
174
+ backoff?: "exponential" | "linear" | number[] | ((attempt: number) => number);
175
+ baseDelay?: number;
176
+ maxDelay?: number;
177
+ jitter?: boolean;
178
+ allowUnsafeRetry?: boolean;
179
+ retryOn?: (error: unknown, attempt: number) => boolean;
180
+ }
181
+ export interface ApiKeyAuthOptions {
182
+ type: "api-key";
183
+ key: string | (() => MaybePromise<string>);
184
+ header?: string;
185
+ prefix?: string;
186
+ }
187
+ export interface BearerAuthOptions {
188
+ type: "bearer";
189
+ token: string | (() => MaybePromise<string>);
190
+ header?: string;
191
+ prefix?: string;
192
+ }
193
+ export interface CustomAuthOptions {
194
+ type: "custom";
195
+ apply: (request: SubmitRequest) => MaybePromise<SubmitRequest>;
196
+ }
197
+ export interface TransportContextAuthOptions {
198
+ type: "transport-context";
199
+ context: NonNullable<SubmitRequest["transport"]> | (() => MaybePromise<NonNullable<SubmitRequest["transport"]>>);
200
+ }
201
+ export type AuthOptions = ApiKeyAuthOptions | BearerAuthOptions | CustomAuthOptions | TransportContextAuthOptions;
202
+ export interface CircuitBreakerOptions {
203
+ failureThreshold: number;
204
+ resetTimeout: number;
205
+ halfOpenMaxRequests?: number;
206
+ key?: string;
207
+ scope?: string;
208
+ sharedState?: CircuitBreakerSharedState;
209
+ tripOn?: (error: unknown) => boolean;
210
+ onStateChange?: (state: "closed" | "open" | "half-open") => void;
211
+ }
212
+ export interface RateLimitOptions {
213
+ maxConcurrent?: number;
214
+ perSecond?: number;
215
+ queueLimit?: number;
216
+ key?: string;
217
+ scope?: string;
218
+ limiter?: SharedRateLimiter;
219
+ }
220
+ export interface DedupOptions {
221
+ key?: (request: SubmitRequest) => string;
222
+ }
223
+ export interface CacheOptions {
224
+ key: (request: SubmitRequest) => string;
225
+ ttl: number;
226
+ maxEntries?: number;
227
+ scope?: string;
228
+ store?: TransportCacheStore;
229
+ allowUnsafeCache?: boolean;
230
+ shouldCache?: (response: unknown, request: SubmitRequest) => boolean;
231
+ }
232
+ export interface TransportTraceOptions {
233
+ traceparent?: string | ((request: SubmitRequest) => MaybePromise<string | undefined>);
234
+ baggage?: string | ((request: SubmitRequest) => MaybePromise<string | undefined>);
235
+ attributes?: (request: SubmitRequest) => MaybePromise<Record<string, unknown> | undefined>;
236
+ preserveExistingHeaders?: boolean;
237
+ requestId?: string | ((request: SubmitRequest) => MaybePromise<string | undefined>);
238
+ scope?: string | ((request: SubmitRequest) => MaybePromise<string | undefined>);
239
+ }
240
+ export interface TransportTelemetryEvent {
241
+ kind: "request-start" | "request-success" | "request-error" | "stream-event" | "session-open" | "session-close" | "capability-reject" | "policy-block";
242
+ source?: string;
243
+ scope?: string;
244
+ durationMs?: number;
245
+ error?: unknown;
246
+ request: SubmitRequest;
247
+ meta?: Record<string, unknown>;
248
+ }
249
+ export interface TransportMetricsOptions {
250
+ emit(event: TransportTelemetryEvent): void;
251
+ }
252
+ export interface TransportLogOptions {
253
+ onRequest?: (request: SubmitRequest) => void;
254
+ onResponse?: (response: unknown, request: SubmitRequest, durationMs: number) => void;
255
+ onError?: (error: unknown, request: SubmitRequest, durationMs: number) => void;
256
+ onStreamEvent?: (event: TransportStreamEvent, request: SubmitRequest) => void;
257
+ }
258
+ export type TransportContextPolicy = TransportPolicyContext;
@@ -0,0 +1,48 @@
1
+ import { TransportBackpressureMode } from './capabilities';
2
+ import { MaybePromise } from './core';
3
+ export interface TransportSessionMessage {
4
+ type: string;
5
+ data?: unknown;
6
+ meta?: Record<string, unknown>;
7
+ }
8
+ export interface TransportSessionProgressEvent {
9
+ type: "progress";
10
+ loaded?: number;
11
+ total?: number;
12
+ message?: string;
13
+ meta?: Record<string, unknown>;
14
+ }
15
+ export interface TransportSessionMetaEvent {
16
+ type: "meta";
17
+ meta: Record<string, unknown>;
18
+ }
19
+ export interface TransportSessionMessageEvent {
20
+ type: "message";
21
+ message: TransportSessionMessage;
22
+ meta?: Record<string, unknown>;
23
+ }
24
+ export interface TransportSessionResultEvent {
25
+ type: "result";
26
+ result: unknown;
27
+ meta?: Record<string, unknown>;
28
+ }
29
+ export interface TransportSessionErrorEvent {
30
+ type: "error";
31
+ error: unknown;
32
+ meta?: Record<string, unknown>;
33
+ }
34
+ export interface TransportSessionCloseEvent {
35
+ type: "close";
36
+ reason?: string;
37
+ meta?: Record<string, unknown>;
38
+ }
39
+ export type TransportSessionEvent = TransportSessionProgressEvent | TransportSessionMetaEvent | TransportSessionMessageEvent | TransportSessionResultEvent | TransportSessionErrorEvent | TransportSessionCloseEvent;
40
+ export interface TransportSession {
41
+ send: (message: TransportSessionMessage) => MaybePromise<void>;
42
+ receive: () => AsyncIterable<TransportSessionEvent> | PromiseLike<AsyncIterable<TransportSessionEvent>>;
43
+ close: (reason?: string) => MaybePromise<void>;
44
+ capabilities?: {
45
+ bufferedMessages?: number;
46
+ backpressure: TransportBackpressureMode;
47
+ };
48
+ }
@@ -0,0 +1,46 @@
1
+ import { MaybePromise, SubmitRequest } from './core';
2
+ export interface TransportCacheEntry {
3
+ expiresAt: number;
4
+ response: unknown;
5
+ }
6
+ export interface TransportCacheStore {
7
+ get(scope: string, key: string): MaybePromise<TransportCacheEntry | undefined>;
8
+ set(scope: string, key: string, entry: TransportCacheEntry): MaybePromise<void>;
9
+ delete(scope: string, key: string): MaybePromise<void>;
10
+ evictExpired?(scope: string, now: number): MaybePromise<void>;
11
+ keys?(scope: string): MaybePromise<readonly string[]>;
12
+ }
13
+ export interface CircuitBreakerStateSnapshot {
14
+ state: "closed" | "open" | "half-open";
15
+ failureCount: number;
16
+ openUntil: number;
17
+ halfOpenActive: number;
18
+ }
19
+ export interface CircuitBreakerSharedState {
20
+ get(scope: string): MaybePromise<CircuitBreakerStateSnapshot | undefined>;
21
+ compareAndSet?(scope: string, expected: CircuitBreakerStateSnapshot | undefined, next: CircuitBreakerStateSnapshot): MaybePromise<boolean>;
22
+ set(scope: string, snapshot: CircuitBreakerStateSnapshot): MaybePromise<void>;
23
+ }
24
+ export interface SharedRateLimiterLease {
25
+ release: () => MaybePromise<void>;
26
+ }
27
+ export interface RateLimitLeaseRequest {
28
+ request: SubmitRequest;
29
+ maxConcurrent?: number;
30
+ perSecond?: number;
31
+ queueLimit?: number;
32
+ }
33
+ export interface SharedRateLimiter {
34
+ acquire: (scope: string, lease: RateLimitLeaseRequest) => MaybePromise<SharedRateLimiterLease>;
35
+ }
36
+ export interface TransportHealthSnapshot {
37
+ consecutiveFailures: number;
38
+ lastFailureAt?: number;
39
+ lastSuccessAt?: number;
40
+ averageLatencyMs?: number;
41
+ }
42
+ export interface TransportHealthState<TTransportId extends string = string> {
43
+ getSnapshot: (scope: string, transportId: TTransportId) => MaybePromise<TransportHealthSnapshot | undefined>;
44
+ recordSuccess: (scope: string, transportId: TTransportId, durationMs: number) => MaybePromise<void>;
45
+ recordFailure: (scope: string, transportId: TTransportId, error: unknown) => MaybePromise<void>;
46
+ }