@code-yeongyu/senpi 2026.9.12-3 → 2026.9.12

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 (1525) hide show
  1. package/CHANGELOG.md +0 -60
  2. package/README.md +1 -1
  3. package/dist/bun/cli.d.ts +1 -2
  4. package/dist/bun/cli.d.ts.map +1 -1
  5. package/dist/bun/cli.js +8 -5
  6. package/dist/bun/cli.js.map +1 -1
  7. package/dist/bun/register-bedrock.d.ts +2 -0
  8. package/dist/bun/register-bedrock.d.ts.map +1 -0
  9. package/dist/bun/register-bedrock.js +4 -0
  10. package/dist/bun/register-bedrock.js.map +1 -0
  11. package/dist/cli/config-selector.d.ts.map +1 -1
  12. package/dist/cli/config-selector.js +1 -2
  13. package/dist/cli/config-selector.js.map +1 -1
  14. package/dist/cli/experimental/auth.d.ts +16 -0
  15. package/dist/cli/experimental/auth.d.ts.map +1 -0
  16. package/dist/cli/experimental/auth.js +13 -0
  17. package/dist/cli/experimental/auth.js.map +1 -0
  18. package/dist/cli/experimental/cli.d.ts +6 -0
  19. package/dist/cli/experimental/cli.d.ts.map +1 -0
  20. package/dist/cli/experimental/cli.js +5 -0
  21. package/dist/cli/experimental/cli.js.map +1 -0
  22. package/dist/cli/experimental/command-options.d.ts +17 -0
  23. package/dist/cli/experimental/command-options.d.ts.map +1 -0
  24. package/dist/cli/experimental/command-options.js +35 -0
  25. package/dist/cli/experimental/command-options.js.map +1 -0
  26. package/dist/cli/experimental/command.d.ts +63 -0
  27. package/dist/cli/experimental/command.d.ts.map +1 -0
  28. package/dist/cli/experimental/command.js +127 -0
  29. package/dist/cli/experimental/command.js.map +1 -0
  30. package/dist/cli/experimental/commands/client.d.ts +13 -0
  31. package/dist/cli/experimental/commands/client.d.ts.map +1 -0
  32. package/dist/cli/experimental/commands/client.js +25 -0
  33. package/dist/cli/experimental/commands/client.js.map +1 -0
  34. package/dist/cli/experimental/commands/pi.d.ts +15 -0
  35. package/dist/cli/experimental/commands/pi.d.ts.map +1 -0
  36. package/dist/cli/experimental/commands/pi.js +28 -0
  37. package/dist/cli/experimental/commands/pi.js.map +1 -0
  38. package/dist/cli/experimental/commands/server.d.ts +13 -0
  39. package/dist/cli/experimental/commands/server.d.ts.map +1 -0
  40. package/dist/cli/experimental/commands/server.js +25 -0
  41. package/dist/cli/experimental/commands/server.js.map +1 -0
  42. package/dist/cli/experimental/transport-address.d.ts +10 -0
  43. package/dist/cli/experimental/transport-address.d.ts.map +1 -0
  44. package/dist/cli/experimental/transport-address.js +38 -0
  45. package/dist/cli/experimental/transport-address.js.map +1 -0
  46. package/dist/cli.js +0 -3
  47. package/dist/cli.js.map +1 -1
  48. package/dist/client/index.d.ts +2 -1
  49. package/dist/client/index.d.ts.map +1 -1
  50. package/dist/client/index.js +2 -1
  51. package/dist/client/index.js.map +1 -1
  52. package/dist/client/remote-session.d.ts +53 -0
  53. package/dist/client/remote-session.d.ts.map +1 -0
  54. package/dist/client/remote-session.js +340 -0
  55. package/dist/client/remote-session.js.map +1 -0
  56. package/dist/client/transcript.d.ts +12 -0
  57. package/dist/client/transcript.d.ts.map +1 -0
  58. package/dist/client/transcript.js +98 -0
  59. package/dist/client/transcript.js.map +1 -0
  60. package/dist/config.d.ts +0 -1
  61. package/dist/config.d.ts.map +1 -1
  62. package/dist/config.js +0 -1
  63. package/dist/config.js.map +1 -1
  64. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  65. package/dist/core/agent-session-runtime.js +6 -18
  66. package/dist/core/agent-session-runtime.js.map +1 -1
  67. package/dist/core/agent-session.d.ts +17 -54
  68. package/dist/core/agent-session.d.ts.map +1 -1
  69. package/dist/core/agent-session.js +157 -153
  70. package/dist/core/agent-session.js.map +1 -1
  71. package/dist/core/compaction/branch-summarization.d.ts +1 -1
  72. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  73. package/dist/core/compaction/branch-summarization.js +4 -6
  74. package/dist/core/compaction/branch-summarization.js.map +1 -1
  75. package/dist/core/compaction-settings-access.d.ts +2 -18
  76. package/dist/core/compaction-settings-access.d.ts.map +1 -1
  77. package/dist/core/compaction-settings-access.js +4 -35
  78. package/dist/core/compaction-settings-access.js.map +1 -1
  79. package/dist/core/compaction-settings-resolver.d.ts +2 -2
  80. package/dist/core/compaction-settings-resolver.d.ts.map +1 -1
  81. package/dist/core/compaction-settings-resolver.js +3 -6
  82. package/dist/core/compaction-settings-resolver.js.map +1 -1
  83. package/dist/core/extensions/builtin/ask-user/extension.d.ts.map +1 -1
  84. package/dist/core/extensions/builtin/ask-user/extension.js +0 -11
  85. package/dist/core/extensions/builtin/ask-user/extension.js.map +1 -1
  86. package/dist/core/extensions/builtin/cursor-cli-oauth/models.d.ts.map +1 -1
  87. package/dist/core/extensions/builtin/cursor-cli-oauth/models.js +1 -2
  88. package/dist/core/extensions/builtin/cursor-cli-oauth/models.js.map +1 -1
  89. package/dist/core/extensions/builtin/prompt-preset/presets.d.ts.map +1 -1
  90. package/dist/core/extensions/builtin/prompt-preset/presets.js +1 -7
  91. package/dist/core/extensions/builtin/prompt-preset/presets.js.map +1 -1
  92. package/dist/core/extensions/loader.d.ts.map +1 -1
  93. package/dist/core/extensions/loader.js +2 -4
  94. package/dist/core/extensions/loader.js.map +1 -1
  95. package/dist/core/keybindings.d.ts +0 -10
  96. package/dist/core/keybindings.d.ts.map +1 -1
  97. package/dist/core/keybindings.js +0 -8
  98. package/dist/core/keybindings.js.map +1 -1
  99. package/dist/core/messages.d.ts +1 -1
  100. package/dist/core/messages.d.ts.map +1 -1
  101. package/dist/core/messages.js.map +1 -1
  102. package/dist/core/model-registry.d.ts +1 -5
  103. package/dist/core/model-registry.d.ts.map +1 -1
  104. package/dist/core/model-registry.js +0 -8
  105. package/dist/core/model-registry.js.map +1 -1
  106. package/dist/core/model-resolver.d.ts.map +1 -1
  107. package/dist/core/model-resolver.js +0 -2
  108. package/dist/core/model-resolver.js.map +1 -1
  109. package/dist/core/model-runtime.d.ts +0 -1
  110. package/dist/core/model-runtime.d.ts.map +1 -1
  111. package/dist/core/model-runtime.js +2 -5
  112. package/dist/core/model-runtime.js.map +1 -1
  113. package/dist/core/retry-fallback/settings.d.ts +0 -2
  114. package/dist/core/retry-fallback/settings.d.ts.map +1 -1
  115. package/dist/core/retry-fallback/settings.js.map +1 -1
  116. package/dist/core/session-manager.d.ts +2 -5
  117. package/dist/core/session-manager.d.ts.map +1 -1
  118. package/dist/core/session-manager.js +19 -68
  119. package/dist/core/session-manager.js.map +1 -1
  120. package/dist/core/session-write-reservation.d.ts +0 -9
  121. package/dist/core/session-write-reservation.d.ts.map +1 -1
  122. package/dist/core/session-write-reservation.js +0 -33
  123. package/dist/core/session-write-reservation.js.map +1 -1
  124. package/dist/core/settings-manager.d.ts +5 -12
  125. package/dist/core/settings-manager.d.ts.map +1 -1
  126. package/dist/core/settings-manager.js +6 -18
  127. package/dist/core/settings-manager.js.map +1 -1
  128. package/dist/core/settings-public-types.d.ts +1 -1
  129. package/dist/core/settings-public-types.d.ts.map +1 -1
  130. package/dist/core/settings-public-types.js.map +1 -1
  131. package/dist/core/skills.d.ts +1 -1
  132. package/dist/core/skills.d.ts.map +1 -1
  133. package/dist/core/skills.js +2 -6
  134. package/dist/core/skills.js.map +1 -1
  135. package/dist/core/system-prompt.d.ts.map +1 -1
  136. package/dist/core/system-prompt.js +9 -8
  137. package/dist/core/system-prompt.js.map +1 -1
  138. package/dist/core/tools/bash.d.ts.map +1 -1
  139. package/dist/core/tools/bash.js +142 -3
  140. package/dist/core/tools/bash.js.map +1 -1
  141. package/dist/core/tools/edit.d.ts +12 -1
  142. package/dist/core/tools/edit.d.ts.map +1 -1
  143. package/dist/core/tools/edit.js +168 -4
  144. package/dist/core/tools/edit.js.map +1 -1
  145. package/dist/core/tools/find.d.ts.map +1 -1
  146. package/dist/core/tools/find.js +53 -2
  147. package/dist/core/tools/find.js.map +1 -1
  148. package/dist/core/tools/grep.d.ts.map +1 -1
  149. package/dist/core/tools/grep.js +58 -2
  150. package/dist/core/tools/grep.js.map +1 -1
  151. package/dist/core/tools/ls.d.ts.map +1 -1
  152. package/dist/core/tools/ls.js +47 -2
  153. package/dist/core/tools/ls.js.map +1 -1
  154. package/dist/core/tools/read.d.ts +4 -1
  155. package/dist/core/tools/read.d.ts.map +1 -1
  156. package/dist/core/tools/read.js +141 -4
  157. package/dist/core/tools/read.js.map +1 -1
  158. package/dist/core/tools/write.d.ts.map +1 -1
  159. package/dist/core/tools/write.js +153 -4
  160. package/dist/core/tools/write.js.map +1 -1
  161. package/dist/index.d.ts +2 -2
  162. package/dist/index.d.ts.map +1 -1
  163. package/dist/index.js.map +1 -1
  164. package/dist/migrations.d.ts.map +1 -1
  165. package/dist/migrations.js +2 -2
  166. package/dist/migrations.js.map +1 -1
  167. package/dist/modes/app-server/threads/turn-runtime.d.ts +1 -3
  168. package/dist/modes/app-server/threads/turn-runtime.d.ts.map +1 -1
  169. package/dist/modes/app-server/threads/turn-runtime.js.map +1 -1
  170. package/dist/modes/app-server/threads/turns.js +1 -1
  171. package/dist/modes/app-server/threads/turns.js.map +1 -1
  172. package/dist/modes/app-server/turn-adapter.js +2 -4
  173. package/dist/modes/app-server/turn-adapter.js.map +1 -1
  174. package/dist/modes/interactive/components/ask-user-async-widget.d.ts +12 -17
  175. package/dist/modes/interactive/components/ask-user-async-widget.d.ts.map +1 -1
  176. package/dist/modes/interactive/components/ask-user-async-widget.js +23 -47
  177. package/dist/modes/interactive/components/ask-user-async-widget.js.map +1 -1
  178. package/dist/modes/interactive/components/assistant-message.d.ts +0 -7
  179. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  180. package/dist/modes/interactive/components/assistant-message.js +2 -26
  181. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  182. package/dist/modes/interactive/components/assistant-render-descriptors.d.ts +0 -4
  183. package/dist/modes/interactive/components/assistant-render-descriptors.d.ts.map +1 -1
  184. package/dist/modes/interactive/components/assistant-render-descriptors.js +5 -8
  185. package/dist/modes/interactive/components/assistant-render-descriptors.js.map +1 -1
  186. package/dist/modes/interactive/components/custom-editor.d.ts +1 -10
  187. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  188. package/dist/modes/interactive/components/custom-editor.js +1 -37
  189. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  190. package/dist/modes/interactive/components/index.d.ts +1 -1
  191. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  192. package/dist/modes/interactive/components/index.js.map +1 -1
  193. package/dist/modes/interactive/components/scoped-models-selector.js +8 -8
  194. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  195. package/dist/modes/interactive/components/status-indicator.d.ts +1 -4
  196. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -1
  197. package/dist/modes/interactive/components/status-indicator.js +2 -14
  198. package/dist/modes/interactive/components/status-indicator.js.map +1 -1
  199. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  200. package/dist/modes/interactive/components/thinking-selector.js +4 -4
  201. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  202. package/dist/modes/interactive/components/tool-execution-renderer.d.ts +1 -4
  203. package/dist/modes/interactive/components/tool-execution-renderer.d.ts.map +1 -1
  204. package/dist/modes/interactive/components/tool-execution-renderer.js +10 -23
  205. package/dist/modes/interactive/components/tool-execution-renderer.js.map +1 -1
  206. package/dist/modes/interactive/components/tool-execution-types.d.ts +2 -18
  207. package/dist/modes/interactive/components/tool-execution-types.d.ts.map +1 -1
  208. package/dist/modes/interactive/components/tool-execution-types.js.map +1 -1
  209. package/dist/modes/interactive/components/tool-execution.d.ts +3 -3
  210. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  211. package/dist/modes/interactive/components/tool-execution.js +0 -5
  212. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  213. package/dist/modes/interactive/interactive-mode.d.ts +15 -10
  214. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  215. package/dist/modes/interactive/interactive-mode.js +138 -178
  216. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  217. package/dist/modes/interactive/theme/dark.json +1 -2
  218. package/dist/modes/interactive/theme/grok-day.json +1 -2
  219. package/dist/modes/interactive/theme/grok-night.json +1 -2
  220. package/dist/modes/interactive/theme/light.json +1 -2
  221. package/dist/modes/interactive/theme/theme-controller.d.ts +0 -1
  222. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
  223. package/dist/modes/interactive/theme/theme-controller.js +0 -5
  224. package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
  225. package/dist/modes/interactive/theme/theme-schema.json +2 -6
  226. package/dist/modes/interactive/theme/theme.d.ts +5 -10
  227. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  228. package/dist/modes/interactive/theme/theme.js +117 -14
  229. package/dist/modes/interactive/theme/theme.js.map +1 -1
  230. package/dist/modes/interactive/tips/catalog/input-tips.d.ts +0 -5
  231. package/dist/modes/interactive/tips/catalog/input-tips.d.ts.map +1 -1
  232. package/dist/modes/interactive/tips/catalog/input-tips.js +0 -5
  233. package/dist/modes/interactive/tips/catalog/input-tips.js.map +1 -1
  234. package/dist/modes/rpc/connection-handler.d.ts.map +1 -1
  235. package/dist/modes/rpc/connection-handler.js +2 -8
  236. package/dist/modes/rpc/connection-handler.js.map +1 -1
  237. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  238. package/dist/modes/rpc/rpc-client.js +1 -11
  239. package/dist/modes/rpc/rpc-client.js.map +1 -1
  240. package/dist/modes/rpc/rpc-types.d.ts +1 -2
  241. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  242. package/dist/modes/rpc/rpc-types.js +0 -1
  243. package/dist/modes/rpc/rpc-types.js.map +1 -1
  244. package/dist/modes/rpc/session-registry.d.ts +1 -3
  245. package/dist/modes/rpc/session-registry.d.ts.map +1 -1
  246. package/dist/modes/rpc/session-registry.js.map +1 -1
  247. package/dist/modes/rpc/session-worker-client.d.ts +8 -10
  248. package/dist/modes/rpc/session-worker-client.d.ts.map +1 -1
  249. package/dist/modes/rpc/session-worker-client.js +23 -14
  250. package/dist/modes/rpc/session-worker-client.js.map +1 -1
  251. package/dist/modes/rpc/session-worker-protocol.d.ts +0 -10
  252. package/dist/modes/rpc/session-worker-protocol.d.ts.map +1 -1
  253. package/dist/modes/rpc/session-worker-protocol.js +0 -2
  254. package/dist/modes/rpc/session-worker-protocol.js.map +1 -1
  255. package/dist/modes/rpc/session-worker.js +16 -12
  256. package/dist/modes/rpc/session-worker.js.map +1 -1
  257. package/dist/modes/rpc/worker-session-registry.d.ts +0 -12
  258. package/dist/modes/rpc/worker-session-registry.d.ts.map +1 -1
  259. package/dist/modes/rpc/worker-session-registry.js +24 -51
  260. package/dist/modes/rpc/worker-session-registry.js.map +1 -1
  261. package/dist/senpi +0 -3
  262. package/dist/server/create-harness.d.ts +26 -0
  263. package/dist/server/create-harness.d.ts.map +1 -0
  264. package/dist/server/create-harness.js +106 -0
  265. package/dist/server/create-harness.js.map +1 -0
  266. package/dist/utils/clipboard-image.d.ts.map +1 -1
  267. package/dist/utils/clipboard-image.js +69 -52
  268. package/dist/utils/clipboard-image.js.map +1 -1
  269. package/dist/utils/clipboard-native.d.ts +11 -0
  270. package/dist/utils/clipboard-native.d.ts.map +1 -0
  271. package/dist/utils/clipboard-native.js +20 -0
  272. package/dist/utils/clipboard-native.js.map +1 -0
  273. package/dist/utils/clipboard.d.ts.map +1 -1
  274. package/dist/utils/clipboard.js +126 -49
  275. package/dist/utils/clipboard.js.map +1 -1
  276. package/dist/utils/exif-orientation.d.ts.map +1 -1
  277. package/dist/utils/exif-orientation.js +3 -2
  278. package/dist/utils/exif-orientation.js.map +1 -1
  279. package/dist/utils/tools-manager.d.ts +0 -1
  280. package/dist/utils/tools-manager.d.ts.map +1 -1
  281. package/dist/utils/tools-manager.js +19 -41
  282. package/dist/utils/tools-manager.js.map +1 -1
  283. package/docs/AGENTS.md +67 -0
  284. package/docs/compaction.md +13 -39
  285. package/docs/containerization.md +0 -45
  286. package/docs/development.md +0 -19
  287. package/docs/docs.json +0 -4
  288. package/docs/environment-variables.md +0 -2
  289. package/docs/extensions.md +10 -21
  290. package/docs/keybindings.md +2 -7
  291. package/docs/models.md +1 -1
  292. package/docs/providers.md +1 -1
  293. package/docs/rpc.md +8 -16
  294. package/docs/sdk.md +0 -7
  295. package/docs/session-format.md +38 -52
  296. package/docs/settings.md +4 -40
  297. package/docs/skills.md +1 -1
  298. package/docs/termux.md +1 -0
  299. package/docs/themes.md +6 -8
  300. package/docs/tui.md +3 -22
  301. package/examples/README.md +0 -3
  302. package/examples/extensions/dynamic-resources/dynamic.json +0 -2
  303. package/node_modules/@aws-sdk/client-bedrock-runtime/dist-cjs/index.js +1 -1
  304. package/node_modules/@aws-sdk/client-bedrock-runtime/package.json +3 -3
  305. package/node_modules/@aws-sdk/core/dist-cjs/submodules/util/index.js +0 -5
  306. package/node_modules/@aws-sdk/core/dist-es/submodules/util/index.js +0 -1
  307. package/node_modules/@aws-sdk/core/dist-types/submodules/util/index.d.ts +0 -1
  308. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/util/index.d.ts +0 -1
  309. package/node_modules/@aws-sdk/core/package.json +1 -1
  310. package/node_modules/@aws-sdk/credential-provider-env/package.json +2 -2
  311. package/node_modules/@aws-sdk/credential-provider-http/package.json +2 -2
  312. package/node_modules/@aws-sdk/credential-provider-ini/package.json +9 -9
  313. package/node_modules/@aws-sdk/credential-provider-login/package.json +3 -3
  314. package/node_modules/@aws-sdk/credential-provider-node/dist-cjs/index.js +0 -2
  315. package/node_modules/@aws-sdk/credential-provider-node/dist-es/runtime/memoize-chain.js +0 -2
  316. package/node_modules/@aws-sdk/credential-provider-node/package.json +7 -7
  317. package/node_modules/@aws-sdk/credential-provider-process/package.json +2 -2
  318. package/node_modules/@aws-sdk/credential-provider-sso/package.json +4 -4
  319. package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +3 -3
  320. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/index.js +1 -1
  321. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/index.js +1 -1
  322. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/index.js +1 -1
  323. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/index.js +1 -1
  324. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/index.js +1 -1
  325. package/node_modules/@aws-sdk/nested-clients/package.json +2 -2
  326. package/node_modules/@aws-sdk/token-providers/package.json +1 -1
  327. package/node_modules/@code-yeongyu/senpi-codemode/CHANGELOG.md +0 -24
  328. package/node_modules/@code-yeongyu/senpi-codemode/package.json +5 -5
  329. package/node_modules/@earendil-works/pi-agent-core/README.md +0 -4
  330. package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.d.ts +384 -639
  331. package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.d.ts.map +1 -1
  332. package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.js +250 -5
  333. package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.js.map +1 -1
  334. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/branch-summarization.d.ts +6 -12
  335. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/branch-summarization.d.ts.map +1 -1
  336. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/branch-summarization.js +27 -33
  337. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/branch-summarization.js.map +1 -1
  338. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.d.ts +8 -30
  339. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.d.ts.map +1 -1
  340. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js +64 -53
  341. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js.map +1 -1
  342. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.d.ts +28 -25
  343. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.d.ts.map +1 -1
  344. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.js +125 -368
  345. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.js.map +1 -1
  346. package/node_modules/@earendil-works/pi-agent-core/dist/harness/events.d.ts +38 -20
  347. package/node_modules/@earendil-works/pi-agent-core/dist/harness/events.d.ts.map +1 -1
  348. package/node_modules/@earendil-works/pi-agent-core/dist/harness/events.js +55 -233
  349. package/node_modules/@earendil-works/pi-agent-core/dist/harness/events.js.map +1 -1
  350. package/node_modules/@earendil-works/pi-agent-core/dist/harness/messages.d.ts +2 -2
  351. package/node_modules/@earendil-works/pi-agent-core/dist/harness/messages.d.ts.map +1 -1
  352. package/node_modules/@earendil-works/pi-agent-core/dist/harness/messages.js.map +1 -1
  353. package/node_modules/@earendil-works/pi-agent-core/dist/harness/prompt-templates.d.ts +2 -3
  354. package/node_modules/@earendil-works/pi-agent-core/dist/harness/prompt-templates.d.ts.map +1 -1
  355. package/node_modules/@earendil-works/pi-agent-core/dist/harness/prompt-templates.js +17 -17
  356. package/node_modules/@earendil-works/pi-agent-core/dist/harness/prompt-templates.js.map +1 -1
  357. package/node_modules/@earendil-works/pi-agent-core/dist/harness/reducer.d.ts +100 -0
  358. package/node_modules/@earendil-works/pi-agent-core/dist/harness/reducer.d.ts.map +1 -0
  359. package/node_modules/@earendil-works/pi-agent-core/dist/harness/reducer.js +420 -0
  360. package/node_modules/@earendil-works/pi-agent-core/dist/harness/reducer.js.map +1 -0
  361. package/node_modules/@earendil-works/pi-agent-core/dist/harness/result.d.ts +0 -93
  362. package/node_modules/@earendil-works/pi-agent-core/dist/harness/result.d.ts.map +1 -1
  363. package/node_modules/@earendil-works/pi-agent-core/dist/harness/result.js +0 -39
  364. package/node_modules/@earendil-works/pi-agent-core/dist/harness/result.js.map +1 -1
  365. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/context.d.ts +19 -6
  366. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/context.d.ts.map +1 -1
  367. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/context.js +53 -31
  368. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/context.js.map +1 -1
  369. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/index.d.ts +5 -9
  370. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/index.d.ts.map +1 -1
  371. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/index.js +4 -7
  372. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/index.js.map +1 -1
  373. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/codec.d.ts +8 -19
  374. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/codec.d.ts.map +1 -1
  375. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/codec.js +219 -34
  376. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/codec.js.map +1 -1
  377. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/errors.d.ts +9 -0
  378. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/errors.d.ts.map +1 -0
  379. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/errors.js +18 -0
  380. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/errors.js.map +1 -0
  381. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/repo.d.ts +24 -27
  382. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/repo.d.ts.map +1 -1
  383. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/repo.js +151 -276
  384. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/repo.js.map +1 -1
  385. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/storage.d.ts +41 -39
  386. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/storage.d.ts.map +1 -1
  387. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/storage.js +196 -175
  388. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/storage.js.map +1 -1
  389. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/types.d.ts +22 -23
  390. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/types.d.ts.map +1 -1
  391. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/types.js +1 -2
  392. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/types.js.map +1 -1
  393. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl.d.ts +3 -0
  394. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl.d.ts.map +1 -0
  395. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl.js +2 -0
  396. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl.js.map +1 -0
  397. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory.d.ts +40 -44
  398. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory.d.ts.map +1 -1
  399. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory.js +115 -333
  400. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory.js.map +1 -1
  401. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.d.ts +51 -78
  402. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.d.ts.map +1 -1
  403. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.js +207 -327
  404. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.js.map +1 -1
  405. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/state.d.ts +65 -0
  406. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/state.d.ts.map +1 -0
  407. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/state.js +320 -0
  408. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/state.js.map +1 -0
  409. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/conformance.d.ts +4 -0
  410. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/conformance.d.ts.map +1 -0
  411. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/conformance.js +762 -0
  412. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/conformance.js.map +1 -0
  413. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/index.d.ts +2 -9
  414. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/index.d.ts.map +1 -1
  415. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/index.js +1 -8
  416. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/index.js.map +1 -1
  417. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/types.d.ts +7 -5
  418. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/types.d.ts.map +1 -1
  419. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/types.js.map +1 -1
  420. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/types.d.ts +265 -425
  421. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/types.d.ts.map +1 -1
  422. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/types.js +7 -7
  423. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/types.js.map +1 -1
  424. package/node_modules/@earendil-works/pi-agent-core/dist/harness/skills.d.ts +2 -3
  425. package/node_modules/@earendil-works/pi-agent-core/dist/harness/skills.d.ts.map +1 -1
  426. package/node_modules/@earendil-works/pi-agent-core/dist/harness/skills.js +26 -29
  427. package/node_modules/@earendil-works/pi-agent-core/dist/harness/skills.js.map +1 -1
  428. package/node_modules/@earendil-works/pi-agent-core/dist/harness/telemetry.d.ts +43 -64
  429. package/node_modules/@earendil-works/pi-agent-core/dist/harness/telemetry.d.ts.map +1 -1
  430. package/node_modules/@earendil-works/pi-agent-core/dist/harness/telemetry.js +26 -45
  431. package/node_modules/@earendil-works/pi-agent-core/dist/harness/telemetry.js.map +1 -1
  432. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/bash.d.ts +4 -4
  433. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/bash.d.ts.map +1 -1
  434. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/bash.js +93 -66
  435. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/bash.js.map +1 -1
  436. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/edit.d.ts.map +1 -1
  437. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/edit.js +13 -17
  438. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/edit.js.map +1 -1
  439. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/file-mutation-queue.d.ts +1 -2
  440. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/file-mutation-queue.d.ts.map +1 -1
  441. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/file-mutation-queue.js +5 -5
  442. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/file-mutation-queue.js.map +1 -1
  443. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/path-utils.d.ts +2 -3
  444. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/path-utils.d.ts.map +1 -1
  445. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/path-utils.js +5 -5
  446. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/path-utils.js.map +1 -1
  447. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/read.d.ts +1 -2
  448. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/read.d.ts.map +1 -1
  449. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/read.js +6 -4
  450. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/read.js.map +1 -1
  451. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/write.d.ts.map +1 -1
  452. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/write.js +8 -12
  453. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/write.js.map +1 -1
  454. package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.d.ts +45 -128
  455. package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.d.ts.map +1 -1
  456. package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.js.map +1 -1
  457. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/shell-output.d.ts +5 -19
  458. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/shell-output.d.ts.map +1 -1
  459. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/shell-output.js +192 -65
  460. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/shell-output.js.map +1 -1
  461. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/truncate.d.ts +0 -1
  462. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/truncate.d.ts.map +1 -1
  463. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/truncate.js +1 -1
  464. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/truncate.js.map +1 -1
  465. package/node_modules/@earendil-works/pi-agent-core/dist/index.d.ts +1 -4
  466. package/node_modules/@earendil-works/pi-agent-core/dist/index.d.ts.map +1 -1
  467. package/node_modules/@earendil-works/pi-agent-core/dist/index.js +6 -3
  468. package/node_modules/@earendil-works/pi-agent-core/dist/index.js.map +1 -1
  469. package/node_modules/@earendil-works/pi-agent-core/dist/search/index.d.ts +16 -24
  470. package/node_modules/@earendil-works/pi-agent-core/dist/search/index.d.ts.map +1 -1
  471. package/node_modules/@earendil-works/pi-agent-core/dist/search/index.js +1 -1
  472. package/node_modules/@earendil-works/pi-agent-core/dist/search/index.js.map +1 -1
  473. package/node_modules/@earendil-works/pi-agent-core/dist/search/scanning.d.ts +29 -0
  474. package/node_modules/@earendil-works/pi-agent-core/dist/search/scanning.d.ts.map +1 -0
  475. package/node_modules/@earendil-works/pi-agent-core/dist/search/scanning.js +103 -0
  476. package/node_modules/@earendil-works/pi-agent-core/dist/search/scanning.js.map +1 -0
  477. package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts +0 -2
  478. package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts.map +1 -1
  479. package/node_modules/@earendil-works/pi-agent-core/dist/types.js.map +1 -1
  480. package/node_modules/@earendil-works/pi-agent-core/package.json +6 -27
  481. package/node_modules/@earendil-works/pi-ai/README.md +4 -39
  482. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.d.ts.map +1 -1
  483. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js +1 -8
  484. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js.map +1 -1
  485. package/node_modules/@earendil-works/pi-ai/dist/api/cloudflare-gateway-binding.d.ts +69 -0
  486. package/node_modules/@earendil-works/pi-ai/dist/api/cloudflare-gateway-binding.d.ts.map +1 -0
  487. package/node_modules/@earendil-works/pi-ai/dist/api/cloudflare-gateway-binding.js +159 -0
  488. package/node_modules/@earendil-works/pi-ai/dist/api/cloudflare-gateway-binding.js.map +1 -0
  489. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/measure.d.ts +0 -11
  490. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/measure.d.ts.map +1 -1
  491. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/measure.js +0 -18
  492. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/measure.js.map +1 -1
  493. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.d.ts +1 -1
  494. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.d.ts.map +1 -1
  495. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.js +1 -5
  496. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.js.map +1 -1
  497. package/node_modules/@earendil-works/pi-ai/dist/api/mistral-conversations.js +1 -4
  498. package/node_modules/@earendil-works/pi-ai/dist/api/mistral-conversations.js.map +1 -1
  499. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.d.ts.map +1 -1
  500. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js +3 -6
  501. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js.map +1 -1
  502. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.d.ts.map +1 -1
  503. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.js +1 -4
  504. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.js.map +1 -1
  505. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.d.ts.map +1 -1
  506. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js +3 -13
  507. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js.map +1 -1
  508. package/node_modules/@earendil-works/pi-ai/dist/cursor/store-migration.d.ts.map +1 -1
  509. package/node_modules/@earendil-works/pi-ai/dist/cursor/store-migration.js +1 -2
  510. package/node_modules/@earendil-works/pi-ai/dist/cursor/store-migration.js.map +1 -1
  511. package/node_modules/@earendil-works/pi-ai/dist/index.d.ts +1 -2
  512. package/node_modules/@earendil-works/pi-ai/dist/index.d.ts.map +1 -1
  513. package/node_modules/@earendil-works/pi-ai/dist/index.js +1 -2
  514. package/node_modules/@earendil-works/pi-ai/dist/index.js.map +1 -1
  515. package/node_modules/@earendil-works/pi-ai/dist/models.d.ts +0 -1
  516. package/node_modules/@earendil-works/pi-ai/dist/models.d.ts.map +1 -1
  517. package/node_modules/@earendil-works/pi-ai/dist/models.js +2 -5
  518. package/node_modules/@earendil-works/pi-ai/dist/models.js.map +1 -1
  519. package/node_modules/@earendil-works/pi-ai/dist/openai-responses-compat.d.ts +1 -1
  520. package/node_modules/@earendil-works/pi-ai/dist/openai-responses-compat.d.ts.map +1 -1
  521. package/node_modules/@earendil-works/pi-ai/dist/openai-responses-compat.js.map +1 -1
  522. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-ai-gateway.d.ts.map +1 -1
  523. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-ai-gateway.js +0 -4
  524. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-ai-gateway.js.map +1 -1
  525. package/node_modules/@earendil-works/pi-ai/dist/providers/cursor.d.ts.map +1 -1
  526. package/node_modules/@earendil-works/pi-ai/dist/providers/cursor.js +1 -2
  527. package/node_modules/@earendil-works/pi-ai/dist/providers/cursor.js.map +1 -1
  528. package/node_modules/@earendil-works/pi-ai/dist/providers/data/.manifest.json +1 -1
  529. package/node_modules/@earendil-works/pi-ai/dist/providers/data/azure-openai-responses.json +1 -1
  530. package/node_modules/@earendil-works/pi-ai/dist/providers/data/baseten.json +1 -1
  531. package/node_modules/@earendil-works/pi-ai/dist/providers/data/deepseek.json +1 -1
  532. package/node_modules/@earendil-works/pi-ai/dist/providers/data/fireworks.json +1 -1
  533. package/node_modules/@earendil-works/pi-ai/dist/providers/data/github-copilot.json +1 -1
  534. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openai-codex.json +1 -1
  535. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openrouter.json +1 -1
  536. package/node_modules/@earendil-works/pi-ai/dist/providers/data/qwen-token-plan-cn.json +1 -1
  537. package/node_modules/@earendil-works/pi-ai/dist/providers/data/qwen-token-plan-individual.json +1 -1
  538. package/node_modules/@earendil-works/pi-ai/dist/providers/data/qwen-token-plan.json +1 -1
  539. package/node_modules/@earendil-works/pi-ai/dist/providers/data/xai.json +1 -1
  540. package/node_modules/@earendil-works/pi-ai/dist/providers/faux.js +5 -5
  541. package/node_modules/@earendil-works/pi-ai/dist/providers/faux.js.map +1 -1
  542. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode-go.d.ts.map +1 -1
  543. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode-go.js +3 -4
  544. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode-go.js.map +1 -1
  545. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode.d.ts.map +1 -1
  546. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode.js +4 -5
  547. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode.js.map +1 -1
  548. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +6 -16
  549. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts.map +1 -1
  550. package/node_modules/@earendil-works/pi-ai/dist/types.js.map +1 -1
  551. package/node_modules/@earendil-works/pi-ai/dist/utils/event-stream.d.ts.map +1 -1
  552. package/node_modules/@earendil-works/pi-ai/dist/utils/event-stream.js +5 -25
  553. package/node_modules/@earendil-works/pi-ai/dist/utils/event-stream.js.map +1 -1
  554. package/node_modules/@earendil-works/pi-ai/dist/utils/prompt-cache-ttl.d.ts +1 -1
  555. package/node_modules/@earendil-works/pi-ai/dist/utils/prompt-cache-ttl.d.ts.map +1 -1
  556. package/node_modules/@earendil-works/pi-ai/dist/utils/prompt-cache-ttl.js +1 -5
  557. package/node_modules/@earendil-works/pi-ai/dist/utils/prompt-cache-ttl.js.map +1 -1
  558. package/node_modules/@earendil-works/pi-ai/dist/utils/retry-profile/types.d.ts +1 -10
  559. package/node_modules/@earendil-works/pi-ai/dist/utils/retry-profile/types.d.ts.map +1 -1
  560. package/node_modules/@earendil-works/pi-ai/dist/utils/retry-profile/types.js.map +1 -1
  561. package/node_modules/@earendil-works/pi-ai/dist/utils/retry.d.ts +2 -13
  562. package/node_modules/@earendil-works/pi-ai/dist/utils/retry.d.ts.map +1 -1
  563. package/node_modules/@earendil-works/pi-ai/dist/utils/retry.js +7 -18
  564. package/node_modules/@earendil-works/pi-ai/dist/utils/retry.js.map +1 -1
  565. package/node_modules/@earendil-works/pi-ai/dist/utils/uuid.d.ts +2 -2
  566. package/node_modules/@earendil-works/pi-ai/dist/utils/uuid.d.ts.map +1 -1
  567. package/node_modules/@earendil-works/pi-ai/dist/utils/uuid.js +31 -36
  568. package/node_modules/@earendil-works/pi-ai/dist/utils/uuid.js.map +1 -1
  569. package/node_modules/@earendil-works/pi-ai/package.json +6 -6
  570. package/node_modules/@earendil-works/pi-pty/package.json +1 -1
  571. package/node_modules/@earendil-works/pi-telemetry/package.json +1 -1
  572. package/node_modules/@earendil-works/pi-tui/README.md +4 -53
  573. package/node_modules/@earendil-works/pi-tui/dist/alt-screen-search.d.ts +1 -21
  574. package/node_modules/@earendil-works/pi-tui/dist/alt-screen-search.d.ts.map +1 -1
  575. package/node_modules/@earendil-works/pi-tui/dist/alt-screen-search.js +42 -199
  576. package/node_modules/@earendil-works/pi-tui/dist/alt-screen-search.js.map +1 -1
  577. package/node_modules/@earendil-works/pi-tui/dist/components/box.d.ts +1 -3
  578. package/node_modules/@earendil-works/pi-tui/dist/components/box.d.ts.map +1 -1
  579. package/node_modules/@earendil-works/pi-tui/dist/components/box.js +0 -28
  580. package/node_modules/@earendil-works/pi-tui/dist/components/box.js.map +1 -1
  581. package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts +1 -6
  582. package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts.map +1 -1
  583. package/node_modules/@earendil-works/pi-tui/dist/components/editor.js +18 -98
  584. package/node_modules/@earendil-works/pi-tui/dist/components/editor.js.map +1 -1
  585. package/node_modules/@earendil-works/pi-tui/dist/components/input.d.ts +1 -12
  586. package/node_modules/@earendil-works/pi-tui/dist/components/input.d.ts.map +1 -1
  587. package/node_modules/@earendil-works/pi-tui/dist/components/input.js +6 -40
  588. package/node_modules/@earendil-works/pi-tui/dist/components/input.js.map +1 -1
  589. package/node_modules/@earendil-works/pi-tui/dist/components/latex.d.ts.map +1 -1
  590. package/node_modules/@earendil-works/pi-tui/dist/components/latex.js +0 -7
  591. package/node_modules/@earendil-works/pi-tui/dist/components/latex.js.map +1 -1
  592. package/node_modules/@earendil-works/pi-tui/dist/components/loader.d.ts +0 -3
  593. package/node_modules/@earendil-works/pi-tui/dist/components/loader.d.ts.map +1 -1
  594. package/node_modules/@earendil-works/pi-tui/dist/components/loader.js +8 -20
  595. package/node_modules/@earendil-works/pi-tui/dist/components/loader.js.map +1 -1
  596. package/node_modules/@earendil-works/pi-tui/dist/components/scroll-view.d.ts +3 -6
  597. package/node_modules/@earendil-works/pi-tui/dist/components/scroll-view.d.ts.map +1 -1
  598. package/node_modules/@earendil-works/pi-tui/dist/components/scroll-view.js +1 -6
  599. package/node_modules/@earendil-works/pi-tui/dist/components/scroll-view.js.map +1 -1
  600. package/node_modules/@earendil-works/pi-tui/dist/components/select-list.d.ts +1 -4
  601. package/node_modules/@earendil-works/pi-tui/dist/components/select-list.d.ts.map +1 -1
  602. package/node_modules/@earendil-works/pi-tui/dist/components/select-list.js +2 -48
  603. package/node_modules/@earendil-works/pi-tui/dist/components/select-list.js.map +1 -1
  604. package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.d.ts +1 -5
  605. package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.d.ts.map +1 -1
  606. package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.js +5 -54
  607. package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.js.map +1 -1
  608. package/node_modules/@earendil-works/pi-tui/dist/index.d.ts +1 -3
  609. package/node_modules/@earendil-works/pi-tui/dist/index.d.ts.map +1 -1
  610. package/node_modules/@earendil-works/pi-tui/dist/index.js +0 -3
  611. package/node_modules/@earendil-works/pi-tui/dist/index.js.map +1 -1
  612. package/node_modules/@earendil-works/pi-tui/dist/layout.d.ts +1 -3
  613. package/node_modules/@earendil-works/pi-tui/dist/layout.d.ts.map +1 -1
  614. package/node_modules/@earendil-works/pi-tui/dist/layout.js +9 -32
  615. package/node_modules/@earendil-works/pi-tui/dist/layout.js.map +1 -1
  616. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.d.ts +1 -2
  617. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.d.ts.map +1 -1
  618. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.js +44 -3
  619. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.js.map +1 -1
  620. package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts.map +1 -1
  621. package/node_modules/@earendil-works/pi-tui/dist/terminal.js +20 -2
  622. package/node_modules/@earendil-works/pi-tui/dist/terminal.js.map +1 -1
  623. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.d.ts +1 -31
  624. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.d.ts.map +1 -1
  625. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.js +41 -335
  626. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.js.map +1 -1
  627. package/node_modules/@earendil-works/pi-tui/dist/tui.d.ts +5 -83
  628. package/node_modules/@earendil-works/pi-tui/dist/tui.d.ts.map +1 -1
  629. package/node_modules/@earendil-works/pi-tui/dist/tui.js +4 -118
  630. package/node_modules/@earendil-works/pi-tui/dist/tui.js.map +1 -1
  631. package/node_modules/@earendil-works/pi-tui/dist/utils.d.ts +0 -2
  632. package/node_modules/@earendil-works/pi-tui/dist/utils.d.ts.map +1 -1
  633. package/node_modules/@earendil-works/pi-tui/dist/utils.js +0 -9
  634. package/node_modules/@earendil-works/pi-tui/dist/utils.js.map +1 -1
  635. package/node_modules/@earendil-works/pi-tui/native/darwin/README.md +6 -8
  636. package/node_modules/@earendil-works/pi-tui/native/darwin/build.sh +5 -12
  637. package/node_modules/@earendil-works/pi-tui/native/darwin/prebuilds/darwin-arm64/{darwin-platform.node → darwin-modifiers.node} +0 -0
  638. package/node_modules/@earendil-works/pi-tui/native/darwin/prebuilds/darwin-x64/{darwin-platform.node → darwin-modifiers.node} +0 -0
  639. package/node_modules/@earendil-works/pi-tui/native/darwin/src/darwin-modifiers.c +70 -0
  640. package/node_modules/@earendil-works/pi-tui/native/win32/README.md +7 -18
  641. package/node_modules/@earendil-works/pi-tui/native/win32/build.mjs +4 -7
  642. package/node_modules/@earendil-works/pi-tui/native/win32/prebuilds/win32-arm64/win32-console-mode.node +0 -0
  643. package/node_modules/@earendil-works/pi-tui/native/win32/prebuilds/win32-x64/win32-console-mode.node +0 -0
  644. package/node_modules/@earendil-works/pi-tui/native/win32/src/win32-console-mode.c +119 -0
  645. package/node_modules/@earendil-works/pi-tui/package.json +3 -10
  646. package/node_modules/@google/genai/dist/genai.d.ts +278 -1788
  647. package/node_modules/@google/genai/dist/index.cjs +299 -319
  648. package/node_modules/@google/genai/dist/index.mjs +299 -319
  649. package/node_modules/@google/genai/dist/index.mjs.map +1 -1
  650. package/node_modules/@google/genai/dist/node/index.cjs +300 -320
  651. package/node_modules/@google/genai/dist/node/index.mjs +300 -320
  652. package/node_modules/@google/genai/dist/node/index.mjs.map +1 -1
  653. package/node_modules/@google/genai/dist/node/node.d.ts +278 -1788
  654. package/node_modules/@google/genai/dist/tokenizer/node.cjs +2 -49
  655. package/node_modules/@google/genai/dist/tokenizer/node.d.ts +3 -43
  656. package/node_modules/@google/genai/dist/tokenizer/node.mjs +2 -49
  657. package/node_modules/@google/genai/dist/tokenizer/node.mjs.map +1 -1
  658. package/node_modules/@google/genai/dist/vertex_internal/index.cjs +3 -39
  659. package/node_modules/@google/genai/dist/vertex_internal/index.cjs.map +1 -1
  660. package/node_modules/@google/genai/dist/vertex_internal/index.d.ts +9 -51
  661. package/node_modules/@google/genai/dist/vertex_internal/index.js +3 -39
  662. package/node_modules/@google/genai/dist/vertex_internal/index.js.map +1 -1
  663. package/node_modules/@google/genai/dist/web/index.mjs +299 -319
  664. package/node_modules/@google/genai/dist/web/index.mjs.map +1 -1
  665. package/node_modules/@google/genai/dist/web/web.d.ts +278 -1788
  666. package/node_modules/@google/genai/package.json +1 -1
  667. package/node_modules/@mariozechner/clipboard/.yarnrc.yml +1 -0
  668. package/node_modules/@mariozechner/clipboard/Cargo.toml +45 -0
  669. package/node_modules/@mariozechner/clipboard/README.md +60 -0
  670. package/node_modules/@mariozechner/clipboard/build.rs +5 -0
  671. package/node_modules/@mariozechner/clipboard/exp.ts +12 -0
  672. package/node_modules/@mariozechner/clipboard/index.d.ts +37 -0
  673. package/node_modules/@mariozechner/clipboard/index.js +606 -0
  674. package/node_modules/@mariozechner/clipboard/package.json +45 -0
  675. package/node_modules/@mariozechner/clipboard/src/clipboard_rs/common.rs +307 -0
  676. package/node_modules/@mariozechner/clipboard/src/clipboard_rs/mod.rs +93 -0
  677. package/node_modules/@mariozechner/clipboard/src/clipboard_rs/platform/ios.rs +313 -0
  678. package/node_modules/@mariozechner/clipboard/src/clipboard_rs/platform/macos.rs +471 -0
  679. package/node_modules/@mariozechner/clipboard/src/clipboard_rs/platform/mod.rs +252 -0
  680. package/node_modules/@mariozechner/clipboard/src/clipboard_rs/platform/wayland.rs +431 -0
  681. package/node_modules/@mariozechner/clipboard/src/clipboard_rs/platform/win.rs +712 -0
  682. package/node_modules/@mariozechner/clipboard/src/clipboard_rs/platform/x11.rs +916 -0
  683. package/node_modules/@mariozechner/clipboard/src/lib.rs +194 -0
  684. package/node_modules/@smithy/node-http-handler/dist-cjs/index.js +4 -11
  685. package/node_modules/@smithy/node-http-handler/dist-es/http2/ClientHttp2SessionRef.js +0 -1
  686. package/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-manager.js +3 -2
  687. package/node_modules/@smithy/node-http-handler/dist-es/node-http2-handler.js +1 -8
  688. package/node_modules/@smithy/node-http-handler/package.json +2 -2
  689. package/node_modules/ignore/README.md +0 -52
  690. package/node_modules/ignore/index.js +129 -785
  691. package/node_modules/ignore/legacy.js +98 -660
  692. package/node_modules/ignore/package.json +4 -10
  693. package/node_modules/marked/README.md +0 -1
  694. package/node_modules/marked/lib/marked.d.ts +0 -7
  695. package/node_modules/marked/lib/marked.esm.js +30 -30
  696. package/node_modules/marked/lib/marked.esm.js.map +3 -3
  697. package/node_modules/marked/lib/marked.umd.js +30 -30
  698. package/node_modules/marked/lib/marked.umd.js.map +3 -3
  699. package/node_modules/marked/man/marked.1 +1 -1
  700. package/node_modules/marked/package.json +2 -2
  701. package/node_modules/typebox/build/compile/validator.d.mts +1 -1
  702. package/node_modules/typebox/build/compile/validator.mjs +1 -1
  703. package/node_modules/typebox/build/format/idna/idn-hostname.mjs +5 -7
  704. package/node_modules/typebox/build/format/iri.mjs +1 -5
  705. package/node_modules/typebox/build/guard/emit.mjs +4 -2
  706. package/node_modules/typebox/build/guard/guard.mjs +18 -6
  707. package/node_modules/typebox/build/guard/string.mjs +24 -16
  708. package/node_modules/typebox/build/schema/compile.d.mts +2 -3
  709. package/node_modules/typebox/build/schema/compile.mjs +8 -8
  710. package/node_modules/typebox/build/schema/engine/_context.d.mts +6 -1
  711. package/node_modules/typebox/build/schema/engine/_context.mjs +14 -9
  712. package/node_modules/typebox/build/schema/engine/_functions.mjs +1 -1
  713. package/node_modules/typebox/build/schema/engine/_stack.d.mts +2 -6
  714. package/node_modules/typebox/build/schema/engine/_stack.mjs +32 -135
  715. package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +4 -16
  716. package/node_modules/typebox/build/schema/engine/allOf.mjs +2 -2
  717. package/node_modules/typebox/build/schema/engine/anyOf.mjs +2 -2
  718. package/node_modules/typebox/build/schema/engine/if.mjs +2 -2
  719. package/node_modules/typebox/build/schema/engine/oneOf.mjs +2 -2
  720. package/node_modules/typebox/build/schema/engine/propertyNames.mjs +3 -1
  721. package/node_modules/typebox/build/schema/engine/ref.mjs +2 -2
  722. package/node_modules/typebox/build/schema/engine/schema.mjs +0 -6
  723. package/node_modules/typebox/build/schema/engine/unevaluatedItems.mjs +2 -2
  724. package/node_modules/typebox/build/schema/engine/unevaluatedProperties.mjs +2 -2
  725. package/node_modules/typebox/build/schema/errors.d.mts +2 -2
  726. package/node_modules/typebox/build/schema/errors.mjs +13 -7
  727. package/node_modules/typebox/build/schema/parse.d.mts +0 -1
  728. package/node_modules/typebox/build/schema/parse.mjs +5 -10
  729. package/node_modules/typebox/build/schema/resolve/resolve.d.mts +3 -34
  730. package/node_modules/typebox/build/schema/resolve/resolve.mjs +73 -198
  731. package/node_modules/typebox/build/schema/schema.d.mts +0 -1
  732. package/node_modules/typebox/build/schema/schema.mjs +0 -1
  733. package/node_modules/typebox/build/value/errors/errors.d.mts +12 -2
  734. package/node_modules/typebox/build/value/errors/errors.mjs +7 -2
  735. package/node_modules/typebox/package.json +1 -1
  736. package/node_modules/typebox/readme.md +5 -9
  737. package/node_modules/undici/docs/docs/api/Client.md +0 -4
  738. package/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +2 -3
  739. package/node_modules/undici/docs/docs/api/EventSource.md +0 -4
  740. package/node_modules/undici/docs/docs/api/Interceptors.md +3 -7
  741. package/node_modules/undici/docs/docs/api/Socks5ProxyAgent.md +1 -7
  742. package/node_modules/undici/lib/cache/memory-cache-store.js +2 -2
  743. package/node_modules/undici/lib/core/symbols.js +0 -2
  744. package/node_modules/undici/lib/dispatcher/agent.js +2 -7
  745. package/node_modules/undici/lib/dispatcher/balanced-pool.js +4 -7
  746. package/node_modules/undici/lib/dispatcher/client-h1.js +4 -12
  747. package/node_modules/undici/lib/dispatcher/client-h2.js +3 -43
  748. package/node_modules/undici/lib/dispatcher/client.js +2 -3
  749. package/node_modules/undici/lib/dispatcher/dispatcher-base.js +1 -13
  750. package/node_modules/undici/lib/dispatcher/dispatcher.js +1 -15
  751. package/node_modules/undici/lib/dispatcher/dispatcher1-wrapper.js +0 -3
  752. package/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +3 -10
  753. package/node_modules/undici/lib/dispatcher/proxy-agent.js +1 -18
  754. package/node_modules/undici/lib/dispatcher/retry-agent.js +0 -3
  755. package/node_modules/undici/lib/dispatcher/round-robin-pool.js +1 -1
  756. package/node_modules/undici/lib/dispatcher/socks5-proxy-agent.js +21 -91
  757. package/node_modules/undici/lib/handler/cache-handler.js +5 -29
  758. package/node_modules/undici/lib/handler/decorator-handler.js +1 -7
  759. package/node_modules/undici/lib/handler/deduplication-handler.js +6 -12
  760. package/node_modules/undici/lib/handler/redirect-handler.js +4 -21
  761. package/node_modules/undici/lib/handler/retry-handler.js +30 -148
  762. package/node_modules/undici/lib/interceptor/cache.js +12 -65
  763. package/node_modules/undici/lib/interceptor/decompress.js +13 -115
  764. package/node_modules/undici/lib/interceptor/deduplicate.js +4 -5
  765. package/node_modules/undici/lib/interceptor/dns.js +0 -7
  766. package/node_modules/undici/lib/interceptor/dump.js +23 -10
  767. package/node_modules/undici/lib/mock/mock-agent.js +1 -13
  768. package/node_modules/undici/lib/mock/mock-utils.js +10 -11
  769. package/node_modules/undici/lib/util/cache.js +3 -45
  770. package/node_modules/undici/lib/web/cookies/parse.js +147 -150
  771. package/node_modules/undici/lib/web/eventsource/eventsource-stream.js +1 -28
  772. package/node_modules/undici/lib/web/eventsource/eventsource.js +3 -13
  773. package/node_modules/undici/lib/web/fetch/index.js +0 -6
  774. package/node_modules/undici/lib/web/fetch/request.js +3 -2
  775. package/node_modules/undici/lib/web/fetch/util.js +1 -6
  776. package/node_modules/undici/lib/web/webidl/index.js +3 -3
  777. package/node_modules/undici/lib/web/websocket/connection.js +1 -1
  778. package/node_modules/undici/lib/web/websocket/permessage-deflate.js +0 -5
  779. package/node_modules/undici/lib/web/websocket/stream/websocketstream.js +10 -8
  780. package/node_modules/undici/package.json +3 -3
  781. package/node_modules/undici/types/client.d.ts +0 -10
  782. package/node_modules/undici/types/interceptors.d.ts +0 -2
  783. package/node_modules/undici/types/mock-agent.d.ts +10 -11
  784. package/node_modules/undici/types/socks5-proxy-agent.d.ts +0 -2
  785. package/package.json +49 -70
  786. package/vendor/pi-client/client.d.ts +15 -20
  787. package/vendor/pi-client/client.d.ts.map +1 -1
  788. package/vendor/pi-client/client.js +245 -248
  789. package/vendor/pi-client/client.js.map +1 -1
  790. package/vendor/pi-client/connection.d.ts +3 -4
  791. package/vendor/pi-client/connection.d.ts.map +1 -1
  792. package/vendor/pi-client/connection.js +9 -13
  793. package/vendor/pi-client/connection.js.map +1 -1
  794. package/vendor/pi-client/errors.d.ts +15 -6
  795. package/vendor/pi-client/errors.d.ts.map +1 -1
  796. package/vendor/pi-client/errors.js +25 -10
  797. package/vendor/pi-client/errors.js.map +1 -1
  798. package/vendor/pi-client/index.d.ts +4 -3
  799. package/vendor/pi-client/index.d.ts.map +1 -1
  800. package/vendor/pi-client/index.js +2 -2
  801. package/vendor/pi-client/index.js.map +1 -1
  802. package/vendor/pi-client/session-handle.d.ts +54 -0
  803. package/vendor/pi-client/session-handle.d.ts.map +1 -0
  804. package/vendor/pi-client/session-handle.js +50 -0
  805. package/vendor/pi-client/session-handle.js.map +1 -0
  806. package/vendor/pi-client/state.d.ts +22 -0
  807. package/vendor/pi-client/state.d.ts.map +1 -0
  808. package/vendor/pi-client/state.js +145 -0
  809. package/vendor/pi-client/state.js.map +1 -0
  810. package/vendor/pi-client/types.d.ts +8 -14
  811. package/vendor/pi-client/types.d.ts.map +1 -1
  812. package/vendor/pi-client/types.js.map +1 -1
  813. package/vendor/pi-client/unix.d.ts +1 -14
  814. package/vendor/pi-client/unix.d.ts.map +1 -1
  815. package/vendor/pi-client/unix.js +8 -138
  816. package/vendor/pi-client/unix.js.map +1 -1
  817. package/vendor/pi-protocol/codec.d.ts +4 -2
  818. package/vendor/pi-protocol/codec.d.ts.map +1 -1
  819. package/vendor/pi-protocol/codec.js +34 -7
  820. package/vendor/pi-protocol/codec.js.map +1 -1
  821. package/vendor/pi-protocol/framing.d.ts +2 -0
  822. package/vendor/pi-protocol/framing.d.ts.map +1 -1
  823. package/vendor/pi-protocol/framing.js +15 -0
  824. package/vendor/pi-protocol/framing.js.map +1 -1
  825. package/vendor/pi-protocol/index.d.ts +1 -1
  826. package/vendor/pi-protocol/index.d.ts.map +1 -1
  827. package/vendor/pi-protocol/index.js +1 -1
  828. package/vendor/pi-protocol/index.js.map +1 -1
  829. package/vendor/pi-protocol/schemas.d.ts +13739 -0
  830. package/vendor/pi-protocol/schemas.d.ts.map +1 -0
  831. package/vendor/pi-protocol/schemas.js +386 -0
  832. package/vendor/pi-protocol/schemas.js.map +1 -0
  833. package/dist/bun/runtime-setup.d.ts +0 -2
  834. package/dist/bun/runtime-setup.d.ts.map +0 -1
  835. package/dist/bun/runtime-setup.js +0 -9
  836. package/dist/bun/runtime-setup.js.map +0 -1
  837. package/dist/bun/sandbox-env-setup.d.ts +0 -2
  838. package/dist/bun/sandbox-env-setup.d.ts.map +0 -1
  839. package/dist/bun/sandbox-env-setup.js +0 -4
  840. package/dist/bun/sandbox-env-setup.js.map +0 -1
  841. package/dist/cli/setup.d.ts +0 -2
  842. package/dist/cli/setup.d.ts.map +0 -1
  843. package/dist/cli/setup.js +0 -12
  844. package/dist/cli/setup.js.map +0 -1
  845. package/dist/core/cursor-history-admission.d.ts +0 -50
  846. package/dist/core/cursor-history-admission.d.ts.map +0 -1
  847. package/dist/core/cursor-history-admission.js +0 -130
  848. package/dist/core/cursor-history-admission.js.map +0 -1
  849. package/dist/core/tools/renderers/bash.d.ts +0 -12
  850. package/dist/core/tools/renderers/bash.d.ts.map +0 -1
  851. package/dist/core/tools/renderers/bash.js +0 -156
  852. package/dist/core/tools/renderers/bash.js.map +0 -1
  853. package/dist/core/tools/renderers/edit.d.ts +0 -23
  854. package/dist/core/tools/renderers/edit.d.ts.map +0 -1
  855. package/dist/core/tools/renderers/edit.js +0 -172
  856. package/dist/core/tools/renderers/edit.js.map +0 -1
  857. package/dist/core/tools/renderers/find.d.ts +0 -10
  858. package/dist/core/tools/renderers/find.d.ts.map +0 -1
  859. package/dist/core/tools/renderers/find.js +0 -64
  860. package/dist/core/tools/renderers/find.js.map +0 -1
  861. package/dist/core/tools/renderers/grep.d.ts +0 -10
  862. package/dist/core/tools/renderers/grep.d.ts.map +0 -1
  863. package/dist/core/tools/renderers/grep.js +0 -69
  864. package/dist/core/tools/renderers/grep.js.map +0 -1
  865. package/dist/core/tools/renderers/index.d.ts +0 -28
  866. package/dist/core/tools/renderers/index.d.ts.map +0 -1
  867. package/dist/core/tools/renderers/index.js +0 -47
  868. package/dist/core/tools/renderers/index.js.map +0 -1
  869. package/dist/core/tools/renderers/ls.d.ts +0 -10
  870. package/dist/core/tools/renderers/ls.d.ts.map +0 -1
  871. package/dist/core/tools/renderers/ls.js +0 -58
  872. package/dist/core/tools/renderers/ls.js.map +0 -1
  873. package/dist/core/tools/renderers/read.d.ts +0 -19
  874. package/dist/core/tools/renderers/read.d.ts.map +0 -1
  875. package/dist/core/tools/renderers/read.js +0 -149
  876. package/dist/core/tools/renderers/read.js.map +0 -1
  877. package/dist/core/tools/renderers/write.d.ts +0 -10
  878. package/dist/core/tools/renderers/write.d.ts.map +0 -1
  879. package/dist/core/tools/renderers/write.js +0 -162
  880. package/dist/core/tools/renderers/write.js.map +0 -1
  881. package/dist/modes/interactive/chat-viewport.d.ts +0 -22
  882. package/dist/modes/interactive/chat-viewport.d.ts.map +0 -1
  883. package/dist/modes/interactive/chat-viewport.js +0 -29
  884. package/dist/modes/interactive/chat-viewport.js.map +0 -1
  885. package/dist/modes/interactive/components/ask-user-answer-key.d.ts +0 -14
  886. package/dist/modes/interactive/components/ask-user-answer-key.d.ts.map +0 -1
  887. package/dist/modes/interactive/components/ask-user-answer-key.js +0 -65
  888. package/dist/modes/interactive/components/ask-user-answer-key.js.map +0 -1
  889. package/dist/modes/interactive/theme/theme-json.d.ts +0 -84
  890. package/dist/modes/interactive/theme/theme-json.d.ts.map +0 -1
  891. package/dist/modes/interactive/theme/theme-json.js +0 -130
  892. package/dist/modes/interactive/theme/theme-json.js.map +0 -1
  893. package/dist/modes/interactive/tui-renderer.d.ts +0 -21
  894. package/dist/modes/interactive/tui-renderer.d.ts.map +0 -1
  895. package/dist/modes/interactive/tui-renderer.js +0 -67
  896. package/dist/modes/interactive/tui-renderer.js.map +0 -1
  897. package/dist/modes/rpc/session-path-reservations.d.ts +0 -30
  898. package/dist/modes/rpc/session-path-reservations.d.ts.map +0 -1
  899. package/dist/modes/rpc/session-path-reservations.js +0 -58
  900. package/dist/modes/rpc/session-path-reservations.js.map +0 -1
  901. package/dist/modes/rpc/session-worker-credit.d.ts +0 -17
  902. package/dist/modes/rpc/session-worker-credit.d.ts.map +0 -1
  903. package/dist/modes/rpc/session-worker-credit.js +0 -39
  904. package/dist/modes/rpc/session-worker-credit.js.map +0 -1
  905. package/dist/modes/rpc/session-worker-signals.d.ts +0 -7
  906. package/dist/modes/rpc/session-worker-signals.d.ts.map +0 -1
  907. package/dist/modes/rpc/session-worker-signals.js +0 -19
  908. package/dist/modes/rpc/session-worker-signals.js.map +0 -1
  909. package/dist/utils/clipboard-command.d.ts +0 -7
  910. package/dist/utils/clipboard-command.d.ts.map +0 -1
  911. package/dist/utils/clipboard-command.js +0 -45
  912. package/dist/utils/clipboard-command.js.map +0 -1
  913. package/examples/plugins/pi-example-plugin/README.md +0 -38
  914. package/examples/plugins/pi-example-plugin/package.json +0 -10
  915. package/examples/plugins/pi-example-plugin/src/contract.ts +0 -13
  916. package/examples/plugins/pi-example-plugin/src/session.ts +0 -23
  917. package/examples/plugins/pi-example-plugin/src/tui.ts +0 -31
  918. package/node_modules/@aws-sdk/core/dist-es/submodules/util/hasOwn.js +0 -3
  919. package/node_modules/@aws-sdk/core/dist-types/submodules/util/hasOwn.d.ts +0 -4
  920. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/util/hasOwn.d.ts +0 -1
  921. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/LICENSE +0 -201
  922. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/README.md +0 -62
  923. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-cjs/index.js +0 -158
  924. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/constants.js +0 -2
  925. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/fromEnvSigningName.js +0 -16
  926. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/fromSso.js +0 -84
  927. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/fromStatic.js +0 -8
  928. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/getNewSsoOidcToken.js +0 -11
  929. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/getSsoOidcClient.js +0 -10
  930. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/index.js +0 -4
  931. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/nodeProvider.js +0 -5
  932. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/validateTokenExpiry.js +0 -7
  933. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/validateTokenKey.js +0 -7
  934. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/writeSSOTokenToFile.js +0 -8
  935. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/constants.d.ts +0 -8
  936. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/fromEnvSigningName.d.ts +0 -18
  937. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/fromSso.d.ts +0 -12
  938. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/fromStatic.d.ts +0 -9
  939. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/getNewSsoOidcToken.d.ts +0 -8
  940. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/getSsoOidcClient.d.ts +0 -7
  941. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/index.d.ts +0 -7
  942. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/nodeProvider.d.ts +0 -18
  943. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/constants.d.ts +0 -3
  944. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/fromEnvSigningName.d.ts +0 -8
  945. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/fromSso.d.ts +0 -10
  946. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/fromStatic.d.ts +0 -5
  947. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/getNewSsoOidcToken.d.ts +0 -9
  948. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/getSsoOidcClient.d.ts +0 -7
  949. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/index.d.ts +0 -7
  950. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/nodeProvider.d.ts +0 -3
  951. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/validateTokenExpiry.d.ts +0 -2
  952. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/validateTokenKey.d.ts +0 -1
  953. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/writeSSOTokenToFile.d.ts +0 -2
  954. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/validateTokenExpiry.d.ts +0 -5
  955. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/validateTokenKey.d.ts +0 -4
  956. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/writeSSOTokenToFile.d.ts +0 -5
  957. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/package.json +0 -69
  958. package/node_modules/@earendil-works/chord/README.md +0 -205
  959. package/node_modules/@earendil-works/chord/dist/api.d.ts +0 -15
  960. package/node_modules/@earendil-works/chord/dist/api.d.ts.map +0 -1
  961. package/node_modules/@earendil-works/chord/dist/api.js +0 -72
  962. package/node_modules/@earendil-works/chord/dist/api.js.map +0 -1
  963. package/node_modules/@earendil-works/chord/dist/bundler.d.ts +0 -6
  964. package/node_modules/@earendil-works/chord/dist/bundler.d.ts.map +0 -1
  965. package/node_modules/@earendil-works/chord/dist/bundler.js +0 -3
  966. package/node_modules/@earendil-works/chord/dist/bundler.js.map +0 -1
  967. package/node_modules/@earendil-works/chord/dist/context/index.d.ts +0 -24
  968. package/node_modules/@earendil-works/chord/dist/context/index.d.ts.map +0 -1
  969. package/node_modules/@earendil-works/chord/dist/context/index.js +0 -97
  970. package/node_modules/@earendil-works/chord/dist/context/index.js.map +0 -1
  971. package/node_modules/@earendil-works/chord/dist/delta/index.d.ts +0 -119
  972. package/node_modules/@earendil-works/chord/dist/delta/index.d.ts.map +0 -1
  973. package/node_modules/@earendil-works/chord/dist/delta/index.js +0 -1209
  974. package/node_modules/@earendil-works/chord/dist/delta/index.js.map +0 -1
  975. package/node_modules/@earendil-works/chord/dist/facets/host.d.ts +0 -12
  976. package/node_modules/@earendil-works/chord/dist/facets/host.d.ts.map +0 -1
  977. package/node_modules/@earendil-works/chord/dist/facets/host.js +0 -762
  978. package/node_modules/@earendil-works/chord/dist/facets/host.js.map +0 -1
  979. package/node_modules/@earendil-works/chord/dist/facets/loader.d.ts +0 -3
  980. package/node_modules/@earendil-works/chord/dist/facets/loader.d.ts.map +0 -1
  981. package/node_modules/@earendil-works/chord/dist/facets/loader.js +0 -5
  982. package/node_modules/@earendil-works/chord/dist/facets/loader.js.map +0 -1
  983. package/node_modules/@earendil-works/chord/dist/index.d.ts +0 -11
  984. package/node_modules/@earendil-works/chord/dist/index.d.ts.map +0 -1
  985. package/node_modules/@earendil-works/chord/dist/index.js +0 -10
  986. package/node_modules/@earendil-works/chord/dist/index.js.map +0 -1
  987. package/node_modules/@earendil-works/chord/dist/json.d.ts +0 -4
  988. package/node_modules/@earendil-works/chord/dist/json.d.ts.map +0 -1
  989. package/node_modules/@earendil-works/chord/dist/json.js +0 -57
  990. package/node_modules/@earendil-works/chord/dist/json.js.map +0 -1
  991. package/node_modules/@earendil-works/chord/dist/node/bundle-loader.d.ts +0 -30
  992. package/node_modules/@earendil-works/chord/dist/node/bundle-loader.d.ts.map +0 -1
  993. package/node_modules/@earendil-works/chord/dist/node/bundle-loader.js +0 -377
  994. package/node_modules/@earendil-works/chord/dist/node/bundle-loader.js.map +0 -1
  995. package/node_modules/@earendil-works/chord/dist/node/bundle.d.ts +0 -26
  996. package/node_modules/@earendil-works/chord/dist/node/bundle.d.ts.map +0 -1
  997. package/node_modules/@earendil-works/chord/dist/node/bundle.js +0 -183
  998. package/node_modules/@earendil-works/chord/dist/node/bundle.js.map +0 -1
  999. package/node_modules/@earendil-works/chord/dist/node/manifest.d.ts +0 -36
  1000. package/node_modules/@earendil-works/chord/dist/node/manifest.d.ts.map +0 -1
  1001. package/node_modules/@earendil-works/chord/dist/node/manifest.js +0 -6
  1002. package/node_modules/@earendil-works/chord/dist/node/manifest.js.map +0 -1
  1003. package/node_modules/@earendil-works/chord/dist/node/package.d.ts +0 -15
  1004. package/node_modules/@earendil-works/chord/dist/node/package.d.ts.map +0 -1
  1005. package/node_modules/@earendil-works/chord/dist/node/package.js +0 -199
  1006. package/node_modules/@earendil-works/chord/dist/node/package.js.map +0 -1
  1007. package/node_modules/@earendil-works/chord/dist/node.d.ts +0 -5
  1008. package/node_modules/@earendil-works/chord/dist/node.d.ts.map +0 -1
  1009. package/node_modules/@earendil-works/chord/dist/node.js +0 -3
  1010. package/node_modules/@earendil-works/chord/dist/node.js.map +0 -1
  1011. package/node_modules/@earendil-works/chord/dist/services/consumer.d.ts +0 -11
  1012. package/node_modules/@earendil-works/chord/dist/services/consumer.d.ts.map +0 -1
  1013. package/node_modules/@earendil-works/chord/dist/services/consumer.js +0 -535
  1014. package/node_modules/@earendil-works/chord/dist/services/consumer.js.map +0 -1
  1015. package/node_modules/@earendil-works/chord/dist/services/errors.d.ts +0 -8
  1016. package/node_modules/@earendil-works/chord/dist/services/errors.d.ts.map +0 -1
  1017. package/node_modules/@earendil-works/chord/dist/services/errors.js +0 -21
  1018. package/node_modules/@earendil-works/chord/dist/services/errors.js.map +0 -1
  1019. package/node_modules/@earendil-works/chord/dist/services/handle.d.ts +0 -15
  1020. package/node_modules/@earendil-works/chord/dist/services/handle.d.ts.map +0 -1
  1021. package/node_modules/@earendil-works/chord/dist/services/handle.js +0 -99
  1022. package/node_modules/@earendil-works/chord/dist/services/handle.js.map +0 -1
  1023. package/node_modules/@earendil-works/chord/dist/services/instances.d.ts +0 -25
  1024. package/node_modules/@earendil-works/chord/dist/services/instances.d.ts.map +0 -1
  1025. package/node_modules/@earendil-works/chord/dist/services/instances.js +0 -137
  1026. package/node_modules/@earendil-works/chord/dist/services/instances.js.map +0 -1
  1027. package/node_modules/@earendil-works/chord/dist/services/loopback.d.ts +0 -5
  1028. package/node_modules/@earendil-works/chord/dist/services/loopback.d.ts.map +0 -1
  1029. package/node_modules/@earendil-works/chord/dist/services/loopback.js +0 -15
  1030. package/node_modules/@earendil-works/chord/dist/services/loopback.js.map +0 -1
  1031. package/node_modules/@earendil-works/chord/dist/services/provider.d.ts +0 -37
  1032. package/node_modules/@earendil-works/chord/dist/services/provider.d.ts.map +0 -1
  1033. package/node_modules/@earendil-works/chord/dist/services/provider.js +0 -472
  1034. package/node_modules/@earendil-works/chord/dist/services/provider.js.map +0 -1
  1035. package/node_modules/@earendil-works/chord/dist/services/state-codec.d.ts +0 -15
  1036. package/node_modules/@earendil-works/chord/dist/services/state-codec.d.ts.map +0 -1
  1037. package/node_modules/@earendil-works/chord/dist/services/state-codec.js +0 -115
  1038. package/node_modules/@earendil-works/chord/dist/services/state-codec.js.map +0 -1
  1039. package/node_modules/@earendil-works/chord/dist/services/state-internals.d.ts +0 -11
  1040. package/node_modules/@earendil-works/chord/dist/services/state-internals.d.ts.map +0 -1
  1041. package/node_modules/@earendil-works/chord/dist/services/state-internals.js +0 -10
  1042. package/node_modules/@earendil-works/chord/dist/services/state-internals.js.map +0 -1
  1043. package/node_modules/@earendil-works/chord/dist/services/state.d.ts +0 -23
  1044. package/node_modules/@earendil-works/chord/dist/services/state.d.ts.map +0 -1
  1045. package/node_modules/@earendil-works/chord/dist/services/state.js +0 -124
  1046. package/node_modules/@earendil-works/chord/dist/services/state.js.map +0 -1
  1047. package/node_modules/@earendil-works/chord/dist/services/wire.d.ts +0 -60
  1048. package/node_modules/@earendil-works/chord/dist/services/wire.d.ts.map +0 -1
  1049. package/node_modules/@earendil-works/chord/dist/services/wire.js +0 -173
  1050. package/node_modules/@earendil-works/chord/dist/services/wire.js.map +0 -1
  1051. package/node_modules/@earendil-works/chord/dist/types.d.ts +0 -203
  1052. package/node_modules/@earendil-works/chord/dist/types.d.ts.map +0 -1
  1053. package/node_modules/@earendil-works/chord/dist/types.js +0 -2
  1054. package/node_modules/@earendil-works/chord/dist/types.js.map +0 -1
  1055. package/node_modules/@earendil-works/chord/package.json +0 -73
  1056. package/node_modules/@earendil-works/pi-agent-core/dist/harness/config.d.ts +0 -9
  1057. package/node_modules/@earendil-works/pi-agent-core/dist/harness/config.d.ts.map +0 -1
  1058. package/node_modules/@earendil-works/pi-agent-core/dist/harness/config.js +0 -35
  1059. package/node_modules/@earendil-works/pi-agent-core/dist/harness/config.js.map +0 -1
  1060. package/node_modules/@earendil-works/pi-agent-core/dist/harness/context.d.ts +0 -9
  1061. package/node_modules/@earendil-works/pi-agent-core/dist/harness/context.d.ts.map +0 -1
  1062. package/node_modules/@earendil-works/pi-agent-core/dist/harness/context.js +0 -13
  1063. package/node_modules/@earendil-works/pi-agent-core/dist/harness/context.js.map +0 -1
  1064. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution/assistant.d.ts +0 -42
  1065. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution/assistant.d.ts.map +0 -1
  1066. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution/assistant.js +0 -82
  1067. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution/assistant.js.map +0 -1
  1068. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution/effect-gate.d.ts +0 -22
  1069. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution/effect-gate.d.ts.map +0 -1
  1070. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution/effect-gate.js +0 -48
  1071. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution/effect-gate.js.map +0 -1
  1072. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution/tools.d.ts +0 -67
  1073. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution/tools.d.ts.map +0 -1
  1074. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution/tools.js +0 -121
  1075. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution/tools.js.map +0 -1
  1076. package/node_modules/@earendil-works/pi-agent-core/dist/harness/hooks.d.ts +0 -38
  1077. package/node_modules/@earendil-works/pi-agent-core/dist/harness/hooks.d.ts.map +0 -1
  1078. package/node_modules/@earendil-works/pi-agent-core/dist/harness/hooks.js +0 -404
  1079. package/node_modules/@earendil-works/pi-agent-core/dist/harness/hooks.js.map +0 -1
  1080. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/boundary.d.ts +0 -28
  1081. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/boundary.d.ts.map +0 -1
  1082. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/boundary.js +0 -173
  1083. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/boundary.js.map +0 -1
  1084. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/checkpoint.d.ts +0 -8
  1085. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/checkpoint.d.ts.map +0 -1
  1086. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/checkpoint.js +0 -133
  1087. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/checkpoint.js.map +0 -1
  1088. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/deferred.d.ts +0 -15
  1089. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/deferred.d.ts.map +0 -1
  1090. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/deferred.js +0 -179
  1091. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/deferred.js.map +0 -1
  1092. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/generation.d.ts +0 -8
  1093. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/generation.d.ts.map +0 -1
  1094. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/generation.js +0 -205
  1095. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/generation.js.map +0 -1
  1096. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/reconcile.d.ts +0 -5
  1097. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/reconcile.d.ts.map +0 -1
  1098. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/reconcile.js +0 -140
  1099. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/reconcile.js.map +0 -1
  1100. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/recovery.d.ts +0 -8
  1101. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/recovery.d.ts.map +0 -1
  1102. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/recovery.js +0 -85
  1103. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/recovery.js.map +0 -1
  1104. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/response.d.ts +0 -23
  1105. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/response.d.ts.map +0 -1
  1106. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/response.js +0 -394
  1107. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/response.js.map +0 -1
  1108. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/retry.d.ts +0 -4
  1109. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/retry.d.ts.map +0 -1
  1110. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/retry.js +0 -34
  1111. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/retry.js.map +0 -1
  1112. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/structural.d.ts +0 -32
  1113. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/structural.d.ts.map +0 -1
  1114. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/structural.js +0 -929
  1115. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/structural.js.map +0 -1
  1116. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/terminal.d.ts +0 -7
  1117. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/terminal.d.ts.map +0 -1
  1118. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/terminal.js +0 -49
  1119. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/terminal.js.map +0 -1
  1120. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/tool-placement.d.ts +0 -14
  1121. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/tool-placement.d.ts.map +0 -1
  1122. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/tool-placement.js +0 -244
  1123. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/tool-placement.js.map +0 -1
  1124. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/tools.d.ts +0 -6
  1125. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/tools.d.ts.map +0 -1
  1126. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/tools.js +0 -449
  1127. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/tools.js.map +0 -1
  1128. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive.d.ts +0 -6
  1129. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive.d.ts.map +0 -1
  1130. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive.js +0 -93
  1131. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive.js.map +0 -1
  1132. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/harness.d.ts +0 -59
  1133. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/harness.d.ts.map +0 -1
  1134. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/harness.js +0 -302
  1135. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/harness.js.map +0 -1
  1136. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/index.d.ts +0 -2
  1137. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/index.d.ts.map +0 -1
  1138. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/index.js +0 -2
  1139. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/index.js.map +0 -1
  1140. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/lane.d.ts +0 -118
  1141. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/lane.d.ts.map +0 -1
  1142. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/lane.js +0 -1559
  1143. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/lane.js.map +0 -1
  1144. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/progress.d.ts +0 -15
  1145. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/progress.d.ts.map +0 -1
  1146. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/progress.js +0 -66
  1147. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/progress.js.map +0 -1
  1148. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/reducer.d.ts +0 -5
  1149. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/reducer.d.ts.map +0 -1
  1150. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/reducer.js +0 -240
  1151. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/reducer.js.map +0 -1
  1152. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/restore.d.ts +0 -24
  1153. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/restore.d.ts.map +0 -1
  1154. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/restore.js +0 -117
  1155. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/restore.js.map +0 -1
  1156. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/transcript.d.ts +0 -21
  1157. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/transcript.d.ts.map +0 -1
  1158. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/transcript.js +0 -72
  1159. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/transcript.js.map +0 -1
  1160. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/types.d.ts +0 -105
  1161. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/types.d.ts.map +0 -1
  1162. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/types.js +0 -50
  1163. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/types.js.map +0 -1
  1164. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/commit.d.ts +0 -53
  1165. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/commit.d.ts.map +0 -1
  1166. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/commit.js +0 -57
  1167. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/commit.js.map +0 -1
  1168. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/fork-policy.d.ts +0 -21
  1169. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/fork-policy.d.ts.map +0 -1
  1170. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/fork-policy.js +0 -55
  1171. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/fork-policy.js.map +0 -1
  1172. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/fork.d.ts +0 -16
  1173. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/fork.d.ts.map +0 -1
  1174. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/fork.js +0 -79
  1175. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/fork.js.map +0 -1
  1176. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/in-memory-storage-state.d.ts +0 -39
  1177. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/in-memory-storage-state.d.ts.map +0 -1
  1178. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/in-memory-storage-state.js +0 -269
  1179. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/in-memory-storage-state.js.map +0 -1
  1180. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/fork.d.ts +0 -38
  1181. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/fork.d.ts.map +0 -1
  1182. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/fork.js +0 -266
  1183. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/fork.js.map +0 -1
  1184. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/index.d.ts +0 -4
  1185. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/index.d.ts.map +0 -1
  1186. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/index.js +0 -4
  1187. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/index.js.map +0 -1
  1188. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/io.d.ts +0 -14
  1189. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/io.d.ts.map +0 -1
  1190. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/io.js +0 -86
  1191. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/io.js.map +0 -1
  1192. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/legacy-v3.d.ts +0 -44
  1193. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/legacy-v3.d.ts.map +0 -1
  1194. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/legacy-v3.js +0 -454
  1195. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/legacy-v3.js.map +0 -1
  1196. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/mutation-line.d.ts +0 -8
  1197. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/mutation-line.d.ts.map +0 -1
  1198. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/mutation-line.js +0 -22
  1199. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/mutation-line.js.map +0 -1
  1200. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/benchmark/datasets.d.ts +0 -12
  1201. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/benchmark/datasets.d.ts.map +0 -1
  1202. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/benchmark/datasets.js +0 -24
  1203. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/benchmark/datasets.js.map +0 -1
  1204. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/benchmark/session-repo.d.ts +0 -42
  1205. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/benchmark/session-repo.d.ts.map +0 -1
  1206. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/benchmark/session-repo.js +0 -127
  1207. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/benchmark/session-repo.js.map +0 -1
  1208. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/benchmark/storage.d.ts +0 -25
  1209. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/benchmark/storage.d.ts.map +0 -1
  1210. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/benchmark/storage.js +0 -114
  1211. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/benchmark/storage.js.map +0 -1
  1212. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/conformance/session-repo.d.ts +0 -23
  1213. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/conformance/session-repo.d.ts.map +0 -1
  1214. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/conformance/session-repo.js +0 -809
  1215. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/conformance/session-repo.js.map +0 -1
  1216. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/conformance/storage.d.ts +0 -4
  1217. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/conformance/storage.d.ts.map +0 -1
  1218. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/conformance/storage.js +0 -600
  1219. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/conformance/storage.js.map +0 -1
  1220. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/gating-storage.d.ts +0 -26
  1221. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/gating-storage.d.ts.map +0 -1
  1222. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/gating-storage.js +0 -103
  1223. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/gating-storage.js.map +0 -1
  1224. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/instrumented-storage.d.ts +0 -11
  1225. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/instrumented-storage.d.ts.map +0 -1
  1226. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/instrumented-storage.js +0 -19
  1227. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/instrumented-storage.js.map +0 -1
  1228. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/storage-decorator.d.ts +0 -20
  1229. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/storage-decorator.d.ts.map +0 -1
  1230. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/storage-decorator.js +0 -40
  1231. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/storage-decorator.js.map +0 -1
  1232. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/values.d.ts +0 -95
  1233. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/values.d.ts.map +0 -1
  1234. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/values.js +0 -81
  1235. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/values.js.map +0 -1
  1236. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/adaptive-publisher.d.ts +0 -24
  1237. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/adaptive-publisher.d.ts.map +0 -1
  1238. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/adaptive-publisher.js +0 -79
  1239. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/adaptive-publisher.js.map +0 -1
  1240. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/output-capture.d.ts +0 -31
  1241. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/output-capture.d.ts.map +0 -1
  1242. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/output-capture.js +0 -217
  1243. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/output-capture.js.map +0 -1
  1244. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/usage.d.ts +0 -4
  1245. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/usage.d.ts.map +0 -1
  1246. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/usage.js +0 -33
  1247. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/usage.js.map +0 -1
  1248. package/node_modules/@earendil-works/pi-ai/dist/api/cloudflare-ai-binding.d.ts +0 -77
  1249. package/node_modules/@earendil-works/pi-ai/dist/api/cloudflare-ai-binding.d.ts.map +0 -1
  1250. package/node_modules/@earendil-works/pi-ai/dist/api/cloudflare-ai-binding.js +0 -72
  1251. package/node_modules/@earendil-works/pi-ai/dist/api/cloudflare-ai-binding.js.map +0 -1
  1252. package/node_modules/@earendil-works/pi-ai/dist/cursor/context-limit-store.d.ts +0 -32
  1253. package/node_modules/@earendil-works/pi-ai/dist/cursor/context-limit-store.d.ts.map +0 -1
  1254. package/node_modules/@earendil-works/pi-ai/dist/cursor/context-limit-store.js +0 -62
  1255. package/node_modules/@earendil-works/pi-ai/dist/cursor/context-limit-store.js.map +0 -1
  1256. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode-headers.d.ts +0 -4
  1257. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode-headers.d.ts.map +0 -1
  1258. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode-headers.js +0 -22
  1259. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode-headers.js.map +0 -1
  1260. package/node_modules/@earendil-works/pi-ai/dist/utils/assistant-message-frame.d.ts +0 -77
  1261. package/node_modules/@earendil-works/pi-ai/dist/utils/assistant-message-frame.d.ts.map +0 -1
  1262. package/node_modules/@earendil-works/pi-ai/dist/utils/assistant-message-frame.js +0 -427
  1263. package/node_modules/@earendil-works/pi-ai/dist/utils/assistant-message-frame.js.map +0 -1
  1264. package/node_modules/@earendil-works/pi-ai/dist/utils/cursor-context-limit.d.ts +0 -12
  1265. package/node_modules/@earendil-works/pi-ai/dist/utils/cursor-context-limit.d.ts.map +0 -1
  1266. package/node_modules/@earendil-works/pi-ai/dist/utils/cursor-context-limit.js +0 -93
  1267. package/node_modules/@earendil-works/pi-ai/dist/utils/cursor-context-limit.js.map +0 -1
  1268. package/node_modules/@earendil-works/pi-tui/dist/components/mouse-region.d.ts +0 -12
  1269. package/node_modules/@earendil-works/pi-tui/dist/components/mouse-region.d.ts.map +0 -1
  1270. package/node_modules/@earendil-works/pi-tui/dist/components/mouse-region.js +0 -19
  1271. package/node_modules/@earendil-works/pi-tui/dist/components/mouse-region.js.map +0 -1
  1272. package/node_modules/@earendil-works/pi-tui/dist/native-platform.d.ts +0 -18
  1273. package/node_modules/@earendil-works/pi-tui/dist/native-platform.d.ts.map +0 -1
  1274. package/node_modules/@earendil-works/pi-tui/dist/native-platform.js +0 -42
  1275. package/node_modules/@earendil-works/pi-tui/dist/native-platform.js.map +0 -1
  1276. package/node_modules/@earendil-works/pi-tui/native/clipboard.h +0 -170
  1277. package/node_modules/@earendil-works/pi-tui/native/darwin/src/darwin-platform.m +0 -93
  1278. package/node_modules/@earendil-works/pi-tui/native/linux/README.md +0 -23
  1279. package/node_modules/@earendil-works/pi-tui/native/linux/build.sh +0 -65
  1280. package/node_modules/@earendil-works/pi-tui/native/linux/prebuilds/linux-arm64/linux-platform-x11.node +0 -0
  1281. package/node_modules/@earendil-works/pi-tui/native/linux/prebuilds/linux-x64/linux-platform-x11.node +0 -0
  1282. package/node_modules/@earendil-works/pi-tui/native/linux/src/clipboard-worker.h +0 -70
  1283. package/node_modules/@earendil-works/pi-tui/native/linux/src/linux-platform-x11.c +0 -274
  1284. package/node_modules/@earendil-works/pi-tui/native/napi.h +0 -89
  1285. package/node_modules/@earendil-works/pi-tui/native/win32/prebuilds/win32-arm64/win32-platform.node +0 -0
  1286. package/node_modules/@earendil-works/pi-tui/native/win32/prebuilds/win32-x64/win32-platform.node +0 -0
  1287. package/node_modules/@earendil-works/pi-tui/native/win32/src/win32-platform.c +0 -241
  1288. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/LICENSE +0 -201
  1289. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/README.md +0 -115
  1290. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-cjs/index.js +0 -96
  1291. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/abort-handler.js +0 -1
  1292. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/abort.js +0 -1
  1293. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/auth/HttpApiKeyAuth.js +0 -5
  1294. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/auth/HttpAuthScheme.js +0 -1
  1295. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/auth/HttpAuthSchemeProvider.js +0 -1
  1296. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/auth/HttpSigner.js +0 -1
  1297. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/auth/IdentityProviderConfig.js +0 -1
  1298. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/auth/auth.js +0 -5
  1299. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/auth/index.js +0 -2
  1300. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/blob/blob-payload-input-types.js +0 -1
  1301. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/checksum.js +0 -1
  1302. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/client.js +0 -1
  1303. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/command.js +0 -1
  1304. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/connection/config.js +0 -1
  1305. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/connection/index.js +0 -1
  1306. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/connection/manager.js +0 -1
  1307. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/connection/pool.js +0 -1
  1308. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/crypto.js +0 -1
  1309. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/downlevel-ts3.4/transform/type-transform.js +0 -1
  1310. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/encode.js +0 -1
  1311. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/endpoint.js +0 -5
  1312. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/endpoints/EndpointParameterInstructions.js +0 -1
  1313. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/endpoints/EndpointRuleObject.js +0 -1
  1314. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/endpoints/ErrorRuleObject.js +0 -1
  1315. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/endpoints/RuleSetObject.js +0 -1
  1316. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/endpoints/TreeRuleObject.js +0 -1
  1317. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/endpoints/index.js +0 -1
  1318. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/endpoints/shared.js +0 -1
  1319. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/eventStream.js +0 -1
  1320. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/extensions/checksum.js +0 -38
  1321. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/extensions/defaultClientConfiguration.js +0 -7
  1322. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/extensions/defaultExtensionConfiguration.js +0 -1
  1323. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/extensions/index.js +0 -2
  1324. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/extensions/retry.js +0 -1
  1325. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/externals-check/browser-externals-check.js +0 -1
  1326. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/feature-ids.js +0 -1
  1327. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/http/httpHandlerInitialization.js +0 -1
  1328. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/http.js +0 -5
  1329. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/identity/apiKeyIdentity.js +0 -1
  1330. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/identity/awsCredentialIdentity.js +0 -1
  1331. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/identity/identity.js +0 -1
  1332. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/identity/index.js +0 -1
  1333. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/identity/tokenIdentity.js +0 -1
  1334. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/index.js +0 -7
  1335. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/logger.js +0 -1
  1336. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/metrics.js +0 -1
  1337. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/middleware.js +0 -1
  1338. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/pagination.js +0 -1
  1339. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/profile.js +0 -6
  1340. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/response.js +0 -1
  1341. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/retry.js +0 -1
  1342. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/schema/schema-deprecated.js +0 -1
  1343. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/schema/schema.js +0 -1
  1344. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/schema/sentinels.js +0 -1
  1345. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/schema/static-schemas.js +0 -1
  1346. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/schema/traits.js +0 -1
  1347. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/serde.js +0 -1
  1348. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/shapes.js +0 -1
  1349. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/signature.js +0 -1
  1350. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/stream.js +0 -1
  1351. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-common-types.js +0 -1
  1352. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-input-types.js +0 -1
  1353. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-output-types.js +0 -1
  1354. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/transfer.js +0 -6
  1355. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/transform/client-method-transforms.js +0 -1
  1356. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/transform/client-payload-blob-type-narrow.js +0 -1
  1357. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/transform/exact.js +0 -1
  1358. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/transform/mutable.js +0 -1
  1359. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/transform/no-undefined.js +0 -1
  1360. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/transform/type-transform.js +0 -1
  1361. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/uri.js +0 -1
  1362. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/util.js +0 -1
  1363. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/waiter.js +0 -1
  1364. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/abort-handler.d.ts +0 -7
  1365. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/abort.d.ts +0 -48
  1366. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/auth/HttpApiKeyAuth.d.ts +0 -7
  1367. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/auth/HttpAuthScheme.d.ts +0 -49
  1368. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/auth/HttpAuthSchemeProvider.d.ts +0 -20
  1369. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/auth/HttpSigner.d.ts +0 -41
  1370. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/auth/IdentityProviderConfig.d.ts +0 -14
  1371. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/auth/auth.d.ts +0 -59
  1372. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/auth/index.d.ts +0 -7
  1373. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/blob/blob-payload-input-types.d.ts +0 -37
  1374. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/checksum.d.ts +0 -61
  1375. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/client.d.ts +0 -57
  1376. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/command.d.ts +0 -28
  1377. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/connection/config.d.ts +0 -15
  1378. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/connection/index.d.ts +0 -3
  1379. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/connection/manager.d.ts +0 -34
  1380. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/connection/pool.d.ts +0 -32
  1381. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/crypto.d.ts +0 -58
  1382. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/downlevel-ts3.4/transform/type-transform.d.ts +0 -24
  1383. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/encode.d.ts +0 -31
  1384. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/endpoint.d.ts +0 -77
  1385. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/endpoints/EndpointParameterInstructions.d.ts +0 -41
  1386. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/endpoints/EndpointRuleObject.d.ts +0 -27
  1387. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/endpoints/ErrorRuleObject.d.ts +0 -10
  1388. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/endpoints/RuleSetObject.d.ts +0 -28
  1389. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/endpoints/TreeRuleObject.d.ts +0 -16
  1390. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/endpoints/index.d.ts +0 -5
  1391. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/endpoints/shared.d.ts +0 -55
  1392. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/eventStream.d.ts +0 -137
  1393. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/extensions/checksum.d.ts +0 -58
  1394. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/extensions/defaultClientConfiguration.d.ts +0 -32
  1395. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/extensions/defaultExtensionConfiguration.d.ts +0 -9
  1396. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/extensions/index.d.ts +0 -6
  1397. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/extensions/retry.d.ts +0 -18
  1398. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/externals-check/browser-externals-check.d.ts +0 -35
  1399. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/feature-ids.d.ts +0 -16
  1400. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/http/httpHandlerInitialization.d.ts +0 -142
  1401. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/http.d.ts +0 -110
  1402. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/identity/apiKeyIdentity.d.ts +0 -14
  1403. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/identity/awsCredentialIdentity.d.ts +0 -31
  1404. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/identity/identity.d.ts +0 -15
  1405. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/identity/index.d.ts +0 -4
  1406. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/identity/tokenIdentity.d.ts +0 -14
  1407. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/index.d.ts +0 -52
  1408. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/logger.d.ts +0 -13
  1409. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/metrics.d.ts +0 -93
  1410. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/middleware.d.ts +0 -541
  1411. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/pagination.d.ts +0 -33
  1412. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/profile.d.ts +0 -30
  1413. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/response.d.ts +0 -40
  1414. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/retry.d.ts +0 -162
  1415. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/schema/schema-deprecated.d.ts +0 -143
  1416. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/schema/schema.d.ts +0 -236
  1417. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/schema/sentinels.d.ts +0 -65
  1418. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/schema/static-schemas.d.ts +0 -99
  1419. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/schema/traits.d.ts +0 -46
  1420. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/serde.d.ts +0 -114
  1421. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/shapes.d.ts +0 -79
  1422. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/signature.d.ts +0 -172
  1423. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/stream.d.ts +0 -22
  1424. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-common-types.d.ts +0 -28
  1425. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-input-types.d.ts +0 -54
  1426. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-output-types.d.ts +0 -41
  1427. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/transfer.d.ts +0 -42
  1428. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/transform/client-method-transforms.d.ts +0 -26
  1429. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/transform/client-payload-blob-type-narrow.d.ts +0 -73
  1430. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/transform/exact.d.ts +0 -6
  1431. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/transform/mutable.d.ts +0 -6
  1432. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/transform/no-undefined.d.ts +0 -68
  1433. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/transform/type-transform.d.ts +0 -39
  1434. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/abort-handler.d.ts +0 -7
  1435. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/abort.d.ts +0 -45
  1436. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpApiKeyAuth.d.ts +0 -7
  1437. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthScheme.d.ts +0 -49
  1438. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthSchemeProvider.d.ts +0 -20
  1439. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpSigner.d.ts +0 -41
  1440. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/auth/IdentityProviderConfig.d.ts +0 -14
  1441. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/auth/auth.d.ts +0 -59
  1442. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/auth/index.d.ts +0 -7
  1443. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/blob/blob-payload-input-types.d.ts +0 -37
  1444. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/checksum.d.ts +0 -61
  1445. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/client.d.ts +0 -57
  1446. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/command.d.ts +0 -28
  1447. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/connection/config.d.ts +0 -15
  1448. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/connection/index.d.ts +0 -3
  1449. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/connection/manager.d.ts +0 -34
  1450. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/connection/pool.d.ts +0 -32
  1451. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/crypto.d.ts +0 -58
  1452. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/downlevel-ts3.4/transform/type-transform.d.ts +0 -40
  1453. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/encode.d.ts +0 -31
  1454. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/endpoint.d.ts +0 -77
  1455. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/endpoints/EndpointParameterInstructions.d.ts +0 -41
  1456. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/endpoints/EndpointRuleObject.d.ts +0 -27
  1457. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/endpoints/ErrorRuleObject.d.ts +0 -10
  1458. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/endpoints/RuleSetObject.d.ts +0 -28
  1459. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/endpoints/TreeRuleObject.d.ts +0 -16
  1460. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/endpoints/index.d.ts +0 -5
  1461. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/endpoints/shared.d.ts +0 -55
  1462. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/eventStream.d.ts +0 -137
  1463. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/extensions/checksum.d.ts +0 -58
  1464. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultClientConfiguration.d.ts +0 -32
  1465. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultExtensionConfiguration.d.ts +0 -9
  1466. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/extensions/index.d.ts +0 -6
  1467. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/extensions/retry.d.ts +0 -18
  1468. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/externals-check/browser-externals-check.d.ts +0 -35
  1469. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/feature-ids.d.ts +0 -16
  1470. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/http/httpHandlerInitialization.d.ts +0 -142
  1471. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/http.d.ts +0 -110
  1472. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/identity/apiKeyIdentity.d.ts +0 -14
  1473. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/identity/awsCredentialIdentity.d.ts +0 -31
  1474. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/identity/identity.d.ts +0 -15
  1475. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/identity/index.d.ts +0 -4
  1476. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/identity/tokenIdentity.d.ts +0 -14
  1477. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/index.d.ts +0 -52
  1478. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/logger.d.ts +0 -13
  1479. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/metrics.d.ts +0 -93
  1480. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/middleware.d.ts +0 -541
  1481. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/pagination.d.ts +0 -33
  1482. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/profile.d.ts +0 -30
  1483. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/response.d.ts +0 -40
  1484. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/retry.d.ts +0 -162
  1485. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/schema/schema-deprecated.d.ts +0 -149
  1486. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/schema/schema.d.ts +0 -251
  1487. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/schema/sentinels.d.ts +0 -65
  1488. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/schema/static-schemas.d.ts +0 -118
  1489. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/schema/traits.d.ts +0 -46
  1490. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/serde.d.ts +0 -114
  1491. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/shapes.d.ts +0 -79
  1492. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/signature.d.ts +0 -172
  1493. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/stream.d.ts +0 -22
  1494. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-common-types.d.ts +0 -28
  1495. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-input-types.d.ts +0 -54
  1496. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-output-types.d.ts +0 -41
  1497. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/transfer.d.ts +0 -42
  1498. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/transform/client-method-transforms.d.ts +0 -26
  1499. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/transform/client-payload-blob-type-narrow.d.ts +0 -77
  1500. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/transform/exact.d.ts +0 -14
  1501. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/transform/mutable.d.ts +0 -6
  1502. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/transform/no-undefined.d.ts +0 -88
  1503. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/transform/type-transform.d.ts +0 -40
  1504. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/uri.d.ts +0 -17
  1505. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/util.d.ts +0 -192
  1506. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/waiter.d.ts +0 -35
  1507. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/uri.d.ts +0 -17
  1508. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/util.d.ts +0 -176
  1509. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/waiter.d.ts +0 -35
  1510. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/package.json +0 -50
  1511. package/node_modules/esbuild/LICENSE.md +0 -21
  1512. package/node_modules/esbuild/README.md +0 -3
  1513. package/node_modules/esbuild/bin/esbuild +0 -223
  1514. package/node_modules/esbuild/install.js +0 -300
  1515. package/node_modules/esbuild/lib/main.d.ts +0 -720
  1516. package/node_modules/esbuild/lib/main.js +0 -2536
  1517. package/node_modules/esbuild/package.json +0 -47
  1518. package/node_modules/typebox/build/schema/intern/index.d.mts +0 -1
  1519. package/node_modules/typebox/build/schema/intern/index.mjs +0 -1
  1520. package/node_modules/typebox/build/schema/intern/intern.d.mts +0 -14
  1521. package/node_modules/typebox/build/schema/intern/intern.mjs +0 -259
  1522. package/vendor/pi-protocol/protocol.d.ts +0 -167
  1523. package/vendor/pi-protocol/protocol.d.ts.map +0 -1
  1524. package/vendor/pi-protocol/protocol.js +0 -85
  1525. package/vendor/pi-protocol/protocol.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-cache-ttl.js","sourceRoot":"","sources":["../../src/utils/prompt-cache-ttl.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tAnthropicMessagesCompat,\n\tApi,\n\tCacheRetention,\n\tModel,\n\tOpenAICompletionsCompat,\n\tProviderEnv,\n} from \"../types.ts\";\nimport { getProviderEnvValue } from \"./provider-env.ts\";\n\nexport const PROMPT_CACHE_TTL_SHORT_SECONDS = 300;\nexport const PROMPT_CACHE_TTL_LONG_SECONDS = 3600;\n\nexport function isAnthropicApiBaseUrl(baseUrl: string): boolean {\n\ttry {\n\t\treturn new URL(baseUrl).hostname === \"api.anthropic.com\";\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nconst CLAUDE_FABLE_OR_MYTHOS_MODEL_ID = /^claude-(?:fable|mythos)(?:-|$)/i;\n\n/**\n * Default for `supportsToolReferences`: first-party Anthropic models except\n * Haiku (rejects client-side tool_reference blocks) and models that predate\n * tool search (Claude 3.x, Opus/Sonnet 4.0, Opus 4.1).\n */\nfunction defaultSupportsToolReferences(model: Model<\"anthropic-messages\">): boolean {\n\tif (model.provider !== \"anthropic\" || model.id.includes(\"haiku\")) return false;\n\tconst version = model.id.match(/^claude-(?:opus|sonnet|fable)-(\\d+)(?:-(\\d+))?(?:-|$)/);\n\tif (!version) return false;\n\tconst major = Number(version[1]);\n\tconst minor = version[2] && version[2].length < 8 ? Number(version[2]) : 0;\n\treturn major > 4 || (major === 4 && minor >= 5);\n}\n\nexport function getAnthropicCompat(\n\tmodel: Model<\"anthropic-messages\">,\n): Required<\n\tOmit<AnthropicMessagesCompat, \"forceAdaptiveThinking\" | \"supportsMidConvoEffort\" | \"sessionAffinityFormat\">\n> &\n\tPick<AnthropicMessagesCompat, \"sessionAffinityFormat\"> {\n\t// Auto-detect session affinity and cache control support from provider\n\tconst isFireworks = model.provider === \"fireworks\";\n\tconst isCloudflareAiGatewayAnthropic =\n\t\tmodel.provider === \"cloudflare-ai-gateway\" && model.baseUrl.includes(\"anthropic\");\n\tconst isXiaomi = model.provider === \"xiaomi\" || model.provider.startsWith(\"xiaomi-token-plan-\");\n\t// OpenRouter carries prompt-cache affinity on its own x-session-id header and\n\t// rejects x-session-affinity (earendil-works/pi#9102).\n\tconst isOpenRouter = model.provider === \"openrouter\" || model.baseUrl.includes(\"openrouter.ai\");\n\treturn {\n\t\tsupportsEagerToolInputStreaming: model.compat?.supportsEagerToolInputStreaming ?? !isFireworks,\n\t\tsupportsLongCacheRetention: model.compat?.supportsLongCacheRetention ?? !isFireworks,\n\t\tsendSessionAffinityHeaders:\n\t\t\tmodel.compat?.sendSessionAffinityHeaders ?? !!(isFireworks || isCloudflareAiGatewayAnthropic || isOpenRouter),\n\t\tsessionAffinityFormat: model.compat?.sessionAffinityFormat ?? (isOpenRouter ? \"openrouter\" : undefined),\n\t\tsupportsCacheControlOnTools: model.compat?.supportsCacheControlOnTools ?? !isFireworks,\n\t\tsupportsDisabledThinking: model.compat?.supportsDisabledThinking ?? !isXiaomi,\n\t\tsupportsTemperature: model.compat?.supportsTemperature ?? true,\n\t\tsupportsToolChoice: model.compat?.supportsToolChoice ?? true,\n\t\tsupportsForcedToolChoice:\n\t\t\tmodel.compat?.supportsForcedToolChoice ?? !CLAUDE_FABLE_OR_MYTHOS_MODEL_ID.test(model.id),\n\t\tallowEmptySignature: model.compat?.allowEmptySignature ?? false,\n\t\tunsignedThinkingReplay:\n\t\t\tmodel.compat?.unsignedThinkingReplay ?? (model.compat?.allowEmptySignature ? \"empty-signature\" : \"text\"),\n\t\tallowedFallbackModels: model.compat?.allowedFallbackModels ?? [],\n\t\tsupportsStrictTools: model.compat?.supportsStrictTools ?? false,\n\t\tsupportsToolReferences: model.compat?.supportsToolReferences ?? defaultSupportsToolReferences(model),\n\t\t// Default: first-party Anthropic only. Anthropic-compatible providers\n\t\t// (kimi-coding, fireworks, copilot, gateways) may execute the server-side\n\t\t// search but reject the replayed server_tool_use / web_search_tool_result\n\t\t// blocks on the next request (kimi-coding 400s with `tool_call_id is not\n\t\t// found`).\n\t\tsupportsWebSearch: model.compat?.supportsWebSearch ?? isAnthropicApiBaseUrl(model.baseUrl),\n\t};\n}\n\nexport type ResolvedOpenAICompletionsCompat = Omit<\n\tRequired<OpenAICompletionsCompat>,\n\t| \"vllmPriority\"\n\t| \"cacheControlFormat\"\n\t| \"toolCallFormat\"\n\t| \"deferredToolsMode\"\n\t| \"toolSchemaFlavor\"\n\t| \"supportsPromptCacheKey\"\n\t| \"chatTemplateArgs\"\n\t| \"supportsThinkingTokenBudget\"\n\t| \"thinkingTokenBudgetField\"\n\t| \"veniceParameters\"\n> & {\n\tcacheControlFormat?: OpenAICompletionsCompat[\"cacheControlFormat\"];\n\tsupportsPromptCacheKey?: OpenAICompletionsCompat[\"supportsPromptCacheKey\"];\n\ttoolCallFormat?: OpenAICompletionsCompat[\"toolCallFormat\"];\n\tdeferredToolsMode?: OpenAICompletionsCompat[\"deferredToolsMode\"];\n\ttoolSchemaFlavor?: OpenAICompletionsCompat[\"toolSchemaFlavor\"];\n\tchatTemplateArgs?: OpenAICompletionsCompat[\"chatTemplateArgs\"];\n\tsupportsThinkingTokenBudget?: OpenAICompletionsCompat[\"supportsThinkingTokenBudget\"];\n\tthinkingTokenBudgetField?: OpenAICompletionsCompat[\"thinkingTokenBudgetField\"];\n\t/** vLLM `priority`; off by default and never set on the generated catalog. */\n\tvllmPriority?: OpenAICompletionsCompat[\"vllmPriority\"];\n\t/** Venice `venice_parameters`; only set on the generated Venice catalog. */\n\tveniceParameters?: OpenAICompletionsCompat[\"veniceParameters\"];\n};\n\n/**\n * Detect compatibility settings from provider and baseUrl for known providers.\n * Provider takes precedence over URL-based detection since it's explicitly configured.\n * Returns a fully resolved OpenAICompletionsCompat object with all fields set.\n */\nfunction detectOpenAICompletionsCompat(model: Model<\"openai-completions\">): ResolvedOpenAICompletionsCompat {\n\tconst provider = model.provider;\n\tconst baseUrl = model.baseUrl;\n\n\tconst isZai =\n\t\tprovider === \"zai\" ||\n\t\tprovider === \"zai-coding-cn\" ||\n\t\tbaseUrl.includes(\"api.z.ai\") ||\n\t\tbaseUrl.includes(\"open.bigmodel.cn\");\n\tconst isTogether =\n\t\tprovider === \"together\" || baseUrl.includes(\"api.together.ai\") || baseUrl.includes(\"api.together.xyz\");\n\tconst isMoonshot = provider === \"moonshotai\" || provider === \"moonshotai-cn\" || baseUrl.includes(\"api.moonshot.\");\n\tconst isOpenRouter = provider === \"openrouter\" || baseUrl.includes(\"openrouter.ai\");\n\tconst isCloudflareWorkersAI = provider === \"cloudflare-workers-ai\" || baseUrl.includes(\"api.cloudflare.com\");\n\tconst isCloudflareAiGateway = provider === \"cloudflare-ai-gateway\" || baseUrl.includes(\"gateway.ai.cloudflare.com\");\n\tconst isNvidia = provider === \"nvidia\" || baseUrl.includes(\"integrate.api.nvidia.com\");\n\tconst isAntLing = provider === \"ant-ling\" || baseUrl.includes(\"api.ant-ling.com\");\n\tconst isDeepSeek = provider === \"deepseek\" || baseUrl.toLowerCase().includes(\"deepseek.com\");\n\n\tconst isNonStandard =\n\t\tisNvidia ||\n\t\tprovider === \"cerebras\" ||\n\t\tbaseUrl.includes(\"cerebras.ai\") ||\n\t\tprovider === \"xai\" ||\n\t\tbaseUrl.includes(\"api.x.ai\") ||\n\t\tisTogether ||\n\t\tbaseUrl.includes(\"chutes.ai\") ||\n\t\tisDeepSeek ||\n\t\tisZai ||\n\t\tisMoonshot ||\n\t\tprovider === \"opencode\" ||\n\t\tbaseUrl.includes(\"opencode.ai\") ||\n\t\tisCloudflareWorkersAI ||\n\t\tisCloudflareAiGateway ||\n\t\tisAntLing;\n\n\tconst useMaxTokens =\n\t\tbaseUrl.includes(\"chutes.ai\") ||\n\t\tisDeepSeek ||\n\t\tisMoonshot ||\n\t\tisCloudflareAiGateway ||\n\t\tisTogether ||\n\t\tisNvidia ||\n\t\tisAntLing ||\n\t\tisZai;\n\n\tconst isGrok = provider === \"xai\" || baseUrl.includes(\"api.x.ai\");\n\tconst isOpenRouterDeveloperRoleModel =\n\t\tisOpenRouter && (model.id.startsWith(\"anthropic/\") || model.id.startsWith(\"openai/\"));\n\tconst openRouterCacheControlPrefixes = [\"anthropic/\", \"qwen/\", \"google/\"];\n\tconst cacheControlModelId = model.id.startsWith(\"~\") ? model.id.slice(1) : model.id;\n\tconst supportsOpenRouterCacheControl = openRouterCacheControlPrefixes.some((prefix) =>\n\t\tcacheControlModelId.startsWith(prefix),\n\t);\n\tconst cacheControlFormat = provider === \"openrouter\" && supportsOpenRouterCacheControl ? \"anthropic\" : undefined;\n\n\treturn {\n\t\tsupportsStore: !isNonStandard,\n\t\tsupportsDeveloperRole: isOpenRouterDeveloperRoleModel || (!isNonStandard && !isOpenRouter),\n\t\tsupportsReasoningEffort:\n\t\t\t!isGrok && !isZai && !isMoonshot && !isTogether && !isCloudflareAiGateway && !isNvidia && !isAntLing,\n\t\tsupportsUsageInStreaming: true,\n\t\tsupportsFinishReason: true,\n\t\tmaxTokensField: useMaxTokens ? \"max_tokens\" : \"max_completion_tokens\",\n\t\trequiresToolResultName: false,\n\t\trequiresAssistantAfterToolResult: false,\n\t\trequiresThinkingAsText: false,\n\t\trequiresReasoningContentOnAssistantMessages: isDeepSeek,\n\t\tthinkingFormat: isDeepSeek\n\t\t\t? \"deepseek\"\n\t\t\t: isZai\n\t\t\t\t? \"zai\"\n\t\t\t\t: isTogether\n\t\t\t\t\t? \"together\"\n\t\t\t\t\t: isAntLing\n\t\t\t\t\t\t? \"ant-ling\"\n\t\t\t\t\t\t: isOpenRouter\n\t\t\t\t\t\t\t? \"openrouter\"\n\t\t\t\t\t\t\t: \"openai\",\n\t\topenRouterRouting: {},\n\t\tvercelGatewayRouting: {},\n\t\tchatTemplateKwargs: {},\n\t\tzaiToolStream: false,\n\t\tsupportsStrictMode: !isMoonshot && !isTogether && !isCloudflareAiGateway && !isNvidia,\n\t\ttoolSchemaFlavor: isMoonshot ? \"moonshot-mfjs\" : undefined,\n\t\tsupportsDisabledThinking: true,\n\t\ttoolCallFormat: undefined,\n\t\tsupportsOpenAIGrammarTools: false,\n\t\tcacheControlFormat,\n\t\tsendSessionAffinityHeaders: isOpenRouter,\n\t\tdeferredToolsMode: undefined,\n\t\tsessionAffinityFormat: isOpenRouter ? \"openrouter\" : \"openai\",\n\t\tsupportsPromptCacheKey: isMoonshot || baseUrl.includes(\"api.openai.com\"),\n\t\tsupportsMaxOutputTokens: true,\n\t\tsupportsLongCacheRetention: !(\n\t\t\tisTogether ||\n\t\t\tisCloudflareWorkersAI ||\n\t\t\tisCloudflareAiGateway ||\n\t\t\tisNvidia ||\n\t\t\tisAntLing\n\t\t),\n\t};\n}\n\n/**\n * Get resolved compatibility settings for a model.\n * Auto-detects from provider/URL then overrides with explicit model.compat.\n */\nexport function getOpenAICompletionsCompat(model: Model<\"openai-completions\">): ResolvedOpenAICompletionsCompat {\n\tconst detected = detectOpenAICompletionsCompat(model);\n\tif (!model.compat) return detected;\n\n\treturn {\n\t\tsupportsStore: model.compat.supportsStore ?? detected.supportsStore,\n\t\tsupportsDeveloperRole: model.compat.supportsDeveloperRole ?? detected.supportsDeveloperRole,\n\t\tsupportsReasoningEffort: model.compat.supportsReasoningEffort ?? detected.supportsReasoningEffort,\n\t\tsupportsUsageInStreaming: model.compat.supportsUsageInStreaming ?? detected.supportsUsageInStreaming,\n\t\tsupportsFinishReason: model.compat.supportsFinishReason ?? detected.supportsFinishReason,\n\t\tmaxTokensField: model.compat.maxTokensField ?? detected.maxTokensField,\n\t\trequiresToolResultName: model.compat.requiresToolResultName ?? detected.requiresToolResultName,\n\t\trequiresAssistantAfterToolResult:\n\t\t\tmodel.compat.requiresAssistantAfterToolResult ?? detected.requiresAssistantAfterToolResult,\n\t\trequiresThinkingAsText: model.compat.requiresThinkingAsText ?? detected.requiresThinkingAsText,\n\t\trequiresReasoningContentOnAssistantMessages:\n\t\t\tmodel.compat.requiresReasoningContentOnAssistantMessages ??\n\t\t\tdetected.requiresReasoningContentOnAssistantMessages,\n\t\tthinkingFormat: model.compat.thinkingFormat ?? detected.thinkingFormat,\n\t\tsupportsDisabledThinking: model.compat.supportsDisabledThinking ?? detected.supportsDisabledThinking,\n\t\topenRouterRouting: model.compat.openRouterRouting ?? detected.openRouterRouting,\n\t\tvercelGatewayRouting: model.compat.vercelGatewayRouting ?? detected.vercelGatewayRouting,\n\t\tchatTemplateKwargs: model.compat.chatTemplateKwargs ?? detected.chatTemplateKwargs,\n\t\tchatTemplateArgs: model.compat.chatTemplateArgs ?? detected.chatTemplateArgs,\n\t\tzaiToolStream: model.compat.zaiToolStream ?? detected.zaiToolStream,\n\t\tsupportsThinkingTokenBudget: model.compat.supportsThinkingTokenBudget ?? detected.supportsThinkingTokenBudget,\n\t\tthinkingTokenBudgetField: model.compat.thinkingTokenBudgetField ?? detected.thinkingTokenBudgetField,\n\t\tsupportsStrictMode: model.compat.supportsStrictMode ?? detected.supportsStrictMode,\n\t\ttoolSchemaFlavor: model.compat.toolSchemaFlavor ?? detected.toolSchemaFlavor,\n\t\ttoolCallFormat: model.compat.toolCallFormat ?? detected.toolCallFormat,\n\t\tsupportsOpenAIGrammarTools: model.compat.supportsOpenAIGrammarTools ?? detected.supportsOpenAIGrammarTools,\n\t\tcacheControlFormat: model.compat.cacheControlFormat ?? detected.cacheControlFormat,\n\t\tsendSessionAffinityHeaders: model.compat.sendSessionAffinityHeaders ?? detected.sendSessionAffinityHeaders,\n\t\tdeferredToolsMode: model.compat.deferredToolsMode ?? detected.deferredToolsMode,\n\t\tsessionAffinityFormat: model.compat.sessionAffinityFormat ?? detected.sessionAffinityFormat,\n\t\tsupportsPromptCacheKey: model.compat.supportsPromptCacheKey ?? detected.supportsPromptCacheKey,\n\t\tsupportsMaxOutputTokens: model.compat.supportsMaxOutputTokens ?? detected.supportsMaxOutputTokens,\n\t\tvllmPriority: model.compat.vllmPriority ?? detected.vllmPriority,\n\t\tsupportsLongCacheRetention: model.compat.supportsLongCacheRetention ?? detected.supportsLongCacheRetention,\n\t};\n}\n\nexport function getBedrockModelMatchCandidates(modelId: string, modelName?: string): string[] {\n\tconst values = modelName ? [modelId, modelName] : [modelId];\n\treturn values.flatMap((value) => {\n\t\tconst lower = value.toLowerCase();\n\t\treturn [lower, lower.replace(/[\\s_.:]+/g, \"-\")];\n\t});\n}\n\nexport function supportsOneHourCacheTtl(model: Model<\"bedrock-converse-stream\">): boolean {\n\tconst candidates = getBedrockModelMatchCandidates(model.id, model.name);\n\treturn candidates.some((candidate) =>\n\t\t[\"opus-4-5\", \"sonnet-4-5\", \"haiku-4-5\"].some((modelVersion) => candidate.includes(modelVersion)),\n\t);\n}\n\n/**\n * Check if the model supports prompt caching.\n * Supported: Claude 3.5 Haiku, Claude 3.7 Sonnet, Claude 4.x models, Claude 5 models\n *\n * For base models and system-defined inference profiles the model ID / ARN\n * contains the model name, so we can decide locally.\n *\n * For application inference profiles (whose ARNs don't contain the model name),\n * also checks model.name which is user-controlled via models.json or registerProvider.\n * As a last resort, set AWS_BEDROCK_FORCE_CACHE=1 to enable cache points.\n * Amazon Nova models have automatic caching and don't need explicit cache points.\n */\nexport function supportsPromptCaching(model: Model<\"bedrock-converse-stream\">, env?: ProviderEnv): boolean {\n\tconst candidates = getBedrockModelMatchCandidates(model.id, model.name);\n\n\tconst hasClaudeRef = candidates.some((s) => s.includes(\"claude\"));\n\tif (!hasClaudeRef) {\n\t\t// Application inference profiles don't contain the model name in the ARN.\n\t\t// Allow users to force cache points via environment variable.\n\t\tif (getProviderEnvValue(\"AWS_BEDROCK_FORCE_CACHE\", env) === \"1\") return true;\n\t\treturn false;\n\t}\n\t// Claude 5 models (fable-5, opus-5, sonnet-5)\n\tif (candidates.some((s) => s.includes(\"fable-5\") || s.includes(\"opus-5\") || s.includes(\"sonnet-5\"))) return true;\n\t// Claude 4.x models (opus-4, sonnet-4, haiku-4)\n\tif (candidates.some((s) => s.includes(\"-4-\"))) return true;\n\t// Claude 3.7 Sonnet\n\tif (candidates.some((s) => s.includes(\"claude-3-7-sonnet\"))) return true;\n\t// Claude 3.5 Haiku\n\tif (candidates.some((s) => s.includes(\"claude-3-5-haiku\"))) return true;\n\treturn false;\n}\n\nfunction resolveAnthropicCacheRetention(\n\tcacheRetention?: CacheRetention,\n\tenv?: ProviderEnv,\n\tfallback: CacheRetention = \"short\",\n): CacheRetention {\n\tif (cacheRetention) {\n\t\treturn cacheRetention;\n\t}\n\tif (getProviderEnvValue(\"PI_CACHE_RETENTION\", env) === \"long\") {\n\t\treturn \"long\";\n\t}\n\tif (typeof process !== \"undefined\" && process.env.PI_CACHE_RETENTION !== undefined) {\n\t\treturn \"short\";\n\t}\n\treturn fallback;\n}\n\nfunction resolveOpenAICompletionsCacheRetention(cacheRetention?: CacheRetention, env?: ProviderEnv): CacheRetention {\n\tif (cacheRetention) {\n\t\treturn cacheRetention;\n\t}\n\tif (getProviderEnvValue(\"PI_CACHE_RETENTION\", env) === \"long\") {\n\t\treturn \"long\";\n\t}\n\treturn \"short\";\n}\n\nfunction resolveBedrockCacheRetention(cacheRetention?: CacheRetention, env?: ProviderEnv): CacheRetention {\n\tif (cacheRetention) {\n\t\treturn cacheRetention;\n\t}\n\tif (getProviderEnvValue(\"PI_CACHE_RETENTION\", env) === \"long\") {\n\t\treturn \"long\";\n\t}\n\treturn \"short\";\n}\n\nfunction resolveOpenAIResponsesCacheRetention(cacheRetention?: CacheRetention, env?: ProviderEnv): CacheRetention {\n\tif (cacheRetention) {\n\t\treturn cacheRetention;\n\t}\n\tif (getProviderEnvValue(\"PI_CACHE_RETENTION\", env) === \"long\") {\n\t\treturn \"long\";\n\t}\n\treturn \"short\";\n}\n\nexport function resolvePromptCacheTtlSeconds(model: Model<Api>, env?: ProviderEnv): number | undefined {\n\tswitch (model.api) {\n\t\tcase \"claude-sdk-oauth\":\n\t\t\t// The Claude SDK owns prompt caching for this lane and uses Anthropic's default 5m TTL.\n\t\t\treturn PROMPT_CACHE_TTL_SHORT_SECONDS;\n\t\tcase \"anthropic-messages\": {\n\t\t\tconst anthropicModel = model as Model<\"anthropic-messages\">;\n\t\t\tconst retention = resolveAnthropicCacheRetention(anthropicModel.cacheRetention, env, \"short\");\n\t\t\tif (retention === \"none\") return undefined;\n\t\t\treturn retention === \"long\" &&\n\t\t\t\tisAnthropicApiBaseUrl(anthropicModel.baseUrl) &&\n\t\t\t\tgetAnthropicCompat(anthropicModel).supportsLongCacheRetention\n\t\t\t\t? PROMPT_CACHE_TTL_LONG_SECONDS\n\t\t\t\t: PROMPT_CACHE_TTL_SHORT_SECONDS;\n\t\t}\n\t\tcase \"bedrock-converse-stream\": {\n\t\t\tconst bedrockModel = model as Model<\"bedrock-converse-stream\">;\n\t\t\tconst retention = resolveBedrockCacheRetention(bedrockModel.cacheRetention, env);\n\t\t\tif (retention === \"none\" || !supportsPromptCaching(bedrockModel, env)) return undefined;\n\t\t\treturn retention === \"long\" && supportsOneHourCacheTtl(bedrockModel)\n\t\t\t\t? PROMPT_CACHE_TTL_LONG_SECONDS\n\t\t\t\t: PROMPT_CACHE_TTL_SHORT_SECONDS;\n\t\t}\n\t\tcase \"openai-completions\": {\n\t\t\tconst completionsModel = model as Model<\"openai-completions\">;\n\t\t\tconst retention = resolveOpenAICompletionsCacheRetention(completionsModel.cacheRetention, env);\n\t\t\tif (retention === \"none\") return undefined;\n\t\t\tconst compat = getOpenAICompletionsCompat(completionsModel);\n\t\t\tif (compat.cacheControlFormat === \"anthropic\") {\n\t\t\t\treturn retention === \"long\" && compat.supportsLongCacheRetention\n\t\t\t\t\t? PROMPT_CACHE_TTL_LONG_SECONDS\n\t\t\t\t\t: PROMPT_CACHE_TTL_SHORT_SECONDS;\n\t\t\t}\n\t\t\treturn PROMPT_CACHE_TTL_SHORT_SECONDS;\n\t\t}\n\t\tcase \"openai-responses\":\n\t\tcase \"openai-codex-responses\":\n\t\tcase \"azure-openai-responses\": {\n\t\t\tconst retention = resolveOpenAIResponsesCacheRetention(model.cacheRetention, env);\n\t\t\treturn retention === \"none\" ? undefined : PROMPT_CACHE_TTL_SHORT_SECONDS;\n\t\t}\n\t\tdefault:\n\t\t\treturn undefined;\n\t}\n}\n"]}
