@cursor/july 0.1.91 → 0.1.93

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 (351) hide show
  1. package/AGENTS.md +4 -0
  2. package/README.md +117 -162
  3. package/dist/channels/deployments/deployments-channel.d.ts +7 -0
  4. package/dist/channels/deployments/deployments-channel.d.ts.map +1 -1
  5. package/dist/channels/deployments/deployments-channel.js +26 -2
  6. package/dist/channels/deployments/types.d.ts +8 -0
  7. package/dist/channels/deployments/types.d.ts.map +1 -1
  8. package/dist/channels/github/github-channel.d.ts +3 -0
  9. package/dist/channels/github/github-channel.d.ts.map +1 -1
  10. package/dist/channels/github/github-channel.js +28 -56
  11. package/dist/continuation.d.ts +1 -1
  12. package/dist/continuation.js +1 -1
  13. package/dist/docs/404.html +4 -2
  14. package/dist/docs/ab.html +10 -8
  15. package/dist/docs/ab.md +332 -0
  16. package/dist/docs/assets/{ab.md.CVzWxLoB.js → ab.md.DJo5r4R-.js} +4 -4
  17. package/dist/docs/assets/{ab.md.CVzWxLoB.lean.js → ab.md.DJo5r4R-.lean.js} +1 -1
  18. package/dist/docs/assets/{app.Bci6CM9E.js → app.CjWU-x0z.js} +1 -1
  19. package/dist/docs/assets/building-with-agents.md.DI4mEzlt.js +13 -0
  20. package/dist/docs/assets/{building-with-agents.md.DH8A_cHA.lean.js → building-with-agents.md.DI4mEzlt.lean.js} +1 -1
  21. package/dist/docs/assets/chunks/@localSearchIndexroot.ChpIC3Zy.js +1 -0
  22. package/dist/docs/assets/chunks/{VPLocalSearchBox.BCPT6xA-.js → VPLocalSearchBox.Cxy8ySFQ.js} +1 -1
  23. package/dist/docs/assets/chunks/{theme.BEA8BF3c.js → theme.Dvq1Bktu.js} +2 -2
  24. package/dist/docs/assets/concepts.md.F6AiPorA.js +1 -0
  25. package/dist/docs/assets/{concepts.md.CRfU3bVg.lean.js → concepts.md.F6AiPorA.lean.js} +1 -1
  26. package/dist/docs/assets/{deployment.md.DX_hc3ze.js → deployment.md.DoLFAzfm.js} +6 -6
  27. package/dist/docs/assets/{evals.md.a0SMN6r9.js → evals.md.lfJoEVc8.js} +6 -6
  28. package/dist/docs/assets/{evals.md.a0SMN6r9.lean.js → evals.md.lfJoEVc8.lean.js} +1 -1
  29. package/dist/docs/assets/{example-agents_approval-buddy.md.DNL83puR.js → example-agents_approval-buddy.md.DmezILPg.js} +1 -1
  30. package/dist/docs/assets/{example-agents_benny.md.C40vHRLc.js → example-agents_benny.md.B0kwY7D_.js} +2 -4
  31. package/dist/docs/assets/{example-agents_benny.md.C40vHRLc.lean.js → example-agents_benny.md.B0kwY7D_.lean.js} +1 -1
  32. package/dist/docs/assets/{example-agents_codebase-wiki.md.Dftj_tPp.js → example-agents_codebase-wiki.md.BBNw9Ekr.js} +3 -3
  33. package/dist/docs/assets/{example-agents_codebase-wiki.md.Dftj_tPp.lean.js → example-agents_codebase-wiki.md.BBNw9Ekr.lean.js} +1 -1
  34. package/dist/docs/assets/{example-agents_concierge.md.MrKpQndp.js → example-agents_concierge.md.BzB2b20R.js} +2 -3
  35. package/dist/docs/assets/example-agents_index.md.ChBp0AX6.js +2 -0
  36. package/dist/docs/assets/example-agents_index.md.ChBp0AX6.lean.js +1 -0
  37. package/dist/docs/assets/{example-agents_knowledge-base.md.DqKqHQ9u.js → example-agents_knowledge-base.md.CrA85ig-.js} +1 -1
  38. package/dist/docs/assets/{example-agents_security-reviewer.md.Bai6D0Ee.js → example-agents_security-reviewer.md.74pPpWYj.js} +1 -1
  39. package/dist/docs/assets/{example-agents_weather-agent.md.lVEAbWFf.js → example-agents_weather-agent.md.CaGpmw3Y.js} +2 -2
  40. package/dist/docs/assets/{guides_agent-to-agent.md.BCeVdJRJ.js → guides_agent-to-agent.md.B3JIaAqz.js} +1 -1
  41. package/dist/docs/assets/{guides_cloud-runtime.md.BSMLIBHr.js → guides_cloud-runtime.md.BnvjPiia.js} +2 -2
  42. package/dist/docs/assets/{guides_cloud-runtime.md.BSMLIBHr.lean.js → guides_cloud-runtime.md.BnvjPiia.lean.js} +1 -1
  43. package/dist/docs/assets/{guides_convert-automation.md.D06eIzea.js → guides_convert-automation.md.Bboisykk.js} +1 -1
  44. package/dist/docs/assets/{guides_github.md.Cdt1s2QC.js → guides_github.md.DqJhuaN1.js} +5 -5
  45. package/dist/docs/assets/{guides_github.md.Cdt1s2QC.lean.js → guides_github.md.DqJhuaN1.lean.js} +1 -1
  46. package/dist/docs/assets/{guides_mcp-oauth.md.Du0f7pGU.js → guides_mcp-oauth.md.CJvrXtkN.js} +2 -2
  47. package/dist/docs/assets/{guides_slack.md.DiUmk_Oi.js → guides_slack.md.mqeNKs84.js} +2 -2
  48. package/dist/docs/assets/{guides_webhooks.md.BpnIdO0i.js → guides_webhooks.md.DKdA43Qm.js} +2 -2
  49. package/dist/docs/assets/{hillclimbing.md.ywF3yDAd.js → hillclimbing.md.DhESf3OO.js} +1 -1
  50. package/dist/docs/assets/{index.md.BAaMXLFd.js → index.md.B-lVR4wT.js} +3 -3
  51. package/dist/docs/assets/{index.md.BAaMXLFd.lean.js → index.md.B-lVR4wT.lean.js} +1 -1
  52. package/dist/docs/assets/{quickstart.md.DsrarzEg.js → quickstart.md.BrmfrrIr.js} +1 -1
  53. package/dist/docs/assets/{reference_agent-config.md.Bqylgw50.js → reference_agent-config.md.Cp_x38Nl.js} +3 -3
  54. package/dist/docs/assets/{reference_channels.md.DQZjCnyh.js → reference_channels.md.Cd2f2iyV.js} +2 -2
  55. package/dist/docs/assets/{reference_channels.md.DQZjCnyh.lean.js → reference_channels.md.Cd2f2iyV.lean.js} +1 -1
  56. package/dist/docs/assets/{reference_cli.md.B7GkAJRC.js → reference_cli.md.D9KESDsD.js} +10 -11
  57. package/dist/docs/assets/{reference_cli.md.B7GkAJRC.lean.js → reference_cli.md.D9KESDsD.lean.js} +1 -1
  58. package/dist/docs/assets/{reference_connections.md.DYidrb-j.js → reference_connections.md.DB6SsN6U.js} +3 -3
  59. package/dist/docs/assets/reference_hooks.md.BxN87gCw.js +14 -0
  60. package/dist/docs/assets/{reference_hooks.md.B9FSgdDe.lean.js → reference_hooks.md.BxN87gCw.lean.js} +1 -1
  61. package/dist/docs/assets/reference_http-api.md.C68BERYr.js +11 -0
  62. package/dist/docs/assets/reference_http-api.md.C68BERYr.lean.js +1 -0
  63. package/dist/docs/assets/{reference_instructions.md.DhNCOl7r.js → reference_instructions.md.CR7XSsGk.js} +3 -3
  64. package/dist/docs/assets/{reference_instructions.md.DhNCOl7r.lean.js → reference_instructions.md.CR7XSsGk.lean.js} +1 -1
  65. package/dist/docs/assets/reference_playground.md.DnX5nL-B.js +1 -0
  66. package/dist/docs/assets/reference_playground.md.DnX5nL-B.lean.js +1 -0
  67. package/dist/docs/assets/{reference_project-layout.md.CwkSbEWT.js → reference_project-layout.md.WN9nwJht.js} +2 -2
  68. package/dist/docs/assets/{reference_prompt.md.DZUMtLPD.js → reference_prompt.md.DnaD5dNK.js} +1 -1
  69. package/dist/docs/assets/{reference_schedules.md.DNipebiG.js → reference_schedules.md.DI_JrHgq.js} +1 -1
  70. package/dist/docs/assets/reference_sessions.md.D0mIh4KK.js +1 -0
  71. package/dist/docs/assets/{reference_sessions.md.tUFzz98S.lean.js → reference_sessions.md.D0mIh4KK.lean.js} +1 -1
  72. package/dist/docs/assets/{reference_skills.md.B5ZEuHfG.js → reference_skills.md.BFW9retM.js} +1 -1
  73. package/dist/docs/assets/{reference_tools.md.wpaJtHn6.js → reference_tools.md.DuKvkYWG.js} +4 -4
  74. package/dist/docs/assets/{reference_tools.md.wpaJtHn6.lean.js → reference_tools.md.DuKvkYWG.lean.js} +1 -1
  75. package/dist/docs/assets/scaffolding-agents.md.D7UUkWw0.js +1 -0
  76. package/dist/docs/assets/{scaffolding-agents.md.CRDDUtYJ.lean.js → scaffolding-agents.md.D7UUkWw0.lean.js} +1 -1
  77. package/dist/docs/assets/{storage.md.JbjlHWZ6.js → storage.md.BOHeqk2M.js} +5 -5
  78. package/dist/docs/assets/{storage.md.JbjlHWZ6.lean.js → storage.md.BOHeqk2M.lean.js} +1 -1
  79. package/dist/docs/assets/{templates_agentic-owners.md.DSJSIpWU.js → templates_agentic-owners.md.DqtPdm6f.js} +2 -2
  80. package/dist/docs/assets/{templates_pr-autofixer.md.1HAR3RXE.js → templates_pr-autofixer.md.R4K_qytS.js} +2 -2
  81. package/dist/docs/assets/{templates_pr-autofixer.md.1HAR3RXE.lean.js → templates_pr-autofixer.md.R4K_qytS.lean.js} +1 -1
  82. package/dist/docs/assets/troubleshooting.md.vCWwvqcJ.js +1 -0
  83. package/dist/docs/assets/{troubleshooting.md.DYECCZiJ.lean.js → troubleshooting.md.vCWwvqcJ.lean.js} +1 -1
  84. package/dist/docs/building-with-agents.html +9 -7
  85. package/dist/docs/building-with-agents.md +118 -0
  86. package/dist/docs/concepts.html +7 -8
  87. package/dist/docs/concepts.md +169 -0
  88. package/dist/docs/deployment.html +13 -11
  89. package/dist/docs/deployment.md +462 -0
  90. package/dist/docs/evals.html +12 -10
  91. package/dist/docs/evals.md +460 -0
  92. package/dist/docs/example-agents/approval-buddy.html +7 -5
  93. package/dist/docs/example-agents/approval-buddy.md +266 -0
  94. package/dist/docs/example-agents/benny.html +7 -7
  95. package/dist/docs/example-agents/benny.md +173 -0
  96. package/dist/docs/example-agents/bugbot.html +6 -4
  97. package/dist/docs/example-agents/bugbot.md +229 -0
  98. package/dist/docs/example-agents/codebase-wiki.html +8 -6
  99. package/dist/docs/example-agents/codebase-wiki.md +167 -0
  100. package/dist/docs/example-agents/codeowners-review.html +6 -4
  101. package/dist/docs/example-agents/codeowners-review.md +192 -0
  102. package/dist/docs/example-agents/concierge.html +9 -8
  103. package/dist/docs/example-agents/concierge.md +200 -0
  104. package/dist/docs/example-agents/index.html +8 -6
  105. package/dist/docs/example-agents/index.md +99 -0
  106. package/dist/docs/example-agents/knowledge-base.html +8 -6
  107. package/dist/docs/example-agents/knowledge-base.md +168 -0
  108. package/dist/docs/example-agents/oncall.html +6 -4
  109. package/dist/docs/example-agents/oncall.md +212 -0
  110. package/dist/docs/example-agents/security-reviewer.html +9 -7
  111. package/dist/docs/example-agents/security-reviewer.md +265 -0
  112. package/dist/docs/example-agents/slack-agent.html +6 -4
  113. package/dist/docs/example-agents/slack-agent.md +142 -0
  114. package/dist/docs/example-agents/weather-agent.html +9 -7
  115. package/dist/docs/example-agents/weather-agent.md +297 -0
  116. package/dist/docs/guides/agent-to-agent.html +7 -5
  117. package/dist/docs/guides/agent-to-agent.md +113 -0
  118. package/dist/docs/guides/cloud-runtime.html +8 -6
  119. package/dist/docs/guides/cloud-runtime.md +114 -0
  120. package/dist/docs/guides/convert-automation.html +8 -6
  121. package/dist/docs/guides/convert-automation.md +171 -0
  122. package/dist/docs/guides/github.html +11 -9
  123. package/dist/docs/guides/github.md +275 -0
  124. package/dist/docs/guides/human-in-the-loop.html +6 -4
  125. package/dist/docs/guides/human-in-the-loop.md +126 -0
  126. package/dist/docs/guides/mcp-oauth.html +8 -6
  127. package/dist/docs/guides/mcp-oauth.md +159 -0
  128. package/dist/docs/guides/opentelemetry.html +6 -4
  129. package/dist/docs/guides/opentelemetry.md +209 -0
  130. package/dist/docs/guides/slack.html +9 -7
  131. package/dist/docs/guides/slack.md +337 -0
  132. package/dist/docs/guides/webhooks.html +8 -6
  133. package/dist/docs/guides/webhooks.md +463 -0
  134. package/dist/docs/hashmap.json +1 -1
  135. package/dist/docs/hillclimbing.html +8 -6
  136. package/dist/docs/hillclimbing.md +88 -0
  137. package/dist/docs/index.html +8 -6
  138. package/dist/docs/index.md +171 -0
  139. package/dist/docs/llms-full.txt +10968 -0
  140. package/dist/docs/llms.txt +74 -0
  141. package/dist/docs/quickstart.html +7 -5
  142. package/dist/docs/quickstart.md +364 -0
  143. package/dist/docs/reference/agent-config.html +10 -8
  144. package/dist/docs/reference/agent-config.md +251 -0
  145. package/dist/docs/reference/artifacts.html +6 -4
  146. package/dist/docs/reference/artifacts.md +112 -0
  147. package/dist/docs/reference/channels.html +8 -6
  148. package/dist/docs/reference/channels.md +244 -0
  149. package/dist/docs/reference/cli.html +16 -15
  150. package/dist/docs/reference/cli.md +947 -0
  151. package/dist/docs/reference/connections.html +10 -8
  152. package/dist/docs/reference/connections.md +263 -0
  153. package/dist/docs/reference/hooks.html +8 -6
  154. package/dist/docs/reference/hooks.md +98 -0
  155. package/dist/docs/reference/http-api.html +9 -7
  156. package/dist/docs/reference/http-api.md +247 -0
  157. package/dist/docs/reference/instructions.html +8 -6
  158. package/dist/docs/reference/instructions.md +74 -0
  159. package/dist/docs/reference/playground.html +7 -5
  160. package/dist/docs/reference/playground.md +57 -0
  161. package/dist/docs/reference/project-layout.html +9 -7
  162. package/dist/docs/reference/project-layout.md +107 -0
  163. package/dist/docs/reference/prompt.html +8 -6
  164. package/dist/docs/reference/prompt.md +42 -0
  165. package/dist/docs/reference/schedules.html +8 -6
  166. package/dist/docs/reference/schedules.md +214 -0
  167. package/dist/docs/reference/sessions.html +7 -12
  168. package/dist/docs/reference/sessions.md +159 -0
  169. package/dist/docs/reference/skills.html +8 -6
  170. package/dist/docs/reference/skills.md +83 -0
  171. package/dist/docs/reference/subagents.html +6 -4
  172. package/dist/docs/reference/subagents.md +71 -0
  173. package/dist/docs/reference/tools.html +10 -8
  174. package/dist/docs/reference/tools.md +293 -0
  175. package/dist/docs/scaffolding-agents.html +7 -5
  176. package/dist/docs/scaffolding-agents.md +129 -0
  177. package/dist/docs/storage.html +11 -9
  178. package/dist/docs/storage.md +176 -0
  179. package/dist/docs/templates/agentic-owners.html +9 -7
  180. package/dist/docs/templates/agentic-owners.md +92 -0
  181. package/dist/docs/templates/demo.html +6 -4
  182. package/dist/docs/templates/demo.md +79 -0
  183. package/dist/docs/templates/pr-autofixer.html +8 -6
  184. package/dist/docs/templates/pr-autofixer.md +128 -0
  185. package/dist/docs/templates/security-reviewer.html +6 -4
  186. package/dist/docs/templates/security-reviewer.md +84 -0
  187. package/dist/docs/templates/triage.html +6 -4
  188. package/dist/docs/templates/triage.md +98 -0
  189. package/dist/docs/troubleshooting.html +7 -5
  190. package/dist/docs/troubleshooting.md +111 -0
  191. package/dist/internal/authored-alias-hooks.d.ts +14 -11
  192. package/dist/internal/authored-alias-hooks.d.ts.map +1 -1
  193. package/dist/internal/authored-alias-hooks.js +14 -11
  194. package/dist/internal/authored-loaders.d.ts +7 -6
  195. package/dist/internal/authored-loaders.d.ts.map +1 -1
  196. package/dist/internal/authored-loaders.js +14 -10
  197. package/dist/internal/cli-deploy.d.ts +1 -1
  198. package/dist/internal/cli-deploy.js +5 -5
  199. package/dist/internal/continuation-channel.d.ts +6 -3
  200. package/dist/internal/continuation-channel.d.ts.map +1 -1
  201. package/dist/internal/continuation-channel.js +44 -40
  202. package/dist/internal/continuation-identity.d.ts +17 -16
  203. package/dist/internal/continuation-identity.d.ts.map +1 -1
  204. package/dist/internal/continuation-identity.js +109 -36
  205. package/dist/internal/deploy-manifest.d.ts +2 -2
  206. package/dist/internal/deploy-manifest.d.ts.map +1 -1
  207. package/dist/internal/deploy-manifest.js +4 -9
  208. package/dist/internal/discovery.d.ts.map +1 -1
  209. package/dist/internal/discovery.js +3 -0
  210. package/dist/internal/distribution.d.ts +4 -3
  211. package/dist/internal/distribution.d.ts.map +1 -1
  212. package/dist/internal/distribution.js +4 -3
  213. package/dist/internal/hosted-delivery-protocol.d.ts +38 -0
  214. package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -0
  215. package/dist/internal/hosted-delivery-protocol.js +70 -0
  216. package/dist/internal/hosted-delivery.d.ts +35 -0
  217. package/dist/internal/hosted-delivery.d.ts.map +1 -0
  218. package/dist/internal/hosted-delivery.js +226 -0
  219. package/dist/internal/http-channel.d.ts.map +1 -1
  220. package/dist/internal/http-channel.js +1 -1
  221. package/dist/internal/init-scaffold.d.ts.map +1 -1
  222. package/dist/internal/init-scaffold.js +1 -0
  223. package/dist/internal/playground/static.d.ts.map +1 -1
  224. package/dist/internal/playground/static.js +2 -0
  225. package/dist/internal/review-comments.d.ts +186 -63
  226. package/dist/internal/review-comments.d.ts.map +1 -1
  227. package/dist/internal/review-comments.js +350 -168
  228. package/dist/internal/server.d.ts.map +1 -1
  229. package/dist/internal/server.js +21 -3
  230. package/dist/internal/session-engine.d.ts +5 -0
  231. package/dist/internal/session-engine.d.ts.map +1 -1
  232. package/dist/internal/session-engine.js +16 -4
  233. package/dist/internal/shallow-clone.d.ts +8 -2
  234. package/dist/internal/shallow-clone.d.ts.map +1 -1
  235. package/dist/internal/shallow-clone.js +17 -10
  236. package/dist/playground/assets/{index-DDvyC2z6.js → index-D9MFzhNE.js} +1 -1
  237. package/dist/playground/index.html +1 -1
  238. package/dist/types.d.ts +9 -17
  239. package/dist/types.d.ts.map +1 -1
  240. package/docs/README.md +2 -10
  241. package/docs/ab.md +7 -13
  242. package/docs/building-with-agents.md +5 -11
  243. package/docs/concepts.md +12 -17
  244. package/docs/deployment.md +8 -10
  245. package/docs/evals.md +16 -37
  246. package/docs/example-agents/approval-buddy.md +1 -1
  247. package/docs/example-agents/benny.md +4 -13
  248. package/docs/example-agents/codebase-wiki.md +5 -8
  249. package/docs/example-agents/concierge.md +2 -3
  250. package/docs/example-agents/index.md +6 -9
  251. package/docs/example-agents/knowledge-base.md +2 -2
  252. package/docs/example-agents/security-reviewer.md +5 -5
  253. package/docs/example-agents/weather-agent.md +4 -3
  254. package/docs/guides/agent-to-agent.md +1 -1
  255. package/docs/guides/cloud-runtime.md +8 -25
  256. package/docs/guides/convert-automation.md +3 -3
  257. package/docs/guides/github.md +11 -23
  258. package/docs/guides/mcp-oauth.md +4 -4
  259. package/docs/guides/slack.md +4 -4
  260. package/docs/guides/webhooks.md +3 -3
  261. package/docs/hillclimbing.md +1 -1
  262. package/docs/quickstart.md +1 -1
  263. package/docs/reference/agent-config.md +10 -15
  264. package/docs/reference/channels.md +20 -31
  265. package/docs/reference/cli.md +27 -37
  266. package/docs/reference/connections.md +9 -14
  267. package/docs/reference/hooks.md +10 -14
  268. package/docs/reference/http-api.md +18 -38
  269. package/docs/reference/instructions.md +1 -1
  270. package/docs/reference/playground.md +14 -19
  271. package/docs/reference/project-layout.md +2 -2
  272. package/docs/reference/prompt.md +1 -1
  273. package/docs/reference/schedules.md +1 -2
  274. package/docs/reference/sessions.md +8 -19
  275. package/docs/reference/skills.md +3 -3
  276. package/docs/reference/tools.md +12 -17
  277. package/docs/scaffolding-agents.md +4 -5
  278. package/docs/storage.md +37 -80
  279. package/docs/templates/agentic-owners.md +2 -2
  280. package/docs/templates/pr-autofixer.md +3 -6
  281. package/docs/troubleshooting.md +6 -6
  282. package/package.json +9 -2
  283. package/skills/ab/SKILL.md +3 -0
  284. package/skills/create-agent/SKILL.md +3 -0
  285. package/skills/debug/SKILL.md +3 -0
  286. package/skills/evals/SKILL.md +3 -0
  287. package/skills/framework-map/SKILL.md +3 -0
  288. package/skills/github/SKILL.md +3 -0
  289. package/skills/hillclimb/SKILL.md +3 -0
  290. package/skills/mcp-auth/SKILL.md +3 -0
  291. package/skills/otel/SKILL.md +3 -0
  292. package/skills/setup-slack/SKILL.md +3 -0
  293. package/src/channels/deployments/deployments-channel.ts +32 -2
  294. package/src/channels/deployments/types.ts +8 -0
  295. package/src/channels/github/github-channel.ts +71 -21
  296. package/src/continuation.ts +1 -1
  297. package/src/internal/authored-alias-hooks.ts +14 -11
  298. package/src/internal/authored-loaders.ts +14 -10
  299. package/src/internal/cli-deploy.ts +5 -5
  300. package/src/internal/continuation-channel.ts +62 -45
  301. package/src/internal/continuation-identity.ts +123 -38
  302. package/src/internal/deploy-manifest.ts +5 -9
  303. package/src/internal/discovery.ts +3 -0
  304. package/src/internal/distribution.ts +4 -3
  305. package/src/internal/hosted-delivery-protocol.ts +114 -0
  306. package/src/internal/hosted-delivery.ts +327 -0
  307. package/src/internal/http-channel.ts +0 -2
  308. package/src/internal/init-scaffold.ts +1 -0
  309. package/src/internal/playground/static.ts +2 -0
  310. package/src/internal/review-comments.ts +542 -229
  311. package/src/internal/server.ts +29 -2
  312. package/src/internal/session-engine.ts +29 -7
  313. package/src/internal/shallow-clone.ts +30 -16
  314. package/src/types.ts +9 -17
  315. package/dist/docs/assets/building-with-agents.md.DH8A_cHA.js +0 -13
  316. package/dist/docs/assets/chunks/@localSearchIndexroot.Dv-Q0XtU.js +0 -1
  317. package/dist/docs/assets/concepts.md.CRfU3bVg.js +0 -4
  318. package/dist/docs/assets/example-agents_fsd.md.ZWHWWZPE.js +0 -15
  319. package/dist/docs/assets/example-agents_fsd.md.ZWHWWZPE.lean.js +0 -1
  320. package/dist/docs/assets/example-agents_index.md.QZ8mhr6n.js +0 -2
  321. package/dist/docs/assets/example-agents_index.md.QZ8mhr6n.lean.js +0 -1
  322. package/dist/docs/assets/reference_hooks.md.B9FSgdDe.js +0 -14
  323. package/dist/docs/assets/reference_http-api.md.CSHVobzG.js +0 -11
  324. package/dist/docs/assets/reference_http-api.md.CSHVobzG.lean.js +0 -1
  325. package/dist/docs/assets/reference_playground.md.Dfb92yQf.js +0 -1
  326. package/dist/docs/assets/reference_playground.md.Dfb92yQf.lean.js +0 -1
  327. package/dist/docs/assets/reference_sessions.md.tUFzz98S.js +0 -8
  328. package/dist/docs/assets/scaffolding-agents.md.CRDDUtYJ.js +0 -1
  329. package/dist/docs/assets/troubleshooting.md.DYECCZiJ.js +0 -1
  330. package/dist/docs/example-agents/fsd.html +0 -39
  331. package/docs/example-agents/fsd.md +0 -334
  332. /package/dist/docs/assets/{deployment.md.DX_hc3ze.lean.js → deployment.md.DoLFAzfm.lean.js} +0 -0
  333. /package/dist/docs/assets/{example-agents_approval-buddy.md.DNL83puR.lean.js → example-agents_approval-buddy.md.DmezILPg.lean.js} +0 -0
  334. /package/dist/docs/assets/{example-agents_concierge.md.MrKpQndp.lean.js → example-agents_concierge.md.BzB2b20R.lean.js} +0 -0
  335. /package/dist/docs/assets/{example-agents_knowledge-base.md.DqKqHQ9u.lean.js → example-agents_knowledge-base.md.CrA85ig-.lean.js} +0 -0
  336. /package/dist/docs/assets/{example-agents_security-reviewer.md.Bai6D0Ee.lean.js → example-agents_security-reviewer.md.74pPpWYj.lean.js} +0 -0
  337. /package/dist/docs/assets/{example-agents_weather-agent.md.lVEAbWFf.lean.js → example-agents_weather-agent.md.CaGpmw3Y.lean.js} +0 -0
  338. /package/dist/docs/assets/{guides_agent-to-agent.md.BCeVdJRJ.lean.js → guides_agent-to-agent.md.B3JIaAqz.lean.js} +0 -0
  339. /package/dist/docs/assets/{guides_convert-automation.md.D06eIzea.lean.js → guides_convert-automation.md.Bboisykk.lean.js} +0 -0
  340. /package/dist/docs/assets/{guides_mcp-oauth.md.Du0f7pGU.lean.js → guides_mcp-oauth.md.CJvrXtkN.lean.js} +0 -0
  341. /package/dist/docs/assets/{guides_slack.md.DiUmk_Oi.lean.js → guides_slack.md.mqeNKs84.lean.js} +0 -0
  342. /package/dist/docs/assets/{guides_webhooks.md.BpnIdO0i.lean.js → guides_webhooks.md.DKdA43Qm.lean.js} +0 -0
  343. /package/dist/docs/assets/{hillclimbing.md.ywF3yDAd.lean.js → hillclimbing.md.DhESf3OO.lean.js} +0 -0
  344. /package/dist/docs/assets/{quickstart.md.DsrarzEg.lean.js → quickstart.md.BrmfrrIr.lean.js} +0 -0
  345. /package/dist/docs/assets/{reference_agent-config.md.Bqylgw50.lean.js → reference_agent-config.md.Cp_x38Nl.lean.js} +0 -0
  346. /package/dist/docs/assets/{reference_connections.md.DYidrb-j.lean.js → reference_connections.md.DB6SsN6U.lean.js} +0 -0
  347. /package/dist/docs/assets/{reference_project-layout.md.CwkSbEWT.lean.js → reference_project-layout.md.WN9nwJht.lean.js} +0 -0
  348. /package/dist/docs/assets/{reference_prompt.md.DZUMtLPD.lean.js → reference_prompt.md.DnaD5dNK.lean.js} +0 -0
  349. /package/dist/docs/assets/{reference_schedules.md.DNipebiG.lean.js → reference_schedules.md.DI_JrHgq.lean.js} +0 -0
  350. /package/dist/docs/assets/{reference_skills.md.B5ZEuHfG.lean.js → reference_skills.md.BFW9retM.lean.js} +0 -0
  351. /package/dist/docs/assets/{templates_agentic-owners.md.DSJSIpWU.lean.js → templates_agentic-owners.md.DqtPdm6f.lean.js} +0 -0
