@apifuse/provider-sdk 2.2.0-beta.3 → 2.2.0-beta.31

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 (342) hide show
  1. package/AUTHORING.md +493 -5
  2. package/CHANGELOG.md +131 -1
  3. package/README.md +52 -6
  4. package/SUBMISSION.md +1 -1
  5. package/bin/apifuse-check.ts +106 -62
  6. package/bin/apifuse-create.ts +1 -1
  7. package/bin/apifuse-dev.ts +63 -55
  8. package/bin/apifuse-pack-check.ts +22 -2
  9. package/bin/apifuse-pack-smoke.ts +78 -82
  10. package/bin/apifuse-pack-types.ts +583 -0
  11. package/bin/apifuse-perf.ts +59 -140
  12. package/bin/apifuse-record.ts +698 -113
  13. package/bin/apifuse-submit-check.ts +517 -44
  14. package/bin/apifuse-sync-assets.ts +117 -0
  15. package/bin/apifuse.ts +1 -1
  16. package/bin/submit-check-delimited-text.ts +50 -0
  17. package/bin/submit-check-xml.ts +1 -1
  18. package/dist/auth-turn/index.d.ts +4 -4
  19. package/dist/auth-turn/index.js +1 -1
  20. package/dist/auth.d.ts +16 -2
  21. package/dist/auth.js +76 -18
  22. package/dist/ceremonies/index.d.ts +9 -1
  23. package/dist/ceremonies/index.js +117 -29
  24. package/dist/cli/commands.d.ts +1 -1
  25. package/dist/cli/commands.js +8 -0
  26. package/dist/cli/create.d.ts +3 -0
  27. package/dist/cli/create.js +34 -35
  28. package/dist/cli/prompt-assets.d.ts +80 -0
  29. package/dist/cli/prompt-assets.js +743 -0
  30. package/dist/cli/templates/provider/AGENTS.md.tpl +17 -8
  31. package/dist/cli/templates/provider/README.md.tpl +4 -4
  32. package/dist/config/loader.d.ts +176 -17
  33. package/dist/config/loader.js +434 -161
  34. package/dist/contract-serialization.d.ts +2 -2
  35. package/dist/contract-serialization.js +7 -14
  36. package/dist/contract-types.d.ts +3 -2
  37. package/dist/contract.d.ts +3 -3
  38. package/dist/contract.js +6 -6
  39. package/dist/declaration-validation.d.ts +23 -0
  40. package/dist/declaration-validation.js +159 -0
  41. package/dist/define.d.ts +13 -1
  42. package/dist/define.js +391 -122
  43. package/dist/dev.d.ts +1 -1
  44. package/dist/dev.js +1 -1
  45. package/dist/error-resolution.d.ts +4 -0
  46. package/dist/error-resolution.js +123 -0
  47. package/dist/errors.d.ts +19 -1
  48. package/dist/errors.js +41 -3
  49. package/dist/fixture-sanitization.d.ts +26 -0
  50. package/dist/fixture-sanitization.js +216 -0
  51. package/dist/i18n/catalog.d.ts +2 -2
  52. package/dist/i18n/catalog.js +4 -10
  53. package/dist/i18n/index.d.ts +2 -2
  54. package/dist/i18n/index.js +2 -2
  55. package/dist/i18n/keys.d.ts +2 -2
  56. package/dist/index.d.ts +50 -42
  57. package/dist/index.js +41 -37
  58. package/dist/lint.d.ts +6 -1
  59. package/dist/lint.js +370 -18
  60. package/dist/native-address.d.ts +43 -0
  61. package/dist/native-address.js +281 -0
  62. package/dist/native-egress-policy.d.ts +31 -0
  63. package/dist/native-egress-policy.js +288 -0
  64. package/dist/observability.d.ts +5 -2
  65. package/dist/observability.js +48 -1
  66. package/dist/provider.d.ts +13 -11
  67. package/dist/provider.js +10 -9
  68. package/dist/public-schema-field-lint.d.ts +1 -1
  69. package/dist/recipes/gov-api.js +1 -1
  70. package/dist/runtime/auth-flow.d.ts +3 -1
  71. package/dist/runtime/auth-flow.js +8 -3
  72. package/dist/runtime/browser.d.ts +1 -1
  73. package/dist/runtime/browser.js +138 -40
  74. package/dist/runtime/cache.d.ts +2 -1
  75. package/dist/runtime/cache.js +173 -23
  76. package/dist/runtime/choice-wordlist.d.ts +9 -0
  77. package/dist/runtime/choice-wordlist.js +138 -0
  78. package/dist/runtime/choice.d.ts +14 -1
  79. package/dist/runtime/choice.js +566 -101
  80. package/dist/runtime/credential.d.ts +1 -1
  81. package/dist/runtime/credential.js +1 -1
  82. package/dist/runtime/env.d.ts +1 -1
  83. package/dist/runtime/executor.d.ts +1 -1
  84. package/dist/runtime/executor.js +25 -3
  85. package/dist/runtime/http.d.ts +3 -2
  86. package/dist/runtime/http.js +517 -55
  87. package/dist/runtime/insights.d.ts +1 -1
  88. package/dist/runtime/insights.js +6 -13
  89. package/dist/runtime/instrumentation.d.ts +2 -2
  90. package/dist/runtime/instrumentation.js +371 -23
  91. package/dist/runtime/keyring.js +1 -1
  92. package/dist/runtime/namespace.js +1 -1
  93. package/dist/runtime/native-network-errors.d.ts +33 -0
  94. package/dist/runtime/native-network-errors.js +69 -0
  95. package/dist/runtime/native-network.d.ts +96 -0
  96. package/dist/runtime/native-network.js +1232 -0
  97. package/dist/runtime/ocr.d.ts +29 -0
  98. package/dist/runtime/ocr.js +440 -0
  99. package/dist/runtime/otlp.d.ts +1 -1
  100. package/dist/runtime/perf.d.ts +1 -1
  101. package/dist/runtime/provider.d.ts +1 -1
  102. package/dist/runtime/provider.js +1 -2
  103. package/dist/runtime/proxy-errors.d.ts +1 -1
  104. package/dist/runtime/proxy-errors.js +9 -7
  105. package/dist/runtime/proxy-nodemaven.d.ts +56 -0
  106. package/dist/runtime/proxy-nodemaven.js +146 -0
  107. package/dist/runtime/proxy-retry-policy.d.ts +2 -2
  108. package/dist/runtime/proxy-retry-policy.js +2 -2
  109. package/dist/runtime/proxy-telemetry.d.ts +2 -1
  110. package/dist/runtime/proxy-telemetry.js +58 -52
  111. package/dist/runtime/redirects.d.ts +29 -0
  112. package/dist/runtime/redirects.js +36 -0
  113. package/dist/runtime/redis.d.ts +1 -1
  114. package/dist/runtime/redis.js +5 -5
  115. package/dist/runtime/request-options.d.ts +68 -1
  116. package/dist/runtime/request-options.js +548 -0
  117. package/dist/runtime/resolver-config.d.ts +6 -0
  118. package/dist/runtime/resolver-config.js +6 -0
  119. package/dist/runtime/resolver-public.d.ts +1 -0
  120. package/dist/runtime/resolver-public.js +1 -0
  121. package/dist/runtime/resolver-shared.d.ts +3 -0
  122. package/dist/runtime/resolver-shared.js +12 -0
  123. package/dist/runtime/resolver-vendors/bindings.d.ts +48 -0
  124. package/dist/runtime/resolver-vendors/bindings.js +40 -0
  125. package/dist/runtime/resolver-vendors/browser.d.ts +20 -0
  126. package/dist/runtime/resolver-vendors/browser.js +282 -0
  127. package/dist/runtime/resolver-vendors/hosts.d.ts +2 -0
  128. package/dist/runtime/resolver-vendors/hosts.js +33 -0
  129. package/dist/runtime/resolver-vendors/twocaptcha.d.ts +24 -0
  130. package/dist/runtime/resolver-vendors/twocaptcha.js +368 -0
  131. package/dist/runtime/resolver-vendors/types.d.ts +83 -0
  132. package/dist/runtime/resolver-vendors/types.js +69 -0
  133. package/dist/runtime/resolver.d.ts +59 -0
  134. package/dist/runtime/resolver.js +705 -0
  135. package/dist/runtime/secrets.d.ts +27 -0
  136. package/dist/runtime/secrets.js +51 -0
  137. package/dist/runtime/state.d.ts +5 -2
  138. package/dist/runtime/state.js +280 -74
  139. package/dist/runtime/stealth-cookies.d.ts +20 -0
  140. package/dist/runtime/stealth-cookies.js +111 -0
  141. package/dist/runtime/stealth.d.ts +30 -5
  142. package/dist/runtime/stealth.js +523 -259
  143. package/dist/runtime/stt.d.ts +1 -1
  144. package/dist/runtime/stt.js +12 -27
  145. package/dist/runtime/timeout.d.ts +5 -0
  146. package/dist/runtime/timeout.js +12 -0
  147. package/dist/runtime/trace.d.ts +2 -2
  148. package/dist/runtime/trace.js +2 -4
  149. package/dist/runtime/waterfall.d.ts +1 -1
  150. package/dist/schema.d.ts +1 -1
  151. package/dist/schema.js +7 -15
  152. package/dist/serve.d.ts +1 -1
  153. package/dist/serve.js +1 -1
  154. package/dist/server/index.d.ts +7 -7
  155. package/dist/server/index.js +6 -6
  156. package/dist/server/self-test-input-tokens.d.ts +2 -1
  157. package/dist/server/self-test-input-tokens.js +18 -14
  158. package/dist/server/self-test-redaction.d.ts +1 -1
  159. package/dist/server/self-test-redaction.js +1 -1
  160. package/dist/server/self-test.d.ts +117 -3
  161. package/dist/server/self-test.js +787 -151
  162. package/dist/server/serve-implementation.d.ts +210 -0
  163. package/dist/server/serve-implementation.js +2078 -0
  164. package/dist/server/serve.d.ts +1 -70
  165. package/dist/server/serve.js +1 -1143
  166. package/dist/server/types.d.ts +34 -9
  167. package/dist/server/types.js +8 -1
  168. package/dist/stateful/errors.d.ts +19 -0
  169. package/dist/stateful/errors.js +24 -0
  170. package/dist/stateful/http-provider-event-emitter.d.ts +40 -0
  171. package/dist/stateful/http-provider-event-emitter.js +237 -0
  172. package/dist/stateful/http-session-owner-registry.d.ts +44 -0
  173. package/dist/stateful/http-session-owner-registry.js +210 -0
  174. package/dist/stateful/index.d.ts +18 -0
  175. package/dist/stateful/index.js +18 -0
  176. package/dist/stateful/provider-event-delivery-failures.d.ts +32 -0
  177. package/dist/stateful/provider-event-delivery-failures.js +43 -0
  178. package/dist/stateful/provider-event-pipeline-metrics.d.ts +46 -0
  179. package/dist/stateful/provider-event-pipeline-metrics.js +48 -0
  180. package/dist/stateful/provider-event-pipeline.d.ts +50 -0
  181. package/dist/stateful/provider-event-pipeline.js +1 -0
  182. package/dist/stateful/provider-events.d.ts +101 -0
  183. package/dist/stateful/provider-events.js +289 -0
  184. package/dist/stateful/session-key.d.ts +15 -0
  185. package/dist/stateful/session-key.js +86 -0
  186. package/dist/stateful/stateful-provider-adapter-context.d.ts +5 -0
  187. package/dist/stateful/stateful-provider-adapter-context.js +42 -0
  188. package/dist/stateful/stateful-provider-adapter-metrics.d.ts +15 -0
  189. package/dist/stateful/stateful-provider-adapter-metrics.js +21 -0
  190. package/dist/stateful/stateful-provider-adapter.d.ts +98 -0
  191. package/dist/stateful/stateful-provider-adapter.js +287 -0
  192. package/dist/stateful/stateful-provider-observability.d.ts +62 -0
  193. package/dist/stateful/stateful-provider-observability.js +161 -0
  194. package/dist/stateful/stateful-provider-owner-forwarder.d.ts +41 -0
  195. package/dist/stateful/stateful-provider-owner-forwarder.js +215 -0
  196. package/dist/stateful/stateful-provider-runtime-context.d.ts +32 -0
  197. package/dist/stateful/stateful-provider-runtime-context.js +60 -0
  198. package/dist/stateful/stateful-provider-runtime-executor.d.ts +34 -0
  199. package/dist/stateful/stateful-provider-runtime-executor.js +52 -0
  200. package/dist/stateful/stateful-provider-session-routing.d.ts +67 -0
  201. package/dist/stateful/stateful-provider-session-routing.js +345 -0
  202. package/dist/stateful/stateful-provider-session-runtime.d.ts +98 -0
  203. package/dist/stateful/stateful-provider-session-runtime.js +245 -0
  204. package/dist/stateful-signing.d.ts +18 -0
  205. package/dist/stateful-signing.js +27 -0
  206. package/dist/stealth/profiles.d.ts +1 -1
  207. package/dist/stealth/profiles.js +21 -21
  208. package/dist/stream-evidence.d.ts +74 -0
  209. package/dist/stream-evidence.js +785 -0
  210. package/dist/stream.d.ts +1 -1
  211. package/dist/stream.js +7 -1
  212. package/dist/testing/index.d.ts +3 -2
  213. package/dist/testing/index.js +3 -2
  214. package/dist/testing/run.d.ts +32 -2
  215. package/dist/testing/run.js +488 -28
  216. package/dist/types.d.ts +566 -19
  217. package/dist/types.js +1 -0
  218. package/dist/user-input.d.ts +30 -0
  219. package/dist/user-input.js +66 -0
  220. package/package.json +42 -7
  221. package/src/auth-turn/index.ts +2 -2
  222. package/src/auth.ts +146 -86
  223. package/src/ceremonies/index.ts +167 -92
  224. package/src/cli/commands.ts +10 -0
  225. package/src/cli/create.ts +42 -35
  226. package/src/cli/prompt-assets.ts +865 -0
  227. package/src/cli/templates/provider/AGENTS.md.tpl +17 -8
  228. package/src/cli/templates/provider/README.md.tpl +4 -4
  229. package/src/config/loader.ts +667 -289
  230. package/src/contract-serialization.ts +10 -18
  231. package/src/contract-types.ts +3 -2
  232. package/src/contract.ts +14 -28
  233. package/src/declaration-validation.ts +202 -0
  234. package/src/define.ts +631 -495
  235. package/src/dev.ts +4 -9
  236. package/src/error-resolution.ts +128 -0
  237. package/src/errors.ts +56 -11
  238. package/src/fixture-sanitization.ts +247 -0
  239. package/src/i18n/catalog.ts +10 -32
  240. package/src/i18n/index.ts +2 -2
  241. package/src/i18n/keys.ts +5 -11
  242. package/src/index.ts +158 -44
  243. package/src/lint.ts +488 -154
  244. package/src/native-address.ts +340 -0
  245. package/src/native-egress-policy.ts +358 -0
  246. package/src/observability.ts +51 -1
  247. package/src/provider.ts +66 -11
  248. package/src/public-schema-field-lint.ts +7 -33
  249. package/src/recipes/gov-api.ts +2 -5
  250. package/src/runtime/auth-flow.ts +13 -7
  251. package/src/runtime/browser.ts +252 -207
  252. package/src/runtime/cache.ts +209 -81
  253. package/src/runtime/choice-wordlist.ts +145 -0
  254. package/src/runtime/choice.ts +758 -197
  255. package/src/runtime/credential.ts +2 -2
  256. package/src/runtime/env.ts +1 -1
  257. package/src/runtime/executor.ts +37 -19
  258. package/src/runtime/http.ts +645 -65
  259. package/src/runtime/insights.ts +15 -53
  260. package/src/runtime/instrumentation.ts +530 -67
  261. package/src/runtime/keyring.ts +7 -19
  262. package/src/runtime/namespace.ts +2 -7
  263. package/src/runtime/native-network-errors.ts +99 -0
  264. package/src/runtime/native-network.ts +1605 -0
  265. package/src/runtime/ocr.ts +523 -0
  266. package/src/runtime/otlp.ts +12 -23
  267. package/src/runtime/perf.ts +1 -1
  268. package/src/runtime/provider.ts +4 -9
  269. package/src/runtime/proxy-errors.ts +29 -42
  270. package/src/runtime/proxy-nodemaven.ts +221 -0
  271. package/src/runtime/proxy-retry-policy.ts +3 -3
  272. package/src/runtime/proxy-telemetry.ts +84 -77
  273. package/src/runtime/redirects.ts +66 -0
  274. package/src/runtime/redis.ts +10 -13
  275. package/src/runtime/request-options.ts +679 -9
  276. package/src/runtime/resolver-config.ts +6 -0
  277. package/src/runtime/resolver-public.ts +18 -0
  278. package/src/runtime/resolver-shared.ts +17 -0
  279. package/src/runtime/resolver-vendors/bindings.ts +56 -0
  280. package/src/runtime/resolver-vendors/browser.ts +408 -0
  281. package/src/runtime/resolver-vendors/hosts.ts +38 -0
  282. package/src/runtime/resolver-vendors/twocaptcha.ts +500 -0
  283. package/src/runtime/resolver-vendors/types.ts +173 -0
  284. package/src/runtime/resolver.ts +1060 -0
  285. package/src/runtime/secrets.ts +64 -0
  286. package/src/runtime/state.ts +399 -161
  287. package/src/runtime/stealth-cookies.ts +132 -0
  288. package/src/runtime/stealth.ts +681 -295
  289. package/src/runtime/stt.ts +39 -113
  290. package/src/runtime/timeout.ts +18 -0
  291. package/src/runtime/trace.ts +14 -44
  292. package/src/runtime/waterfall.ts +5 -18
  293. package/src/schema.ts +23 -84
  294. package/src/serve.ts +6 -1
  295. package/src/server/index.ts +30 -7
  296. package/src/server/self-test-input-tokens.ts +29 -14
  297. package/src/server/self-test-redaction.ts +2 -2
  298. package/src/server/self-test.ts +1030 -180
  299. package/src/server/serve-implementation.ts +3062 -0
  300. package/src/server/serve.ts +1 -1781
  301. package/src/server/types.ts +12 -13
  302. package/src/stateful/README.md +146 -0
  303. package/src/stateful/errors.ts +35 -0
  304. package/src/stateful/http-provider-event-emitter.ts +314 -0
  305. package/src/stateful/http-session-owner-registry.ts +306 -0
  306. package/src/stateful/index.ts +18 -0
  307. package/src/stateful/provider-event-delivery-failures.ts +80 -0
  308. package/src/stateful/provider-event-pipeline-metrics.ts +95 -0
  309. package/src/stateful/provider-event-pipeline.ts +61 -0
  310. package/src/stateful/provider-events.ts +462 -0
  311. package/src/stateful/session-key.ts +111 -0
  312. package/src/stateful/stateful-provider-adapter-context.ts +59 -0
  313. package/src/stateful/stateful-provider-adapter-metrics.ts +48 -0
  314. package/src/stateful/stateful-provider-adapter.ts +562 -0
  315. package/src/stateful/stateful-provider-observability.ts +261 -0
  316. package/src/stateful/stateful-provider-owner-forwarder.ts +287 -0
  317. package/src/stateful/stateful-provider-runtime-context.ts +92 -0
  318. package/src/stateful/stateful-provider-runtime-executor.ts +96 -0
  319. package/src/stateful/stateful-provider-session-routing.ts +546 -0
  320. package/src/stateful/stateful-provider-session-runtime.ts +403 -0
  321. package/src/stateful-signing.ts +46 -0
  322. package/src/stealth/profiles.ts +27 -33
  323. package/src/stream-evidence.ts +988 -0
  324. package/src/stream.ts +16 -20
  325. package/src/testing/index.ts +11 -2
  326. package/src/testing/run.ts +668 -74
  327. package/src/types.ts +665 -35
  328. package/src/user-input.ts +118 -0
  329. package/dist/cli/templates/provider/CLAUDE.md.tpl +0 -1
  330. package/src/cli/templates/provider/CLAUDE.md.tpl +0 -1
  331. /package/dist/cli/templates/provider/{skills → .agents/skills}/fixtures-and-recording/SKILL.md.tpl +0 -0
  332. /package/dist/cli/templates/provider/{skills → .agents/skills}/health-checks-and-fail-closed/SKILL.md.tpl +0 -0
  333. /package/dist/cli/templates/provider/{skills → .agents/skills}/normalization-standards/SKILL.md.tpl +0 -0
  334. /package/dist/cli/templates/provider/{skills → .agents/skills}/pagination-and-counts/SKILL.md.tpl +0 -0
  335. /package/dist/cli/templates/provider/{skills → .agents/skills}/upstream-contract-verification/SKILL.md.tpl +0 -0
  336. /package/dist/cli/templates/provider/{skills → .agents/skills}/upstream-notes/README.md.tpl +0 -0
  337. /package/src/cli/templates/provider/{skills → .agents/skills}/fixtures-and-recording/SKILL.md.tpl +0 -0
  338. /package/src/cli/templates/provider/{skills → .agents/skills}/health-checks-and-fail-closed/SKILL.md.tpl +0 -0
  339. /package/src/cli/templates/provider/{skills → .agents/skills}/normalization-standards/SKILL.md.tpl +0 -0
  340. /package/src/cli/templates/provider/{skills → .agents/skills}/pagination-and-counts/SKILL.md.tpl +0 -0
  341. /package/src/cli/templates/provider/{skills → .agents/skills}/upstream-contract-verification/SKILL.md.tpl +0 -0
  342. /package/src/cli/templates/provider/{skills → .agents/skills}/upstream-notes/README.md.tpl +0 -0