1
+ {"version":3,"file":"prompt-cache-ttl.js","sourceRoot":"","sources":["../../src/utils/prompt-cache-ttl.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tAnthropicMessagesCompat,\n\tApi,\n\tCacheRetention,\n\tModel,\n\tOpenAICompletionsCompat,\n\tProviderEnv,\n} from \"../types.ts\";\nimport { getProviderEnvValue } from \"./provider-env.ts\";\n\nexport const PROMPT_CACHE_TTL_SHORT_SECONDS = 300;\nexport const PROMPT_CACHE_TTL_LONG_SECONDS = 3600;\n\nexport function isAnthropicApiBaseUrl(baseUrl: string): boolean {\n\ttry {\n\t\treturn new URL(baseUrl).hostname === \"api.anthropic.com\";\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nconst CLAUDE_FABLE_OR_MYTHOS_MODEL_ID = /^claude-(?:fable|mythos)(?:-|$)/i;\n\n/**\n * Default for `supportsToolReferences`: first-party Anthropic models except\n * Haiku (rejects client-side tool_reference blocks) and models that predate\n * tool search (Claude 3.x, Opus/Sonnet 4.0, Opus 4.1).\n */\nfunction defaultSupportsToolReferences(model: Model<\"anthropic-messages\">): boolean {\n\tif (model.provider !== \"anthropic\" || model.id.includes(\"haiku\")) return false;\n\tconst version = model.id.match(/^claude-(?:opus|sonnet|fable)-(\\d+)(?:-(\\d+))?(?:-|$)/);\n\tif (!version) return false;\n\tconst major = Number(version[1]);\n\tconst minor = version[2] && version[2].length < 8 ? Number(version[2]) : 0;\n\treturn major > 4 || (major === 4 && minor >= 5);\n}\n\nexport function getAnthropicCompat(\n\tmodel: Model<\"anthropic-messages\">,\n): Required<Omit<AnthropicMessagesCompat, \"forceAdaptiveThinking\" | \"supportsMidConvoEffort\">> {\n\t// Auto-detect session affinity and cache control support from provider\n\tconst isFireworks = model.provider === \"fireworks\";\n\tconst isCloudflareAiGatewayAnthropic =\n\t\tmodel.provider === \"cloudflare-ai-gateway\" && model.baseUrl.includes(\"anthropic\");\n\tconst isXiaomi = model.provider === \"xiaomi\" || model.provider.startsWith(\"xiaomi-token-plan-\");\n\treturn {\n\t\tsupportsEagerToolInputStreaming: model.compat?.supportsEagerToolInputStreaming ?? !isFireworks,\n\t\tsupportsLongCacheRetention: model.compat?.supportsLongCacheRetention ?? !isFireworks,\n\t\tsendSessionAffinityHeaders:\n\t\t\tmodel.compat?.sendSessionAffinityHeaders ?? !!(isFireworks || isCloudflareAiGatewayAnthropic),\n\t\tsupportsCacheControlOnTools: model.compat?.supportsCacheControlOnTools ?? !isFireworks,\n\t\tsupportsDisabledThinking: model.compat?.supportsDisabledThinking ?? !isXiaomi,\n\t\tsupportsTemperature: model.compat?.supportsTemperature ?? true,\n\t\tsupportsToolChoice: model.compat?.supportsToolChoice ?? true,\n\t\tsupportsForcedToolChoice:\n\t\t\tmodel.compat?.supportsForcedToolChoice ?? !CLAUDE_FABLE_OR_MYTHOS_MODEL_ID.test(model.id),\n\t\tallowEmptySignature: model.compat?.allowEmptySignature ?? false,\n\t\tunsignedThinkingReplay:\n\t\t\tmodel.compat?.unsignedThinkingReplay ?? (model.compat?.allowEmptySignature ? \"empty-signature\" : \"text\"),\n\t\tallowedFallbackModels: model.compat?.allowedFallbackModels ?? [],\n\t\tsupportsStrictTools: model.compat?.supportsStrictTools ?? false,\n\t\tsupportsToolReferences: model.compat?.supportsToolReferences ?? defaultSupportsToolReferences(model),\n\t\t// Default: first-party Anthropic only. Anthropic-compatible providers\n\t\t// (kimi-coding, fireworks, copilot, gateways) may execute the server-side\n\t\t// search but reject the replayed server_tool_use / web_search_tool_result\n\t\t// blocks on the next request (kimi-coding 400s with `tool_call_id is not\n\t\t// found`).\n\t\tsupportsWebSearch: model.compat?.supportsWebSearch ?? isAnthropicApiBaseUrl(model.baseUrl),\n\t};\n}\n\nexport type ResolvedOpenAICompletionsCompat = Omit<\n\tRequired<OpenAICompletionsCompat>,\n\t| \"vllmPriority\"\n\t| \"cacheControlFormat\"\n\t| \"toolCallFormat\"\n\t| \"deferredToolsMode\"\n\t| \"toolSchemaFlavor\"\n\t| \"supportsPromptCacheKey\"\n\t| \"chatTemplateArgs\"\n\t| \"supportsThinkingTokenBudget\"\n\t| \"thinkingTokenBudgetField\"\n\t| \"veniceParameters\"\n> & {\n\tcacheControlFormat?: OpenAICompletionsCompat[\"cacheControlFormat\"];\n\tsupportsPromptCacheKey?: OpenAICompletionsCompat[\"supportsPromptCacheKey\"];\n\ttoolCallFormat?: OpenAICompletionsCompat[\"toolCallFormat\"];\n\tdeferredToolsMode?: OpenAICompletionsCompat[\"deferredToolsMode\"];\n\ttoolSchemaFlavor?: OpenAICompletionsCompat[\"toolSchemaFlavor\"];\n\tchatTemplateArgs?: OpenAICompletionsCompat[\"chatTemplateArgs\"];\n\tsupportsThinkingTokenBudget?: OpenAICompletionsCompat[\"supportsThinkingTokenBudget\"];\n\tthinkingTokenBudgetField?: OpenAICompletionsCompat[\"thinkingTokenBudgetField\"];\n\t/** vLLM `priority`; off by default and never set on the generated catalog. */\n\tvllmPriority?: OpenAICompletionsCompat[\"vllmPriority\"];\n\t/** Venice `venice_parameters`; only set on the generated Venice catalog. */\n\tveniceParameters?: OpenAICompletionsCompat[\"veniceParameters\"];\n};\n\n/**\n * Detect compatibility settings from provider and baseUrl for known providers.\n * Provider takes precedence over URL-based detection since it's explicitly configured.\n * Returns a fully resolved OpenAICompletionsCompat object with all fields set.\n */\nfunction detectOpenAICompletionsCompat(model: Model<\"openai-completions\">): ResolvedOpenAICompletionsCompat {\n\tconst provider = model.provider;\n\tconst baseUrl = model.baseUrl;\n\n\tconst isZai =\n\t\tprovider === \"zai\" ||\n\t\tprovider === \"zai-coding-cn\" ||\n\t\tbaseUrl.includes(\"api.z.ai\") ||\n\t\tbaseUrl.includes(\"open.bigmodel.cn\");\n\tconst isTogether =\n\t\tprovider === \"together\" || baseUrl.includes(\"api.together.ai\") || baseUrl.includes(\"api.together.xyz\");\n\tconst isMoonshot = provider === \"moonshotai\" || provider === \"moonshotai-cn\" || baseUrl.includes(\"api.moonshot.\");\n\tconst isOpenRouter = provider === \"openrouter\" || baseUrl.includes(\"openrouter.ai\");\n\tconst isCloudflareWorkersAI = provider === \"cloudflare-workers-ai\" || baseUrl.includes(\"api.cloudflare.com\");\n\tconst isCloudflareAiGateway = provider === \"cloudflare-ai-gateway\" || baseUrl.includes(\"gateway.ai.cloudflare.com\");\n\tconst isNvidia = provider === \"nvidia\" || baseUrl.includes(\"integrate.api.nvidia.com\");\n\tconst isAntLing = provider === \"ant-ling\" || baseUrl.includes(\"api.ant-ling.com\");\n\tconst isDeepSeek = provider === \"deepseek\" || baseUrl.toLowerCase().includes(\"deepseek.com\");\n\n\tconst isNonStandard =\n\t\tisNvidia ||\n\t\tprovider === \"cerebras\" ||\n\t\tbaseUrl.includes(\"cerebras.ai\") ||\n\t\tprovider === \"xai\" ||\n\t\tbaseUrl.includes(\"api.x.ai\") ||\n\t\tisTogether ||\n\t\tbaseUrl.includes(\"chutes.ai\") ||\n\t\tisDeepSeek ||\n\t\tisZai ||\n\t\tisMoonshot ||\n\t\tprovider === \"opencode\" ||\n\t\tbaseUrl.includes(\"opencode.ai\") ||\n\t\tisCloudflareWorkersAI ||\n\t\tisCloudflareAiGateway ||\n\t\tisAntLing;\n\n\tconst useMaxTokens =\n\t\tbaseUrl.includes(\"chutes.ai\") ||\n\t\tisDeepSeek ||\n\t\tisMoonshot ||\n\t\tisCloudflareAiGateway ||\n\t\tisTogether ||\n\t\tisNvidia ||\n\t\tisAntLing ||\n\t\tisZai;\n\n\tconst isGrok = provider === \"xai\" || baseUrl.includes(\"api.x.ai\");\n\tconst isOpenRouterDeveloperRoleModel =\n\t\tisOpenRouter && (model.id.startsWith(\"anthropic/\") || model.id.startsWith(\"openai/\"));\n\tconst openRouterCacheControlPrefixes = [\"anthropic/\", \"qwen/\", \"google/\"];\n\tconst cacheControlModelId = model.id.startsWith(\"~\") ? model.id.slice(1) : model.id;\n\tconst supportsOpenRouterCacheControl = openRouterCacheControlPrefixes.some((prefix) =>\n\t\tcacheControlModelId.startsWith(prefix),\n\t);\n\tconst cacheControlFormat = provider === \"openrouter\" && supportsOpenRouterCacheControl ? \"anthropic\" : undefined;\n\n\treturn {\n\t\tsupportsStore: !isNonStandard,\n\t\tsupportsDeveloperRole: isOpenRouterDeveloperRoleModel || (!isNonStandard && !isOpenRouter),\n\t\tsupportsReasoningEffort:\n\t\t\t!isGrok && !isZai && !isMoonshot && !isTogether && !isCloudflareAiGateway && !isNvidia && !isAntLing,\n\t\tsupportsUsageInStreaming: true,\n\t\tsupportsFinishReason: true,\n\t\tmaxTokensField: useMaxTokens ? \"max_tokens\" : \"max_completion_tokens\",\n\t\trequiresToolResultName: false,\n\t\trequiresAssistantAfterToolResult: false,\n\t\trequiresThinkingAsText: false,\n\t\trequiresReasoningContentOnAssistantMessages: isDeepSeek,\n\t\tthinkingFormat: isDeepSeek\n\t\t\t? \"deepseek\"\n\t\t\t: isZai\n\t\t\t\t? \"zai\"\n\t\t\t\t: isTogether\n\t\t\t\t\t? \"together\"\n\t\t\t\t\t: isAntLing\n\t\t\t\t\t\t? \"ant-ling\"\n\t\t\t\t\t\t: isOpenRouter\n\t\t\t\t\t\t\t? \"openrouter\"\n\t\t\t\t\t\t\t: \"openai\",\n\t\topenRouterRouting: {},\n\t\tvercelGatewayRouting: {},\n\t\tchatTemplateKwargs: {},\n\t\tzaiToolStream: false,\n\t\tsupportsStrictMode: !isMoonshot && !isTogether && !isCloudflareAiGateway && !isNvidia,\n\t\ttoolSchemaFlavor: isMoonshot ? \"moonshot-mfjs\" : undefined,\n\t\tsupportsDisabledThinking: true,\n\t\ttoolCallFormat: undefined,\n\t\tsupportsOpenAIGrammarTools: false,\n\t\tcacheControlFormat,\n\t\tsendSessionAffinityHeaders: isOpenRouter,\n\t\tdeferredToolsMode: undefined,\n\t\tsessionAffinityFormat: isOpenRouter ? \"openrouter\" : \"openai\",\n\t\tsupportsPromptCacheKey: isMoonshot || baseUrl.includes(\"api.openai.com\"),\n\t\tsupportsMaxOutputTokens: true,\n\t\tsupportsLongCacheRetention: !(\n\t\t\tisTogether ||\n\t\t\tisCloudflareWorkersAI ||\n\t\t\tisCloudflareAiGateway ||\n\t\t\tisNvidia ||\n\t\t\tisAntLing\n\t\t),\n\t};\n}\n\n/**\n * Get resolved compatibility settings for a model.\n * Auto-detects from provider/URL then overrides with explicit model.compat.\n */\nexport function getOpenAICompletionsCompat(model: Model<\"openai-completions\">): ResolvedOpenAICompletionsCompat {\n\tconst detected = detectOpenAICompletionsCompat(model);\n\tif (!model.compat) return detected;\n\n\treturn {\n\t\tsupportsStore: model.compat.supportsStore ?? detected.supportsStore,\n\t\tsupportsDeveloperRole: model.compat.supportsDeveloperRole ?? detected.supportsDeveloperRole,\n\t\tsupportsReasoningEffort: model.compat.supportsReasoningEffort ?? detected.supportsReasoningEffort,\n\t\tsupportsUsageInStreaming: model.compat.supportsUsageInStreaming ?? detected.supportsUsageInStreaming,\n\t\tsupportsFinishReason: model.compat.supportsFinishReason ?? detected.supportsFinishReason,\n\t\tmaxTokensField: model.compat.maxTokensField ?? detected.maxTokensField,\n\t\trequiresToolResultName: model.compat.requiresToolResultName ?? detected.requiresToolResultName,\n\t\trequiresAssistantAfterToolResult:\n\t\t\tmodel.compat.requiresAssistantAfterToolResult ?? detected.requiresAssistantAfterToolResult,\n\t\trequiresThinkingAsText: model.compat.requiresThinkingAsText ?? detected.requiresThinkingAsText,\n\t\trequiresReasoningContentOnAssistantMessages:\n\t\t\tmodel.compat.requiresReasoningContentOnAssistantMessages ??\n\t\t\tdetected.requiresReasoningContentOnAssistantMessages,\n\t\tthinkingFormat: model.compat.thinkingFormat ?? detected.thinkingFormat,\n\t\tsupportsDisabledThinking: model.compat.supportsDisabledThinking ?? detected.supportsDisabledThinking,\n\t\topenRouterRouting: model.compat.openRouterRouting ?? detected.openRouterRouting,\n\t\tvercelGatewayRouting: model.compat.vercelGatewayRouting ?? detected.vercelGatewayRouting,\n\t\tchatTemplateKwargs: model.compat.chatTemplateKwargs ?? detected.chatTemplateKwargs,\n\t\tchatTemplateArgs: model.compat.chatTemplateArgs ?? detected.chatTemplateArgs,\n\t\tzaiToolStream: model.compat.zaiToolStream ?? detected.zaiToolStream,\n\t\tsupportsThinkingTokenBudget: model.compat.supportsThinkingTokenBudget ?? detected.supportsThinkingTokenBudget,\n\t\tthinkingTokenBudgetField: model.compat.thinkingTokenBudgetField ?? detected.thinkingTokenBudgetField,\n\t\tsupportsStrictMode: model.compat.supportsStrictMode ?? detected.supportsStrictMode,\n\t\ttoolSchemaFlavor: model.compat.toolSchemaFlavor ?? detected.toolSchemaFlavor,\n\t\ttoolCallFormat: model.compat.toolCallFormat ?? detected.toolCallFormat,\n\t\tsupportsOpenAIGrammarTools: model.compat.supportsOpenAIGrammarTools ?? detected.supportsOpenAIGrammarTools,\n\t\tcacheControlFormat: model.compat.cacheControlFormat ?? detected.cacheControlFormat,\n\t\tsendSessionAffinityHeaders: model.compat.sendSessionAffinityHeaders ?? detected.sendSessionAffinityHeaders,\n\t\tdeferredToolsMode: model.compat.deferredToolsMode ?? detected.deferredToolsMode,\n\t\tsessionAffinityFormat: model.compat.sessionAffinityFormat ?? detected.sessionAffinityFormat,\n\t\tsupportsPromptCacheKey: model.compat.supportsPromptCacheKey ?? detected.supportsPromptCacheKey,\n\t\tsupportsMaxOutputTokens: model.compat.supportsMaxOutputTokens ?? detected.supportsMaxOutputTokens,\n\t\tvllmPriority: model.compat.vllmPriority ?? detected.vllmPriority,\n\t\tsupportsLongCacheRetention: model.compat.supportsLongCacheRetention ?? detected.supportsLongCacheRetention,\n\t};\n}\n\nexport function getBedrockModelMatchCandidates(modelId: string, modelName?: string): string[] {\n\tconst values = modelName ? [modelId, modelName] : [modelId];\n\treturn values.flatMap((value) => {\n\t\tconst lower = value.toLowerCase();\n\t\treturn [lower, lower.replace(/[\\s_.:]+/g, \"-\")];\n\t});\n}\n\nexport function supportsOneHourCacheTtl(model: Model<\"bedrock-converse-stream\">): boolean {\n\tconst candidates = getBedrockModelMatchCandidates(model.id, model.name);\n\treturn candidates.some((candidate) =>\n\t\t[\"opus-4-5\", \"sonnet-4-5\", \"haiku-4-5\"].some((modelVersion) => candidate.includes(modelVersion)),\n\t);\n}\n\n/**\n * Check if the model supports prompt caching.\n * Supported: Claude 3.5 Haiku, Claude 3.7 Sonnet, Claude 4.x models, Claude 5 models\n *\n * For base models and system-defined inference profiles the model ID / ARN\n * contains the model name, so we can decide locally.\n *\n * For application inference profiles (whose ARNs don't contain the model name),\n * also checks model.name which is user-controlled via models.json or registerProvider.\n * As a last resort, set AWS_BEDROCK_FORCE_CACHE=1 to enable cache points.\n * Amazon Nova models have automatic caching and don't need explicit cache points.\n */\nexport function supportsPromptCaching(model: Model<\"bedrock-converse-stream\">, env?: ProviderEnv): boolean {\n\tconst candidates = getBedrockModelMatchCandidates(model.id, model.name);\n\n\tconst hasClaudeRef = candidates.some((s) => s.includes(\"claude\"));\n\tif (!hasClaudeRef) {\n\t\t// Application inference profiles don't contain the model name in the ARN.\n\t\t// Allow users to force cache points via environment variable.\n\t\tif (getProviderEnvValue(\"AWS_BEDROCK_FORCE_CACHE\", env) === \"1\") return true;\n\t\treturn false;\n\t}\n\t// Claude 5 models (fable-5, opus-5, sonnet-5)\n\tif (candidates.some((s) => s.includes(\"fable-5\") || s.includes(\"opus-5\") || s.includes(\"sonnet-5\"))) return true;\n\t// Claude 4.x models (opus-4, sonnet-4, haiku-4)\n\tif (candidates.some((s) => s.includes(\"-4-\"))) return true;\n\t// Claude 3.7 Sonnet\n\tif (candidates.some((s) => s.includes(\"claude-3-7-sonnet\"))) return true;\n\t// Claude 3.5 Haiku\n\tif (candidates.some((s) => s.includes(\"claude-3-5-haiku\"))) return true;\n\treturn false;\n}\n\nfunction resolveAnthropicCacheRetention(\n\tcacheRetention?: CacheRetention,\n\tenv?: ProviderEnv,\n\tfallback: CacheRetention = \"short\",\n): CacheRetention {\n\tif (cacheRetention) {\n\t\treturn cacheRetention;\n\t}\n\tif (getProviderEnvValue(\"PI_CACHE_RETENTION\", env) === \"long\") {\n\t\treturn \"long\";\n\t}\n\tif (typeof process !== \"undefined\" && process.env.PI_CACHE_RETENTION !== undefined) {\n\t\treturn \"short\";\n\t}\n\treturn fallback;\n}\n\nfunction resolveOpenAICompletionsCacheRetention(cacheRetention?: CacheRetention, env?: ProviderEnv): CacheRetention {\n\tif (cacheRetention) {\n\t\treturn cacheRetention;\n\t}\n\tif (getProviderEnvValue(\"PI_CACHE_RETENTION\", env) === \"long\") {\n\t\treturn \"long\";\n\t}\n\treturn \"short\";\n}\n\nfunction resolveBedrockCacheRetention(cacheRetention?: CacheRetention, env?: ProviderEnv): CacheRetention {\n\tif (cacheRetention) {\n\t\treturn cacheRetention;\n\t}\n\tif (getProviderEnvValue(\"PI_CACHE_RETENTION\", env) === \"long\") {\n\t\treturn \"long\";\n\t}\n\treturn \"short\";\n}\n\nfunction resolveOpenAIResponsesCacheRetention(cacheRetention?: CacheRetention, env?: ProviderEnv): CacheRetention {\n\tif (cacheRetention) {\n\t\treturn cacheRetention;\n\t}\n\tif (getProviderEnvValue(\"PI_CACHE_RETENTION\", env) === \"long\") {\n\t\treturn \"long\";\n\t}\n\treturn \"short\";\n}\n\nexport function resolvePromptCacheTtlSeconds(model: Model<Api>, env?: ProviderEnv): number | undefined {\n\tswitch (model.api) {\n\t\tcase \"claude-sdk-oauth\":\n\t\t\t// The Claude SDK owns prompt caching for this lane and uses Anthropic's default 5m TTL.\n\t\t\treturn PROMPT_CACHE_TTL_SHORT_SECONDS;\n\t\tcase \"anthropic-messages\": {\n\t\t\tconst anthropicModel = model as Model<\"anthropic-messages\">;\n\t\t\tconst retention = resolveAnthropicCacheRetention(anthropicModel.cacheRetention, env, \"short\");\n\t\t\tif (retention === \"none\") return undefined;\n\t\t\treturn retention === \"long\" &&\n\t\t\t\tisAnthropicApiBaseUrl(anthropicModel.baseUrl) &&\n\t\t\t\tgetAnthropicCompat(anthropicModel).supportsLongCacheRetention\n\t\t\t\t? PROMPT_CACHE_TTL_LONG_SECONDS\n\t\t\t\t: PROMPT_CACHE_TTL_SHORT_SECONDS;\n\t\t}\n\t\tcase \"bedrock-converse-stream\": {\n\t\t\tconst bedrockModel = model as Model<\"bedrock-converse-stream\">;\n\t\t\tconst retention = resolveBedrockCacheRetention(bedrockModel.cacheRetention, env);\n\t\t\tif (retention === \"none\" || !supportsPromptCaching(bedrockModel, env)) return undefined;\n\t\t\treturn retention === \"long\" && supportsOneHourCacheTtl(bedrockModel)\n\t\t\t\t? PROMPT_CACHE_TTL_LONG_SECONDS\n\t\t\t\t: PROMPT_CACHE_TTL_SHORT_SECONDS;\n\t\t}\n\t\tcase \"openai-completions\": {\n\t\t\tconst completionsModel = model as Model<\"openai-completions\">;\n\t\t\tconst retention = resolveOpenAICompletionsCacheRetention(completionsModel.cacheRetention, env);\n\t\t\tif (retention === \"none\") return undefined;\n\t\t\tconst compat = getOpenAICompletionsCompat(completionsModel);\n\t\t\tif (compat.cacheControlFormat === \"anthropic\") {\n\t\t\t\treturn retention === \"long\" && compat.supportsLongCacheRetention\n\t\t\t\t\t? PROMPT_CACHE_TTL_LONG_SECONDS\n\t\t\t\t\t: PROMPT_CACHE_TTL_SHORT_SECONDS;\n\t\t\t}\n\t\t\treturn PROMPT_CACHE_TTL_SHORT_SECONDS;\n\t\t}\n\t\tcase \"openai-responses\":\n\t\tcase \"openai-codex-responses\":\n\t\tcase \"azure-openai-responses\": {\n\t\t\tconst retention = resolveOpenAIResponsesCacheRetention(model.cacheRetention, env);\n\t\t\treturn retention === \"none\" ? undefined : PROMPT_CACHE_TTL_SHORT_SECONDS;\n\t\t}\n\t\tdefault:\n\t\t\treturn undefined;\n\t}\n}\n"]}
@@ -67,16 +67,7 @@ export interface RetryBackoffPolicy {
67
67
  readonly perAttemptCapMs: number | null;
68
68
  readonly jitter: RetryJitterPolicy;
69
69
  }
