@cursor/july 0.1.105 → 0.1.108

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 (395) hide show
  1. package/README.md +10 -5
  2. package/dist/bin/agent-serve.js +31 -16
  3. package/dist/channels/bitbucket/types.d.ts +2 -4
  4. package/dist/channels/bitbucket/types.d.ts.map +1 -1
  5. package/dist/channels/deployments/types.d.ts +5 -8
  6. package/dist/channels/deployments/types.d.ts.map +1 -1
  7. package/dist/channels/github/github-channel.js +8 -5
  8. package/dist/channels/github/types.d.ts +7 -5
  9. package/dist/channels/github/types.d.ts.map +1 -1
  10. package/dist/channels/gitlab/types.d.ts +2 -5
  11. package/dist/channels/gitlab/types.d.ts.map +1 -1
  12. package/dist/channels/origin/origin-channel.d.ts.map +1 -1
  13. package/dist/channels/origin/origin-channel.js +27 -13
  14. package/dist/channels/origin/types.d.ts +7 -4
  15. package/dist/channels/origin/types.d.ts.map +1 -1
  16. package/dist/channels/slack/defaults.d.ts.map +1 -1
  17. package/dist/channels/slack/defaults.js +3 -0
  18. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  19. package/dist/channels/slack/dispatch.js +1 -1
  20. package/dist/channels/slack/live-delivery.d.ts.map +1 -1
  21. package/dist/channels/slack/live-delivery.js +48 -11
  22. package/dist/channels/slack/types.d.ts +4 -3
  23. package/dist/channels/slack/types.d.ts.map +1 -1
  24. package/dist/channels.d.ts +45 -0
  25. package/dist/channels.d.ts.map +1 -1
  26. package/dist/channels.js +106 -7
  27. package/dist/connections.d.ts +2 -1
  28. package/dist/connections.d.ts.map +1 -1
  29. package/dist/connections.js +2 -1
  30. package/dist/docs/404.html +3 -3
  31. package/dist/docs/ab.html +6 -6
  32. package/dist/docs/assets/{app.BVwaffdK.js → app.BASKM3M4.js} +1 -1
  33. package/dist/docs/assets/chunks/@localSearchIndexroot.BHZYsNVi.js +1 -0
  34. package/dist/docs/assets/chunks/{VPLocalSearchBox.WuWTZ1x8.js → VPLocalSearchBox.BOKxlYGP.js} +2 -2
  35. package/dist/docs/assets/chunks/{theme.BYdI_6sF.js → theme.DbDZW-zb.js} +2 -2
  36. package/dist/docs/assets/{deployment.md.MFPKqsqI.js → deployment.md.JenwuCCB.js} +4 -4
  37. package/dist/docs/assets/{deployment.md.MFPKqsqI.lean.js → deployment.md.JenwuCCB.lean.js} +1 -1
  38. package/dist/docs/assets/{evals.md.CbMoebP1.js → evals.md.C1ekS3k2.js} +1 -1
  39. package/dist/docs/assets/guides_cloud-agents.md.BsloyHdY.js +9 -0
  40. package/dist/docs/assets/{guides_cloud-agents.md.DS8RIjwx.lean.js → guides_cloud-agents.md.BsloyHdY.lean.js} +1 -1
  41. package/dist/docs/assets/{guides_github.md.c0gdGJ-D.js → guides_github.md.BH33UEBJ.js} +1 -1
  42. package/dist/docs/assets/{guides_grokbot-agents.md.DVqdhBKb.js → guides_grokbot-agents.md.DyV-WArv.js} +1 -1
  43. package/dist/docs/assets/guides_improve.md.BGVk32bK.js +14 -0
  44. package/dist/docs/assets/guides_improve.md.BGVk32bK.lean.js +1 -0
  45. package/dist/docs/assets/{guides_opentelemetry.md.COh9jFVg.js → guides_opentelemetry.md.SCRMskno.js} +3 -3
  46. package/dist/docs/assets/{guides_opentelemetry.md.COh9jFVg.lean.js → guides_opentelemetry.md.SCRMskno.lean.js} +1 -1
  47. package/dist/docs/assets/{guides_slack.md.9oHPye9o.js → guides_slack.md.D4RVMM4G.js} +3 -3
  48. package/dist/docs/assets/{guides_slack.md.9oHPye9o.lean.js → guides_slack.md.D4RVMM4G.lean.js} +1 -1
  49. package/dist/docs/assets/index.md.BjH1w2ZW.js +5 -0
  50. package/dist/docs/assets/{reference_agent-config.md.CHNpiyp4.js → reference_agent-config.md.CvoL6pof.js} +1 -1
  51. package/dist/docs/assets/{reference_channels.md.DBGcaB7m.js → reference_channels.md.D-qTqwcq.js} +2 -2
  52. package/dist/docs/assets/{reference_channels.md.DBGcaB7m.lean.js → reference_channels.md.D-qTqwcq.lean.js} +1 -1
  53. package/dist/docs/assets/{reference_cli.md.C6Lo8SEd.js → reference_cli.md.Ca26u0Es.js} +6 -6
  54. package/dist/docs/assets/{reference_cli.md.C6Lo8SEd.lean.js → reference_cli.md.Ca26u0Es.lean.js} +1 -1
  55. package/dist/docs/assets/{reference_connections.md.Di6jJAXF.js → reference_connections.md.BojkC6c5.js} +1 -1
  56. package/dist/docs/assets/{reference_extensions.md.CGmMLblt.js → reference_extensions.md.CPWt00ds.js} +1 -1
  57. package/dist/docs/assets/{scaffolding-agents.md.em43xlY1.js → scaffolding-agents.md.Kctn3OVb.js} +1 -1
  58. package/dist/docs/assets/{skills_create-agent.md.BVoWPcan.js → skills_create-agent.md.Q3h6Je-e.js} +1 -1
  59. package/dist/docs/assets/{skills_debug.md.CDbPhHfg.js → skills_debug.md.CVjCXMFF.js} +1 -1
  60. package/dist/docs/assets/{skills_debug.md.CDbPhHfg.lean.js → skills_debug.md.CVjCXMFF.lean.js} +1 -1
  61. package/dist/docs/assets/{skills_evals.md.723kpUmA.js → skills_evals.md.BhovOvrl.js} +1 -1
  62. package/dist/docs/assets/skills_framework-map.md.D-tFZhFS.js +1 -0
  63. package/dist/docs/assets/{skills_framework-map.md.haibFyoB.lean.js → skills_framework-map.md.D-tFZhFS.lean.js} +1 -1
  64. package/dist/docs/assets/{skills_github.md.D0JahM8c.js → skills_github.md.hgFX_oKY.js} +1 -1
  65. package/dist/docs/assets/{skills_otel.md.CqhobH3B.js → skills_otel.md.B5Ddv1xH.js} +1 -1
  66. package/dist/docs/assets/{style.BRuM8477.css → style.DCD_zyg3.css} +1 -1
  67. package/dist/docs/assets/troubleshooting.md.CYEAO9bM.js +1 -0
  68. package/dist/docs/building-with-agents.html +6 -6
  69. package/dist/docs/concepts.html +5 -5
  70. package/dist/docs/deployment.html +9 -9
  71. package/dist/docs/deployment.md +7 -2
  72. package/dist/docs/evals.html +8 -8
  73. package/dist/docs/evals.md +3 -2
  74. package/dist/docs/guides/agent-to-agent.html +6 -6
  75. package/dist/docs/guides/cloud-agents.html +7 -7
  76. package/dist/docs/guides/cloud-agents.md +4 -3
  77. package/dist/docs/guides/convert-automation.html +6 -6
  78. package/dist/docs/guides/github.html +7 -7
  79. package/dist/docs/guides/github.md +2 -1
  80. package/dist/docs/guides/grokbot-agents.html +7 -7
  81. package/dist/docs/guides/grokbot-agents.md +2 -2
  82. package/dist/docs/guides/human-in-the-loop.html +6 -6
  83. package/dist/docs/guides/improve.html +40 -0
  84. package/dist/docs/guides/improve.md +91 -0
  85. package/dist/docs/guides/mcp-oauth.html +6 -6
  86. package/dist/docs/guides/opentelemetry.html +8 -8
  87. package/dist/docs/guides/opentelemetry.md +3 -4
  88. package/dist/docs/guides/slack.html +8 -8
  89. package/dist/docs/guides/slack.md +2 -1
  90. package/dist/docs/guides/webhooks.html +6 -6
  91. package/dist/docs/hashmap.json +1 -1
  92. package/dist/docs/hillclimbing.html +6 -6
  93. package/dist/docs/index.html +8 -8
  94. package/dist/docs/index.md +4 -0
  95. package/dist/docs/llms-full.txt +180 -61
  96. package/dist/docs/llms.txt +1 -0
  97. package/dist/docs/quickstart.html +6 -6
  98. package/dist/docs/reference/agent-config.html +7 -7
  99. package/dist/docs/reference/agent-config.md +5 -2
  100. package/dist/docs/reference/artifacts.html +6 -6
  101. package/dist/docs/reference/channels.html +7 -7
  102. package/dist/docs/reference/channels.md +11 -19
  103. package/dist/docs/reference/cli.html +11 -11
  104. package/dist/docs/reference/cli.md +23 -13
  105. package/dist/docs/reference/connections.html +8 -8
  106. package/dist/docs/reference/connections.md +2 -1
  107. package/dist/docs/reference/extensions.html +7 -7
  108. package/dist/docs/reference/extensions.md +2 -0
  109. package/dist/docs/reference/hooks.html +6 -6
  110. package/dist/docs/reference/http-api.html +6 -6
  111. package/dist/docs/reference/instructions.html +6 -6
  112. package/dist/docs/reference/playground.html +5 -5
  113. package/dist/docs/reference/project-layout.html +6 -6
  114. package/dist/docs/reference/prompt.html +6 -6
  115. package/dist/docs/reference/result.html +6 -6
  116. package/dist/docs/reference/schedules.html +6 -6
  117. package/dist/docs/reference/sessions.html +5 -5
  118. package/dist/docs/reference/skills.html +6 -6
  119. package/dist/docs/reference/subagents.html +6 -6
  120. package/dist/docs/reference/tools.html +6 -6
  121. package/dist/docs/scaffolding-agents.html +6 -6
  122. package/dist/docs/scaffolding-agents.md +2 -1
  123. package/dist/docs/skills/ab.html +6 -6
  124. package/dist/docs/skills/create-agent.html +8 -8
  125. package/dist/docs/skills/create-agent.md +1 -1
  126. package/dist/docs/skills/debug.html +6 -6
  127. package/dist/docs/skills/debug.md +1 -1
  128. package/dist/docs/skills/evals.html +8 -8
  129. package/dist/docs/skills/evals.md +1 -1
  130. package/dist/docs/skills/framework-map.html +6 -6
  131. package/dist/docs/skills/framework-map.md +4 -2
  132. package/dist/docs/skills/github.html +8 -8
  133. package/dist/docs/skills/github.md +1 -1
  134. package/dist/docs/skills/hillclimb.html +6 -6
  135. package/dist/docs/skills/index.html +5 -5
  136. package/dist/docs/skills/mcp-auth.html +6 -6
  137. package/dist/docs/skills/otel.html +8 -8
  138. package/dist/docs/skills/otel.md +3 -3
  139. package/dist/docs/skills/setup-slack.html +6 -6
  140. package/dist/docs/storage.html +6 -6
  141. package/dist/docs/templates/agentic-owners.html +6 -6
  142. package/dist/docs/templates/agents-md.html +6 -6
  143. package/dist/docs/templates/code-wiki.html +6 -6
  144. package/dist/docs/templates/demo.html +6 -6
  145. package/dist/docs/templates/grokbot-agents.html +6 -6
  146. package/dist/docs/templates/pr-autofixer.html +6 -6
  147. package/dist/docs/templates/security-help.html +6 -6
  148. package/dist/docs/templates/security-reviewer.html +6 -6
  149. package/dist/docs/templates/triage.html +6 -6
  150. package/dist/docs/troubleshooting.html +6 -6
  151. package/dist/docs/troubleshooting.md +1 -1
  152. package/dist/extensions/improve/extension.d.ts +46 -0
  153. package/dist/extensions/improve/extension.d.ts.map +1 -0
  154. package/dist/extensions/improve/extension.js +41 -0
  155. package/dist/extensions/improve/skills/yourself.d.ts +4 -0
  156. package/dist/extensions/improve/skills/yourself.d.ts.map +1 -0
  157. package/dist/extensions/improve/skills/yourself.js +43 -0
  158. package/dist/index.d.ts +4 -5
  159. package/dist/index.d.ts.map +1 -1
  160. package/dist/index.js +3 -4
  161. package/dist/internal/builtin-tools/artifacts.d.ts.map +1 -1
  162. package/dist/internal/builtin-tools/artifacts.js +2 -3
  163. package/dist/internal/channel-route-dispatch.d.ts +13 -0
  164. package/dist/internal/channel-route-dispatch.d.ts.map +1 -0
  165. package/dist/internal/channel-route-dispatch.js +62 -0
  166. package/dist/internal/channel-state.d.ts +17 -0
  167. package/dist/internal/channel-state.d.ts.map +1 -0
  168. package/dist/internal/channel-state.js +78 -0
  169. package/dist/internal/cli-ax.d.ts +7 -0
  170. package/dist/internal/cli-ax.d.ts.map +1 -1
  171. package/dist/internal/cli-ax.js +99 -1
  172. package/dist/internal/cli-cursor.d.ts.map +1 -1
  173. package/dist/internal/cli-cursor.js +2 -0
  174. package/dist/internal/cli-deploy.d.ts.map +1 -1
  175. package/dist/internal/cli-deploy.js +61 -25
  176. package/dist/internal/cli-mcp-oauth.d.ts.map +1 -1
  177. package/dist/internal/cli-mcp-oauth.js +15 -0
  178. package/dist/internal/cli-mcp.d.ts.map +1 -1
  179. package/dist/internal/cli-mcp.js +12 -0
  180. package/dist/internal/cli-slack.d.ts.map +1 -1
  181. package/dist/internal/cli-slack.js +8 -2
  182. package/dist/internal/cursor/backend-client.d.ts +25 -0
  183. package/dist/internal/cursor/backend-client.d.ts.map +1 -1
  184. package/dist/internal/cursor/backend-client.js +57 -2
  185. package/dist/internal/cursor/credentials.d.ts +8 -2
  186. package/dist/internal/cursor/credentials.d.ts.map +1 -1
  187. package/dist/internal/cursor/credentials.js +27 -5
  188. package/dist/internal/deploy-client.d.ts +35 -0
  189. package/dist/internal/deploy-client.d.ts.map +1 -1
  190. package/dist/internal/deploy-client.js +46 -0
  191. package/dist/internal/deploy-manifest.d.ts +26 -0
  192. package/dist/internal/deploy-manifest.d.ts.map +1 -1
  193. package/dist/internal/deploy-manifest.js +99 -13
  194. package/dist/internal/describe-error.d.ts +1 -0
  195. package/dist/internal/describe-error.d.ts.map +1 -1
  196. package/dist/internal/describe-error.js +25 -0
  197. package/dist/internal/discovery/agent.d.ts.map +1 -1
  198. package/dist/internal/discovery/agent.js +1 -0
  199. package/dist/internal/discovery/info.d.ts.map +1 -1
  200. package/dist/internal/discovery/info.js +7 -3
  201. package/dist/internal/discovery/modules.d.ts +1 -1
  202. package/dist/internal/discovery/modules.d.ts.map +1 -1
  203. package/dist/internal/discovery/modules.js +1 -0
  204. package/dist/internal/discovery/project.d.ts.map +1 -1
  205. package/dist/internal/discovery/project.js +3 -0
  206. package/dist/internal/discovery/reminders.d.ts +7 -0
  207. package/dist/internal/discovery/reminders.d.ts.map +1 -0
  208. package/dist/internal/discovery/reminders.js +65 -0
  209. package/dist/internal/discovery/subagent.js +1 -0
  210. package/dist/internal/distribution.d.ts +5 -0
  211. package/dist/internal/distribution.d.ts.map +1 -1
  212. package/dist/internal/distribution.js +17 -0
  213. package/dist/internal/framework-storage-selection.d.ts +14 -3
  214. package/dist/internal/framework-storage-selection.d.ts.map +1 -1
  215. package/dist/internal/framework-storage-selection.js +36 -6
  216. package/dist/internal/guest-network.d.ts +4 -10
  217. package/dist/internal/guest-network.d.ts.map +1 -1
  218. package/dist/internal/guest-network.js +44 -26
  219. package/dist/internal/hosted-admission-adapter.d.ts +2 -0
  220. package/dist/internal/hosted-admission-adapter.d.ts.map +1 -1
  221. package/dist/internal/hosted-catch-protocol.d.ts +51 -0
  222. package/dist/internal/hosted-catch-protocol.d.ts.map +1 -0
  223. package/dist/internal/hosted-catch-protocol.js +103 -0
  224. package/dist/internal/hosted-catch.d.ts +40 -0
  225. package/dist/internal/hosted-catch.d.ts.map +1 -0
  226. package/dist/internal/hosted-catch.js +149 -0
  227. package/dist/internal/hosted-delivery-protocol.d.ts +89 -0
  228. package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
  229. package/dist/internal/hosted-delivery-protocol.js +309 -0
  230. package/dist/internal/hosted-delivery.d.ts +20 -1
  231. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  232. package/dist/internal/hosted-delivery.js +179 -36
  233. package/dist/internal/hosted-execution-diag.d.ts +4 -1
  234. package/dist/internal/hosted-execution-diag.d.ts.map +1 -1
  235. package/dist/internal/hosted-execution-diag.js +13 -4
  236. package/dist/internal/hosted-execution-flush.d.ts +3 -0
  237. package/dist/internal/hosted-execution-flush.d.ts.map +1 -1
  238. package/dist/internal/hosted-execution-flush.js +2 -4
  239. package/dist/internal/http-control-plane-session.d.ts +30 -0
  240. package/dist/internal/http-control-plane-session.d.ts.map +1 -0
  241. package/dist/internal/http-control-plane-session.js +83 -0
  242. package/dist/internal/legacy-command-guard.d.ts +22 -0
  243. package/dist/internal/legacy-command-guard.d.ts.map +1 -0
  244. package/dist/internal/legacy-command-guard.js +51 -0
  245. package/dist/internal/local-control-plane.d.ts +18 -2
  246. package/dist/internal/local-control-plane.d.ts.map +1 -1
  247. package/dist/internal/local-control-plane.js +199 -17
  248. package/dist/internal/platform-timers.d.ts +7 -0
  249. package/dist/internal/platform-timers.d.ts.map +1 -1
  250. package/dist/internal/platform-timers.js +139 -0
  251. package/dist/internal/reminder-control-plane-protocol.d.ts +189 -0
  252. package/dist/internal/reminder-control-plane-protocol.d.ts.map +1 -0
  253. package/dist/internal/reminder-control-plane-protocol.js +251 -0
  254. package/dist/internal/reminder-runner.d.ts +56 -6
  255. package/dist/internal/reminder-runner.d.ts.map +1 -1
  256. package/dist/internal/reminder-runner.js +372 -57
  257. package/dist/internal/reminder-schedule.d.ts +5 -2
  258. package/dist/internal/reminder-schedule.d.ts.map +1 -1
  259. package/dist/internal/reminder-schedule.js +8 -6
  260. package/dist/internal/reminder-store.d.ts +24 -7
  261. package/dist/internal/reminder-store.d.ts.map +1 -1
  262. package/dist/internal/reminder-store.js +6 -5
  263. package/dist/internal/request-error-status.d.ts +2 -0
  264. package/dist/internal/request-error-status.d.ts.map +1 -1
  265. package/dist/internal/request-error-status.js +22 -3
  266. package/dist/internal/resolve-prod-target.d.ts +2 -0
  267. package/dist/internal/resolve-prod-target.d.ts.map +1 -1
  268. package/dist/internal/resolve-prod-target.js +13 -0
  269. package/dist/internal/scm/pr-url.d.ts +40 -0
  270. package/dist/internal/scm/pr-url.d.ts.map +1 -1
  271. package/dist/internal/scm/pr-url.js +93 -14
  272. package/dist/internal/sdk-runner.d.ts.map +1 -1
  273. package/dist/internal/sdk-runner.js +4 -3
  274. package/dist/internal/server.d.ts.map +1 -1
  275. package/dist/internal/server.js +118 -77
  276. package/dist/internal/session-engine.d.ts +6 -6
  277. package/dist/internal/session-engine.d.ts.map +1 -1
  278. package/dist/internal/session-engine.js +100 -67
  279. package/dist/playground/assets/{index-BaQzjaNK.js → index-BMDqAeXu.js} +34 -34
  280. package/dist/playground/assets/index-LUgJoWdL.css +1 -0
  281. package/dist/playground/index.html +2 -2
  282. package/dist/reminders.d.ts +24 -5
  283. package/dist/reminders.d.ts.map +1 -1
  284. package/dist/reminders.js +28 -5
  285. package/dist/storage-backends/cursor-hosted.d.ts +6 -0
  286. package/dist/storage-backends/cursor-hosted.d.ts.map +1 -1
  287. package/dist/storage-backends/cursor-hosted.js +29 -1
  288. package/dist/types.d.ts +122 -25
  289. package/dist/types.d.ts.map +1 -1
  290. package/docs/README.md +4 -0
  291. package/docs/deployment.md +7 -2
  292. package/docs/evals.md +3 -2
  293. package/docs/guides/cloud-agents.md +4 -3
  294. package/docs/guides/github.md +2 -1
  295. package/docs/guides/grokbot-agents.md +2 -2
  296. package/docs/guides/improve.md +96 -0
  297. package/docs/guides/opentelemetry.md +3 -4
  298. package/docs/guides/slack.md +2 -1
  299. package/docs/reference/agent-config.md +5 -2
  300. package/docs/reference/channels.md +11 -19
  301. package/docs/reference/cli.md +23 -13
  302. package/docs/reference/connections.md +2 -1
  303. package/docs/reference/extensions.md +2 -0
  304. package/docs/scaffolding-agents.md +2 -1
  305. package/docs/troubleshooting.md +1 -1
  306. package/package.json +10 -3
  307. package/skills/create-agent/SKILL.md +1 -1
  308. package/skills/debug/SKILL.md +1 -1
  309. package/skills/evals/SKILL.md +1 -1
  310. package/skills/framework-map/SKILL.md +4 -2
  311. package/skills/github/SKILL.md +1 -1
  312. package/skills/otel/SKILL.md +3 -3
  313. package/src/bin/agent-serve.ts +28 -11
  314. package/src/channels/bitbucket/types.ts +2 -4
  315. package/src/channels/deployments/types.ts +5 -8
  316. package/src/channels/github/github-channel.ts +8 -8
  317. package/src/channels/github/types.ts +7 -4
  318. package/src/channels/gitlab/types.ts +2 -5
  319. package/src/channels/origin/origin-channel.ts +29 -13
  320. package/src/channels/origin/types.ts +7 -3
  321. package/src/channels/slack/defaults.ts +3 -0
  322. package/src/channels/slack/dispatch.ts +1 -0
  323. package/src/channels/slack/live-delivery.ts +53 -12
  324. package/src/channels/slack/types.ts +4 -3
  325. package/src/channels.ts +157 -10
  326. package/src/connections.ts +2 -1
  327. package/src/extensions/improve/extension.ts +70 -0
  328. package/src/extensions/improve/skills/yourself.ts +50 -0
  329. package/src/index.ts +6 -3
  330. package/src/internal/builtin-tools/artifacts.ts +2 -3
  331. package/src/internal/channel-route-dispatch.ts +66 -0
  332. package/src/internal/channel-state.ts +96 -0
  333. package/src/internal/cli-ax.ts +110 -1
  334. package/src/internal/cli-cursor.ts +4 -1
  335. package/src/internal/cli-deploy.ts +80 -22
  336. package/src/internal/cli-mcp-oauth.ts +18 -0
  337. package/src/internal/cli-mcp.ts +11 -0
  338. package/src/internal/cli-slack.ts +15 -2
  339. package/src/internal/cursor/backend-client.ts +90 -2
  340. package/src/internal/cursor/credentials.ts +35 -7
  341. package/src/internal/deploy-client.ts +70 -0
  342. package/src/internal/deploy-manifest.ts +131 -12
  343. package/src/internal/describe-error.ts +28 -0
  344. package/src/internal/discovery/agent.ts +1 -0
  345. package/src/internal/discovery/info.ts +6 -0
  346. package/src/internal/discovery/modules.ts +2 -4
  347. package/src/internal/discovery/project.ts +3 -0
  348. package/src/internal/discovery/reminders.ts +65 -0
  349. package/src/internal/discovery/subagent.ts +1 -0
  350. package/src/internal/distribution.ts +20 -0
  351. package/src/internal/framework-storage-selection.ts +43 -6
  352. package/src/internal/guest-network.ts +46 -29
  353. package/src/internal/hosted-admission-adapter.ts +2 -0
  354. package/src/internal/hosted-catch-protocol.ts +130 -0
  355. package/src/internal/hosted-catch.ts +192 -0
  356. package/src/internal/hosted-delivery-protocol.ts +483 -0
  357. package/src/internal/hosted-delivery.ts +303 -43
  358. package/src/internal/hosted-execution-diag.ts +21 -3
  359. package/src/internal/hosted-execution-flush.ts +6 -3
  360. package/src/internal/http-control-plane-session.ts +104 -0
  361. package/src/internal/legacy-command-guard.ts +59 -0
  362. package/src/internal/local-control-plane.ts +281 -22
  363. package/src/internal/platform-timers.ts +191 -0
  364. package/src/internal/reminder-control-plane-protocol.ts +512 -0
  365. package/src/internal/reminder-runner.ts +481 -57
  366. package/src/internal/reminder-schedule.ts +11 -6
  367. package/src/internal/reminder-store.ts +27 -7
  368. package/src/internal/request-error-status.ts +27 -3
  369. package/src/internal/resolve-prod-target.ts +15 -0
  370. package/src/internal/scm/pr-url.ts +167 -20
  371. package/src/internal/sdk-runner.ts +2 -1
  372. package/src/internal/server.ts +151 -88
  373. package/src/internal/session-engine.ts +146 -83
  374. package/src/reminders.ts +35 -4
  375. package/src/storage-backends/cursor-hosted.ts +40 -1
  376. package/src/types.ts +134 -26
  377. package/dist/docs/assets/chunks/@localSearchIndexroot.CJxMklAy.js +0 -1
  378. package/dist/docs/assets/guides_cloud-agents.md.DS8RIjwx.js +0 -9
  379. package/dist/docs/assets/index.md.BW_6tOgR.js +0 -5
  380. package/dist/docs/assets/skills_framework-map.md.haibFyoB.js +0 -1
  381. package/dist/docs/assets/troubleshooting.md.Cus_YZga.js +0 -1
  382. package/dist/playground/assets/index-CceqnLTX.css +0 -1
  383. /package/dist/docs/assets/{evals.md.CbMoebP1.lean.js → evals.md.C1ekS3k2.lean.js} +0 -0
  384. /package/dist/docs/assets/{guides_github.md.c0gdGJ-D.lean.js → guides_github.md.BH33UEBJ.lean.js} +0 -0
  385. /package/dist/docs/assets/{guides_grokbot-agents.md.DVqdhBKb.lean.js → guides_grokbot-agents.md.DyV-WArv.lean.js} +0 -0
  386. /package/dist/docs/assets/{index.md.BW_6tOgR.lean.js → index.md.BjH1w2ZW.lean.js} +0 -0
  387. /package/dist/docs/assets/{reference_agent-config.md.CHNpiyp4.lean.js → reference_agent-config.md.CvoL6pof.lean.js} +0 -0
  388. /package/dist/docs/assets/{reference_connections.md.Di6jJAXF.lean.js → reference_connections.md.BojkC6c5.lean.js} +0 -0
  389. /package/dist/docs/assets/{reference_extensions.md.CGmMLblt.lean.js → reference_extensions.md.CPWt00ds.lean.js} +0 -0
  390. /package/dist/docs/assets/{scaffolding-agents.md.em43xlY1.lean.js → scaffolding-agents.md.Kctn3OVb.lean.js} +0 -0
  391. /package/dist/docs/assets/{skills_create-agent.md.BVoWPcan.lean.js → skills_create-agent.md.Q3h6Je-e.lean.js} +0 -0
  392. /package/dist/docs/assets/{skills_evals.md.723kpUmA.lean.js → skills_evals.md.BhovOvrl.lean.js} +0 -0
  393. /package/dist/docs/assets/{skills_github.md.D0JahM8c.lean.js → skills_github.md.hgFX_oKY.lean.js} +0 -0
  394. /package/dist/docs/assets/{skills_otel.md.CqhobH3B.lean.js → skills_otel.md.B5Ddv1xH.lean.js} +0 -0
  395. /package/dist/docs/assets/{troubleshooting.md.Cus_YZga.lean.js → troubleshooting.md.CYEAO9bM.lean.js} +0 -0