@@ -1,4 +1,5 @@
1
- export const PROVIDER_OBSERVABILITY_TAXONOMY_VERSION = "2026-05-26";
1
+ // Mirrors packages/provider-observability in the platform monorepo (SoT).
2
+ export const PROVIDER_OBSERVABILITY_TAXONOMY_VERSION = "2026-08-07";
2
3
 
3
4
  export const PROVIDER_ERROR_CATEGORIES = [
4
5
  "ok",
@@ -7,6 +8,7 @@ export const PROVIDER_ERROR_CATEGORIES = [
7
8
  "upstream_http",
8
9
  "upstream_rate_limited",
9
10
  "upstream_auth",
11
+ "upstream_rejected",
10
12
  "upstream_schema_drift",
11
13
  "proxy_pool",
12
14
  "anti_bot_blocked",
@@ -16,6 +18,9 @@ export const PROVIDER_ERROR_CATEGORIES = [
16
18
  "output_validation",
17
19
  "provider_error",
18
20
  "internal_error",
21
+ "dependency_unavailable",
22
+ "unsupported_transport",
23
+ "client_cancelled",
19
24
  "unclassified",
20
25
  ] as const;
21
26
 
@@ -26,6 +31,9 @@ export function categoryForStatus(status: number): ProviderErrorCategory {
26
31
  if (status === 408 || status === 504) return "timeout";
27
32
  if (status === 429) return "upstream_rate_limited";
28
33
  if (status === 401 || status === 403) return "upstream_auth";
34
+ // provider-error-contract: 409/410/422 are the deterministic
35
+ // upstream-rejection status class — not a retryable upstream failure.
36
+ if (status === 409 || status === 410 || status === 422) return "upstream_rejected";
29
37
  if (status >= 400) return "upstream_http";
30
38
  return "unclassified";
31
39
  }
@@ -39,3 +47,45 @@ export function isRetryableCategory(category: ProviderErrorCategory): boolean {
39
47
  category === "proxy_pool"
40
48
  );
41
49
  }
50
+
51
+ // Who stopped the request (honest-provider-error-contract). A deliberately
52
+ // small public projection of the internal taxonomy:
53
+ // - client: the request itself is fixable by the caller
54
+ // - upstream_rule: the upstream service refused it under its own business
55
+ // rules (deterministic) or rate limits
56
+ // - upstream_failure: the upstream service malfunctioned — retryable
57
+ // - apifuse: an APIFuse-side fault (provider bug, platform dependency)
58
+ export const PROVIDER_ERROR_SOURCES = [
59
+ "client",
60
+ "upstream_rule",
61
+ "upstream_failure",
62
+ "apifuse",
63
+ ] as const;
64
+
65
+ export type ProviderErrorSource = (typeof PROVIDER_ERROR_SOURCES)[number];
66
+
67
+ export function sourceForCategory(category: ProviderErrorCategory): ProviderErrorSource {
68
+ switch (category) {
69
+ case "input_validation":
70
+ case "credential_expired":
71
+ case "credential_unavailable":
72
+ case "client_cancelled":
73
+ return "client";
74
+ case "upstream_rejected":
75
+ case "upstream_rate_limited":
76
+ return "upstream_rule";
77
+ case "timeout":
78
+ case "network":
79
+ case "upstream_http":
80
+ case "upstream_auth":
81
+ case "upstream_schema_drift":
82
+ case "anti_bot_blocked":
83
+ return "upstream_failure";
84
+ default:
85
+ // ok never reaches error serialization; provider_error,
86
+ // internal_error, output_validation, proxy_pool,
87
+ // dependency_unavailable, unsupported_transport, unclassified are
88
+ // APIFuse-side faults.
89
+ return "apifuse";
90
+ }
91
+ }
package/src/provider.ts CHANGED
@@ -3,7 +3,7 @@ export {
3
3
  credentialsAuthChallenge,
4
4
  createAuthFlowHelpers,
5
5
  defineCredentialsAuth,
6
- } from "./auth";
6
+ } from "./auth.js";
7
7
  export type {
8
8
  CredentialsAuthChallengeDefinition,
9
9
  CredentialsAuthChallengeRequest,
@@ -16,8 +16,8 @@ export type {
16
16
  CredentialsAuthLoginResult,
17
17
  DefineCredentialsAuthOptions,
18
18
  DefinedCredentialsAuth,
19
- } from "./auth";
20
- export { createFormCeremony } from "./ceremonies";
19
+ } from "./auth.js";
20
+ export { createFormCeremony } from "./ceremonies/index.js";
21
21
  export {
22
22
  assertFreshProviderChoiceIssuedAt,
23
23
  createProviderChoiceToken,
@@ -25,7 +25,7 @@ export {
25
25
  type ProviderChoiceTokenErrorReason,
26
26
  type ProviderChoiceTokenPayload,
27
27
  parseProviderChoiceToken,
28
- } from "./choice-token";
28
+ } from "./choice-token.js";
29
29
  export {
30
30
  centered,
31
31
  delayed,
@@ -34,9 +34,10 @@ export {
34
34
  defineProvider,
35
35
  defineSmsOtpMatcher,
36
36
  every,
37
- } from "./define";
37
+ } from "./define.js";
38
38
  export {
39
39
  AuthError,
40
+ HttpRedirectError,
40
41
  isProviderError,
41
42
  isSessionExpiredError,
42
43
  isTransportError,
@@ -44,18 +45,19 @@ export {
44
45
  SessionExpiredError,
45
46
  TransportError,
46
47
  ValidationError,
47
- } from "./errors";
48
+ } from "./errors.js";
48
49
  export {
49
50
  getProviderLocalePath,
50
51
  providerLocaleKey,
51
52
  qualifyProviderLocaleKey,
52
- } from "./i18n";
53
+ } from "./i18n/index.js";
53
54
  export {
54
55
  type CreateProviderChoiceContextOptions,
55
56
  createProviderChoiceContext,
56
57
  createTestProviderChoiceContext,
57
58
  PROVIDER_RUNTIME_CHOICE_TOKEN_MASTER_SECRET_ENV,
58
- } from "./runtime/choice";
59
+ PROVIDER_RUNTIME_CHOICE_WORD_ISSUANCE_ENV,
60
+ } from "./runtime/choice.js";
59
61
  export {
60
62
  APIFUSE_DESCRIPTION_KEY_META_KEY,
61
63
  APIFUSE_REDACTION_MARKER,
@@ -72,7 +74,7 @@ export {
72
74
  type SensitivePath,
73
75
  sensitive,
74
76
  z,
75
- } from "./schema";
77
+ } from "./schema.js";
76
78
  export type {
77
79
  AuthAbortData,
78
80
  AuthAbortRetry,
@@ -91,14 +93,38 @@ export type {
91
93
  HealthJourneyRunContext,
92
94
  HealthJourneyRunResult,
93
95
  HealthScheduleRandomization,
96
+ HttpRedirectFailureReason,
97
+ HttpRedirectPolicy,
98
+ HttpRedirectPolicyMode,
94
99
  HttpRetryOptions,
95
100
  HttpRetrySummary,
96
101
  InferSchemaOutput,
102
+ NativeContext,
103
+ NativeNetworkClient,
104
+ NativeNetworkCloseReason,
105
+ NativeNetworkConnection,
106
+ NativeNetworkConnectInput,
107
+ NativeNetworkConnectOptions,
108
+ NativeNetworkDynamicGrantOptions,
109
+ NativeNetworkEgressGrant,
110
+ NativeProviderConfig,
111
+ NativeProviderContext,
112
+ NativeProxyDrainHandler,
113
+ NativeProxyEgressInfo,
114
+ NativeProxyExpiringEvent,
115
+ NativeProxyExpiringReason,
116
+ NativeTcpDynamicEgressRule,
117
+ NativeTcpEgressGrant,
118
+ NativeTcpEgressRule,
119
+ NativeTcpPortRange,
120
+ NativeTcpTlsMode,
121
+ NativeTlsConnectOptions,
97
122
  OperationApprovalPolicy,
98
123
  OperationContractMetadata,
99
124
  OperationDefinition,
100
125
  OperationDocMeta,
101
126
  OperationErrorCode,
127
+ ProviderErrorStatus,
102
128
  OperationInputExample,
103
129
  OperationLifecycle,
104
130
  OperationObservabilityConfig,
@@ -110,34 +136,63 @@ export type {
110
136
  OperationTransport,
111
137
  ProviderAccessVisibility,
112
138
  ProviderChoiceBindingOptions,
139
+ ProviderChoiceConsumeMode,
140
+ ProviderChoiceConsumeResult,
113
141
  ProviderChoiceContext,
142
+ ProviderChoiceExplicitParseResult,
114
143
  ProviderChoiceIssueOptions,
115
144
  ProviderChoiceParseOptions,
116
145
  ProviderContext,
117
146
  ProviderDefinition,
147
+ ProviderDeploymentOverrides,
148
+ ProviderFileRef,
149
+ ProviderFilesContext,
118
150
  ProviderLocale,
119
151
  ProviderLocaleKey,
120
152
  ProviderLocaleKeyInput,
121
153
  ProviderLogoProfile,
122
154
  ProviderProxyPolicy,
155
+ ProxiedOAuthConfig,
123
156
  ProviderPublicConnectionMode,
124
157
  ProviderPublicProfile,
158
+ ProviderResolvedFile,
125
159
  ProviderRuntimeState,
126
160
  ProviderStateDurationString,
127
161
  ProviderStateNamespace,
128
162
  ProviderSupportLevel,
163
+ RedirectRunReason,
129
164
  SchemaLike,
130
165
  SmsOtpMatcherDefinition,
131
166
  StandardSchemaV1,
132
167
  StateCasResult,
133
168
  StateNamespaceOptions,
169
+ StateNamespaceScope,
134
170
  StateValue,
135
171
  StateWriteOptions,
136
- } from "./types";
172
+ } from "./types.js";
173
+ export {
174
+ NativeEgressGrantExpiredError,
175
+ NativeEgressNotDeclaredError,
176
+ NativeIdleTimeoutError,
177
+ NativeNetworkError,
178
+ NativeProxyExpiredError,
179
+ } from "./runtime/native-network-errors.js";
180
+ export type {
181
+ NativeGatewayProxy,
182
+ NativeGatewayProxyResolutionInput,
183
+ NativeGatewayProxySkipReason,
184
+ NativeGatewayProxySynthesizer,
185
+ NativeGatewayProxySynthesisResult,
186
+ NativeGatewayProxySynthesisInput,
187
+ NativeNetworkClientOptions,
188
+ NativeNetworkErrorCode,
189
+ VendorCredentialLookup,
190
+ VendorCredentialResolver,
191
+ } from "./runtime/native-network.js";
137
192
  export {
138
193
  HttpRetryAfterPolicy,
139
194
  HttpRetryDelayStrategy,
140
195
  HttpRetryJitter,
141
196
  HttpRetryPreset,
142
197
  HttpRetryUnsafeMethodPolicy,
143
- } from "./types";
198
+ } from "./types.js";
@@ -1,6 +1,6 @@
1
1
  import type { ZodType } from "zod";