70
- /**
71
- * Ceiling on a server-requested wait for `override`-mode hint policies.
72
- *
73
- * On the turn stage this ceiling is profile-owned end to end: besides driving
74
- * the planner's `over-ceiling` verdict, an override-mode `maxDelayMs` also
75
- * governs the coding-agent session's agent-level wait clamp — `null` passes
76
- * every admitted wait through verbatim, a number is the profile's own cap, and
77
- * the session's `retry.maxAgentDelayMs` default applies only to profiles that
78
- * declare no ceiling of their own.
79
- */
70
+ /** Ceiling on a server-requested wait for `override`-mode hint policies. */
80
71
  export interface RetryHintCeiling {
81
72
  /** `null` means no ceiling, so `over-ceiling` is unreachable. */
82
73
  readonly maxDelayMs: number | null;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/retry-profile/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/retry-profile/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/utils/retry-profile/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG","sourcesContent":["/**\n * Pure value types for provider-declared retry policy profiles.\n *\n * A {@link RetryPolicyProfile} describes how one provider's requests are\n * retried at two independent stages — the provider/transport request and the\n * assistant turn — plus how the model-fallback chain interacts with the turn\n * budget. These types carry no behaviour; scheduling functions live in sibling\n * modules (`backoff.ts`, and later waves) so the contract stays pure data.\n */\n\n/** Normalized failure category; the classifier union is exhaustive over this. */\nexport type RetryFailureKind =\n\t| \"abort\"\n\t| \"connection\"\n\t| \"timeout\"\n\t| \"empty-response\"\n\t| \"quota-exhausted\"\n\t| \"http-status\"\n\t| \"image-format\"\n\t| \"provider\"\n\t| \"refusal\"\n\t| \"sensitive\"\n\t| \"unknown\";\n\n/**\n * Whitelisted facts about one provider failure, normalized at the API\n * boundary. Only these fields are ever retained: raw `Headers` objects,\n * authorization values, and response bodies are never carried here.\n */\nexport interface RetryFailure {\n\t/** API surface that captured the failure (e.g. \"anthropic-messages\"). */\n\treadonly origin: string;\n\treadonly kind: RetryFailureKind;\n\t/** Byte-identical to the error string today's regex classifier matches on. */\n\treadonly message: string;\n\treadonly statusCode?: number;\n\t/** Nested provider `error.type` / `error.code` strings when present. */\n\treadonly providerCodes?: readonly string[];\n\treadonly finishReason?: string;\n\t/** Parsed server-requested wait in ms when a hint exists. */\n\treadonly retryAfterMs?: number;\n\t/** Provider `x-should-retry` verdict when the transport exposed one. */\n\treadonly shouldRetry?: boolean;\n}\n\n/** Verdict of a stage classifier: how the retry loop may treat a failure. */\nexport type RetryClassification =\n\t| { readonly verdict: \"transient\" }\n\t| { readonly verdict: \"rate-limited\" }\n\t| { readonly verdict: \"terminal\" };\n\n/** Classifies a normalized failure into a retry verdict. */\nexport type RetryClassifier = (failure: RetryFailure) => RetryClassification;\n\n/**\n * Narrow server-hint extractor: returns a positive server-requested wait in\n * milliseconds, or undefined when the failure carries none. Profiles declare\n * their own; senpi's richer five-source precedence lives in `../retry-hint.ts`\n * and is not part of this contract.\n */\nexport type RetryHintExtractor = (failure: RetryFailure) => number | undefined;\n\n/**\n * Jitter applied AFTER the per-attempt cap: `additive` grows the delay by up\n * to `ratio` (random * ratio * capped), `subtractive` shrinks it by the same\n * amount. `none` returns the capped delay unchanged.\n */\nexport type RetryJitterPolicy =\n\t| { readonly mode: \"none\" }\n\t| { readonly mode: \"additive\" | \"subtractive\"; readonly ratio: number };\n\nexport interface RetryBackoffPolicy {\n\treadonly baseDelayMs: number;\n\treadonly growthFactor: number;\n\t/**\n\t * Per-attempt cap applied to `baseDelayMs * growthFactor ** (retryNumber - 1)`\n\t * BEFORE jitter. `null` means no cap; `0` is a literal zero cap.\n\t */\n\treadonly perAttemptCapMs: number | null;\n\treadonly jitter: RetryJitterPolicy;\n}\n\n/**\n * Ceiling on a server-requested wait for `override`-mode hint policies.\n *\n * On the turn stage this ceiling is profile-owned end to end: besides driving\n * the planner's `over-ceiling` verdict, an override-mode `maxDelayMs` also\n * governs the coding-agent session's agent-level wait clamp — `null` passes\n * every admitted wait through verbatim, a number is the profile's own cap, and\n * the session's `retry.maxAgentDelayMs` default applies only to profiles that\n * declare no ceiling of their own.\n */\nexport interface RetryHintCeiling {\n\t/** `null` means no ceiling, so `over-ceiling` is unreachable. */\n\treadonly maxDelayMs: number | null;\n\treadonly onExceeded: \"error-with-marker\";\n}\n\n/** Tier verdict forwarded unchanged by the delay planner for tiered stages. */\nexport interface RetryTieredHintDecision {\n\t/** Tier label owned by the injected strategy (senpi's tiers live in coding-agent). */\n\treadonly tier: string;\n\treadonly delayMs: number;\n}\n\n/**\n * Tiered-hint strategy, injected from the coding-agent side. packages/ai must\n * not import packages/coding-agent, so the senpi-default profile receives its\n * tier engine (`classifyRateLimitedWait` / `nextInTurnDelayMs` /\n * `degradeWithoutFallback`) as a function value.\n */\nexport type RetryTieredHintStrategy = (\n\tfailure: RetryFailure,\n\tretryNumber: number,\n\tbackoff: RetryBackoffPolicy,\n\tnow: number,\n) => RetryTieredHintDecision;\n\n/**\n * How a stage treats a server-requested wait. `override` replaces the computed\n * backoff with the hint (positive by default; `acceptZero` opts into zero);\n * `tiered` delegates the decision to the injected tier strategy.\n */\nexport type RetryServerHintPolicy =\n\t| {\n\t\t\treadonly mode: \"override\";\n\t\t\treadonly acceptZero: boolean;\n\t\t\treadonly ceiling: RetryHintCeiling;\n\t }\n\t| {\n\t\t\treadonly mode: \"tiered\";\n\t\t\treadonly strategy: RetryTieredHintStrategy;\n\t };\n\nexport interface RetryStagePolicy {\n\treadonly enabled: boolean;\n\treadonly maxRetries: number;\n\treadonly backoff: RetryBackoffPolicy;\n\treadonly extractServerHint: RetryHintExtractor;\n\treadonly serverHint: RetryServerHintPolicy;\n\treadonly classify: RetryClassifier;\n}\n\nexport interface RetryPolicyProfile {\n\treadonly id: string;\n\treadonly providerRequest: RetryStagePolicy;\n\treadonly turn: RetryStagePolicy;\n\treadonly fallback: {\n\t\treadonly terminal: \"immediate-if-eligible\";\n\t\treadonly transient: \"after-turn-budget\";\n\t\treadonly rateLimited: \"tiered\" | \"after-turn-budget\";\n\t\treadonly resetBudgetOnModelChange: true;\n\t};\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/utils/retry-profile/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG","sourcesContent":["/**\n * Pure value types for provider-declared retry policy profiles.\n *\n * A {@link RetryPolicyProfile} describes how one provider's requests are\n * retried at two independent stages — the provider/transport request and the\n * assistant turn — plus how the model-fallback chain interacts with the turn\n * budget. These types carry no behaviour; scheduling functions live in sibling\n * modules (`backoff.ts`, and later waves) so the contract stays pure data.\n */\n\n/** Normalized failure category; the classifier union is exhaustive over this. */\nexport type RetryFailureKind =\n\t| \"abort\"\n\t| \"connection\"\n\t| \"timeout\"\n\t| \"empty-response\"\n\t| \"quota-exhausted\"\n\t| \"http-status\"\n\t| \"image-format\"\n\t| \"provider\"\n\t| \"refusal\"\n\t| \"sensitive\"\n\t| \"unknown\";\n\n/**\n * Whitelisted facts about one provider failure, normalized at the API\n * boundary. Only these fields are ever retained: raw `Headers` objects,\n * authorization values, and response bodies are never carried here.\n */\nexport interface RetryFailure {\n\t/** API surface that captured the failure (e.g. \"anthropic-messages\"). */\n\treadonly origin: string;\n\treadonly kind: RetryFailureKind;\n\t/** Byte-identical to the error string today's regex classifier matches on. */\n\treadonly message: string;\n\treadonly statusCode?: number;\n\t/** Nested provider `error.type` / `error.code` strings when present. */\n\treadonly providerCodes?: readonly string[];\n\treadonly finishReason?: string;\n\t/** Parsed server-requested wait in ms when a hint exists. */\n\treadonly retryAfterMs?: number;\n\t/** Provider `x-should-retry` verdict when the transport exposed one. */\n\treadonly shouldRetry?: boolean;\n}\n\n/** Verdict of a stage classifier: how the retry loop may treat a failure. */\nexport type RetryClassification =\n\t| { readonly verdict: \"transient\" }\n\t| { readonly verdict: \"rate-limited\" }\n\t| { readonly verdict: \"terminal\" };\n\n/** Classifies a normalized failure into a retry verdict. */\nexport type RetryClassifier = (failure: RetryFailure) => RetryClassification;\n\n/**\n * Narrow server-hint extractor: returns a positive server-requested wait in\n * milliseconds, or undefined when the failure carries none. Profiles declare\n * their own; senpi's richer five-source precedence lives in `../retry-hint.ts`\n * and is not part of this contract.\n */\nexport type RetryHintExtractor = (failure: RetryFailure) => number | undefined;\n\n/**\n * Jitter applied AFTER the per-attempt cap: `additive` grows the delay by up\n * to `ratio` (random * ratio * capped), `subtractive` shrinks it by the same\n * amount. `none` returns the capped delay unchanged.\n */\nexport type RetryJitterPolicy =\n\t| { readonly mode: \"none\" }\n\t| { readonly mode: \"additive\" | \"subtractive\"; readonly ratio: number };\n\nexport interface RetryBackoffPolicy {\n\treadonly baseDelayMs: number;\n\treadonly growthFactor: number;\n\t/**\n\t * Per-attempt cap applied to `baseDelayMs * growthFactor ** (retryNumber - 1)`\n\t * BEFORE jitter. `null` means no cap; `0` is a literal zero cap.\n\t */\n\treadonly perAttemptCapMs: number | null;\n\treadonly jitter: RetryJitterPolicy;\n}\n\n/** Ceiling on a server-requested wait for `override`-mode hint policies. */\nexport interface RetryHintCeiling {\n\t/** `null` means no ceiling, so `over-ceiling` is unreachable. */\n\treadonly maxDelayMs: number | null;\n\treadonly onExceeded: \"error-with-marker\";\n}\n\n/** Tier verdict forwarded unchanged by the delay planner for tiered stages. */\nexport interface RetryTieredHintDecision {\n\t/** Tier label owned by the injected strategy (senpi's tiers live in coding-agent). */\n\treadonly tier: string;\n\treadonly delayMs: number;\n}\n\n/**\n * Tiered-hint strategy, injected from the coding-agent side. packages/ai must\n * not import packages/coding-agent, so the senpi-default profile receives its\n * tier engine (`classifyRateLimitedWait` / `nextInTurnDelayMs` /\n * `degradeWithoutFallback`) as a function value.\n */\nexport type RetryTieredHintStrategy = (\n\tfailure: RetryFailure,\n\tretryNumber: number,\n\tbackoff: RetryBackoffPolicy,\n\tnow: number,\n) => RetryTieredHintDecision;\n\n/**\n * How a stage treats a server-requested wait. `override` replaces the computed\n * backoff with the hint (positive by default; `acceptZero` opts into zero);\n * `tiered` delegates the decision to the injected tier strategy.\n */\nexport type RetryServerHintPolicy =\n\t| {\n\t\t\treadonly mode: \"override\";\n\t\t\treadonly acceptZero: boolean;\n\t\t\treadonly ceiling: RetryHintCeiling;\n\t }\n\t| {\n\t\t\treadonly mode: \"tiered\";\n\t\t\treadonly strategy: RetryTieredHintStrategy;\n\t };\n\nexport interface RetryStagePolicy {\n\treadonly enabled: boolean;\n\treadonly maxRetries: number;\n\treadonly backoff: RetryBackoffPolicy;\n\treadonly extractServerHint: RetryHintExtractor;\n\treadonly serverHint: RetryServerHintPolicy;\n\treadonly classify: RetryClassifier;\n}\n\nexport interface RetryPolicyProfile {\n\treadonly id: string;\n\treadonly providerRequest: RetryStagePolicy;\n\treadonly turn: RetryStagePolicy;\n\treadonly fallback: {\n\t\treadonly terminal: \"immediate-if-eligible\";\n\t\treadonly transient: \"after-turn-budget\";\n\t\treadonly rateLimited: \"tiered\" | \"after-turn-budget\";\n\t\treadonly resetBudgetOnModelChange: true;\n\t};\n}\n"]}