@@ -2,6 +2,178 @@ export const HOSTED_DELIVERY_PROTOCOL_VERSION = 2;
2
2
  export const HOSTED_DELIVERY_HEADER = "x-agent-sdk-hosted-delivery";
3
3
  export const HOSTED_ADMISSION_PATH = "/v1/internal/hosted-admission";
4
4
  export const HOSTED_EXECUTION_PATH = "/v1/internal/hosted-execution";
5
+ export const HOSTED_GUEST_RETRY_TRANSIENT = "transient";
6
+ export const HOSTED_GUEST_RETRY_TERMINAL = "terminal";
7
+
8
+ export type HostedGuestRetryDisposition =
9
+ | typeof HOSTED_GUEST_RETRY_TRANSIENT
10
+ | typeof HOSTED_GUEST_RETRY_TERMINAL;
11
+
12
+ export const HOSTED_FAILURE_CLASSIFICATION_VERSION = 1;
13
+
14
+ export type HostedFailureDomain =
15
+ | "configuration"
16
+ | "protocol"
17
+ | "platform"
18
+ | "agent"
19
+ | "dependency"
20
+ | "cancellation"
21
+ | "unknown";
22
+
23
+ export type HostedFailureSource =
24
+ | "tas"
25
+ | "factory"
26
+ | "anyrun"
27
+ | "engine"
28
+ | "agent";
29
+
30
+ export type HostedFailureClassification = {
31
+ v: typeof HOSTED_FAILURE_CLASSIFICATION_VERSION;
32
+ domain: HostedFailureDomain;
33
+ source: HostedFailureSource;
34
+ };
35
+
36
+ const HOSTED_FAILURE_DOMAINS = new Set<HostedFailureDomain>([
37
+ "configuration",
38
+ "protocol",
39
+ "platform",
40
+ "agent",
41
+ "dependency",
42
+ "cancellation",
43
+ "unknown",
44
+ ]);
45
+ const HOSTED_FAILURE_SOURCES = new Set<HostedFailureSource>([
46
+ "tas",
47
+ "factory",
48
+ "anyrun",
49
+ "engine",
50
+ "agent",
51
+ ]);
52
+
53
+ export type HostedFailureCode =
54
+ | "agent_admission_threw"
55
+ | "agent_dependency_failed"
56
+ | "background_dispatch_failed"
57
+ | "bound_secrets_not_consumed"
58
+ | "channel_dispatch_failed"
59
+ | "channel_kind_mismatch"
60
+ | "channel_not_found"
61
+ | "channel_outcome_missing"
62
+ | "forbidden"
63
+ | "guest_connect_stalled"
64
+ | "guest_network_unavailable"
65
+ | "hosted_admission_session_mismatch"
66
+ | "hosted_admission_unavailable"
67
+ | "hosted_deferred_session_unusable"
68
+ | "hosted_local_send_rejected"
69
+ | "hosted_send_limit_exceeded"
70
+ | "internal_error"
71
+ | "invalid_hosted_admission"
72
+ | "invalid_hosted_execution"
73
+ | "invalid_request"
74
+ | "method_not_allowed"
75
+ | "not_found"
76
+ | "session_busy"
77
+ | "turn_cancelled"
78
+ | "turn_failed"
79
+ | "unauthorized"
80
+ | "v2_identity_conflict";
81
+
82
+ export const HOSTED_FAILURE_CLASSIFICATIONS: Record<
83
+ HostedFailureCode,
84
+ Omit<HostedFailureClassification, "v">
85
+ > = {
86
+ agent_admission_threw: { domain: "agent", source: "agent" },
87
+ agent_dependency_failed: { domain: "dependency", source: "factory" },
88
+ background_dispatch_failed: { domain: "agent", source: "agent" },
89
+ bound_secrets_not_consumed: { domain: "platform", source: "engine" },
90
+ channel_dispatch_failed: { domain: "agent", source: "agent" },
91
+ channel_kind_mismatch: { domain: "configuration", source: "engine" },
92
+ channel_not_found: { domain: "configuration", source: "engine" },
93
+ channel_outcome_missing: { domain: "protocol", source: "agent" },
94
+ forbidden: { domain: "configuration", source: "engine" },
95
+ guest_connect_stalled: { domain: "platform", source: "engine" },
96
+ guest_network_unavailable: { domain: "platform", source: "anyrun" },
97
+ hosted_admission_session_mismatch: { domain: "protocol", source: "engine" },
98
+ hosted_admission_unavailable: { domain: "platform", source: "engine" },
99
+ hosted_deferred_session_unusable: { domain: "agent", source: "agent" },
100
+ hosted_local_send_rejected: { domain: "agent", source: "agent" },
101
+ hosted_send_limit_exceeded: { domain: "agent", source: "agent" },
102
+ internal_error: { domain: "unknown", source: "engine" },
103
+ invalid_hosted_admission: { domain: "protocol", source: "engine" },
104
+ invalid_hosted_execution: { domain: "protocol", source: "engine" },
105
+ invalid_request: { domain: "protocol", source: "engine" },
106
+ method_not_allowed: { domain: "protocol", source: "engine" },
107
+ not_found: { domain: "protocol", source: "engine" },
108
+ session_busy: { domain: "platform", source: "engine" },
109
+ turn_cancelled: { domain: "cancellation", source: "agent" },
110
+ turn_failed: { domain: "agent", source: "agent" },
111
+ unauthorized: { domain: "configuration", source: "engine" },
112
+ v2_identity_conflict: { domain: "protocol", source: "engine" },
113
+ };
114
+
115
+ export function hostedFailureClassification(
116
+ code: string
117
+ ): HostedFailureClassification {
118
+ const known = HOSTED_FAILURE_CLASSIFICATIONS[code as HostedFailureCode];
119
+ return {
120
+ v: HOSTED_FAILURE_CLASSIFICATION_VERSION,
121
+ domain: known?.domain ?? "unknown",
122
+ source: known?.source ?? "engine",
123
+ };
124
+ }
125
+
126
+ export function parseHostedFailureClassification(
127
+ value: unknown
128
+ ): HostedFailureClassification | undefined {
129
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
130
+ return undefined;
131
+ }
132
+ const body = value as Record<string, unknown>;
133
+ if (
134
+ body.v !== HOSTED_FAILURE_CLASSIFICATION_VERSION ||
135
+ typeof body.domain !== "string" ||
136
+ !HOSTED_FAILURE_DOMAINS.has(body.domain as HostedFailureDomain) ||
137
+ typeof body.source !== "string" ||
138
+ !HOSTED_FAILURE_SOURCES.has(body.source as HostedFailureSource)
139
+ ) {
140
+ return undefined;
141
+ }
142
+ return body as HostedFailureClassification;
143
+ }
144
+
145
+ export type HostedGuestError = {
146
+ ok: false;
147
+ error: string;
148
+ retry: HostedGuestRetryDisposition;
149
+ classification: HostedFailureClassification;
150
+ message?: string;
151
+ turnStatus?: string;
152
+ };
153
+
154
+ /**
155
+ * Hosted delivery is the only HTTP surface whose failures drive Temporal
156
+ * retries. Keep its retry disposition explicit instead of making the shared
157
+ * HTTP error helper guess from a status code.
158
+ */
159
+ export function hostedGuestErrorResponse(input: {
160
+ status: number;
161
+ error: string;
162
+ retry: HostedGuestRetryDisposition;
163
+ message?: string;
164
+ turnStatus?: string;
165
+ }): Response {
166
+ const body: HostedGuestError = {
167
+ ok: false,
168
+ error: input.error,
169
+ retry: input.retry,
170
+ classification: hostedFailureClassification(input.error),
171
+ message: input.message,
172
+ turnStatus: input.turnStatus,
173
+ };
174
+ return Response.json(body, { status: input.status });
175
+ }
176
+
5
177
  /**
6
178
  * Filename under the serve `--state-root` (not the per-slug SessionEngine
7
179
  * dir). Hosted freeze uses `/workspace/.agent-serve`; the Temporal host
@@ -10,6 +182,49 @@ export const HOSTED_EXECUTION_PATH = "/v1/internal/hosted-execution";
10
182
  */