@@ -0,0 +1,462 @@
1
+ # Deploy the Agent SDK
2
+
3
+ Both options run the same agent project and HTTP API. Channel delivery
4
+ paths differ. Cursor-managed hosting is preferred for most agents.
5
+
6
+ | Option | Use it when | You manage |
7
+ | --- | --- | --- |
8
+ | Cursor-managed hosting (preferred) | You want the shortest path from a Git repo to a running agent | Agent code, external storage, declared egress, and deployment secrets |
9
+ | Self-hosting | You need your own network, proxy, persistent filesystem, or process controls | Agent code, Node process, TLS, auth, secrets, durable state, monitoring, and upgrades |
10
+
11
+ ## Cursor-managed hosting
12
+
13
+ Cursor builds the selected Git ref into a deployment. The deployment
14
+ exposes a stable URL while Cursor manages its runtime lifecycle.
15
+
16
+ ### Before you deploy
17
+
18
+ - Confirm managed hosting is enabled for the account and team.
19
+ - Sign in with an account holding team-admin deployment permission.
20
+ - Add `@cursor/july` to the agent project.
21
+
22
+ For a GitHub source, install the Cursor GitHub App on the repository
23
+ owner and grant it access to the repository. Cursor builds through its
24
+ repository integration, not your local Git credentials. Commit and push
25
+ the Git ref before deploying it.
26
+
27
+ ### Declare hosting needs
28
+
29
+ If the agent needs extra egress or deployment secrets, add a `hosting`
30
+ block to `agent/agent.ts`:
31
+
32
+ ```ts
33
+ import { defineAgent } from "@cursor/july";
34
+
35
+ export default defineAgent({
36
+ hosting: {
37
+ egressDomains: ["api.weather.example.com"],
38
+ secretNames: ["WEATHER_API_KEY"],
39
+ },
40
+ });
41
+ ```
42
+
43
+ `egressDomains` lists outbound hosts beyond the platform's base policy.
44
+ Enter hostnames without schemes, ports, or paths. One leading `*.`
45
+ wildcard is allowed. Declared domains allow HTTPS and TLS traffic, not
46
+ arbitrary TCP ports.
47
+
48
+ `secretNames` lists the environment variables the agent expects. Names
49
+ use `UPPER_SNAKE_CASE`. Commit names only; set their values after
50
+ creating the deployment. Names beginning with `CURSOR_` are reserved.
51
+
52
+ For `defineConnection({ url, oauth: true })`, declare
53
+ `MCP_OAUTH_<CONNECTION>_*` in `secretNames`, authorize with
54
+ `agent-sdk mcp oauth <connection> --store`, then redeploy. See
55
+ [Host MCP OAuth](/docs/guides/mcp-oauth.md).
56
+
57
+ Run `agent-sdk validate` before deploying. It reports invalid domains and
58
+ secret names as warnings, so fix them even when validation exits zero.
59
+
60
+ ### Deploy from Git
61
+
62
+ Sign in, validate the project, and deploy it:
63
+
64
+ ```bash
65
+ cd my-agent
66
+ agent-sdk login
67
+ agent-sdk whoami
68
+ agent-sdk validate
69
+ agent-sdk deploy
70
+ ```
71
+
72
+ Inside a Git checkout, `deploy` infers the HTTPS `origin` URL, current
73
+ branch or detached commit, agent path, and deployment slug. Explicit
74
+ flags override each value:
75
+
76
+ ```bash
77
+ agent-sdk deploy \
78
+ --repo https://github.com/acme/agents \
79
+ --ref main \
80
+ --path agents/weather \
81
+ --slug weather-agent
82
+ ```
83
+
84
+ > [!IMPORTANT]
85
+ > `--slug` doesn't retain source or Cursor-event settings. Run every
86
+ > repo-backed deploy from the pushed checkout, or pass `--repo`, `--ref`,
87
+ > `--path`, and any `--cursor-events-repo` flags again.
88
+
89
+ Deploy reads the agent from Git; it doesn't upload local files. Keep the
90
+ local `hosting` block in sync with the selected ref. A nested `--path`
91
+ must contain `package.json` and be installable from its own directory.
92
+
93
+ For a directory containing several agent projects, choose one from the
94
+ TTY prompt, pass `--slug <name>`, or deploy each child with `--all`.
95
+ Pass `--team <id>` when the signed-in account has no default team or you
96
+ want another team.
97
+
98
+ `--all` creates a separate deployment for each child. Self-host when the
99
+ agents must share one multi-agent process.
100
+
101
+ The command waits up to ten minutes for a running engine. Use
102
+ `--no-wait` to return after Cursor accepts the deployment, then inspect
103
+ it separately:
104
+
105
+ ```bash
106
+ agent-sdk deployments
107
+ agent-sdk deployment weather-agent
108
+ agent-sdk logs --prod --slug weather-agent
109
+ ```
110
+
111
+ ### Set deployment secrets
112
+
113
+ A deployment must exist before you can set its secrets. Pass names only.
114
+ Enter values at the hidden prompt, or pipe one line per name:
115
+
116
+ ```bash
117
+ agent-sdk secrets set weather-agent WEATHER_API_KEY
118
+ agent-sdk secrets list weather-agent
119
+ agent-sdk deploy --dir . --slug weather-agent
120
+ ```
121
+
122
+ `secrets list` returns names and creation times, never values. The
123
+ engine reads secret changes on its next deploy.
124
+
125
+ Do not pass `NAME=VALUE` on the command line. That form lands in shell
126
+ history and in agent-captured terminals. The CLI refuses it unless you
127
+ add `--from-argv`. For non-interactive input without argv, redirect a
128
+ file or pipe stdin.
129
+
130
+ ### Credential output in terminals
131
+
132
+ Treat any command that prints a secret as a credential event. Keep it
133
+ out of agent-captured terminals when you can.
134
+
135
+ | Command | What prints |
136
+ | --- | --- |
137
+ | `secrets set` / `secrets list` | Names only. Values never print. |
138
+ | `rotate-pod-credential` | Masked key only. |
139
+ | First `deploy` / `rotate-token` | Full alias token once. Save it outside the agent transcript; it cannot be retrieved later. |
140
+ | `deployment --json` | May include short-lived `engineAccess.headers`. Treat JSON as a credential. |
141
+
142
+ Do not verify secrets with `echo "$SECRET"`, `printenv`, or by pasting
143
+ values into chat. Use `secrets list` for names, then redeploy and exercise
144
+ the feature that needs the secret.
145
+
146
+ ### Choose durable storage
147
+
148
+ Hosted filesystem state can reset during a deploy or runtime
149
+ replacement. Prefer
150
+ [`cursorHostedStorage`](/docs/storage.md) so records survive replace.
151
+ Do not put platform storage or deployment-identity names in
152
+ `hosting.secretNames`. Self-host with your own `defineStorage` backend or
153
+ a persistent `--state-root` when the complete filesystem must survive.
154
+
155
+ ### Use the hosted agent
156
+
157
+ The CLI handles authentication for `--prod` commands. External HTTP
158
+ clients that hit the stable alias URL must send `X-Agent-Alias-Token` on
159
+ every request. Authored channel auth still runs after that gate.
160
+
161
+ Use `publicEndpoint()` on a custom channel that verifies its own provider
162
+ signature. Cursor then serves that channel path without the alias token.
163
+ The built-in session API still requires the token.
164
+
165
+ Use a relay or self-host when the channel cannot authenticate requests
166
+ itself.
167
+
168
+ Use `--prod` with the normal client commands:
169
+
170
+ ```bash
171
+ agent-sdk playground --prod --slug weather-agent
172
+ agent-sdk chat --prod --slug weather-agent
173
+ agent-sdk run --prod --slug weather-agent --message "Forecast for Paris"
174
+ agent-sdk sessions --prod --slug weather-agent
175
+ agent-sdk logs --prod --slug weather-agent
176
+ ```
177
+
178
+ Keep `playground --prod` running while the playground is open. Press
179
+ Ctrl-C to stop it.
180
+
181
+ The first deployment prints a reusable alias token once. Store it
182
+ immediately. Run `agent-sdk deployment weather-agent` to retrieve the
183
+ stable alias URL later. The token remains valid until rotation and can't
184
+ be retrieved.
185
+
186
+ External HTTP clients send the alias token on every request:
187
+
188
+ ```bash
189
+ curl "$AGENT_ALIAS_URL/v1/health" \
190
+ -H "X-Agent-Alias-Token: $AGENT_ALIAS_TOKEN"
191
+ ```
192
+
193
+ `--prod` commands don't use the alias token. If it is lost or exposed,
194
+ rotate it. The old token stops working immediately:
195
+
196
+ ```bash
197
+ agent-sdk rotate-token weather-agent
198
+ ```
199
+
200
+ ### Connect GitHub
201
+
202
+ Let the hosted engine pull Cursor SCM events. Repeat
203
+ `--cursor-events-repo` for each repository whose events should wake the
204
+ agent:
205
+
206
+ ```bash
207
+ agent-sdk deploy --dir . \
208
+ --slug pr-approver \
209
+ --cursor-events-repo acme/checkout \
210
+ --cursor-events-repo acme/payments
211
+ ```
212
+
213
+ The agent still needs a `githubChannel()` declaration for the events it
214
+ handles. This delivery path needs no public GitHub webhook URL. The
215
+ flag requires Cursor SCM-event access for the deployment credential.
216
+
217
+ For outbound GitHub calls, use `githubChannel({ cursorAccount: true })`
218
+ and grant the team's Cursor GitHub App access to each repository.
219
+ Alternatively, add dedicated GitHub credentials as deployment secrets.
220
+ See the [GitHub guide](/docs/guides/github.md).
221
+
222
+ ### Connect Slack
223
+
224
+ Hosted Slack supports the team's Cursor Slack app or a dedicated Socket
225
+ Mode app.
226
+
227
+ Use the Cursor Slack app when mentions and direct messages are enough:
228
+
229
+ ```ts
230
+ import { slackChannel } from "@cursor/july/channels/slack";
231
+
232
+ export default slackChannel({
233
+ cursorAccount: true,
234
+ agentName: "PrApprover",
235
+ });
236
+ ```
237
+
238
+ The team must have the Cursor Slack app installed and Slack event relay
239
+ access enabled. This mode needs no Slack token secrets. It doesn't
240
+ support channel-post watches, tool approvals, or interactivity.
241
+
242
+ Use a dedicated Socket Mode app for those features or a separate bot
243
+ identity:
244
+
245
+ ```ts
246
+ import { slackChannel } from "@cursor/july/channels/slack";
247
+
248
+ export default slackChannel({ envPrefix: "PR_APPROVER" });
249
+ ```
250
+
251
+ Provision the dedicated app from the dashboard. Open the deployment
252
+ under **Deployed Agents** at
253
+ [cursor.com/dashboard](https://cursor.com/dashboard), switch to
254
+ **Details**, and expand **Slack** under **Integrations**. **Add to
255
+ Slack** connects the workspace with a one-time authorization, and
256
+ **Create Slack app** creates and installs the app, then stores its
257
+ tokens as deployment secrets automatically. Redeploy when prompted so
258
+ the running agent picks them up. See
259
+ [Provision from the dashboard](/docs/guides/slack.md#provision-from-the-dashboard)
260
+ for the walkthrough, including workspace-admin approval.
261
+
262
+ If you created the Slack app by hand instead, set its tokens as
263
+ deployment secrets yourself. The prefix selects the secret names:
264
+
265
+ ```bash
266
+ agent-sdk secrets set pr-approver \
267
+ PR_APPROVER_SLACK_BOT_TOKEN \
268
+ PR_APPROVER_SLACK_APP_TOKEN
269
+ agent-sdk deploy --dir . --slug pr-approver
270
+ ```
271
+
272
+ Without `envPrefix`, a dedicated app reads `SLACK_BOT_TOKEN` and
273
+ `SLACK_APP_TOKEN`. Socket Mode needs no inbound URL. See the
274
+ [Slack guide](/docs/guides/slack.md).
275
+
276
+ ### Update, stop, or delete a deployment
277
+
278
+ Redeploy the same slug after pushing a new Git ref. The stable alias
279
+ continues to point at the latest deploy. Follow the same source rules
280
+ from [Deploy from Git](#deploy-from-git).
281
+
282
+ ```bash
283
+ agent-sdk deploy --dir /path/to/my-agent --slug weather-agent
284
+ agent-sdk stop weather-agent
285
+ agent-sdk delete weather-agent
286
+ ```
287
+
288
+ `stop` waits for the deployment to stop unless you pass `--no-wait`.
289
+ `delete` removes the deployment and waits until it is gone.
290
+ See the [CLI reference](/docs/reference/cli.md#deploy) for the full command
291
+ reference.
292
+
293
+ ## Self-host the Agent SDK
294
+
295
+ The Agent SDK runs as a Node HTTP server on Node 22.13 or newer. You can host
296
+ it on a VM or container platform.
297
+
298
+ ### The security model in one minute
299
+
300
+ `serve` binds to loopback and admits direct local callers by default.
301
+ Choose one of these options before exposing it:
302
+
303
+ 1. Pass `--bearer-token <secret>` for a shared host.
304
+ 2. Define channel-specific auth for routes with their own credentials or
305
+ signatures.
306
+ 3. Use `--allow-anonymous` only behind an authenticating proxy.
307
+
308
+ A static bearer token maps every holder to one principal. Use authored
309
+ auth when callers need separate identities. See
310
+ [Channels](/docs/reference/channels.md#auth-policies) for policy details.
311
+
312
+ ### Credentials
313
+
314
+ A self-hosted server can read these credentials.
315
+
316
+ | Credential | Used for | Provide it as |
317
+ | --- | --- | --- |
318
+ | Cursor API key | model turns, cloud runtime, Cursor account MCP connections | `agent-sdk login` (stores a revocable key), `CURSOR_API_KEY`, or `--api-key` / `serve({ apiKey })` |
319
+ | Slack tokens | Slack channels | `<PREFIX>_SLACK_BOT_TOKEN` + `<PREFIX>_SLACK_APP_TOKEN` per agent |
320
+ | GitHub webhook secret | delivery signature verification | `GITHUB_WEBHOOK_SECRET`, same value on server and signer |
321
+ | GitHub API | outbound API calls | a GitHub App (`GITHUB_APP_ID` + `GITHUB_APP_PRIVATE_KEY` + installation id) or `GITHUB_TOKEN` / `gh auth login` |
322
+ | MCP connection tokens | authored MCP connections | env vars your `mcp-connections/*.ts` read, or host OAuth secrets from `agent-sdk mcp oauth <name> --store` (`MCP_OAUTH_*`; see [Host MCP OAuth](/docs/guides/mcp-oauth.md)) |
323
+
324
+ Use a dedicated Cursor key per host. `agent-sdk whoami` shows the active
325
+ credential. `logout` removes the stored key from the host; revoke the key
326
+ in the Cursor dashboard to invalidate it. See
327
+ [CLI authentication](/docs/reference/cli.md#login-logout-whoami) for
328
+ credential resolution.
329
+
330
+ ### State
331
+
332
+ Place `--state-root` on a persistent volume outside the agent
333
+ repository, and back it up. Sessions survive restarts only when their
334
+ state does. See [Storage](/docs/storage.md) and
335
+ [Sessions](/docs/reference/sessions.md) for persistence and layout details.
336
+
337
+ ### A single box
338
+
339
+ A single-host deployment needs one supervised `serve` process on a
340
+ private network. Export the Cursor key and a generated bearer token in
341
+ the supervisor environment:
342
+
343
+ ```bash
344
+ export CURSOR_API_KEY="<cursor-api-key>"
345
+ export AGENT_SDK_BEARER_TOKEN="$(openssl rand -hex 32)"
346
+
347
+ # the server: all agents under one port
348
+ agent-sdk serve --dir /srv/agents --port 3000 --host 127.0.0.1 \
349
+ --state-root /var/lib/agent-sdk \
350
+ --bearer-token "$AGENT_SDK_BEARER_TOKEN"
351
+ ```
352
+
353
+ Slack Socket Mode needs no inbound network. For GitHub, prefer
354
+ `--cursor-events --repo owner/repo` on `serve` so the host pulls events
355
+ through Cursor without a public webhook URL.
356
+
357
+ Webhook forwarding is the fallback. It needs one additional process.
358
+ Before starting or restarting `serve`, export the same strong
359
+ `GITHUB_WEBHOOK_SECRET` in both supervisor environments. Then install
360
+ the extension, authenticate `gh`, and start the forwarder. Repository
361
+ forwarding requires repo-admin access; organization forwarding with
362
+ `--org` requires org-owner access.
363
+
364
+ ```bash
365
+ export GITHUB_WEBHOOK_SECRET="$(openssl rand -hex 32)"
366
+ agent-sdk github doctor --install
367
+ gh auth login
368
+
369
+ # GitHub agents only: ONE forwarder relaying live deliveries to loopback
370
+ GITHUB_TOKEN= GH_TOKEN= \
371
+ agent-sdk github forward --dir /srv/agents --repo owner/repo
372
+ ```
373
+
374
+ Run long-lived processes under a supervisor. systemd survives reboots;
375
+ tmux survives only SSH disconnects. On a TTY, press Enter to reload
376
+ agent code. Humans reach the playground through a private network or
377
+ tunnel. Keep `--bearer-token` on because tunneled requests arrive from
378
+ loopback and IP-based policies can't tell them apart.
379
+
380
+ Health checks: `GET /v1/health` at the host level, and each agent also
381
+ serves `/<slug>/v1/health`.
382
+
383
+ ### Containers
384
+
385
+ Build the image with Node 22.13 or newer, the agent source, and its
386
+ package dependencies. Run `agent-sdk serve` as a non-root user:
387
+
388
+ ```bash
389
+ agent-sdk serve --dir /srv/agents --mode multi \
390
+ --host 0.0.0.0 --port 3000 \
391
+ --state-root /var/lib/agent-sdk \
392
+ --bearer-token "$AGENT_SDK_BEARER_TOKEN"
393
+ ```
394
+
395
+ Mount the state root as a persistent volume and inject secrets at
396
+ startup. Install `git` and `gh` when channels need host-side GitHub work.
397
+ Don't put secrets in the image.
398
+
399
+ ### Serve many agents from one process
400
+
401
+ Point `serve` at a folder of agent projects and every child mounts under
402
+ its directory name on one port. One process, one state root, one
403
+ credential:
404
+
405
+ ```bash
406
+ agent-sdk serve --dir /srv/agents
407
+ # index at /, each agent at /<slug>/v1/*, /<slug>/playground
408
+ ```
409
+
410
+ Only mount what you mean to run. Every mounted agent's channels are live,
411
+ and webhook-driven agents spend model budget on every wake. `--mode
412
+ single` serves exactly one agent at the unslugged `/v1/*` when the agent
413
+ is the whole host. See the [HTTP API](/docs/reference/http-api.md) for route
414
+ layout and the [Slack guide](/docs/guides/slack.md) for multi-agent token
415
+ setup.
416
+
417
+ ### The production flags
418
+
419
+ Use these settings in production:
420
+
421
+ | Flag | In production |
422
+ | --- | --- |
423
+ | `--dev` | Leave off. Dev mode admits unsigned loopback GitHub deliveries, widens playground session listing on loopback, and never auto-fires schedules. |
424
+ | `--bearer-token` | Set on shared hosts unless an authenticating proxy is the trust boundary and you use `--allow-anonymous` instead. |
425
+ | `--allow-anonymous` | Use only behind an authenticating network boundary. It also widens playground session access so Slack and webhook sessions appear. |
426
+ | `--state-root` | Place on a persistent volume outside any repo. |
427
+ | `--public-url` | Set when cloud-runtime turns must call back into peers on this host. |
428
+ | `--no-playground` | Set when no human needs the UI. |
429
+ | `--no-docs` | Set to remove the documentation site at `/docs`. |
430
+ | `--no-schedules` | Set on secondary hosts so schedules run exactly once. |
431
+
432
+ Schedules fire on their cron cadence (UTC) in production mode. They have
433
+ no cross-host coordination, so enable them on exactly one serving process
434
+ per project.
435
+
436
+ ### Restarts and upgrades
437
+
438
+ Restarts preserve sessions, event streams, and SDK conversation state
439
+ under the state root. Parked approvals and in-memory reminders don't
440
+ survive a restart; re-run or recreate them afterward.
441
+
442
+ ### Observability
443
+
444
+ Use [`agent-sdk logs`](/docs/reference/cli.md#logs) for runtime output,
445
+ [OpenTelemetry](/docs/guides/opentelemetry.md) for OTLP traces and metrics,
446
+ [hooks](/docs/reference/hooks.md) for in-process subscribers, and
447
+ [session traces](/docs/reference/sessions.md#how-do-i-inspect-a-saved-event-stream)
448
+ for incident review.
449
+
450
+ ## What's next
451
+
452
+ Continue with these pages:
453
+
454
+ - [CLI reference](/docs/reference/cli.md#deploy): deploy, inspect, stop, and
455
+ rotate hosted agents
456
+ - [Storage](/docs/storage.md): preserve supported records across engine
457
+ replacements
458
+ - [Channels](/docs/reference/channels.md#auth-policies): the auth policies
459
+ in detail
460
+ - [GitHub guide](/docs/guides/github.md): delivery paths without a public URL
461
+ - [Troubleshooting](/docs/troubleshooting.md): the symptom table for when a
462
+ deploy misbehaves