@@ -1,8 +1,7 @@
1
1
  import type { AssistantMessage } from "../types.ts";
2
2
  /**
3
3
  * Retry policy: bounded attempts with exponential backoff (`baseDelayMs * 2^(attempt-1)`).
4
- * `maxAgentDelayMs` caps each computed delay and defaults to 60 seconds.
5
- * Matches `settings.retry` (`enabled`, `maxRetries`, `baseDelayMs`, `maxAgentDelayMs`) in coding-agent; kept
4
+ * Matches `settings.retry` (`enabled`, `maxRetries`, `baseDelayMs`) in coding-agent; kept
6
5
  * here so the classifier and the policy-driven retry loop live together and stay reusable
7
6
  * by the SDK and other callers.
8
7
  */
@@ -12,20 +11,10 @@ export interface RetryPolicy {
12
11
  maxRetries: number;
13
12
  /** Base delay in ms. Per-attempt delay is `baseDelayMs * 2^(attempt-1)` before jitter. */
14
13
  baseDelayMs: number;
15
- /** Optional cap for agent-level retry delays in ms. Defaults to 60 seconds. */
16
- maxAgentDelayMs?: number;
17
14
  /** Injectable source used for Codex-style +/-10% backoff jitter. */
18
15
  random?: () => number;
19
16
  }