11
183
  export const HOSTED_EXECUTION_DIAG_FILENAME = "hosted-execution.json";
12
184
 
185
+ /**
186
+ * Reserved hosted-admission `channelKind` for durable reminder fires.
187
+ * Bypasses authored channel admission and invokes ReminderRunner.dispatch.
188
+ * Backend builds envelopes with this constant + {@link HOSTED_REMINDER_EVENT_TYPE}.
189
+ */
190
+ export const HOSTED_REMINDER_CHANNEL_KIND = "agent-sdk:reminder";
191
+
192
+ /**
193
+ * Reserved hosted-admission `eventType` for durable reminder fires.
194
+ * Payload is {@link HostedReminderFirePayload}.
195
+ */
196
+ export const HOSTED_REMINDER_EVENT_TYPE = "agent-sdk.reminder/fire";
197
+
198
+ /** Compact reminder-fire payload on the reserved hosted-admission path. */
199
+ export type HostedReminderFirePayload = {
200
+ reminderId: string;
201
+ fireCount: number;
202
+ };
203
+
204
+ /** Protocol v1 immutable fire descriptor (architecture v2 CP path). */
205
+ export type HostedReminderFireDescriptorPayload = {
206
+ protocolVersion: 1;
207
+ id: string;
208
+ fireCount: number;
209
+ generation: number;
210
+ purpose: string;
211
+ channelId: string;
212
+ continuationToken: string;
213
+ target?: Record<string, unknown>;
214
+ scheduleKind: "every" | "cron" | "delay" | "at";
215
+ scheduleValue: string;
216
+ intervalMs?: number;
217
+ prompt?: string;
218
+ handler?: string;
219
+ args?: Record<string, unknown>;
220
+ hasRunHandler: boolean;
221
+ hasUntilFn: boolean;
222
+ untilPrompt?: string;
223
+ busyPolicy: "skipIfBusy" | "queueBehindTurn";
224
+ nextFireAtMs: number;
225
+ claimedAtMs: number;
226
+ };
227
+
13
228
  export type HostedAdmissionManagedAutomation = {
14
229
  automationUuid: string;
15
230
  mcpServerNames: string[];
@@ -171,6 +386,274 @@ export function parseHostedExecution(
171
386
  return body as HostedExecution;
172
387
  }
173
388
 
389
+ /**
390
+ * True when the admission envelope is the reserved internal reminder fire
391
+ * path (not an authored channel event).
392
+ */
393
+ export function isHostedReminderAdmission(delivery: HostedAdmission): boolean {
394
+ return (
395
+ delivery.channelKind === HOSTED_REMINDER_CHANNEL_KIND &&
396
+ delivery.eventType === HOSTED_REMINDER_EVENT_TYPE
397
+ );
398
+ }
399
+
400
+ /**
401
+ * Parse `{ reminderId, fireCount }` from a reserved reminder admission
402
+ * payload. Rejects unknown keys and non-integer fireCount.
403
+ */
404
+ export function parseHostedReminderFirePayload(
405
+ value: unknown
406
+ ): HostedReminderFirePayload | undefined {
407
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
408
+ return undefined;
409
+ }
410
+ const body = value as Record<string, unknown>;
411
+ const keys = Object.keys(body);
412
+ if (
413
+ keys.length !== 2 ||
414
+ !Object.hasOwn(body, "reminderId") ||
415
+ !Object.hasOwn(body, "fireCount") ||
416
+ !boundedString(body.reminderId, 128) ||
417
+ typeof body.fireCount !== "number" ||
418
+ !Number.isInteger(body.fireCount) ||
419
+ body.fireCount < 0
420
+ ) {
421
+ return undefined;
422
+ }
423
+ return {
424
+ reminderId: body.reminderId,
425
+ fireCount: body.fireCount,
426
+ };
427
+ }
428
+
429
+ const HOSTED_REMINDER_FIRE_DESCRIPTOR_KEYS = new Set([
430
+ "protocolVersion",
431
+ "id",
432
+ "fireCount",
433
+ "generation",
434
+ "purpose",
435
+ "channelId",
436
+ "continuationToken",
437
+ "target",
438
+ "scheduleKind",
439
+ "scheduleValue",
440
+ "intervalMs",
441
+ "prompt",
442
+ "handler",
443
+ "args",
444
+ "hasRunHandler",
445
+ "hasUntilFn",
446
+ "untilPrompt",
447
+ "busyPolicy",
448
+ "nextFireAtMs",
449
+ "claimedAtMs",
450
+ ]);
451
+
452
+ const HOSTED_REMINDER_SCHEDULE_KINDS = new Set([
453
+ "every",
454
+ "cron",
455
+ "delay",
456
+ "at",
457
+ ]);
458
+ const HOSTED_REMINDER_BUSY_POLICIES = new Set([
459
+ "skipIfBusy",
460
+ "queueBehindTurn",
461
+ ]);
462
+
463
+ const HOSTED_REMINDER_JSON_MAX_DEPTH = 8;
464
+
465
+ /** Reject non-JSON values (NaN/Infinity/undefined/bigint/function/symbol). */
466
+ function isJsonSafeValue(value: unknown, depth: number): boolean {
467
+ if (depth > HOSTED_REMINDER_JSON_MAX_DEPTH) {
468
+ return false;
469
+ }
470
+ if (value === null) {
471
+ return true;
472
+ }
473
+ const type = typeof value;
474
+ if (type === "string" || type === "boolean") {
475
+ return true;
476
+ }
477
+ if (type === "number") {
478
+ return Number.isFinite(value);
479
+ }
480
+ if (type !== "object") {
481
+ return false;
482
+ }
483
+ if (Array.isArray(value)) {
484
+ return value.every((entry) => isJsonSafeValue(entry, depth + 1));
485
+ }
486
+ const proto = Object.getPrototypeOf(value);
487
+ if (proto !== Object.prototype && proto !== null) {
488
+ return false;
489
+ }
490
+ for (const entry of Object.values(value as Record<string, unknown>)) {
491
+ if (!isJsonSafeValue(entry, depth + 1)) {
492
+ return false;
493
+ }
494
+ }
495
+ return true;
496
+ }
497
+
498
+ function parseOptionalJsonObjectField(
499
+ value: unknown,
500
+ maxBytes: number
501
+ ): Record<string, unknown> | undefined {
502
+ if (value === undefined) {
503
+ return undefined;
504
+ }
505
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
506
+ return undefined;
507
+ }
508
+ if (!isJsonSafeValue(value, 0)) {
509
+ return undefined;
510
+ }
511
+ try {
512
+ const encoded = JSON.stringify(value);
513
+ if (
514
+ encoded === undefined ||
515
+ Buffer.byteLength(encoded, "utf8") > maxBytes
516
+ ) {
517
+ return undefined;
518
+ }
519
+ const roundTrip = JSON.parse(encoded) as unknown;
520
+ if (
521
+ typeof roundTrip !== "object" ||
522
+ roundTrip === null ||
523
+ Array.isArray(roundTrip)
524
+ ) {
525
+ return undefined;
526
+ }
527
+ return roundTrip as Record<string, unknown>;
528
+ } catch {
529
+ return undefined;
530
+ }
531
+ }
532
+
533
+ /**
534
+ * Parse the immutable CP fire descriptor. Rejects unknown keys, non-enum
535
+ * schedule/busy values, and non-JSON-safe optional object fields.
536
+ */
537
+ export function parseHostedReminderFireDescriptorPayload(
538
+ value: unknown
539
+ ): HostedReminderFireDescriptorPayload | undefined {
540
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
541
+ return undefined;
542
+ }
543
+ const body = value as Record<string, unknown>;
544
+ if (
545
+ Object.keys(body).some(
546
+ (key) => !HOSTED_REMINDER_FIRE_DESCRIPTOR_KEYS.has(key)
547
+ )
548
+ ) {
549
+ return undefined;
550
+ }
551
+ if (
552
+ body.protocolVersion !== 1 ||
553
+ typeof body.id !== "string" ||
554
+ body.id.length === 0 ||
555
+ body.id.length > 128 ||
556
+ typeof body.fireCount !== "number" ||
557
+ !Number.isInteger(body.fireCount) ||
558
+ body.fireCount < 0 ||
559
+ typeof body.generation !== "number" ||
560
+ !Number.isInteger(body.generation) ||
561
+ body.generation < 0 ||
562
+ typeof body.purpose !== "string" ||
563
+ body.purpose.length === 0 ||
564
+ body.purpose.length > 512 ||
565
+ typeof body.channelId !== "string" ||
566
+ body.channelId.length === 0 ||
567
+ body.channelId.length > 128 ||
568
+ typeof body.continuationToken !== "string" ||
569
+ body.continuationToken.length === 0 ||
570
+ body.continuationToken.length > 512 ||
571
+ typeof body.scheduleKind !== "string" ||
572
+ !HOSTED_REMINDER_SCHEDULE_KINDS.has(body.scheduleKind) ||
573
+ typeof body.scheduleValue !== "string" ||
574
+ body.scheduleValue.length === 0 ||
575
+ body.scheduleValue.length > 512 ||
576
+ typeof body.hasRunHandler !== "boolean" ||
577
+ typeof body.hasUntilFn !== "boolean" ||
578
+ typeof body.busyPolicy !== "string" ||
579
+ !HOSTED_REMINDER_BUSY_POLICIES.has(body.busyPolicy) ||
580
+ typeof body.nextFireAtMs !== "number" ||
581
+ !Number.isFinite(body.nextFireAtMs) ||
582
+ typeof body.claimedAtMs !== "number" ||
583
+ !Number.isFinite(body.claimedAtMs) ||
584
+ !Number.isInteger(body.claimedAtMs) ||
585
+ body.claimedAtMs < 0
586
+ ) {
587
+ return undefined;
588
+ }
589
+ if (body.intervalMs !== undefined) {
590
+ if (
591
+ typeof body.intervalMs !== "number" ||
592
+ !Number.isFinite(body.intervalMs) ||
593
+ !Number.isInteger(body.intervalMs) ||
594
+ body.intervalMs <= 0
595
+ ) {
596
+ return undefined;
597
+ }
598
+ }
599
+ if (body.prompt !== undefined) {
600
+ if (typeof body.prompt !== "string" || body.prompt.length > 8192) {
601
+ return undefined;
602
+ }
603
+ }
604
+ if (body.handler !== undefined) {
605
+ if (
606
+ typeof body.handler !== "string" ||
607
+ body.handler.length === 0 ||
608
+ body.handler.length > 128
609
+ ) {
610
+ return undefined;
611
+ }
612
+ }
613
+ if (body.untilPrompt !== undefined) {
614
+ if (
615
+ typeof body.untilPrompt !== "string" ||
616
+ body.untilPrompt.length > 8192
617
+ ) {
618
+ return undefined;
619
+ }
620
+ }
621
+ const target = parseOptionalJsonObjectField(body.target, 16 * 1024);
622
+ if (body.target !== undefined && target === undefined) {
623
+ return undefined;
624
+ }
625
+ const args = parseOptionalJsonObjectField(body.args, 32 * 1024);
626
+ if (body.args !== undefined && args === undefined) {
627
+ return undefined;
628
+ }
629
+ return {
630
+ protocolVersion: 1,
631
+ id: body.id,
632
+ fireCount: body.fireCount,
633
+ generation: body.generation,
634
+ purpose: body.purpose,
635
+ channelId: body.channelId,
636
+ continuationToken: body.continuationToken,
637
+ ...(target === undefined ? {} : { target }),
638
+ scheduleKind:
639
+ body.scheduleKind as HostedReminderFireDescriptorPayload["scheduleKind"],
640
+ scheduleValue: body.scheduleValue,
641
+ ...(body.intervalMs === undefined ? {} : { intervalMs: body.intervalMs }),
642
+ ...(body.prompt === undefined ? {} : { prompt: body.prompt }),
643
+ ...(body.handler === undefined ? {} : { handler: body.handler }),
644
+ ...(args === undefined ? {} : { args }),
645
+ hasRunHandler: body.hasRunHandler,
646
+ hasUntilFn: body.hasUntilFn,
647
+ ...(body.untilPrompt === undefined
648
+ ? {}
649
+ : { untilPrompt: body.untilPrompt }),
650
+ busyPolicy:
651
+ body.busyPolicy as HostedReminderFireDescriptorPayload["busyPolicy"],
652
+ nextFireAtMs: body.nextFireAtMs,
653
+ claimedAtMs: body.claimedAtMs,
654
+ };
655
+ }
656
+
174
657
  export function parseHostedAdmissionOutcome(
175
658
  value: unknown
176
659
  ): HostedAdmissionOutcome | undefined {