2
2
 
3
- import type { LintDiagnostic } from "./lint";
3
+ import type { LintDiagnostic } from "./lint.js";
4
4
 
5
5
  type SchemaLike = ZodType & {
6
6
  def?: Record<string, unknown>;
@@ -55,8 +55,7 @@ function isSchemaRecord(value: unknown): value is Record<string, SchemaLike> {
55
55
  }
56
56
 
57
57
  function getObjectShape(schema: SchemaLike): Record<string, SchemaLike> {
58
- const rawShape =
59
- typeof schema.shape === "function" ? schema.shape() : schema.shape;
58
+ const rawShape = typeof schema.shape === "function" ? schema.shape() : schema.shape;
60
59
  if (isSchemaRecord(rawShape)) {
61
60
  return rawShape;
62
61
  }
@@ -69,10 +68,7 @@ function getObjectShape(schema: SchemaLike): Record<string, SchemaLike> {
69
68
  return isSchemaRecord(defShape) ? defShape : {};
70
69
  }
71
70
 
72
- function appendSchemaChildren(
73
- children: SchemaLike[],
74
- value: unknown,
75
- ): SchemaLike[] {
71
+ function appendSchemaChildren(children: SchemaLike[], value: unknown): SchemaLike[] {
76
72
  if (isSchema(value)) {
77
73
  children.push(value);
78
74
  return children;
@@ -183,26 +179,14 @@ function collectPublicSchemaFieldDiagnostics(
183
179
  });
184
180
  }
185
181
  diagnostics.push(
186
- ...collectPublicSchemaFieldDiagnostics(
187
- providerId,
188
- operationId,
189
- child,
190
- fieldPath,
191
- seen,
192
- ),
182
+ ...collectPublicSchemaFieldDiagnostics(providerId, operationId, child, fieldPath, seen),
193
183
  );
194
184
  }
195
185
 
196
186
  for (const child of getTransparentChildSchemas(schema)) {
197
187
  const childPath = schema.element === child ? `${basePath}[]` : basePath;
198
188
  diagnostics.push(
199
- ...collectPublicSchemaFieldDiagnostics(
200
- providerId,
201
- operationId,
202
- child,
203
- childPath,
204
- seen,
205
- ),
189
+ ...collectPublicSchemaFieldDiagnostics(providerId, operationId, child, childPath, seen),
206
190
  );
207
191
  }
208
192
 
@@ -221,17 +205,7 @@ export function lintPublicSchemaFieldNames(
221
205
  }
222
206
 
223
207
  return [
224
- ...collectPublicSchemaFieldDiagnostics(
225
- providerId,
226
- operationId,
227
- input,
228
- "input",
229
- ),
230
- ...collectPublicSchemaFieldDiagnostics(
231
- providerId,
232
- operationId,
233
- output,
234
- "output",
235
- ),
208
+ ...collectPublicSchemaFieldDiagnostics(providerId, operationId, input, "input"),
209
+ ...collectPublicSchemaFieldDiagnostics(providerId, operationId, output, "output"),
236
210
  ];
237
211
  }
@@ -1,4 +1,4 @@
1
- import { unwrapEnvelope } from "../utils/parse";
1
+ import { unwrapEnvelope } from "../utils/parse.js";
2
2
 
3
3
  function getResultCode(raw: unknown): string | undefined {
4
4
  if (!raw || typeof raw !== "object") {
@@ -33,10 +33,7 @@ export function checkResultCode(
33
33
  * Replace placeholder values with null
34
34
  * e.g., nullIfPlaceholder('해당없음', ['해당없음', '-', '']) → null
35
35
  */
36
- export function nullIfPlaceholder(
37
- v: unknown,
38
- patterns: string[],
39
- ): unknown | null {
36
+ export function nullIfPlaceholder(v: unknown, patterns: string[]): unknown | null {
40
37
  if (v === null || v === undefined) {
41
38
  return null;
42
39
  }
@@ -1,14 +1,17 @@
1
- import { ContextAccessError } from "../errors";
2
- import { createAuthFlowHelpers } from "../auth";
1
+ import { ContextAccessError } from "../errors.js";
2
+ import { createAuthFlowHelpers } from "../auth.js";
3
3
  import type {
4
4
  ContextScratchpad,
5
5
  EnvContext,
6
6
  FlowContext,
7
7
  HttpClient,
8
+ OcrContext,
8
9
  StealthClient,
9
10
  SttContext,
10
- } from "../types";
11
- import { createUnsupportedSttClient } from "./stt";
11
+ } from "../types.js";
12
+ import { createUnsupportedOcrClient } from "./ocr.js";
13
+ import { createUnsupportedResolverClient } from "./resolver-shared.js";
14
+ import { createUnsupportedSttClient } from "./stt.js";
12
15
 
13
16
  function normalizeAllowedKeys(allowedKeys: string[]): Set<string> {
14
17
  return new Set(allowedKeys.filter((key) => key.trim().length > 0));
@@ -16,9 +19,7 @@ function normalizeAllowedKeys(allowedKeys: string[]): Set<string> {
16
19
 
17
20
  function assertAllowedKey(allowedKeys: Set<string>, key: string): void {
18
21
  if (!allowedKeys.has(key)) {
19
- throw new ContextAccessError(
20
- `Context key "${key}" is not declared in context.keys.`,
21
- );
22
+ throw new ContextAccessError(`Context key "${key}" is not declared in context.keys.`);
22
23
  }
23
24
  }
24
25
 
@@ -50,6 +51,7 @@ export function createScratchpad(
50
51
  }
51
52
 
52
53
  export function createFlowContext(options: {
54
+ flowId?: string;
53
55
  http: HttpClient;
54
56
  stealth: StealthClient;
55
57
  env: EnvContext;
@@ -59,9 +61,11 @@ export function createFlowContext(options: {
59
61
  externalRef?: string;
60
62
  allowedKeys: string[];
61
63
  initialContext?: Record<string, unknown>;
64
+ ocr?: OcrContext;
62
65
  stt?: SttContext;
63
66
  }): FlowContext {
64
67
  return {
68
+ flowId: options.flowId,
65
69
  connectionId: options.connectionId,
66
70
  externalRef: options.externalRef,
67
71
  tenantId: options.tenantId,
@@ -70,7 +74,9 @@ export function createFlowContext(options: {
70
74
  stealth: options.stealth,
71
75
  env: options.env,
72
76
  context: createScratchpad(options.allowedKeys, options.initialContext),
77
+ ocr: options.ocr ?? createUnsupportedOcrClient(),
73
78
  stt: options.stt ?? createUnsupportedSttClient(),
79
+ resolver: createUnsupportedResolverClient("Resolver is not available in auth flow context"),
74
80
  auth: createAuthFlowHelpers(),
75
81
  };
76
82
  }