20
- export declare const DEFAULT_MAX_AGENT_RETRY_DELAY_MS = 60000;
21
- /**
22
- * Per-attempt backoff: `baseDelayMs * 2^(attempt-1)`, jittered by +/-10% through the
23
- * injectable `random` source, then clamped to `maxAgentDelayMs` (60s by default). The
24
- * jitter runs before the clamp so a capped delay stays exactly at the cap instead of
25
- * scattering above it, and the safe-integer guard keeps a large `attempt` from producing
26
- * `Infinity` before the clamp.
27
- */
28
- export declare function retryDelayMs(policy: Pick<RetryPolicy, "baseDelayMs" | "maxAgentDelayMs" | "random">, attempt: number): number;
17
+ export declare function retryDelayMs(baseDelayMs: number, attempt: number, random?: () => number): number;
29
18
  /** Optional callbacks emitted by {@link retryAssistantCall} around each retry. */
30
19
  export interface RetryCallbacks {
31
20
  /** Emitted before the backoff sleep of each retry attempt (1-indexed). */
@@ -1 +1 @@
1
- {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AA8IpD;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,qFAAqF;IACrF,UAAU,EAAE,MAAM,CAAC;IACnB,0FAA0F;IAC1F,WAAW,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,gCAAgC,QAAS,CAAC;AAEvD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC3B,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,iBAAiB,GAAG,QAAQ,CAAC,EACvE,OAAO,EAAE,MAAM,GACb,MAAM,CAMR;AAED,kFAAkF;AAClF,MAAM,WAAW,cAAc;IAC9B,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,CAClB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,KAChB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,mFAAmF;IACnF,mBAAmB,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,mFAAmF;IACnF,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnG;AA0BD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,EACzC,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,EACxC,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,SAAS,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,CAAC,CAAC,CAiCZ;AAOD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,kBAAkB,CACvC,OAAO,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,EACxC,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,SAAS,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,gBAAgB,CAAC,CA6C3B;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAU5E;AAYD,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAE7E;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAKzE;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAErE;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,eAAe,GAAG,WAAW,GAAG,SAAS,CAKpG"}
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AA8IpD;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,qFAAqF;IACrF,UAAU,EAAE,MAAM,CAAC;IACnB,0FAA0F;IAC1F,WAAW,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;CACtB;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,MAAoB,GAAG,MAAM,CAI7G;AAED,kFAAkF;AAClF,MAAM,WAAW,cAAc;IAC9B,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,CAClB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,KAChB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,mFAAmF;IACnF,mBAAmB,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,mFAAmF;IACnF,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnG;AA0BD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,EACzC,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,EACxC,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,SAAS,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,CAAC,CAAC,CAiCZ;AAOD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,kBAAkB,CACvC,OAAO,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,EACxC,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,SAAS,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,gBAAgB,CAAC,CA4C3B;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAU5E;AAYD,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAE7E;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAKzE;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAErE;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,eAAe,GAAG,WAAW,GAAG,SAAS,CAKpG"}
@@ -121,20 +121,10 @@ const RETRYABLE_PROVIDER_ERROR_PATTERN = buildProviderErrorPattern([
121
121
  // Same-process retry recovers; hopping providers cannot release that lock.
122
122
  "Lock file is already being held",
123
123
  ]);
124
- export const DEFAULT_MAX_AGENT_RETRY_DELAY_MS = 60_000;
125
- /**
126
- * Per-attempt backoff: `baseDelayMs * 2^(attempt-1)`, jittered by +/-10% through the
127
- * injectable `random` source, then clamped to `maxAgentDelayMs` (60s by default). The
128
- * jitter runs before the clamp so a capped delay stays exactly at the cap instead of
129
- * scattering above it, and the safe-integer guard keeps a large `attempt` from producing
130
- * `Infinity` before the clamp.
131
- */
132
- export function retryDelayMs(policy, attempt) {
133
- const scheduledDelayMs = policy.baseDelayMs * 2 ** Math.max(0, attempt - 1);
134
- const sample = Math.min(1, Math.max(0, (policy.random ?? Math.random)()));
135
- const jitteredDelayMs = Math.round(scheduledDelayMs * (0.9 + sample * 0.2));
136
- const safeDelay = Number.isSafeInteger(jitteredDelayMs) ? jitteredDelayMs : Number.MAX_SAFE_INTEGER;
137
- return Math.min(safeDelay, policy.maxAgentDelayMs ?? DEFAULT_MAX_AGENT_RETRY_DELAY_MS);
124
+ export function retryDelayMs(baseDelayMs, attempt, random = Math.random) {
125
+ const scheduledDelayMs = baseDelayMs * 2 ** (attempt - 1);
126
+ const sample = Math.min(1, Math.max(0, random()));
127
+ return Math.round(scheduledDelayMs * (0.9 + sample * 0.2));
138
128
  }
139
129
  class RetrySleepAbortError extends Error {
140
130
  constructor() {
@@ -200,7 +190,7 @@ export async function retryTransientCall(produce, isRetryable, policy, signal, c
200
190
  }
201
191
  attempt++;
202
192
  lastRetry = { attempt, errorMessage: errorMessageOf(error) };
203
- const delayMs = retryDelayMs(policy, attempt);
193
+ const delayMs = retryDelayMs(policy.baseDelayMs, attempt, policy.random);
204
194
  await callbacks?.onRetryScheduled?.(attempt, maxAttempts, delayMs, lastRetry.errorMessage);
205
195
  try {
206
196
  await sleep(delayMs, signal);
@@ -262,7 +252,7 @@ export async function retryAssistantCall(produce, policy, signal, callbacks) {
262
252
  }
263
253
  attempt++;
264
254
  lastRetry = { attempt, errorMessage: response.errorMessage || "Unknown error" };
265
- const delayMs = retryDelayMs(policy, attempt);
255
+ const delayMs = retryDelayMs(policy.baseDelayMs, attempt, policy.random);
266
256
  await callbacks?.onRetryScheduled?.(attempt, maxAttempts, delayMs, lastRetry.errorMessage);
267
257
  // Normalize aborts during retry backoff to the same AssistantMessage shape as
268
258
  // provider stream aborts, so callers do not need to care when cancellation happened.
@@ -272,8 +262,7 @@ export async function retryAssistantCall(produce, policy, signal, callbacks) {
272
262
  catch (error) {
273
263
  await callbacks?.onRetryFinished?.(false, attempt, lastRetry.errorMessage);
274
264
  if (error instanceof RetrySleepAbortError) {
275
- const { errorMessage: _errorMessage, ...rest } = response;
276
- return { ...rest, stopReason: "aborted" };
265
+ return { ...response, stopReason: "aborted", errorMessage: undefined };
277
266
  }
278
267
  throw error;
279
268
  }
@@ -1 +1 @@
1
- {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AssistantMessage } from \"../types.ts\";\n\nfunction buildProviderErrorPattern(patterns: readonly string[]): RegExp {\n\treturn new RegExp(patterns.join(\"|\"), \"i\");\n}\n\nconst NON_RETRYABLE_PROVIDER_ERROR_PATTERN = buildProviderErrorPattern([\n\t// OpenCode Go/free-tier limits returned as 429 JSON error types by OpenCode's\n\t// Zen API. These are subscription/account limits, not transient throttles.\n\t\"GoUsageLimitError\",\n\t\"FreeUsageLimitError\",\n\n\t// OpenCode Go subscription-limit text asks users to enable available-balance\n\t// usage after rolling/weekly/monthly limits are reached.\n\t\"Monthly usage limit reached\",\n\t\"available balance\",\n\n\t// Generic quota/budget/billing exhaustion. `insufficient_quota` is OpenAI's\n\t// quota/billing error code; the other strings cover common gateway wording.\n\t\"insufficient_quota\",\n\t\"out of budget\",\n\t\"quota exceeded\",\n\t\"billing\",\n\n\t// Anthropic Console credit exhaustion: a 429 rate_limit_error whose details\n\t// carry error_code credits_required (\"Usage credits are required for this\n\t// model.\"). The account is dead until the user buys credits or raises the\n\t// spend limit, so same-model retries can never recover it.\n\t\"credits_required\",\n\t\"credits are required\",\n\n\t// Request-shape rejections: the provider refused the payload we built, not the\n\t// work it describes. Gateways wrap these in whatever status they like — the\n\t// observed Apitopia/Kimi case arrives as `500 server_error: Invalid request:\n\t// tools.function.parameters.type is required and must be \"object\"` — so the\n\t// status text alone would classify a permanent failure as transient. The same\n\t// bytes are rejected on every attempt and on every fallback model, so retrying\n\t// can only burn the turn. Anchored on the `tools[...]`/`functions[...]` request\n\t// path so unrelated prose mentioning tools stays retryable.\n\t\"invalid request: tools\\\\.\",\n\t\"invalid request: functions\\\\.\",\n\t\"tools\\\\.[^ ]*function\\\\.parameters\",\n\t\"tools\\\\.\\\\d+\\\\.function\\\\.parameters\",\n\t\"invalid tool schema\",\n]);\n\nconst RETRYABLE_PROVIDER_ERROR_PATTERN = buildProviderErrorPattern([\n\t// Local credential/auth sidecar lock exhaustion is infrastructure contention,\n\t// not a provider failure and must stay on the transient retry path.\n\t\"Credential store is busy: lock\",\n\t// Generic provider load, HTTP status, and server-side transient failures.\n\t\"overloaded\",\n\t\"rate.?limit\",\n\t\"too many requests\",\n\t\"429\",\n\t\"500\",\n\t\"502\",\n\t\"503\",\n\t\"504\",\n\t// Cloudflare 522 (Connection timed out): origin stopped responding; transient\n\t// like the other 5xx gateway statuses, surfaced as \"Error: error code: 522\".\n\t\"522\",\n\t\"524\",\n\t\"service.?unavailable\",\n\t\"server.?error\",\n\t\"internal.?error\",\n\n\t// Wrapper/provider text for transient upstream failures, including OpenRouter\n\t// \"Provider returned error\" responses (#2264).\n\t\"provider.?returned.?error\",\n\t\"exceeded request buffer limit while retrying upstream\",\n\n\t// Network, proxy, and fetch transport failures. This includes OpenAI Codex\n\t// raw-fetch failures such as \"upstream connect\", \"connection refused\", and\n\t// \"reset before headers\" (#733), plus OpenRouter connection drops (#3317).\n\t\"network.?error\",\n\t\"connection.?error\",\n\t\"connection.?refused\",\n\t\"connection.?lost\",\n\t\"other side closed\",\n\t\"fetch failed\",\n\t\"getaddrinfo\",\n\t\"ENOTFOUND\",\n\t\"EAI_AGAIN\",\n\t\"upstream.?connect\",\n\t\"upstream.?unavailable\",\n\t\"reset before headers\",\n\t\"socket hang up\",\n\t\"socket connection was closed\",\n\t\"timed? out\",\n\t\"timeout\",\n\t\"terminated\",\n\n\t// WebSocket transports can report close/error text instead of HTTP/fetch text.\n\t\"websocket.?closed\",\n\t\"websocket.?error\",\n\n\t// Premature stream endings from SDKs and transports. Anthropic can throw\n\t// \"stream ended without ...\" and \"Anthropic stream ended before message_stop\"\n\t// (#4433); Bedrock/Smithy can throw an HTTP/2 no-response error (#3594).\n\t\"ended without\",\n\t\"stream ended before message_stop\",\n\t\"stream ended before a terminal response event\",\n\t\"http2 request did not get a response\",\n\n\t// Provider-requested retry delay cap failures should flow through the outer\n\t// retry policy so callers can surface/abort the backoff (#1123).\n\t\"retry delay\",\n\n\t// Explicit retry guidance emitted mid-stream by OpenAI Responses and Bedrock\n\t// stream exceptions (#6019).\n\t\"you can retry your request\",\n\t\"try your request again\",\n\t\"please retry your request\",\n\n\t// Gateway/proxy-side rejection of the whole model request, e.g. \"Error: The\n\t// model request was rejected. Check the request and try again.\" (observed in a\n\t// live session, 2026-08-11). Coupling the rejection sentence to its explicit\n\t// retry instruction keeps unrelated permission, request-shape, and content-\n\t// policy rejections terminal while the bounded retry policy absorbs this\n\t// transient wrapper wording.\n\t\"the model request was rejected\\\\.\\\\s*check the request and try again\\\\.?\",\n\n\t// Anthropic server-tool pairing rejections, e.g. \"`web_search` tool use with id\n\t// `srvtoolu_...` was found without a corresponding `web_search_tool_result`\n\t// block\". A turn closed before its deferred server tool could answer leaves\n\t// the unpairable half in history, and replaying it 400s every later request.\n\t// The Anthropic request builder repairs the replayed history, so a retry sends\n\t// a valid payload; keeping the class retryable is what lets retry and the model\n\t// fallback chain unwedge such a session instead of dead-ending it. The trailing\n\t// backtick keeps the pattern on Anthropic's pairing-error template.\n\t\"was found without a corresponding `\",\n\n\t// gRPC based providers (e.g. NVIDIA NIM)\n\t\"ResourceExhausted\",\n\n\t// Claude Agent SDK session.json lock contention. A second stream/resume\n\t// hits proper-lockfile while the previous subprocess still holds the file.\n\t// Same-process retry recovers; hopping providers cannot release that lock.\n\t\"Lock file is already being held\",\n]);\n\n/**\n * Retry policy: bounded attempts with exponential backoff (`baseDelayMs * 2^(attempt-1)`).\n * `maxAgentDelayMs` caps each computed delay and defaults to 60 seconds.\n * Matches `settings.retry` (`enabled`, `maxRetries`, `baseDelayMs`, `maxAgentDelayMs`) in coding-agent; kept\n * here so the classifier and the policy-driven retry loop live together and stay reusable\n * by the SDK and other callers.\n */\nexport interface RetryPolicy {\n\tenabled: boolean;\n\t/** Max retry attempts (0 = no retries). The initial call never counts as a retry. */\n\tmaxRetries: number;\n\t/** Base delay in ms. Per-attempt delay is `baseDelayMs * 2^(attempt-1)` before jitter. */\n\tbaseDelayMs: number;\n\t/** Optional cap for agent-level retry delays in ms. Defaults to 60 seconds. */\n\tmaxAgentDelayMs?: number;\n\t/** Injectable source used for Codex-style +/-10% backoff jitter. */\n\trandom?: () => number;\n}\n\nexport const DEFAULT_MAX_AGENT_RETRY_DELAY_MS = 60_000;\n\n/**\n * Per-attempt backoff: `baseDelayMs * 2^(attempt-1)`, jittered by +/-10% through the\n * injectable `random` source, then clamped to `maxAgentDelayMs` (60s by default). The\n * jitter runs before the clamp so a capped delay stays exactly at the cap instead of\n * scattering above it, and the safe-integer guard keeps a large `attempt` from producing\n * `Infinity` before the clamp.\n */\nexport function retryDelayMs(\n\tpolicy: Pick<RetryPolicy, \"baseDelayMs\" | \"maxAgentDelayMs\" | \"random\">,\n\tattempt: number,\n): number {\n\tconst scheduledDelayMs = policy.baseDelayMs * 2 ** Math.max(0, attempt - 1);\n\tconst sample = Math.min(1, Math.max(0, (policy.random ?? Math.random)()));\n\tconst jitteredDelayMs = Math.round(scheduledDelayMs * (0.9 + sample * 0.2));\n\tconst safeDelay = Number.isSafeInteger(jitteredDelayMs) ? jitteredDelayMs : Number.MAX_SAFE_INTEGER;\n\treturn Math.min(safeDelay, policy.maxAgentDelayMs ?? DEFAULT_MAX_AGENT_RETRY_DELAY_MS);\n}\n\n/** Optional callbacks emitted by {@link retryAssistantCall} around each retry. */\nexport interface RetryCallbacks {\n\t/** Emitted before the backoff sleep of each retry attempt (1-indexed). */\n\tonRetryScheduled?: (\n\t\tattempt: number,\n\t\tmaxAttempts: number,\n\t\tdelayMs: number,\n\t\terrorMessage: string,\n\t) => void | Promise<void>;\n\t/** Emitted after the backoff sleep, immediately before the retried call starts. */\n\tonRetryAttemptStart?: () => void | Promise<void>;\n\t/** Emitted once when the loop ends: success if a later call completed normally. */\n\tonRetryFinished?: (success: boolean, attempt: number, finalError?: string) => void | Promise<void>;\n}\n\nclass RetrySleepAbortError extends Error {\n\tconstructor() {\n\t\tsuper(\"Aborted\");\n\t}\n}\n\nfunction sleep(ms: number, signal?: AbortSignal): Promise<void> {\n\treturn new Promise((resolve, reject) => {\n\t\tif (signal?.aborted) {\n\t\t\treject(new RetrySleepAbortError());\n\t\t\treturn;\n\t\t}\n\t\tconst timeout = setTimeout(resolve, ms);\n\t\tsignal?.addEventListener(\n\t\t\t\"abort\",\n\t\t\t() => {\n\t\t\t\tclearTimeout(timeout);\n\t\t\t\treject(new RetrySleepAbortError());\n\t\t\t},\n\t\t\t{ once: true },\n\t\t);\n\t});\n}\n\n/**\n * Run a producer that signals failure by THROWING, with the same bounded\n * backoff, abort, and callback semantics as {@link retryAssistantCall}.\n *\n * `retryAssistantCall` is value-based: its producer reports failure by resolving\n * an `AssistantMessage` with `stopReason: \"error\"`. Callers that instead reject\n * (compaction summarization, and any other request pipeline that throws) need\n * the identical retry policy without reshaping their failures into assistant\n * messages first, so both live here and share one implementation of the delay,\n * abort, and callback contract.\n *\n * Behavior:\n * - A resolved value is returned immediately.\n * - A throw that `isRetryable` rejects is rethrown at once: deterministic\n * failures never spend a retry.\n * - Otherwise the call is retried up to `policy.maxRetries` times with the same\n * exponential backoff (`baseDelayMs * 2^(attempt-1)`), rethrowing the final\n * error when the budget is exhausted.\n * - An abort during the backoff sleep stops the loop and rethrows; unlike the\n * assistant-message path there is no aborted value to normalize to.\n *\n * When `policy` is undefined or disabled the producer runs exactly once and its\n * error propagates unchanged.\n */\nexport async function retryTransientCall<T>(\n\tproduce: () => Promise<T>,\n\tisRetryable: (error: unknown) => boolean,\n\tpolicy: RetryPolicy | undefined,\n\tsignal: AbortSignal | undefined,\n\tcallbacks?: RetryCallbacks,\n): Promise<T> {\n\tconst maxAttempts = policy?.enabled ? policy.maxRetries : 0;\n\n\tlet attempt = 0;\n\tlet lastRetry: { attempt: number; errorMessage: string } | undefined;\n\tfor (;;) {\n\t\ttry {\n\t\t\tconst value = await produce();\n\t\t\tif (lastRetry) await callbacks?.onRetryFinished?.(true, lastRetry.attempt);\n\t\t\treturn value;\n\t\t} catch (error) {\n\t\t\tif (error instanceof RetrySleepAbortError) throw error;\n\t\t\tif (attempt >= maxAttempts || !isRetryable(error)) {\n\t\t\t\tif (lastRetry) {\n\t\t\t\t\tawait callbacks?.onRetryFinished?.(false, lastRetry.attempt, errorMessageOf(error));\n\t\t\t\t}\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tattempt++;\n\t\t\tlastRetry = { attempt, errorMessage: errorMessageOf(error) };\n\t\t\tconst delayMs = retryDelayMs(policy!, attempt);\n\t\t\tawait callbacks?.onRetryScheduled?.(attempt, maxAttempts, delayMs, lastRetry.errorMessage);\n\n\t\t\ttry {\n\t\t\t\tawait sleep(delayMs, signal);\n\t\t\t} catch (sleepError) {\n\t\t\t\tawait callbacks?.onRetryFinished?.(false, attempt, lastRetry.errorMessage);\n\t\t\t\tthrow sleepError instanceof RetrySleepAbortError ? error : sleepError;\n\t\t\t}\n\t\t\tawait callbacks?.onRetryAttemptStart?.();\n\t\t}\n\t}\n}\n\nfunction errorMessageOf(error: unknown): string {\n\tif (error instanceof Error) return error.message || \"Unknown error\";\n\treturn String(error) || \"Unknown error\";\n}\n\n/**\n * Run a single assistant-producing call with bounded retry on transient errors.\n *\n * Behavior:\n * - A successful response is returned immediately. Aborts are terminal and never\n * retried, but reported as unsuccessful if they happen after a retry was scheduled.\n * Aborts during the backoff sleep are normalized to an aborted `AssistantMessage`\n * too, so callers do not need to care when cancellation happened.\n * - A non-retryable error (per {@link isRetryableAssistantError}, including quota/\n * billing exhaustion) is returned immediately so deterministic errors fail fast.\n * - Otherwise retries up to `maxRetries` times with exponential backoff, emitting\n * `onRetryScheduled` before each sleep, `onRetryAttemptStart` after each sleep before\n * the retried call starts, and `onRetryFinished` once at the end (whether the loop\n * ends in success, exhausted retries, or an aborted backoff).\n *\n * When `policy` is undefined or disabled, the first response is returned unchanged\n * (equivalent to calling `produce()` directly).\n */\nexport async function retryAssistantCall(\n\tproduce: () => Promise<AssistantMessage>,\n\tpolicy: RetryPolicy | undefined,\n\tsignal: AbortSignal | undefined,\n\tcallbacks?: RetryCallbacks,\n): Promise<AssistantMessage> {\n\tconst maxAttempts = policy?.enabled ? policy.maxRetries : 0;\n\n\tlet attempt = 0;\n\tlet lastRetry: { attempt: number; errorMessage: string } | undefined;\n\tfor (;;) {\n\t\tconst response = await produce();\n\n\t\t// Abort: terminal but not successful. Never retry an aborted message.\n\t\tif (response.stopReason === \"aborted\") {\n\t\t\tif (lastRetry) await callbacks?.onRetryFinished?.(false, lastRetry.attempt);\n\t\t\treturn response;\n\t\t}\n\n\t\t// Success: non-error, non-abort responses return as-is.\n\t\tif (response.stopReason !== \"error\") {\n\t\t\tif (lastRetry) await callbacks?.onRetryFinished?.(true, lastRetry.attempt);\n\t\t\treturn response;\n\t\t}\n\n\t\t// Non-retryable, or budget exhausted: return the final error message.\n\t\tif (attempt >= maxAttempts || !isRetryableAssistantError(response)) {\n\t\t\tif (lastRetry) await callbacks?.onRetryFinished?.(false, lastRetry.attempt, response.errorMessage);\n\t\t\treturn response;\n\t\t}\n\n\t\tattempt++;\n\t\tlastRetry = { attempt, errorMessage: response.errorMessage || \"Unknown error\" };\n\t\tconst delayMs = retryDelayMs(policy!, attempt);\n\t\tawait callbacks?.onRetryScheduled?.(attempt, maxAttempts, delayMs, lastRetry.errorMessage);\n\n\t\t// Normalize aborts during retry backoff to the same AssistantMessage shape as\n\t\t// provider stream aborts, so callers do not need to care when cancellation happened.\n\t\ttry {\n\t\t\tawait sleep(delayMs, signal);\n\t\t} catch (error) {\n\t\t\tawait callbacks?.onRetryFinished?.(false, attempt, lastRetry.errorMessage);\n\t\t\tif (error instanceof RetrySleepAbortError) {\n\t\t\t\tconst { errorMessage: _errorMessage, ...rest } = response;\n\t\t\t\treturn { ...rest, stopReason: \"aborted\" };\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t\tawait callbacks?.onRetryAttemptStart?.();\n\t}\n}\n\n/**\n * Classifies whether a failed assistant message looks like a transient provider\n * or transport error, so callers can decide if the last assistant turn should be\n * restarted.\n *\n * This does not implement retry policy. Callers should first handle context\n * overflow separately, then apply their own retry budget, backoff, and reporting\n * before restarting the assistant turn.\n */\nexport function isRetryableAssistantError(message: AssistantMessage): boolean {\n\tif (\n\t\tmessage.stopReason !== \"error\" ||\n\t\tmessage.stopDetails?.type === \"refusal\" ||\n\t\tmessage.stopDetails?.type === \"sensitive\" ||\n\t\t!message.errorMessage\n\t) {\n\t\treturn false;\n\t}\n\treturn isRetryableErrorMessage(message.errorMessage);\n}\n\n/**\n * Matches the agent-loop stream watchdog failures (\"Idle timeout waiting for\n * provider stream after <n>ms\" and \"Provider stream start timed out after\n * <n>ms\"). These anchored shapes distinguish provider-stream stalls from\n * unrelated extension, command, or MCP timeout diagnostics.\n */\nconst PROVIDER_STREAM_STALL_ERROR_PATTERN =\n\t/^(?:Idle timeout waiting for provider stream after \\d+ms|Provider stream start timed out after \\d+ms(?: \\([^)]*\\))?)$/i;\nconst PROVIDER_TRANSPORT_TIMEOUT_ERROR_PATTERN = /^Request timed out\\.?$/i;\n\nexport function isProviderStreamStallError(message: AssistantMessage): boolean {\n\treturn message.stopReason === \"error\" && PROVIDER_STREAM_STALL_ERROR_PATTERN.test(message.errorMessage ?? \"\");\n}\n\n/**\n * Classifies timeout failures that originate from the provider stream or its\n * transport. Transport timeouts may arrive as `aborted`; stream watchdog\n * failures are ordinary error responses.\n */\nexport function isProviderTimeoutError(message: AssistantMessage): boolean {\n\tif (message.abortSource === \"provider\") return true;\n\tif (isProviderStreamStallError(message)) return true;\n\tif (message.stopReason !== \"error\" && message.stopReason !== \"aborted\") return false;\n\treturn PROVIDER_TRANSPORT_TIMEOUT_ERROR_PATTERN.test(message.errorMessage ?? \"\");\n}\n\n/**\n * Classifies a raw error-message string with the same transient-vs-terminal\n * rules as {@link isRetryableAssistantError}, for callers that hold a thrown\n * `Error` instead of an `AssistantMessage` (e.g. compaction summarization\n * failures that must decide between degrading and surfacing loudly).\n */\nexport function isRetryableErrorMessage(errorMessage: string): boolean {\n\treturn classifyErrorMessage(errorMessage) === \"retryable\";\n}\n\n/**\n * Tri-state form of {@link isRetryableErrorMessage}. The regexes only carry\n * three outcomes — a non-retryable match, a retryable match, or no match at\n * all — and callers that hold structured failure facts (status codes, provider\n * error codes) need to distinguish \"the regexes say terminal\" from \"the\n * regexes say nothing\" so they can consult the structured facts only in the\n * latter case. Non-retryable still outranks retryable, exactly as before.\n */\nexport function classifyErrorMessage(errorMessage: string): \"non-retryable\" | \"retryable\" | \"unknown\" {\n\tif (!errorMessage) return \"unknown\";\n\tif (NON_RETRYABLE_PROVIDER_ERROR_PATTERN.test(errorMessage)) return \"non-retryable\";\n\tif (RETRYABLE_PROVIDER_ERROR_PATTERN.test(errorMessage)) return \"retryable\";\n\treturn \"unknown\";\n}\n"]}
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AssistantMessage } from \"../types.ts\";\n\nfunction buildProviderErrorPattern(patterns: readonly string[]): RegExp {\n\treturn new RegExp(patterns.join(\"|\"), \"i\");\n}\n\nconst NON_RETRYABLE_PROVIDER_ERROR_PATTERN = buildProviderErrorPattern([\n\t// OpenCode Go/free-tier limits returned as 429 JSON error types by OpenCode's\n\t// Zen API. These are subscription/account limits, not transient throttles.\n\t\"GoUsageLimitError\",\n\t\"FreeUsageLimitError\",\n\n\t// OpenCode Go subscription-limit text asks users to enable available-balance\n\t// usage after rolling/weekly/monthly limits are reached.\n\t\"Monthly usage limit reached\",\n\t\"available balance\",\n\n\t// Generic quota/budget/billing exhaustion. `insufficient_quota` is OpenAI's\n\t// quota/billing error code; the other strings cover common gateway wording.\n\t\"insufficient_quota\",\n\t\"out of budget\",\n\t\"quota exceeded\",\n\t\"billing\",\n\n\t// Anthropic Console credit exhaustion: a 429 rate_limit_error whose details\n\t// carry error_code credits_required (\"Usage credits are required for this\n\t// model.\"). The account is dead until the user buys credits or raises the\n\t// spend limit, so same-model retries can never recover it.\n\t\"credits_required\",\n\t\"credits are required\",\n\n\t// Request-shape rejections: the provider refused the payload we built, not the\n\t// work it describes. Gateways wrap these in whatever status they like — the\n\t// observed Apitopia/Kimi case arrives as `500 server_error: Invalid request:\n\t// tools.function.parameters.type is required and must be \"object\"` — so the\n\t// status text alone would classify a permanent failure as transient. The same\n\t// bytes are rejected on every attempt and on every fallback model, so retrying\n\t// can only burn the turn. Anchored on the `tools[...]`/`functions[...]` request\n\t// path so unrelated prose mentioning tools stays retryable.\n\t\"invalid request: tools\\\\.\",\n\t\"invalid request: functions\\\\.\",\n\t\"tools\\\\.[^ ]*function\\\\.parameters\",\n\t\"tools\\\\.\\\\d+\\\\.function\\\\.parameters\",\n\t\"invalid tool schema\",\n]);\n\nconst RETRYABLE_PROVIDER_ERROR_PATTERN = buildProviderErrorPattern([\n\t// Local credential/auth sidecar lock exhaustion is infrastructure contention,\n\t// not a provider failure and must stay on the transient retry path.\n\t\"Credential store is busy: lock\",\n\t// Generic provider load, HTTP status, and server-side transient failures.\n\t\"overloaded\",\n\t\"rate.?limit\",\n\t\"too many requests\",\n\t\"429\",\n\t\"500\",\n\t\"502\",\n\t\"503\",\n\t\"504\",\n\t// Cloudflare 522 (Connection timed out): origin stopped responding; transient\n\t// like the other 5xx gateway statuses, surfaced as \"Error: error code: 522\".\n\t\"522\",\n\t\"524\",\n\t\"service.?unavailable\",\n\t\"server.?error\",\n\t\"internal.?error\",\n\n\t// Wrapper/provider text for transient upstream failures, including OpenRouter\n\t// \"Provider returned error\" responses (#2264).\n\t\"provider.?returned.?error\",\n\t\"exceeded request buffer limit while retrying upstream\",\n\n\t// Network, proxy, and fetch transport failures. This includes OpenAI Codex\n\t// raw-fetch failures such as \"upstream connect\", \"connection refused\", and\n\t// \"reset before headers\" (#733), plus OpenRouter connection drops (#3317).\n\t\"network.?error\",\n\t\"connection.?error\",\n\t\"connection.?refused\",\n\t\"connection.?lost\",\n\t\"other side closed\",\n\t\"fetch failed\",\n\t\"getaddrinfo\",\n\t\"ENOTFOUND\",\n\t\"EAI_AGAIN\",\n\t\"upstream.?connect\",\n\t\"upstream.?unavailable\",\n\t\"reset before headers\",\n\t\"socket hang up\",\n\t\"socket connection was closed\",\n\t\"timed? out\",\n\t\"timeout\",\n\t\"terminated\",\n\n\t// WebSocket transports can report close/error text instead of HTTP/fetch text.\n\t\"websocket.?closed\",\n\t\"websocket.?error\",\n\n\t// Premature stream endings from SDKs and transports. Anthropic can throw\n\t// \"stream ended without ...\" and \"Anthropic stream ended before message_stop\"\n\t// (#4433); Bedrock/Smithy can throw an HTTP/2 no-response error (#3594).\n\t\"ended without\",\n\t\"stream ended before message_stop\",\n\t\"stream ended before a terminal response event\",\n\t\"http2 request did not get a response\",\n\n\t// Provider-requested retry delay cap failures should flow through the outer\n\t// retry policy so callers can surface/abort the backoff (#1123).\n\t\"retry delay\",\n\n\t// Explicit retry guidance emitted mid-stream by OpenAI Responses and Bedrock\n\t// stream exceptions (#6019).\n\t\"you can retry your request\",\n\t\"try your request again\",\n\t\"please retry your request\",\n\n\t// Gateway/proxy-side rejection of the whole model request, e.g. \"Error: The\n\t// model request was rejected. Check the request and try again.\" (observed in a\n\t// live session, 2026-08-11). Coupling the rejection sentence to its explicit\n\t// retry instruction keeps unrelated permission, request-shape, and content-\n\t// policy rejections terminal while the bounded retry policy absorbs this\n\t// transient wrapper wording.\n\t\"the model request was rejected\\\\.\\\\s*check the request and try again\\\\.?\",\n\n\t// Anthropic server-tool pairing rejections, e.g. \"`web_search` tool use with id\n\t// `srvtoolu_...` was found without a corresponding `web_search_tool_result`\n\t// block\". A turn closed before its deferred server tool could answer leaves\n\t// the unpairable half in history, and replaying it 400s every later request.\n\t// The Anthropic request builder repairs the replayed history, so a retry sends\n\t// a valid payload; keeping the class retryable is what lets retry and the model\n\t// fallback chain unwedge such a session instead of dead-ending it. The trailing\n\t// backtick keeps the pattern on Anthropic's pairing-error template.\n\t\"was found without a corresponding `\",\n\n\t// gRPC based providers (e.g. NVIDIA NIM)\n\t\"ResourceExhausted\",\n\n\t// Claude Agent SDK session.json lock contention. A second stream/resume\n\t// hits proper-lockfile while the previous subprocess still holds the file.\n\t// Same-process retry recovers; hopping providers cannot release that lock.\n\t\"Lock file is already being held\",\n]);\n\n/**\n * Retry policy: bounded attempts with exponential backoff (`baseDelayMs * 2^(attempt-1)`).\n * Matches `settings.retry` (`enabled`, `maxRetries`, `baseDelayMs`) in coding-agent; kept\n * here so the classifier and the policy-driven retry loop live together and stay reusable\n * by the SDK and other callers.\n */\nexport interface RetryPolicy {\n\tenabled: boolean;\n\t/** Max retry attempts (0 = no retries). The initial call never counts as a retry. */\n\tmaxRetries: number;\n\t/** Base delay in ms. Per-attempt delay is `baseDelayMs * 2^(attempt-1)` before jitter. */\n\tbaseDelayMs: number;\n\t/** Injectable source used for Codex-style +/-10% backoff jitter. */\n\trandom?: () => number;\n}\n\nexport function retryDelayMs(baseDelayMs: number, attempt: number, random: () => number = Math.random): number {\n\tconst scheduledDelayMs = baseDelayMs * 2 ** (attempt - 1);\n\tconst sample = Math.min(1, Math.max(0, random()));\n\treturn Math.round(scheduledDelayMs * (0.9 + sample * 0.2));\n}\n\n/** Optional callbacks emitted by {@link retryAssistantCall} around each retry. */\nexport interface RetryCallbacks {\n\t/** Emitted before the backoff sleep of each retry attempt (1-indexed). */\n\tonRetryScheduled?: (\n\t\tattempt: number,\n\t\tmaxAttempts: number,\n\t\tdelayMs: number,\n\t\terrorMessage: string,\n\t) => void | Promise<void>;\n\t/** Emitted after the backoff sleep, immediately before the retried call starts. */\n\tonRetryAttemptStart?: () => void | Promise<void>;\n\t/** Emitted once when the loop ends: success if a later call completed normally. */\n\tonRetryFinished?: (success: boolean, attempt: number, finalError?: string) => void | Promise<void>;\n}\n\nclass RetrySleepAbortError extends Error {\n\tconstructor() {\n\t\tsuper(\"Aborted\");\n\t}\n}\n\nfunction sleep(ms: number, signal?: AbortSignal): Promise<void> {\n\treturn new Promise((resolve, reject) => {\n\t\tif (signal?.aborted) {\n\t\t\treject(new RetrySleepAbortError());\n\t\t\treturn;\n\t\t}\n\t\tconst timeout = setTimeout(resolve, ms);\n\t\tsignal?.addEventListener(\n\t\t\t\"abort\",\n\t\t\t() => {\n\t\t\t\tclearTimeout(timeout);\n\t\t\t\treject(new RetrySleepAbortError());\n\t\t\t},\n\t\t\t{ once: true },\n\t\t);\n\t});\n}\n\n/**\n * Run a producer that signals failure by THROWING, with the same bounded\n * backoff, abort, and callback semantics as {@link retryAssistantCall}.\n *\n * `retryAssistantCall` is value-based: its producer reports failure by resolving\n * an `AssistantMessage` with `stopReason: \"error\"`. Callers that instead reject\n * (compaction summarization, and any other request pipeline that throws) need\n * the identical retry policy without reshaping their failures into assistant\n * messages first, so both live here and share one implementation of the delay,\n * abort, and callback contract.\n *\n * Behavior:\n * - A resolved value is returned immediately.\n * - A throw that `isRetryable` rejects is rethrown at once: deterministic\n * failures never spend a retry.\n * - Otherwise the call is retried up to `policy.maxRetries` times with the same\n * exponential backoff (`baseDelayMs * 2^(attempt-1)`), rethrowing the final\n * error when the budget is exhausted.\n * - An abort during the backoff sleep stops the loop and rethrows; unlike the\n * assistant-message path there is no aborted value to normalize to.\n *\n * When `policy` is undefined or disabled the producer runs exactly once and its\n * error propagates unchanged.\n */\nexport async function retryTransientCall<T>(\n\tproduce: () => Promise<T>,\n\tisRetryable: (error: unknown) => boolean,\n\tpolicy: RetryPolicy | undefined,\n\tsignal: AbortSignal | undefined,\n\tcallbacks?: RetryCallbacks,\n): Promise<T> {\n\tconst maxAttempts = policy?.enabled ? policy.maxRetries : 0;\n\n\tlet attempt = 0;\n\tlet lastRetry: { attempt: number; errorMessage: string } | undefined;\n\tfor (;;) {\n\t\ttry {\n\t\t\tconst value = await produce();\n\t\t\tif (lastRetry) await callbacks?.onRetryFinished?.(true, lastRetry.attempt);\n\t\t\treturn value;\n\t\t} catch (error) {\n\t\t\tif (error instanceof RetrySleepAbortError) throw error;\n\t\t\tif (attempt >= maxAttempts || !isRetryable(error)) {\n\t\t\t\tif (lastRetry) {\n\t\t\t\t\tawait callbacks?.onRetryFinished?.(false, lastRetry.attempt, errorMessageOf(error));\n\t\t\t\t}\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tattempt++;\n\t\t\tlastRetry = { attempt, errorMessage: errorMessageOf(error) };\n\t\t\tconst delayMs = retryDelayMs(policy!.baseDelayMs, attempt, policy!.random);\n\t\t\tawait callbacks?.onRetryScheduled?.(attempt, maxAttempts, delayMs, lastRetry.errorMessage);\n\n\t\t\ttry {\n\t\t\t\tawait sleep(delayMs, signal);\n\t\t\t} catch (sleepError) {\n\t\t\t\tawait callbacks?.onRetryFinished?.(false, attempt, lastRetry.errorMessage);\n\t\t\t\tthrow sleepError instanceof RetrySleepAbortError ? error : sleepError;\n\t\t\t}\n\t\t\tawait callbacks?.onRetryAttemptStart?.();\n\t\t}\n\t}\n}\n\nfunction errorMessageOf(error: unknown): string {\n\tif (error instanceof Error) return error.message || \"Unknown error\";\n\treturn String(error) || \"Unknown error\";\n}\n\n/**\n * Run a single assistant-producing call with bounded retry on transient errors.\n *\n * Behavior:\n * - A successful response is returned immediately. Aborts are terminal and never\n * retried, but reported as unsuccessful if they happen after a retry was scheduled.\n * Aborts during the backoff sleep are normalized to an aborted `AssistantMessage`\n * too, so callers do not need to care when cancellation happened.\n * - A non-retryable error (per {@link isRetryableAssistantError}, including quota/\n * billing exhaustion) is returned immediately so deterministic errors fail fast.\n * - Otherwise retries up to `maxRetries` times with exponential backoff, emitting\n * `onRetryScheduled` before each sleep, `onRetryAttemptStart` after each sleep before\n * the retried call starts, and `onRetryFinished` once at the end (whether the loop\n * ends in success, exhausted retries, or an aborted backoff).\n *\n * When `policy` is undefined or disabled, the first response is returned unchanged\n * (equivalent to calling `produce()` directly).\n */\nexport async function retryAssistantCall(\n\tproduce: () => Promise<AssistantMessage>,\n\tpolicy: RetryPolicy | undefined,\n\tsignal: AbortSignal | undefined,\n\tcallbacks?: RetryCallbacks,\n): Promise<AssistantMessage> {\n\tconst maxAttempts = policy?.enabled ? policy.maxRetries : 0;\n\n\tlet attempt = 0;\n\tlet lastRetry: { attempt: number; errorMessage: string } | undefined;\n\tfor (;;) {\n\t\tconst response = await produce();\n\n\t\t// Abort: terminal but not successful. Never retry an aborted message.\n\t\tif (response.stopReason === \"aborted\") {\n\t\t\tif (lastRetry) await callbacks?.onRetryFinished?.(false, lastRetry.attempt);\n\t\t\treturn response;\n\t\t}\n\n\t\t// Success: non-error, non-abort responses return as-is.\n\t\tif (response.stopReason !== \"error\") {\n\t\t\tif (lastRetry) await callbacks?.onRetryFinished?.(true, lastRetry.attempt);\n\t\t\treturn response;\n\t\t}\n\n\t\t// Non-retryable, or budget exhausted: return the final error message.\n\t\tif (attempt >= maxAttempts || !isRetryableAssistantError(response)) {\n\t\t\tif (lastRetry) await callbacks?.onRetryFinished?.(false, lastRetry.attempt, response.errorMessage);\n\t\t\treturn response;\n\t\t}\n\n\t\tattempt++;\n\t\tlastRetry = { attempt, errorMessage: response.errorMessage || \"Unknown error\" };\n\t\tconst delayMs = retryDelayMs(policy!.baseDelayMs, attempt, policy!.random);\n\t\tawait callbacks?.onRetryScheduled?.(attempt, maxAttempts, delayMs, lastRetry.errorMessage);\n\n\t\t// Normalize aborts during retry backoff to the same AssistantMessage shape as\n\t\t// provider stream aborts, so callers do not need to care when cancellation happened.\n\t\ttry {\n\t\t\tawait sleep(delayMs, signal);\n\t\t} catch (error) {\n\t\t\tawait callbacks?.onRetryFinished?.(false, attempt, lastRetry.errorMessage);\n\t\t\tif (error instanceof RetrySleepAbortError) {\n\t\t\t\treturn { ...response, stopReason: \"aborted\", errorMessage: undefined };\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t\tawait callbacks?.onRetryAttemptStart?.();\n\t}\n}\n\n/**\n * Classifies whether a failed assistant message looks like a transient provider\n * or transport error, so callers can decide if the last assistant turn should be\n * restarted.\n *\n * This does not implement retry policy. Callers should first handle context\n * overflow separately, then apply their own retry budget, backoff, and reporting\n * before restarting the assistant turn.\n */\nexport function isRetryableAssistantError(message: AssistantMessage): boolean {\n\tif (\n\t\tmessage.stopReason !== \"error\" ||\n\t\tmessage.stopDetails?.type === \"refusal\" ||\n\t\tmessage.stopDetails?.type === \"sensitive\" ||\n\t\t!message.errorMessage\n\t) {\n\t\treturn false;\n\t}\n\treturn isRetryableErrorMessage(message.errorMessage);\n}\n\n/**\n * Matches the agent-loop stream watchdog failures (\"Idle timeout waiting for\n * provider stream after <n>ms\" and \"Provider stream start timed out after\n * <n>ms\"). These anchored shapes distinguish provider-stream stalls from\n * unrelated extension, command, or MCP timeout diagnostics.\n */\nconst PROVIDER_STREAM_STALL_ERROR_PATTERN =\n\t/^(?:Idle timeout waiting for provider stream after \\d+ms|Provider stream start timed out after \\d+ms(?: \\([^)]*\\))?)$/i;\nconst PROVIDER_TRANSPORT_TIMEOUT_ERROR_PATTERN = /^Request timed out\\.?$/i;\n\nexport function isProviderStreamStallError(message: AssistantMessage): boolean {\n\treturn message.stopReason === \"error\" && PROVIDER_STREAM_STALL_ERROR_PATTERN.test(message.errorMessage ?? \"\");\n}\n\n/**\n * Classifies timeout failures that originate from the provider stream or its\n * transport. Transport timeouts may arrive as `aborted`; stream watchdog\n * failures are ordinary error responses.\n */\nexport function isProviderTimeoutError(message: AssistantMessage): boolean {\n\tif (message.abortSource === \"provider\") return true;\n\tif (isProviderStreamStallError(message)) return true;\n\tif (message.stopReason !== \"error\" && message.stopReason !== \"aborted\") return false;\n\treturn PROVIDER_TRANSPORT_TIMEOUT_ERROR_PATTERN.test(message.errorMessage ?? \"\");\n}\n\n/**\n * Classifies a raw error-message string with the same transient-vs-terminal\n * rules as {@link isRetryableAssistantError}, for callers that hold a thrown\n * `Error` instead of an `AssistantMessage` (e.g. compaction summarization\n * failures that must decide between degrading and surfacing loudly).\n */\nexport function isRetryableErrorMessage(errorMessage: string): boolean {\n\treturn classifyErrorMessage(errorMessage) === \"retryable\";\n}\n\n/**\n * Tri-state form of {@link isRetryableErrorMessage}. The regexes only carry\n * three outcomes — a non-retryable match, a retryable match, or no match at\n * all — and callers that hold structured failure facts (status codes, provider\n * error codes) need to distinguish \"the regexes say terminal\" from \"the\n * regexes say nothing\" so they can consult the structured facts only in the\n * latter case. Non-retryable still outranks retryable, exactly as before.\n */\nexport function classifyErrorMessage(errorMessage: string): \"non-retryable\" | \"retryable\" | \"unknown\" {\n\tif (!errorMessage) return \"unknown\";\n\tif (NON_RETRYABLE_PROVIDER_ERROR_PATTERN.test(errorMessage)) return \"non-retryable\";\n\tif (RETRYABLE_PROVIDER_ERROR_PATTERN.test(errorMessage)) return \"retryable\";\n\treturn \"unknown\";\n}\n"]}
@@ -1,3 +1,3 @@
1
- /** Generate a time-ordered UUIDv7. A supplied timestamp is preserved for follower ids. */
2
- export declare function uuidv7(timestampMs?: number): string;
1
+ /** Generate a time-ordered UUIDv7. */
2
+ export declare function uuidv7(): string;
3
3
  //# sourceMappingURL=uuid.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"uuid.d.ts","sourceRoot":"","sources":["../../src/utils/uuid.ts"],"names":[],"mappings":"AAiBA,0FAA0F;AAC1F,wBAAgB,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAoCnD"}
1
+ {"version":3,"file":"uuid.d.ts","sourceRoot":"","sources":["../../src/utils/uuid.ts"],"names":[],"mappings":"AAcA,sCAAsC;AACtC,wBAAgB,MAAM,IAAI,MAAM,CAgC/B"}
@@ -1,7 +1,5 @@
1
- const MAX_UUID_V7_TIMESTAMP = 0xffffffffffff;
2
- const MAX_SEQUENCE = (1n << 41n) - 1n;
3
- let lastOrdinaryTimestamp = -1;
4
- let sequence;
1
+ let lastTimestamp = -Infinity;
2
+ let sequence = 0;
5
3
  function fillRandomBytes(bytes) {
6
4
  const crypto = globalThis.crypto;
7
5
  if (crypto?.getRandomValues) {
@@ -12,44 +10,41 @@ function fillRandomBytes(bytes) {
12
10
  bytes[i] = Math.floor(Math.random() * 256);
13
11
  }
14
12
  }
15
- /** Generate a time-ordered UUIDv7. A supplied timestamp is preserved for follower ids. */
16
- export function uuidv7(timestampMs) {
17
- const requestedTimestamp = timestampMs ?? Date.now();
18
- if (!Number.isInteger(requestedTimestamp) || requestedTimestamp < 0 || requestedTimestamp > MAX_UUID_V7_TIMESTAMP) {
19
- throw new RangeError(`UUIDv7 timestamp must be an integer between 0 and ${MAX_UUID_V7_TIMESTAMP}`);
20
- }
21
- const effectiveTimestamp = timestampMs === undefined ? Math.max(requestedTimestamp, lastOrdinaryTimestamp) : timestampMs;
22
- if (timestampMs === undefined)
23
- lastOrdinaryTimestamp = effectiveTimestamp;
24
- const bytes = new Uint8Array(16);
25
- fillRandomBytes(bytes);
26
- if (sequence === undefined) {
27
- sequence =
28
- (BigInt(bytes[1]) << 32n) |
29
- (BigInt(bytes[2]) << 24n) |
30
- (BigInt(bytes[3]) << 16n) |
31
- (BigInt(bytes[4]) << 8n) |
32
- BigInt(bytes[5]);
13
+ /** Generate a time-ordered UUIDv7. */
14
+ export function uuidv7() {
15
+ const random = new Uint8Array(16);
16
+ fillRandomBytes(random);
17
+ const timestamp = Date.now();
18
+ if (timestamp > lastTimestamp) {
19
+ sequence = random[6] * 0x1000000 + random[7] * 0x10000 + random[8] * 0x100 + random[9];
20
+ lastTimestamp = timestamp;
33
21
  }
34
22
  else {
35
- if (sequence === MAX_SEQUENCE)
36
- throw new RangeError("UUIDv7 generator sequence exhausted");
37
- sequence++;
23
+ sequence = (sequence + 1) >>> 0;
24
+ if (sequence === 0)
25
+ lastTimestamp++;
38
26
  }
39
- const timestamp = BigInt(effectiveTimestamp);
40
- for (let index = 5; index >= 0; index--) {
41
- bytes[index] = Number(timestamp >> BigInt((5 - index) * 8)) & 0xff;
42
- }
43
- bytes[6] = 0x70 | Number((sequence >> 37n) & 0x0fn);
44
- bytes[7] = Number((sequence >> 29n) & 0xffn);
45
- bytes[8] = 0x80 | Number((sequence >> 23n) & 0x3fn);
46
- bytes[9] = Number((sequence >> 15n) & 0xffn);
47
- bytes[10] = Number((sequence >> 7n) & 0xffn);
48
- bytes[11] = Number((sequence & 0x7fn) << 1n) | (bytes[11] & 0x01);
27
+ const bytes = new Uint8Array(16);
28
+ bytes[0] = (lastTimestamp / 0x10000000000) & 0xff;
29
+ bytes[1] = (lastTimestamp / 0x100000000) & 0xff;
30
+ bytes[2] = (lastTimestamp / 0x1000000) & 0xff;
31
+ bytes[3] = (lastTimestamp / 0x10000) & 0xff;
32
+ bytes[4] = (lastTimestamp / 0x100) & 0xff;
33
+ bytes[5] = lastTimestamp & 0xff;
34
+ bytes[6] = 0x70 | ((sequence >>> 28) & 0x0f);
35
+ bytes[7] = (sequence >>> 20) & 0xff;
36
+ bytes[8] = 0x80 | ((sequence >>> 14) & 0x3f);
37
+ bytes[9] = (sequence >>> 6) & 0xff;
38
+ bytes[10] = ((sequence & 0x3f) << 2) | (random[10] & 0x03);
39
+ bytes[11] = random[11];
40
+ bytes[12] = random[12];
41
+ bytes[13] = random[13];
42
+ bytes[14] = random[14];
43
+ bytes[15] = random[15];
49
44
  return formatUuid(bytes);
50
45
  }
51
46
  function formatUuid(bytes) {
52
47
  const hex = Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0"));
53
- return `${hex.slice(0, 4).join("")}-${hex.slice(4, 6).join("")}-${hex.slice(6, 8).join("")}-${hex.slice(8, 10).join("")}-${hex.slice(10).join("")}`;
48
+ return `${hex.slice(0, 4).join("")}-${hex.slice(4, 6).join("")}-${hex.slice(6, 8).join("")}-${hex.slice(8, 10).join("")}-${hex.slice(10, 16).join("")}`;
54
49
  }
55
50
  //# sourceMappingURL=uuid.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"uuid.js","sourceRoot":"","sources":["../../src/utils/uuid.ts"],"names":[],"mappings":"AAAA,MAAM,qBAAqB,GAAG,cAAc,CAAC;AAC7C,MAAM,YAAY,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;AAEtC,IAAI,qBAAqB,GAAG,CAAC,CAAC,CAAC;AAC/B,IAAI,QAA4B,CAAC;AAEjC,SAAS,eAAe,CAAC,KAA8B;IACtD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IACjC,IAAI,MAAM,EAAE,eAAe,EAAE,CAAC;QAC7B,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC9B,OAAO;IACR,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;IAC5C,CAAC;AACF,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,MAAM,CAAC,WAAoB;IAC1C,MAAM,kBAAkB,GAAG,WAAW,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IACrD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,kBAAkB,GAAG,CAAC,IAAI,kBAAkB,GAAG,qBAAqB,EAAE,CAAC;QACnH,MAAM,IAAI,UAAU,CAAC,qDAAqD,qBAAqB,EAAE,CAAC,CAAC;IACpG,CAAC;IAED,MAAM,kBAAkB,GACvB,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IAC/F,IAAI,WAAW,KAAK,SAAS;QAAE,qBAAqB,GAAG,kBAAkB,CAAC;IAE1E,MAAM,KAAK,GAA4B,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IAC1D,eAAe,CAAC,KAAK,CAAC,CAAC;IACvB,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC5B,QAAQ;YACP,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;gBACzB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;gBACzB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;gBACzB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACxB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;SAAM,CAAC;QACP,IAAI,QAAQ,KAAK,YAAY;YAAE,MAAM,IAAI,UAAU,CAAC,qCAAqC,CAAC,CAAC;QAC3F,QAAQ,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAC7C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QACzC,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACpE,CAAC;IACD,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IACpD,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAC7C,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IACpD,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAC7C,KAAK,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;IAC7C,KAAK,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAElE,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,UAAU,CAAC,KAA8B;IACjD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC5E,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AACrJ,CAAC","sourcesContent":["const MAX_UUID_V7_TIMESTAMP = 0xffffffffffff;\nconst MAX_SEQUENCE = (1n << 41n) - 1n;\n\nlet lastOrdinaryTimestamp = -1;\nlet sequence: bigint | undefined;\n\nfunction fillRandomBytes(bytes: Uint8Array<ArrayBuffer>): void {\n\tconst crypto = globalThis.crypto;\n\tif (crypto?.getRandomValues) {\n\t\tcrypto.getRandomValues(bytes);\n\t\treturn;\n\t}\n\tfor (let i = 0; i < bytes.length; i++) {\n\t\tbytes[i] = Math.floor(Math.random() * 256);\n\t}\n}\n\n/** Generate a time-ordered UUIDv7. A supplied timestamp is preserved for follower ids. */\nexport function uuidv7(timestampMs?: number): string {\n\tconst requestedTimestamp = timestampMs ?? Date.now();\n\tif (!Number.isInteger(requestedTimestamp) || requestedTimestamp < 0 || requestedTimestamp > MAX_UUID_V7_TIMESTAMP) {\n\t\tthrow new RangeError(`UUIDv7 timestamp must be an integer between 0 and ${MAX_UUID_V7_TIMESTAMP}`);\n\t}\n\n\tconst effectiveTimestamp =\n\t\ttimestampMs === undefined ? Math.max(requestedTimestamp, lastOrdinaryTimestamp) : timestampMs;\n\tif (timestampMs === undefined) lastOrdinaryTimestamp = effectiveTimestamp;\n\n\tconst bytes: Uint8Array<ArrayBuffer> = new Uint8Array(16);\n\tfillRandomBytes(bytes);\n\tif (sequence === undefined) {\n\t\tsequence =\n\t\t\t(BigInt(bytes[1]) << 32n) |\n\t\t\t(BigInt(bytes[2]) << 24n) |\n\t\t\t(BigInt(bytes[3]) << 16n) |\n\t\t\t(BigInt(bytes[4]) << 8n) |\n\t\t\tBigInt(bytes[5]);\n\t} else {\n\t\tif (sequence === MAX_SEQUENCE) throw new RangeError(\"UUIDv7 generator sequence exhausted\");\n\t\tsequence++;\n\t}\n\n\tconst timestamp = BigInt(effectiveTimestamp);\n\tfor (let index = 5; index >= 0; index--) {\n\t\tbytes[index] = Number(timestamp >> BigInt((5 - index) * 8)) & 0xff;\n\t}\n\tbytes[6] = 0x70 | Number((sequence >> 37n) & 0x0fn);\n\tbytes[7] = Number((sequence >> 29n) & 0xffn);\n\tbytes[8] = 0x80 | Number((sequence >> 23n) & 0x3fn);\n\tbytes[9] = Number((sequence >> 15n) & 0xffn);\n\tbytes[10] = Number((sequence >> 7n) & 0xffn);\n\tbytes[11] = Number((sequence & 0x7fn) << 1n) | (bytes[11] & 0x01);\n\n\treturn formatUuid(bytes);\n}\n\nfunction formatUuid(bytes: Uint8Array<ArrayBuffer>): string {\n\tconst hex = Array.from(bytes, (byte) => byte.toString(16).padStart(2, \"0\"));\n\treturn `${hex.slice(0, 4).join(\"\")}-${hex.slice(4, 6).join(\"\")}-${hex.slice(6, 8).join(\"\")}-${hex.slice(8, 10).join(\"\")}-${hex.slice(10).join(\"\")}`;\n}\n"]}
1
+ {"version":3,"file":"uuid.js","sourceRoot":"","sources":["../../src/utils/uuid.ts"],"names":[],"mappings":"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","sourcesContent":["let lastTimestamp = -Infinity;\nlet sequence = 0;\n\nfunction fillRandomBytes(bytes: Uint8Array<ArrayBuffer>): void {\n\tconst crypto = globalThis.crypto;\n\tif (crypto?.getRandomValues) {\n\t\tcrypto.getRandomValues(bytes);\n\t\treturn;\n\t}\n\tfor (let i = 0; i < bytes.length; i++) {\n\t\tbytes[i] = Math.floor(Math.random() * 256);\n\t}\n}\n\n/** Generate a time-ordered UUIDv7. */\nexport function uuidv7(): string {\n\tconst random: Uint8Array<ArrayBuffer> = new Uint8Array(16);\n\tfillRandomBytes(random);\n\tconst timestamp = Date.now();\n\n\tif (timestamp > lastTimestamp) {\n\t\tsequence = random[6] * 0x1000000 + random[7] * 0x10000 + random[8] * 0x100 + random[9];\n\t\tlastTimestamp = timestamp;\n\t} else {\n\t\tsequence = (sequence + 1) >>> 0;\n\t\tif (sequence === 0) lastTimestamp++;\n\t}\n\n\tconst bytes: Uint8Array<ArrayBuffer> = new Uint8Array(16);\n\tbytes[0] = (lastTimestamp / 0x10000000000) & 0xff;\n\tbytes[1] = (lastTimestamp / 0x100000000) & 0xff;\n\tbytes[2] = (lastTimestamp / 0x1000000) & 0xff;\n\tbytes[3] = (lastTimestamp / 0x10000) & 0xff;\n\tbytes[4] = (lastTimestamp / 0x100) & 0xff;\n\tbytes[5] = lastTimestamp & 0xff;\n\tbytes[6] = 0x70 | ((sequence >>> 28) & 0x0f);\n\tbytes[7] = (sequence >>> 20) & 0xff;\n\tbytes[8] = 0x80 | ((sequence >>> 14) & 0x3f);\n\tbytes[9] = (sequence >>> 6) & 0xff;\n\tbytes[10] = ((sequence & 0x3f) << 2) | (random[10] & 0x03);\n\tbytes[11] = random[11];\n\tbytes[12] = random[12];\n\tbytes[13] = random[13];\n\tbytes[14] = random[14];\n\tbytes[15] = random[15];\n\n\treturn formatUuid(bytes);\n}\n\nfunction formatUuid(bytes: Uint8Array<ArrayBuffer>): string {\n\tconst hex = Array.from(bytes, (byte) => byte.toString(16).padStart(2, \"0\"));\n\treturn `${hex.slice(0, 4).join(\"\")}-${hex.slice(4, 6).join(\"\")}-${hex.slice(6, 8).join(\"\")}-${hex.slice(8, 10).join(\"\")}-${hex.slice(10, 16).join(\"\")}`;\n}\n"]}