@cursor/july 0.1.30 → 0.1.32

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 (403) hide show
  1. package/AGENTS.md +1 -1
  2. package/README.md +10 -5
  3. package/dist/bin/agent-serve.js +4 -4
  4. package/dist/channels/github/index.d.ts +1 -1
  5. package/dist/channels/github/index.js +1 -1
  6. package/dist/channels/slack/bot-mentions.d.ts +1 -1
  7. package/dist/channels/slack/bot-mentions.d.ts.map +1 -1
  8. package/dist/channels/slack/bot-mentions.js +1 -1
  9. package/dist/channels/slack/eval-directive.js +1 -1
  10. package/dist/channels/slack/external-policy.d.ts +1 -1
  11. package/dist/channels/slack/external-policy.js +1 -1
  12. package/dist/channels/slack/log.d.ts +1 -1
  13. package/dist/channels/slack/log.js +1 -1
  14. package/dist/channels/slack/post-update-delivery.d.ts +85 -0
  15. package/dist/channels/slack/post-update-delivery.d.ts.map +1 -0
  16. package/dist/channels/slack/setup.js +1 -1
  17. package/dist/channels/slack/socket-mode.js +1 -1
  18. package/dist/docs/404.html +3 -3
  19. package/dist/docs/ab.html +11 -11
  20. package/dist/docs/assets/{ab.md.BMCZ6Hd7.js → ab.md.DAQoJ-up.js} +6 -6
  21. package/dist/docs/assets/{ab.md.BMCZ6Hd7.lean.js → ab.md.DAQoJ-up.lean.js} +1 -1
  22. package/dist/docs/assets/{app.Cm4lsMc4.js → app.C2aVczmo.js} +1 -1
  23. package/dist/docs/assets/building-with-agents.md.CnHqvYDd.js +13 -0
  24. package/dist/docs/assets/{building-with-agents.md.CJCtZCyi.lean.js → building-with-agents.md.CnHqvYDd.lean.js} +1 -1
  25. package/dist/docs/assets/chunks/@localSearchIndexroot.xgMnlUSO.js +1 -0
  26. package/dist/docs/assets/chunks/{VPLocalSearchBox.CYUFXspH.js → VPLocalSearchBox.DLEzetbD.js} +1 -1
  27. package/dist/docs/assets/chunks/{theme.CTjkX9vc.js → theme.BkOH1oMp.js} +2 -2
  28. package/dist/docs/assets/concepts.md.DFaQEFkA.js +4 -0
  29. package/dist/docs/assets/concepts.md.DFaQEFkA.lean.js +1 -0
  30. package/dist/docs/assets/deployment.md.9MYBuKM1.js +55 -0
  31. package/dist/docs/assets/deployment.md.9MYBuKM1.lean.js +1 -0
  32. package/dist/docs/assets/{evals.md.DYOjkRCX.js → evals.md.BIUoVZ6X.js} +13 -13
  33. package/dist/docs/assets/evals.md.BIUoVZ6X.lean.js +1 -0
  34. package/dist/docs/assets/{example-agents_approval-buddy.md.DFGBYLcc.js → example-agents_approval-buddy.md.BhEfleVx.js} +4 -4
  35. package/dist/docs/assets/{example-agents_approval-buddy.md.DFGBYLcc.lean.js → example-agents_approval-buddy.md.BhEfleVx.lean.js} +1 -1
  36. package/dist/docs/assets/example-agents_benny.md.2Et1qa8f.js +7 -0
  37. package/dist/docs/assets/{example-agents_bugbot.md.DelIdhxB.js → example-agents_bugbot.md.ByUexi5i.js} +5 -5
  38. package/dist/docs/assets/{example-agents_codebase-wiki.md.DC6sgwn0.js → example-agents_codebase-wiki.md.B4y-7ZVW.js} +6 -6
  39. package/dist/docs/assets/{example-agents_codebase-wiki.md.DC6sgwn0.lean.js → example-agents_codebase-wiki.md.B4y-7ZVW.lean.js} +1 -1
  40. package/dist/docs/assets/{example-agents_codeowners-review.md.Ku_tG2RY.js → example-agents_codeowners-review.md.D6ay4nvf.js} +6 -6
  41. package/dist/docs/assets/{example-agents_codeowners-review.md.Ku_tG2RY.lean.js → example-agents_codeowners-review.md.D6ay4nvf.lean.js} +1 -1
  42. package/dist/docs/assets/{example-agents_concierge.md.4rQTSMXt.js → example-agents_concierge.md.lL8rhYlj.js} +7 -7
  43. package/dist/docs/assets/{example-agents_fsd.md.CzgUrDfi.js → example-agents_fsd.md.DfNKQTHz.js} +5 -5
  44. package/dist/docs/assets/example-agents_index.md.DgGBwckv.js +2 -0
  45. package/dist/docs/assets/example-agents_index.md.DgGBwckv.lean.js +1 -0
  46. package/dist/docs/assets/{example-agents_knowledge-base.md.BPJiVueF.js → example-agents_knowledge-base.md.CzyZ2DCr.js} +5 -5
  47. package/dist/docs/assets/{example-agents_knowledge-base.md.BPJiVueF.lean.js → example-agents_knowledge-base.md.CzyZ2DCr.lean.js} +1 -1
  48. package/dist/docs/assets/example-agents_oncall.md.wFFXXEyW.js +10 -0
  49. package/dist/docs/assets/{example-agents_security-reviewer.md.Dhj_m7_B.js → example-agents_security-reviewer.md.Dkf1gyo6.js} +8 -8
  50. package/dist/docs/assets/example-agents_slack-agent.md.DvgvT4nn.js +5 -0
  51. package/dist/docs/assets/example-agents_weather-agent.md.Dmrcphhl.js +24 -0
  52. package/dist/docs/assets/example-agents_weather-agent.md.Dmrcphhl.lean.js +1 -0
  53. package/dist/docs/assets/{guides_agent-to-agent.md.Bpzgq2Pq.js → guides_agent-to-agent.md.Bmbxy-FA.js} +4 -4
  54. package/dist/docs/assets/guides_cloud-runtime.md.BZ2GA7Es.js +9 -0
  55. package/dist/docs/assets/{guides_github.md.DOOCpqsW.js → guides_github.md.R2QlpR75.js} +5 -5
  56. package/dist/docs/assets/{guides_human-in-the-loop.md.DlUqsp1S.js → guides_human-in-the-loop.md.BWvT7UqY.js} +1 -1
  57. package/dist/docs/assets/{guides_mcp-oauth.md.Dd8EgSem.js → guides_mcp-oauth.md.C7G7IykG.js} +5 -5
  58. package/dist/docs/assets/guides_mcp-oauth.md.C7G7IykG.lean.js +1 -0
  59. package/dist/docs/assets/guides_slack.md.zriQpU_9.js +47 -0
  60. package/dist/docs/assets/guides_slack.md.zriQpU_9.lean.js +1 -0
  61. package/dist/docs/assets/{guides_webhooks.md.wSOYas3X.js → guides_webhooks.md.DiAwSR42.js} +1 -1
  62. package/dist/docs/assets/{hillclimbing.md.DHNast08.js → hillclimbing.md.D9Y1_bYh.js} +1 -1
  63. package/dist/docs/assets/index.md.CZqbBJPB.js +20 -0
  64. package/dist/docs/assets/index.md.CZqbBJPB.lean.js +1 -0
  65. package/dist/docs/assets/{quickstart.md.BU6Iwi_9.js → quickstart.md.TnEXYgYW.js} +12 -12
  66. package/dist/docs/assets/{reference_agent-config.md.DrW2JUM8.js → reference_agent-config.md.kuN6-OxK.js} +1 -1
  67. package/dist/docs/assets/reference_cli.md.sD-IUWjg.js +73 -0
  68. package/dist/docs/assets/{reference_cli.md.ccoKOoXt.lean.js → reference_cli.md.sD-IUWjg.lean.js} +1 -1
  69. package/dist/docs/assets/{reference_connections.md.B9Q3TOve.js → reference_connections.md.DGqAsFXb.js} +3 -3
  70. package/dist/docs/assets/reference_http-api.md.CfVM_ICa.js +11 -0
  71. package/dist/docs/assets/{reference_project-layout.md.Bd_CKtNS.js → reference_project-layout.md.D8E6ZmHJ.js} +4 -4
  72. package/dist/docs/assets/{reference_project-layout.md.Bd_CKtNS.lean.js → reference_project-layout.md.D8E6ZmHJ.lean.js} +1 -1
  73. package/dist/docs/assets/{reference_schedules.md.w_F2mXB6.js → reference_schedules.md.gmfYzf_I.js} +1 -1
  74. package/dist/docs/assets/{reference_sessions.md.DLd6mvbv.js → reference_sessions.md.C_ouF_uf.js} +3 -3
  75. package/dist/docs/assets/{reference_tools.md.BRSDnTbN.js → reference_tools.md.BswAQM41.js} +3 -3
  76. package/dist/docs/assets/{scaffolding-agents.md.C3pTrmoE.js → scaffolding-agents.md.Bsr9Pwzu.js} +1 -1
  77. package/dist/docs/assets/{scaffolding-agents.md.C3pTrmoE.lean.js → scaffolding-agents.md.Bsr9Pwzu.lean.js} +1 -1
  78. package/dist/docs/assets/{storage.md.DRTdnFvd.js → storage.md.xZoiGM58.js} +3 -3
  79. package/dist/docs/assets/storage.md.xZoiGM58.lean.js +1 -0
  80. package/dist/docs/assets/troubleshooting.md.B5RVX_tL.js +1 -0
  81. package/dist/docs/assets/{troubleshooting.md.CmQkmnzC.lean.js → troubleshooting.md.B5RVX_tL.lean.js} +1 -1
  82. package/dist/docs/building-with-agents.html +12 -12
  83. package/dist/docs/concepts.html +6 -6
  84. package/dist/docs/deployment.html +32 -32
  85. package/dist/docs/evals.html +19 -19
  86. package/dist/docs/example-agents/approval-buddy.html +9 -9
  87. package/dist/docs/example-agents/benny.html +11 -11
  88. package/dist/docs/example-agents/bugbot.html +10 -10
  89. package/dist/docs/example-agents/codebase-wiki.html +11 -11
  90. package/dist/docs/example-agents/codeowners-review.html +11 -11
  91. package/dist/docs/example-agents/concierge.html +12 -12
  92. package/dist/docs/example-agents/fsd.html +10 -10
  93. package/dist/docs/example-agents/index.html +7 -7
  94. package/dist/docs/example-agents/knowledge-base.html +10 -10
  95. package/dist/docs/example-agents/oncall.html +10 -10
  96. package/dist/docs/example-agents/security-reviewer.html +13 -13
  97. package/dist/docs/example-agents/slack-agent.html +10 -10
  98. package/dist/docs/example-agents/weather-agent.html +16 -16
  99. package/dist/docs/guides/agent-to-agent.html +9 -9
  100. package/dist/docs/guides/cloud-runtime.html +7 -7
  101. package/dist/docs/guides/github.html +10 -10
  102. package/dist/docs/guides/human-in-the-loop.html +7 -7
  103. package/dist/docs/guides/mcp-oauth.html +11 -11
  104. package/dist/docs/guides/slack.html +22 -17
  105. package/dist/docs/guides/webhooks.html +7 -7
  106. package/dist/docs/hashmap.json +1 -1
  107. package/dist/docs/hillclimbing.html +7 -7
  108. package/dist/docs/index.html +9 -9
  109. package/dist/docs/quickstart.html +17 -17
  110. package/dist/docs/reference/agent-config.html +7 -7
  111. package/dist/docs/reference/channels.html +5 -5
  112. package/dist/docs/reference/cli.html +56 -48
  113. package/dist/docs/reference/connections.html +9 -9
  114. package/dist/docs/reference/hooks.html +5 -5
  115. package/dist/docs/reference/http-api.html +7 -7
  116. package/dist/docs/reference/instructions.html +5 -5
  117. package/dist/docs/reference/playground.html +5 -5
  118. package/dist/docs/reference/project-layout.html +9 -9
  119. package/dist/docs/reference/prompt.html +5 -5
  120. package/dist/docs/reference/schedules.html +7 -7
  121. package/dist/docs/reference/sessions.html +8 -8
  122. package/dist/docs/reference/skills.html +5 -5
  123. package/dist/docs/reference/subagents.html +5 -5
  124. package/dist/docs/reference/tools.html +9 -9
  125. package/dist/docs/scaffolding-agents.html +6 -6
  126. package/dist/docs/storage.html +9 -9
  127. package/dist/docs/troubleshooting.html +6 -6
  128. package/dist/evals/reporters.d.ts +1 -1
  129. package/dist/evals/reporters.js +1 -1
  130. package/dist/evals.d.ts +2 -2
  131. package/dist/files-backends/agent-store-presigned-url.d.ts +3 -0
  132. package/dist/files-backends/agent-store-presigned-url.d.ts.map +1 -0
  133. package/dist/files-backends/agent-store-presigned-url.js +1023 -0
  134. package/dist/files-backends/cursor-hosted.d.ts +87 -0
  135. package/dist/files-backends/cursor-hosted.d.ts.map +1 -0
  136. package/dist/files-backends/cursor-hosted.js +563 -0
  137. package/dist/files-backends/local-fs.d.ts +33 -0
  138. package/dist/files-backends/local-fs.d.ts.map +1 -0
  139. package/dist/files-backends/local-fs.js +199 -0
  140. package/dist/files.d.ts +139 -0
  141. package/dist/files.d.ts.map +1 -0
  142. package/dist/files.js +89 -0
  143. package/dist/internal/ab-collector.js +2 -2
  144. package/dist/internal/ab-fold.js +1 -1
  145. package/dist/internal/cli-ax.d.ts +2 -2
  146. package/dist/internal/cli-ax.js +2 -2
  147. package/dist/internal/cli-deploy.d.ts +1 -1
  148. package/dist/internal/cli-deploy.d.ts.map +1 -1
  149. package/dist/internal/cli-deploy.js +7 -2
  150. package/dist/internal/cli-docs.d.ts +1 -1
  151. package/dist/internal/cli-docs.js +1 -1
  152. package/dist/internal/cli-github.js +13 -13
  153. package/dist/internal/cli-mcp-oauth.d.ts +1 -1
  154. package/dist/internal/cli-mcp-oauth.js +2 -2
  155. package/dist/internal/cli-mcp.d.ts +3 -3
  156. package/dist/internal/cli-mcp.js +4 -4
  157. package/dist/internal/cli-skills.js +1 -1
  158. package/dist/internal/cloud-turn-cost.d.ts +9 -1
  159. package/dist/internal/cloud-turn-cost.d.ts.map +1 -1
  160. package/dist/internal/cloud-turn-cost.js +14 -4
  161. package/dist/internal/cursor/account-mcp.js +5 -5
  162. package/dist/internal/cursor/backend-client.js +1 -1
  163. package/dist/internal/cursor/github-credentials.js +3 -3
  164. package/dist/internal/cursor-account-mcp-auth.d.ts +1 -1
  165. package/dist/internal/cursor-account-mcp-auth.js +1 -1
  166. package/dist/internal/cursor-event-relay.js +1 -1
  167. package/dist/internal/cursor-relay-core.d.ts +1 -1
  168. package/dist/internal/cursor-relay-core.d.ts.map +1 -1
  169. package/dist/internal/cursor-slack-relay.js +1 -1
  170. package/dist/internal/deploy-client.d.ts +6 -1
  171. package/dist/internal/deploy-client.d.ts.map +1 -1
  172. package/dist/internal/deploy-client.js +3 -2
  173. package/dist/internal/deploy-source.d.ts +2 -2
  174. package/dist/internal/deploy-source.js +2 -2
  175. package/dist/internal/discovery.js +2 -2
  176. package/dist/internal/distribution.d.ts +5 -5
  177. package/dist/internal/distribution.d.ts.map +1 -1
  178. package/dist/internal/distribution.js +6 -6
  179. package/dist/internal/docs-site.js +5 -5
  180. package/dist/internal/eval-run-store.js +8 -8
  181. package/dist/internal/evals-client.d.ts +1 -1
  182. package/dist/internal/evals-client.js +1 -1
  183. package/dist/internal/github-fanout.js +2 -2
  184. package/dist/internal/host-files.d.ts +29 -0
  185. package/dist/internal/host-files.d.ts.map +1 -0
  186. package/dist/internal/host-files.js +283 -0
  187. package/dist/internal/host-platforms.js +5 -5
  188. package/dist/internal/hosting.d.ts +1 -1
  189. package/dist/internal/hosting.js +1 -1
  190. package/dist/internal/http-channel.d.ts.map +1 -1
  191. package/dist/internal/http-channel.js +26 -0
  192. package/dist/internal/install-cursor-skills.d.ts +1 -1
  193. package/dist/internal/install-cursor-skills.d.ts.map +1 -1
  194. package/dist/internal/install-cursor-skills.js +33 -4
  195. package/dist/internal/json-dir-store.d.ts +32 -0
  196. package/dist/internal/json-dir-store.d.ts.map +1 -0
  197. package/dist/internal/local-control-plane.js +2 -2
  198. package/dist/internal/logs-client.d.ts +2 -2
  199. package/dist/internal/logs-client.js +2 -2
  200. package/dist/internal/mcp-endpoint.js +1 -1
  201. package/dist/internal/mcp-oauth.js +2 -2
  202. package/dist/internal/persistence-coordinator.d.ts +127 -0
  203. package/dist/internal/persistence-coordinator.d.ts.map +1 -0
  204. package/dist/internal/platform-schedule-sync.js +2 -2
  205. package/dist/internal/playground/toolchain.js +6 -6
  206. package/dist/internal/reminder-runner.js +13 -13
  207. package/dist/internal/resolved-connections.js +6 -6
  208. package/dist/internal/schedule-runner.js +1 -1
  209. package/dist/internal/sdk-runner.js +5 -5
  210. package/dist/internal/server.js +16 -16
  211. package/dist/internal/session-cost.d.ts +3 -2
  212. package/dist/internal/session-cost.d.ts.map +1 -1
  213. package/dist/internal/session-cost.js +7 -6
  214. package/dist/internal/session-engine.d.ts +31 -1
  215. package/dist/internal/session-engine.d.ts.map +1 -1
  216. package/dist/internal/session-engine.js +119 -31
  217. package/dist/internal/slack-provision-client.js +1 -1
  218. package/dist/internal/storage-coordinator.js +7 -7
  219. package/dist/internal/trajectory.js +2 -2
  220. package/dist/internal/turn-cost.d.ts +27 -0
  221. package/dist/internal/turn-cost.d.ts.map +1 -0
  222. package/dist/internal/turn-cost.js +83 -0
  223. package/dist/internal/update-check.d.ts +3 -3
  224. package/dist/internal/update-check.d.ts.map +1 -1
  225. package/dist/internal/update-check.js +5 -5
  226. package/dist/memory.d.ts +1 -1
  227. package/dist/memory.js +1 -1
  228. package/dist/multi-tenant.d.ts +80 -0
  229. package/dist/multi-tenant.d.ts.map +1 -0
  230. package/dist/multi-tenant.js +69 -0
  231. package/dist/persistence.d.ts +184 -0
  232. package/dist/persistence.d.ts.map +1 -0
  233. package/dist/playground/assets/index-50PKeJlG.css +1 -0
  234. package/dist/playground/assets/index-C0f2Wl1q.js +85 -0
  235. package/dist/playground/index.html +2 -2
  236. package/dist/storage.d.ts +1 -1
  237. package/dist/storage.js +1 -1
  238. package/dist/types.d.ts +120 -16
  239. package/dist/types.d.ts.map +1 -1
  240. package/docs/README.md +23 -23
  241. package/docs/ab.md +12 -12
  242. package/docs/building-with-agents.md +9 -9
  243. package/docs/concepts.md +11 -11
  244. package/docs/deployment.md +55 -43
  245. package/docs/evals.md +20 -20
  246. package/docs/example-agents/approval-buddy.md +9 -9
  247. package/docs/example-agents/benny.md +13 -13
  248. package/docs/example-agents/bugbot.md +6 -6
  249. package/docs/example-agents/codebase-wiki.md +8 -8
  250. package/docs/example-agents/codeowners-review.md +8 -8
  251. package/docs/example-agents/concierge.md +10 -10
  252. package/docs/example-agents/fsd.md +7 -7
  253. package/docs/example-agents/index.md +8 -8
  254. package/docs/example-agents/knowledge-base.md +9 -9
  255. package/docs/example-agents/oncall.md +7 -7
  256. package/docs/example-agents/security-reviewer.md +12 -12
  257. package/docs/example-agents/slack-agent.md +10 -10
  258. package/docs/example-agents/weather-agent.md +30 -26
  259. package/docs/guides/agent-to-agent.md +4 -4
  260. package/docs/guides/cloud-runtime.md +3 -3
  261. package/docs/guides/github.md +6 -6
  262. package/docs/guides/human-in-the-loop.md +1 -1
  263. package/docs/guides/mcp-oauth.md +9 -9
  264. package/docs/guides/slack.md +94 -21
  265. package/docs/guides/webhooks.md +1 -1
  266. package/docs/hillclimbing.md +3 -3
  267. package/docs/quickstart.md +18 -18
  268. package/docs/reference/agent-config.md +1 -1
  269. package/docs/reference/cli.md +110 -79
  270. package/docs/reference/connections.md +3 -3
  271. package/docs/reference/http-api.md +2 -2
  272. package/docs/reference/project-layout.md +7 -7
  273. package/docs/reference/schedules.md +1 -1
  274. package/docs/reference/sessions.md +7 -7
  275. package/docs/reference/tools.md +3 -3
  276. package/docs/scaffolding-agents.md +2 -2
  277. package/docs/storage.md +5 -5
  278. package/docs/troubleshooting.md +11 -10
  279. package/package.json +5 -2
  280. package/skills/ab/SKILL.md +5 -5
  281. package/skills/create-agent/SKILL.md +17 -17
  282. package/skills/debug/SKILL.md +10 -10
  283. package/skills/evals/SKILL.md +13 -13
  284. package/skills/framework-map/SKILL.md +3 -3
  285. package/skills/github/SKILL.md +11 -11
  286. package/skills/hillclimb/SKILL.md +9 -9
  287. package/skills/mcp-auth/SKILL.md +11 -11
  288. package/skills/setup-slack/SKILL.md +28 -28
  289. package/src/bin/agent-serve.ts +4 -4
  290. package/src/channels/github/index.ts +1 -1
  291. package/src/channels/slack/bot-mentions.ts +1 -1
  292. package/src/channels/slack/eval-directive.ts +1 -1
  293. package/src/channels/slack/external-policy.ts +1 -1
  294. package/src/channels/slack/log.ts +1 -1
  295. package/src/channels/slack/setup.ts +1 -1
  296. package/src/channels/slack/socket-mode.ts +1 -1
  297. package/src/evals/reporters.ts +1 -1
  298. package/src/evals.ts +2 -2
  299. package/src/files-backends/agent-store-presigned-url.ts +8 -0
  300. package/src/files-backends/cursor-hosted.ts +724 -0
  301. package/src/files-backends/local-fs.ts +178 -0
  302. package/src/files.ts +195 -0
  303. package/src/internal/ab-collector.ts +2 -2
  304. package/src/internal/ab-fold.ts +1 -1
  305. package/src/internal/cli-ax.ts +2 -2
  306. package/src/internal/cli-deploy.ts +7 -2
  307. package/src/internal/cli-docs.ts +1 -1
  308. package/src/internal/cli-github.ts +13 -13
  309. package/src/internal/cli-mcp-oauth.ts +2 -2
  310. package/src/internal/cli-mcp.ts +4 -4
  311. package/src/internal/cli-skills.ts +1 -1
  312. package/src/internal/cloud-turn-cost.ts +20 -4
  313. package/src/internal/cursor/account-mcp.ts +5 -5
  314. package/src/internal/cursor/backend-client.ts +1 -1
  315. package/src/internal/cursor/github-credentials.ts +3 -3
  316. package/src/internal/cursor-account-mcp-auth.ts +1 -1
  317. package/src/internal/cursor-event-relay.ts +1 -1
  318. package/src/internal/cursor-relay-core.ts +1 -1
  319. package/src/internal/cursor-slack-relay.ts +1 -1
  320. package/src/internal/deploy-client.ts +8 -2
  321. package/src/internal/deploy-source.ts +2 -2
  322. package/src/internal/discovery.ts +2 -2
  323. package/src/internal/distribution.ts +6 -6
  324. package/src/internal/docs-site.ts +5 -5
  325. package/src/internal/eval-run-store.ts +8 -8
  326. package/src/internal/evals-client.ts +1 -1
  327. package/src/internal/github-fanout.ts +2 -2
  328. package/src/internal/host-files.ts +372 -0
  329. package/src/internal/host-platforms.ts +5 -5
  330. package/src/internal/hosting.ts +1 -1
  331. package/src/internal/http-channel.ts +30 -0
  332. package/src/internal/install-cursor-skills.ts +31 -3
  333. package/src/internal/local-control-plane.ts +2 -2
  334. package/src/internal/logs-client.ts +2 -2
  335. package/src/internal/mcp-endpoint.ts +1 -1
  336. package/src/internal/mcp-oauth.ts +2 -2
  337. package/src/internal/platform-schedule-sync.ts +2 -2
  338. package/src/internal/playground/toolchain.ts +6 -6
  339. package/src/internal/reminder-runner.ts +13 -13
  340. package/src/internal/resolved-connections.ts +6 -6
  341. package/src/internal/schedule-runner.ts +1 -1
  342. package/src/internal/sdk-runner.ts +5 -5
  343. package/src/internal/server.ts +16 -16
  344. package/src/internal/session-cost.ts +7 -6
  345. package/src/internal/session-engine.ts +141 -28
  346. package/src/internal/slack-provision-client.ts +1 -1
  347. package/src/internal/storage-coordinator.ts +7 -7
  348. package/src/internal/trajectory.ts +2 -2
  349. package/src/internal/turn-cost.ts +110 -0
  350. package/src/internal/update-check.ts +6 -6
  351. package/src/memory.ts +1 -1
  352. package/src/storage.ts +1 -1
  353. package/src/types.ts +148 -16
  354. package/dist/docs/assets/building-with-agents.md.CJCtZCyi.js +0 -13
  355. package/dist/docs/assets/chunks/@localSearchIndexroot.CbQshWFK.js +0 -1
  356. package/dist/docs/assets/concepts.md.Cfb9b-k1.js +0 -4
  357. package/dist/docs/assets/concepts.md.Cfb9b-k1.lean.js +0 -1
  358. package/dist/docs/assets/deployment.md.TecHo0_2.js +0 -55
  359. package/dist/docs/assets/deployment.md.TecHo0_2.lean.js +0 -1
  360. package/dist/docs/assets/evals.md.DYOjkRCX.lean.js +0 -1
  361. package/dist/docs/assets/example-agents_benny.md.B0gjhI-p.js +0 -7
  362. package/dist/docs/assets/example-agents_index.md.D2PEVSXl.js +0 -2
  363. package/dist/docs/assets/example-agents_index.md.D2PEVSXl.lean.js +0 -1
  364. package/dist/docs/assets/example-agents_oncall.md.BG_sUMly.js +0 -10
  365. package/dist/docs/assets/example-agents_slack-agent.md.buLbgvBf.js +0 -5
  366. package/dist/docs/assets/example-agents_weather-agent.md.C9Qv-W0o.js +0 -24
  367. package/dist/docs/assets/example-agents_weather-agent.md.C9Qv-W0o.lean.js +0 -1
  368. package/dist/docs/assets/guides_cloud-runtime.md.gVzabdQL.js +0 -9
  369. package/dist/docs/assets/guides_mcp-oauth.md.Dd8EgSem.lean.js +0 -1
  370. package/dist/docs/assets/guides_slack.md.CjmJSvZS.js +0 -42
  371. package/dist/docs/assets/guides_slack.md.CjmJSvZS.lean.js +0 -1
  372. package/dist/docs/assets/index.md.CH_s5uZe.js +0 -20
  373. package/dist/docs/assets/index.md.CH_s5uZe.lean.js +0 -1
  374. package/dist/docs/assets/reference_cli.md.ccoKOoXt.js +0 -65
  375. package/dist/docs/assets/reference_http-api.md.BncLd3PZ.js +0 -11
  376. package/dist/docs/assets/storage.md.DRTdnFvd.lean.js +0 -1
  377. package/dist/docs/assets/troubleshooting.md.CmQkmnzC.js +0 -1
  378. package/dist/internal/model-pricing.d.ts +0 -49
  379. package/dist/internal/model-pricing.d.ts.map +0 -1
  380. package/dist/internal/model-pricing.js +0 -377
  381. package/dist/playground/assets/index-CquRB-l0.js +0 -85
  382. package/dist/playground/assets/index-Dj0bWpkn.css +0 -1
  383. package/src/internal/model-pricing.ts +0 -426
  384. /package/dist/docs/assets/{example-agents_benny.md.B0gjhI-p.lean.js → example-agents_benny.md.2Et1qa8f.lean.js} +0 -0
  385. /package/dist/docs/assets/{example-agents_bugbot.md.DelIdhxB.lean.js → example-agents_bugbot.md.ByUexi5i.lean.js} +0 -0
  386. /package/dist/docs/assets/{example-agents_concierge.md.4rQTSMXt.lean.js → example-agents_concierge.md.lL8rhYlj.lean.js} +0 -0
  387. /package/dist/docs/assets/{example-agents_fsd.md.CzgUrDfi.lean.js → example-agents_fsd.md.DfNKQTHz.lean.js} +0 -0
  388. /package/dist/docs/assets/{example-agents_oncall.md.BG_sUMly.lean.js → example-agents_oncall.md.wFFXXEyW.lean.js} +0 -0
  389. /package/dist/docs/assets/{example-agents_security-reviewer.md.Dhj_m7_B.lean.js → example-agents_security-reviewer.md.Dkf1gyo6.lean.js} +0 -0
  390. /package/dist/docs/assets/{example-agents_slack-agent.md.buLbgvBf.lean.js → example-agents_slack-agent.md.DvgvT4nn.lean.js} +0 -0
  391. /package/dist/docs/assets/{guides_agent-to-agent.md.Bpzgq2Pq.lean.js → guides_agent-to-agent.md.Bmbxy-FA.lean.js} +0 -0
  392. /package/dist/docs/assets/{guides_cloud-runtime.md.gVzabdQL.lean.js → guides_cloud-runtime.md.BZ2GA7Es.lean.js} +0 -0
  393. /package/dist/docs/assets/{guides_github.md.DOOCpqsW.lean.js → guides_github.md.R2QlpR75.lean.js} +0 -0
  394. /package/dist/docs/assets/{guides_human-in-the-loop.md.DlUqsp1S.lean.js → guides_human-in-the-loop.md.BWvT7UqY.lean.js} +0 -0
  395. /package/dist/docs/assets/{guides_webhooks.md.wSOYas3X.lean.js → guides_webhooks.md.DiAwSR42.lean.js} +0 -0
  396. /package/dist/docs/assets/{hillclimbing.md.DHNast08.lean.js → hillclimbing.md.D9Y1_bYh.lean.js} +0 -0
  397. /package/dist/docs/assets/{quickstart.md.BU6Iwi_9.lean.js → quickstart.md.TnEXYgYW.lean.js} +0 -0
  398. /package/dist/docs/assets/{reference_agent-config.md.DrW2JUM8.lean.js → reference_agent-config.md.kuN6-OxK.lean.js} +0 -0
  399. /package/dist/docs/assets/{reference_connections.md.B9Q3TOve.lean.js → reference_connections.md.DGqAsFXb.lean.js} +0 -0
  400. /package/dist/docs/assets/{reference_http-api.md.BncLd3PZ.lean.js → reference_http-api.md.CfVM_ICa.lean.js} +0 -0
  401. /package/dist/docs/assets/{reference_schedules.md.w_F2mXB6.lean.js → reference_schedules.md.gmfYzf_I.lean.js} +0 -0
  402. /package/dist/docs/assets/{reference_sessions.md.DLd6mvbv.lean.js → reference_sessions.md.C_ouF_uf.lean.js} +0 -0
  403. /package/dist/docs/assets/{reference_tools.md.BRSDnTbN.lean.js → reference_tools.md.BswAQM41.lean.js} +0 -0
@@ -44,17 +44,18 @@ import { applyCloudUsageToEvents, cloudSdkAgentIdFromEvents, isUnpricedCompleted
44
44
  import { isDevMode } from "./dev-mode.js";
45
45
  import { EventLogStore } from "./event-log.js";
46
46
  import { TurnEventMapper } from "./event-mapper.js";
47
+ import { createHostFilesApi } from "./host-files.js";
47
48
  import { createHostKvApi } from "./host-kv.js";
48
49
  import { createHostPlatforms, createHostSlackClient, } from "./host-platforms.js";
49
50
  import { formatContinuationToken, newContinuationKey, newSessionId, newToolCallId, } from "./ids.js";
50
51
  import { validateToolInput } from "./json-schema.js";
51
52
  import { McpHost } from "./mcp-host.js";
52
- import { estimateTurnCost } from "./model-pricing.js";
53
53
  import { buildSessionContextBlock, SCHEDULE_CHANNEL_PREFIX, } from "./prompt-context.js";
54
54
  import { assertCloudCanHonorAccountServersFilters } from "./resolved-connections.js";
55
55
  import { SessionStore } from "./session-store.js";
56
56
  import { StorageCoordinator } from "./storage-coordinator.js";
57
57
  import { normalizeToolResult, toolCallErrorMessage } from "./tool-result.js";
58
+ import { estimateTurnCostFromApi, roundCostUsd, } from "./turn-cost.js";
58
59
  import { TurnGovernor } from "./turn-governor.js";
59
60
  import { buildAgentsMdContent, isNestedInGitRepo, materializeWorkspace, writeWorkspaceFiles, } from "./workspace.js";
60
61
  export const HTTP_CHANNEL_ID = "http";
@@ -116,7 +117,7 @@ export class ApprovalInterruptedError extends Error {
116
117
  }
117
118
  export class SessionEngine {
118
119
  constructor(options) {
119
- var _a, _b, _c;
120
+ var _a, _b, _c, _d;
120
121
  /** In-flight lazy restores, deduped per channel + continuation key. */
121
122
  this.restoreInFlight = new Map();
122
123
  this.channelsById = new Map();
@@ -153,11 +154,12 @@ export class SessionEngine {
153
154
  this.runner = options.runner;
154
155
  this.logger = (_a = options.logger) !== null && _a !== void 0 ? _a : (() => { });
155
156
  this.getCloudUsage = (_b = options.getCloudUsage) !== null && _b !== void 0 ? _b : defaultGetCloudUsage;
157
+ this.estimateTurnCost = (_c = options.estimateTurnCost) !== null && _c !== void 0 ? _c : estimateTurnCostFromApi;
156
158
  this.turnGovernor = new TurnGovernor(options.project.agent.concurrency);
157
159
  this.sessions = new SessionStore(join(options.stateRoot, "sessions"));
158
160
  this.nudgeStore = new SlackNudgeStore(join(options.stateRoot, "slack-nudges"));
159
161
  this.askDedupe = new SlackAskDedupeStore(join(options.stateRoot, "slack-asks"));
160
- this.logs = new EventLogStore((sessionId) => this.sessions.eventFilePath(sessionId), (sessionId, error) => this.logger(`[agentkit] failed to persist events for ${sessionId}: ${describeError(error)}`));
162
+ this.logs = new EventLogStore((sessionId) => this.sessions.eventFilePath(sessionId), (sessionId, error) => this.logger(`[agent-sdk] failed to persist events for ${sessionId}: ${describeError(error)}`));
161
163
  this.storage =
162
164
  options.project.storage === undefined
163
165
  ? undefined
@@ -168,6 +170,10 @@ export class SessionEngine {
168
170
  logger: this.logger,
169
171
  });
170
172
  this.kvApi = createHostKvApi(Object.assign({ agentName: options.project.name, stateRoot: options.stateRoot }, (this.storage === undefined ? {} : { storage: this.storage })));
173
+ this.filesApi = createHostFilesApi({
174
+ agentName: options.project.name,
175
+ stateRoot: options.stateRoot,
176
+ });
171
177
  this.artifactsStore = new ArtifactsStore({
172
178
  stateRoot: options.stateRoot,
173
179
  storage: this.storage,
@@ -180,7 +186,7 @@ export class SessionEngine {
180
186
  // resolves them; the host-side MCP registry starts with the concrete
181
187
  // connections and gains the rest via setResolvedConnections.
182
188
  this.mcpHost = new McpHost(options.project.agent.connections.filter((connection) => !isSymbolicConnectionTransport(connection.transport)));
183
- const basePlatforms = (_c = options.platforms) !== null && _c !== void 0 ? _c : createHostPlatforms();
189
+ const basePlatforms = (_d = options.platforms) !== null && _d !== void 0 ? _d : createHostPlatforms();
184
190
  const slackBinding = resolveDedicatedSlackHostBinding(options.project.channels);
185
191
  this.platforms =
186
192
  slackBinding === undefined
@@ -222,9 +228,22 @@ export class SessionEngine {
222
228
  reminders: this.reminderApi,
223
229
  evals: this.evalsApi,
224
230
  kv: this.kvApi,
231
+ files: this.filesApi,
225
232
  slackNudges: this.slackNudgeHostApi(),
226
233
  };
227
234
  }
235
+ /**
236
+ * Host services with `files` bound to one session, so a relative path in a
237
+ * tool or hook resolves to that session's scope and can never be read as
238
+ * another session's. Unbound (no session) keeps `host.files` usable for
239
+ * `{ scope: "deployment" }` and fails loudly on session-scoped calls.
240
+ */
241
+ hostForSession(sessionId) {
242
+ const host = this.host;
243
+ return sessionId === undefined
244
+ ? host
245
+ : Object.assign(Object.assign({}, host), { files: this.filesApi.forSession(sessionId) });
246
+ }
228
247
  /** Unbound `ctx.artifacts` facade (channel handlers, scratch tool calls). */
229
248
  get artifacts() {
230
249
  return this.artifactsApi();
@@ -427,7 +446,7 @@ export class SessionEngine {
427
446
  }
428
447
  }
429
448
  catch (error) {
430
- this.logger(`[agentkit] ab "${experiment.name}" enrollment failed (sticky skip): ${describeError(error)}`);
449
+ this.logger(`[agent-sdk] ab "${experiment.name}" enrollment failed (sticky skip): ${describeError(error)}`);
431
450
  variant = null;
432
451
  }
433
452
  abs[experiment.name] = variant;
@@ -818,11 +837,11 @@ export class SessionEngine {
818
837
  // that cannot warm resolves cleanly, and logging success there would
819
838
  // tell an operator the workspace is hot when nothing touched it.
820
839
  this.logger(outcome.warmed
821
- ? `[agentkit] warmed ${workspaceDir} in ${Date.now() - startedAt}ms`
822
- : `[agentkit] did not warm ${workspaceDir}: ${outcome.reason}`);
840
+ ? `[agent-sdk] warmed ${workspaceDir} in ${Date.now() - startedAt}ms`
841
+ : `[agent-sdk] did not warm ${workspaceDir}: ${outcome.reason}`);
823
842
  }
824
843
  catch (error) {
825
- this.logger(`[agentkit] could not warm ${workspaceDir}: ${describeError(error)}`);
844
+ this.logger(`[agent-sdk] could not warm ${workspaceDir}: ${describeError(error)}`);
826
845
  }
827
846
  });
828
847
  }
@@ -835,7 +854,7 @@ export class SessionEngine {
835
854
  }
836
855
  executeTurn(record, turnId, message, isFirstTurn, signal) {
837
856
  return __awaiter(this, void 0, void 0, function* () {
838
- var _a, _b, _c, _d, _e, _f;
857
+ var _a, _b, _c, _d, _e, _f, _g;
839
858
  const sessionId = record.sessionId;
840
859
  const workspaceDir = this.scaffoldDir(record);
841
860
  const harnessCwd = this.harnessCwd(record);
@@ -849,7 +868,7 @@ export class SessionEngine {
849
868
  this.queueDispatch(sessionId, event);
850
869
  }
851
870
  catch (error) {
852
- this.logger(`[agentkit] failed to record event for ${sessionId}: ${describeError(error)}`);
871
+ this.logger(`[agent-sdk] failed to record event for ${sessionId}: ${describeError(error)}`);
853
872
  }
854
873
  };
855
874
  const mapper = new TurnEventMapper(emit);
@@ -933,11 +952,14 @@ export class SessionEngine {
933
952
  }
934
953
  const finalResult = (_a = outcome.result) !== null && _a !== void 0 ? _a : mapper.finalText;
935
954
  const finalUsage = (_b = outcome.usage) !== null && _b !== void 0 ? _b : mapper.usage;
936
- // Estimated dollar cost of this loop pass, persisted alongside usage so
937
- // traces / A/B metrics / the CLI can aggregate spend without re-pricing.
938
955
  const finalCost = finalUsage === undefined
939
956
  ? undefined
940
- : estimateTurnCost((_c = this.project.agent.model) !== null && _c !== void 0 ? _c : DEFAULT_MODEL, finalUsage);
957
+ : yield this.estimateTurnCost({
958
+ model: (_c = this.project.agent.model) !== null && _c !== void 0 ? _c : DEFAULT_MODEL,
959
+ usage: finalUsage,
960
+ agentId: record.sdkAgentId,
961
+ conversationId: (_d = record.sdkAgentId) !== null && _d !== void 0 ? _d : sessionId,
962
+ });
941
963
  if (finalCost !== undefined) {
942
964
  outcome = Object.assign(Object.assign({}, outcome), { cost: finalCost });
943
965
  }
@@ -956,21 +978,21 @@ export class SessionEngine {
956
978
  data: {
957
979
  message: interrupted
958
980
  ? "turn interrupted"
959
- : ((_d = outcome.errorMessage) !== null && _d !== void 0 ? _d : (outcome.status === "cancelled"
981
+ : ((_e = outcome.errorMessage) !== null && _e !== void 0 ? _e : (outcome.status === "cancelled"
960
982
  ? "turn cancelled"
961
983
  : "turn failed")),
962
984
  },
963
985
  });
964
986
  }
965
987
  const current = yield this.sessions.get(sessionId);
966
- const mode = (_e = current === null || current === void 0 ? void 0 : current.mode) !== null && _e !== void 0 ? _e : record.mode;
988
+ const mode = (_f = current === null || current === void 0 ? void 0 : current.mode) !== null && _f !== void 0 ? _f : record.mode;
967
989
  if (mode === "task") {
968
990
  yield this.appendEvent(sessionId, outcome.status === "finished"
969
991
  ? { type: "session.completed", turnId, data: {} }
970
992
  : {
971
993
  type: "session.failed",
972
994
  turnId,
973
- data: { message: (_f = outcome.errorMessage) !== null && _f !== void 0 ? _f : "task failed" },
995
+ data: { message: (_g = outcome.errorMessage) !== null && _g !== void 0 ? _g : "task failed" },
974
996
  });
975
997
  }
976
998
  else {
@@ -1123,7 +1145,7 @@ export class SessionEngine {
1123
1145
  session: this.sessionInfo(record),
1124
1146
  workspaceDir: this.harnessCwd(record),
1125
1147
  stateRoot: this.stateRoot,
1126
- host: this.host,
1148
+ host: this.hostForSession(record.sessionId),
1127
1149
  artifacts: this.artifactsApi({
1128
1150
  sessionId: record.sessionId,
1129
1151
  turnId,
@@ -1381,7 +1403,7 @@ export class SessionEngine {
1381
1403
  session,
1382
1404
  workspaceDir,
1383
1405
  stateRoot: this.stateRoot,
1384
- host: this.host,
1406
+ host: this.hostForSession(record === null || record === void 0 ? void 0 : record.sessionId),
1385
1407
  // Scratch calls have no real session; their facade stays unbound.
1386
1408
  artifacts: record === undefined
1387
1409
  ? this.artifactsApi()
@@ -1453,7 +1475,7 @@ export class SessionEngine {
1453
1475
  const next = chain
1454
1476
  .then(() => this.dispatchEvent(sessionId, event))
1455
1477
  .catch((error) => {
1456
- this.logger(`[agentkit] event dispatch failed for ${sessionId}: ${describeError(error)}`);
1478
+ this.logger(`[agent-sdk] event dispatch failed for ${sessionId}: ${describeError(error)}`);
1457
1479
  })
1458
1480
  .then(() => {
1459
1481
  var _a;
@@ -1494,7 +1516,7 @@ export class SessionEngine {
1494
1516
  yield handler(event, channelCtx, sessionCtx);
1495
1517
  }
1496
1518
  catch (error) {
1497
- this.logger(`[agentkit] channel "${record.channelId}" handler for ${event.type} threw: ${describeError(error)}`);
1519
+ this.logger(`[agent-sdk] channel "${record.channelId}" handler for ${event.type} threw: ${describeError(error)}`);
1498
1520
  }
1499
1521
  }
1500
1522
  // Handlers mutate channel state in place; persist after each batch.
@@ -1525,7 +1547,7 @@ export class SessionEngine {
1525
1547
  });
1526
1548
  }
1527
1549
  catch (error) {
1528
- this.logger(`[agentkit] hook "${hook.name}" handler for ${event.type} threw: ${describeError(error)}`);
1550
+ this.logger(`[agent-sdk] hook "${hook.name}" handler for ${event.type} threw: ${describeError(error)}`);
1529
1551
  }
1530
1552
  }
1531
1553
  }
@@ -1620,7 +1642,7 @@ export class SessionEngine {
1620
1642
  };
1621
1643
  }
1622
1644
  catch (error) {
1623
- this.logger(`[agentkit] cursor-hosted session list failed; falling back to local: ${describeError(error)}`);
1645
+ this.logger(`[agent-sdk] cursor-hosted session list failed; falling back to local: ${describeError(error)}`);
1624
1646
  }
1625
1647
  }
1626
1648
  const records = yield this.sessions.list();
@@ -1725,7 +1747,7 @@ export class SessionEngine {
1725
1747
  eventStream(sessionId_1) {
1726
1748
  return __awaiter(this, arguments, void 0, function* (sessionId, startIndex = 0) {
1727
1749
  // Playground Trace replays this stream; backfill before the snapshot
1728
- // so historical Sherlock-style cloud turns can show est. cost.
1750
+ // so historical Sherlock-style cloud turns can show billed cost.
1729
1751
  yield this.backfillCloudTurnCosts(sessionId);
1730
1752
  const log = yield this.logs.get(sessionId);
1731
1753
  return log.stream(startIndex);
@@ -1772,6 +1794,70 @@ export class SessionEngine {
1772
1794
  });
1773
1795
  });
1774
1796
  }
1797
+ /**
1798
+ * Billed/catalog cost for a session. Powers playground, traces, and
1799
+ * `agent-sdk cost` via `GET /v1/session/:id/cost`.
1800
+ */
1801
+ sessionCost(sessionId) {
1802
+ return __awaiter(this, void 0, void 0, function* () {
1803
+ var _a, _b, _c, _d, _e, _f, _g;
1804
+ const record = yield this.getOrRestoreSession(sessionId);
1805
+ if (record === undefined) {
1806
+ throw new Error(`Unknown session: ${sessionId}`);
1807
+ }
1808
+ yield this.backfillCloudTurnCosts(sessionId);
1809
+ const events = yield this.listEvents(sessionId);
1810
+ const sdkAgentId = (_a = (record.sdkAgentId !== undefined && record.sdkAgentId !== ""
1811
+ ? record.sdkAgentId
1812
+ : undefined)) !== null && _a !== void 0 ? _a : cloudSdkAgentIdFromEvents(events);
1813
+ const model = (_b = this.project.agent.model) !== null && _b !== void 0 ? _b : DEFAULT_MODEL;
1814
+ const priced = yield this.estimateTurnCost({
1815
+ model,
1816
+ agentId: sdkAgentId,
1817
+ conversationId: sdkAgentId !== null && sdkAgentId !== void 0 ? sdkAgentId : sessionId,
1818
+ });
1819
+ if (priced !== undefined &&
1820
+ (priced.source === "usage" || priced.totalUsd > 0)) {
1821
+ return {
1822
+ sessionId,
1823
+ source: priced.source,
1824
+ cost: {
1825
+ rawCostCents: (_d = (_c = priced.rawCostCents) !== null && _c !== void 0 ? _c : priced.chargedCents) !== null && _d !== void 0 ? _d : 0,
1826
+ chargedCents: (_e = priced.chargedCents) !== null && _e !== void 0 ? _e : priced.totalUsd * 100,
1827
+ },
1828
+ costUsd: priced.totalUsd,
1829
+ rawCostUsd: roundCostUsd(((_g = (_f = priced.rawCostCents) !== null && _f !== void 0 ? _f : priced.chargedCents) !== null && _g !== void 0 ? _g : priced.totalUsd * 100) / 100),
1830
+ model: priced.model,
1831
+ };
1832
+ }
1833
+ let costUsd = 0;
1834
+ let rawCostUsd = 0;
1835
+ let source = "unavailable";
1836
+ let modelId;
1837
+ for (const event of events) {
1838
+ if (event.type !== "turn.completed" || event.data.cost === undefined) {
1839
+ continue;
1840
+ }
1841
+ costUsd = roundCostUsd(costUsd + event.data.cost.totalUsd);
1842
+ const rawCents = event.data.cost.rawCostCents;
1843
+ rawCostUsd = roundCostUsd(rawCostUsd +
1844
+ (rawCents !== undefined ? rawCents / 100 : event.data.cost.totalUsd));
1845
+ source = event.data.cost.source;
1846
+ modelId = event.data.cost.model;
1847
+ }
1848
+ return {
1849
+ sessionId,
1850
+ source,
1851
+ cost: {
1852
+ rawCostCents: rawCostUsd * 100,
1853
+ chargedCents: costUsd * 100,
1854
+ },
1855
+ costUsd,
1856
+ rawCostUsd,
1857
+ model: modelId,
1858
+ };
1859
+ });
1860
+ }
1775
1861
  /** Snapshot of recorded events (for download / offline trace). */
1776
1862
  listEvents(sessionId_1) {
1777
1863
  return __awaiter(this, arguments, void 0, function* (sessionId, startIndex = 0, options) {
@@ -1785,7 +1871,7 @@ export class SessionEngine {
1785
1871
  /**
1786
1872
  * Historical cloud turns may lack usage/cost on `turn.completed` (pre-0.1.29
1787
1873
  * engines, or getUsage still zero at turn end). Fill them from billed usage
1788
- * before the playground replays the stream so Trace can show est. cost.
1874
+ * before the playground replays the stream so Trace can show cost.
1789
1875
  */
1790
1876
  backfillCloudTurnCosts(sessionId) {
1791
1877
  if (this.cloudCostBackfillDone.has(sessionId)) {
@@ -1797,7 +1883,7 @@ export class SessionEngine {
1797
1883
  }
1798
1884
  const work = this.runCloudTurnCostBackfill(sessionId)
1799
1885
  .catch((error) => {
1800
- this.logger(`[agentkit] cloud cost backfill failed for ${sessionId}: ${describeError(error)}`);
1886
+ this.logger(`[agent-sdk] cloud cost backfill failed for ${sessionId}: ${describeError(error)}`);
1801
1887
  })
1802
1888
  .finally(() => {
1803
1889
  this.cloudCostBackfill.delete(sessionId);
@@ -1952,7 +2038,7 @@ export class SessionEngine {
1952
2038
  yield this.runBulkRestore(storage, policy);
1953
2039
  }
1954
2040
  catch (error) {
1955
- this.logger(`[agentkit] session restore failed: ${describeError(error)}`);
2041
+ this.logger(`[agent-sdk] session restore failed: ${describeError(error)}`);
1956
2042
  }
1957
2043
  });
1958
2044
  }
@@ -1997,7 +2083,7 @@ export class SessionEngine {
1997
2083
  return { record, events };
1998
2084
  }
1999
2085
  catch (error) {
2000
- this.logger(`[agentkit] failed to restore session ${record.sessionId}: ${describeError(error)}`);
2086
+ this.logger(`[agent-sdk] failed to restore session ${record.sessionId}: ${describeError(error)}`);
2001
2087
  return undefined;
2002
2088
  }
2003
2089
  })));
@@ -2012,7 +2098,7 @@ export class SessionEngine {
2012
2098
  const bytes = Buffer.byteLength(JSON.stringify(item.record), "utf8") +
2013
2099
  (ndjson === undefined ? 0 : Buffer.byteLength(ndjson, "utf8"));
2014
2100
  if (bytes > budget) {
2015
- this.logger(`[agentkit] session restore stopped at the ${policy.maxTotalBytes}-byte budget after ${restored} session(s); remaining sessions restore lazily on resume`);
2101
+ this.logger(`[agent-sdk] session restore stopped at the ${policy.maxTotalBytes}-byte budget after ${restored} session(s); remaining sessions restore lazily on resume`);
2016
2102
  break outer;
2017
2103
  }
2018
2104
  try {
@@ -2021,12 +2107,12 @@ export class SessionEngine {
2021
2107
  restored += 1;
2022
2108
  }
2023
2109
  catch (error) {
2024
- this.logger(`[agentkit] failed to restore session ${item.record.sessionId}: ${describeError(error)}`);
2110
+ this.logger(`[agent-sdk] failed to restore session ${item.record.sessionId}: ${describeError(error)}`);
2025
2111
  }
2026
2112
  }
2027
2113
  }
2028
2114
  if (restored > 0) {
2029
- this.logger(`[agentkit] restored ${restored} session(s) from storage`);
2115
+ this.logger(`[agent-sdk] restored ${restored} session(s) from storage`);
2030
2116
  }
2031
2117
  });
2032
2118
  }
@@ -2116,7 +2202,7 @@ export class SessionEngine {
2116
2202
  }
2117
2203
  const events = yield storage.listSessionEvents(record.sessionId);
2118
2204
  yield this.materializeSession(record, eventsNdjson(events));
2119
- this.logger(`[agentkit] lazily restored session ${record.sessionId} from storage`);
2205
+ this.logger(`[agent-sdk] lazily restored session ${record.sessionId} from storage`);
2120
2206
  return record;
2121
2207
  });
2122
2208
  }
@@ -2194,9 +2280,11 @@ function defaultGetCloudUsage(sdkAgentId) {
2194
2280
  const billed = yield Agent.getUsage(sdkAgentId);
2195
2281
  return {
2196
2282
  usage: mapSdkTokenUsage(billed.usage),
2283
+ cost: billed.cost,
2197
2284
  runs: billed.runs.map((run) => ({
2198
2285
  runId: run.runId,
2199
2286
  usage: mapSdkTokenUsage(run.usage),
2287
+ cost: run.cost,
2200
2288
  })),
2201
2289
  };
2202
2290
  }
@@ -248,7 +248,7 @@ function mapErrorResponse(response, bodyText, context) {
248
248
  const serverError = body.error;
249
249
  switch (response.status) {
250
250
  case 401:
251
- return new SlackProvisionApiError("The Cursor API key was rejected. Run `agentkit login` again or update CURSOR_API_KEY.", { status: 401 });
251
+ return new SlackProvisionApiError("The Cursor API key was rejected. Run `agent-sdk login` again or update CURSOR_API_KEY.", { status: 401 });
252
252
  case 403:
253
253
  return new SlackProvisionApiError(`${serverError !== null && serverError !== void 0 ? serverError : "Not authorized"} — Slack provisioning needs team-admin permission and the cloud-agent entitlement on that team.`, { status: 403 });
254
254
  case 404: {
@@ -307,7 +307,7 @@ export class StorageCoordinator {
307
307
  // Index entry without its record (e.g. the record write was shed
308
308
  // under at-most-once). The session is unrecoverable; treat as a miss
309
309
  // so the conversation can continue rather than failing forever.
310
- this.logger(`[agentkit] storage continuation entry points at missing session ${sessionId}; treating as a miss`);
310
+ this.logger(`[agent-sdk] storage continuation entry points at missing session ${sessionId}; treating as a miss`);
311
311
  return undefined;
312
312
  }
313
313
  // The sink must answer for the exact key it was asked about — a
@@ -454,7 +454,7 @@ export class StorageCoordinator {
454
454
  return Array.isArray(runs) ? runs : [];
455
455
  }
456
456
  catch (error) {
457
- this.logger(`[agentkit] storage evals.list() failed: ${describeError(error)}`);
457
+ this.logger(`[agent-sdk] storage evals.list() failed: ${describeError(error)}`);
458
458
  return [];
459
459
  }
460
460
  }),
@@ -506,7 +506,7 @@ export class StorageCoordinator {
506
506
  return value !== null && value !== void 0 ? value : undefined;
507
507
  }
508
508
  catch (error) {
509
- this.logger(`[agentkit] storage abs.getSnapshot() failed: ${describeError(error)}`);
509
+ this.logger(`[agent-sdk] storage abs.getSnapshot() failed: ${describeError(error)}`);
510
510
  return undefined;
511
511
  }
512
512
  });
@@ -538,7 +538,7 @@ export class StorageCoordinator {
538
538
  ]);
539
539
  clearTimeout(timer);
540
540
  if (!drained) {
541
- this.logger(`[agentkit] storage shutdown drain timed out after ${CLOSE_DRAIN_TIMEOUT_MS}ms with ${this.pending} write(s) undelivered`);
541
+ this.logger(`[agent-sdk] storage shutdown drain timed out after ${CLOSE_DRAIN_TIMEOUT_MS}ms with ${this.pending} write(s) undelivered`);
542
542
  }
543
543
  });
544
544
  }
@@ -578,7 +578,7 @@ export class StorageCoordinator {
578
578
  return Array.isArray(entries) ? entries : [];
579
579
  }
580
580
  catch (error) {
581
- this.logger(`[agentkit] storage list(${prefix}) failed: ${describeError(error)}`);
581
+ this.logger(`[agent-sdk] storage list(${prefix}) failed: ${describeError(error)}`);
582
582
  return [];
583
583
  }
584
584
  });
@@ -590,7 +590,7 @@ export class StorageCoordinator {
590
590
  if (this.pending + ops.length > MAX_PENDING_OPS) {
591
591
  this.dropped += ops.length;
592
592
  if (this.dropped <= ops.length || this.dropped % 1000 < ops.length) {
593
- this.logger(`[agentkit] storage queue full (${MAX_PENDING_OPS} pending writes); dropped ${this.dropped} write(s) so far — the sink is too slow for the traffic`);
593
+ this.logger(`[agent-sdk] storage queue full (${MAX_PENDING_OPS} pending writes); dropped ${this.dropped} write(s) so far — the sink is too slow for the traffic`);
594
594
  }
595
595
  return;
596
596
  }
@@ -602,7 +602,7 @@ export class StorageCoordinator {
602
602
  yield op.run(ctx);
603
603
  }
604
604
  catch (error) {
605
- this.logger(`[agentkit] storage ${op.label} failed: ${describeError(error)}`);
605
+ this.logger(`[agent-sdk] storage ${op.label} failed: ${describeError(error)}`);
606
606
  }
607
607
  finally {
608
608
  this.pending -= 1;
@@ -286,7 +286,7 @@ export function formatTrajectoryText(trajectory) {
286
286
  }
287
287
  lines.push(`turns: ${trajectory.turns.length} tools=${trajectory.toolCallCount} failed: ${trajectory.turnsFailed}${trajectory.totalCostUsd === undefined
288
288
  ? ""
289
- : ` est. cost: ${formatCostUsd(trajectory.totalCostUsd)}`}`);
289
+ : ` cost: ${formatCostUsd(trajectory.totalCostUsd)}`}`);
290
290
  for (const turn of trajectory.turns) {
291
291
  lines.push("");
292
292
  lines.push(`── ${turn.turnId}${turn.failed ? " FAILED" : ""} ──`);
@@ -323,7 +323,7 @@ export function formatTrajectoryText(trajectory) {
323
323
  if (turn.usage !== undefined) {
324
324
  lines.push(` usage: in ${turn.usage.inputTokens} out ${turn.usage.outputTokens}${turn.cost === undefined
325
325
  ? ""
326
- : ` est. cost: ${formatCostUsd(turn.cost.totalUsd)}`}`);
326
+ : ` cost: ${formatCostUsd(turn.cost.totalUsd)}`}`);
327
327
  }
328
328
  }
329
329
  return `${lines.join("\n")}\n`;
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Dollar cost for an agent turn, computed by the Cloud Agents
3
+ * `POST /v1/models/estimate-cost` endpoint (billed usage events when an
4
+ * agent/conversation id is known, otherwise live catalog pricing).
5
+ */
6
+ import type { ModelSetting, TurnCost, TurnUsage } from "../types.js";
7
+ export interface UsageCostCents {
8
+ rawCostCents: number;
9
+ chargedCents: number;
10
+ }
11
+ export interface EstimateTurnCostInput {
12
+ model: ModelSetting;
13
+ usage?: TurnUsage;
14
+ agentId?: string;
15
+ conversationId?: string;
16
+ runId?: string;
17
+ }
18
+ export type EstimateTurnCostFn = (input: EstimateTurnCostInput) => Promise<TurnCost | undefined>;
19
+ export declare function modelSettingId(model: ModelSetting): string;
20
+ export declare function roundCostUsd(usd: number): number;
21
+ export declare function turnCostFromCents(args: {
22
+ model: string | ModelSetting;
23
+ cost: UsageCostCents;
24
+ source: TurnCost["source"];
25
+ }): TurnCost;
26
+ export declare function estimateTurnCostFromApi(input: EstimateTurnCostInput): Promise<TurnCost | undefined>;
27
+ //# sourceMappingURL=turn-cost.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-cost.d.ts","sourceRoot":"","sources":["../../src/internal/turn-cost.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGrE,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,kBAAkB,GAAG,CAC/B,KAAK,EAAE,qBAAqB,KACzB,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;AAEnC,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAE1D;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC;IAC7B,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;CAC5B,GAAG,QAAQ,CAeX;AAQD,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CA8C/B"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Dollar cost for an agent turn, computed by the Cloud Agents
3
+ * `POST /v1/models/estimate-cost` endpoint (billed usage events when an
4
+ * agent/conversation id is known, otherwise live catalog pricing).
5
+ */
6
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
7
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
8
+ return new (P || (P = Promise))(function (resolve, reject) {
9
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
10
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
11
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
12
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
13
+ });
14
+ };
15
+ import { cursorExternalApiUrl, resolveApiKey } from "./cursor/credentials.js";
16
+ export function modelSettingId(model) {
17
+ return typeof model === "string" ? model : model.id;
18
+ }
19
+ export function roundCostUsd(usd) {
20
+ return Math.round(usd * 1e6) / 1e6;
21
+ }
22
+ export function turnCostFromCents(args) {
23
+ const totalUsd = roundCostUsd(args.cost.chargedCents / 100);
24
+ const model = typeof args.model === "string" ? args.model : modelSettingId(args.model);
25
+ return {
26
+ totalUsd,
27
+ inputUsd: 0,
28
+ outputUsd: 0,
29
+ cacheReadUsd: 0,
30
+ cacheWriteUsd: 0,
31
+ model,
32
+ source: args.source,
33
+ rawCostCents: args.cost.rawCostCents,
34
+ chargedCents: args.cost.chargedCents,
35
+ };
36
+ }
37
+ export function estimateTurnCostFromApi(input) {
38
+ return __awaiter(this, void 0, void 0, function* () {
39
+ var _a, _b, _c, _d, _e;
40
+ var _f;
41
+ const resolved = yield resolveApiKey();
42
+ if (resolved === undefined) {
43
+ return undefined;
44
+ }
45
+ const model = modelSettingId(input.model);
46
+ const response = yield fetch(`${cursorExternalApiUrl()}/v1/models/estimate-cost`, {
47
+ method: "POST",
48
+ headers: {
49
+ authorization: `Bearer ${resolved.apiKey}`,
50
+ "content-type": "application/json",
51
+ },
52
+ body: JSON.stringify({
53
+ model,
54
+ inputTokens: (_a = input.usage) === null || _a === void 0 ? void 0 : _a.inputTokens,
55
+ outputTokens: (_b = input.usage) === null || _b === void 0 ? void 0 : _b.outputTokens,
56
+ cacheReadTokens: (_c = input.usage) === null || _c === void 0 ? void 0 : _c.cacheReadTokens,
57
+ cacheWriteTokens: (_d = input.usage) === null || _d === void 0 ? void 0 : _d.cacheWriteTokens,
58
+ agentId: input.agentId,
59
+ conversationId: input.conversationId,
60
+ runId: input.runId,
61
+ }),
62
+ });
63
+ if (!response.ok) {
64
+ return undefined;
65
+ }
66
+ let body;
67
+ try {
68
+ body = (yield response.json());
69
+ }
70
+ catch (_g) {
71
+ return undefined;
72
+ }
73
+ if (typeof ((_e = body.cost) === null || _e === void 0 ? void 0 : _e.rawCostCents) !== "number" ||
74
+ typeof body.cost.chargedCents !== "number") {
75
+ return undefined;
76
+ }
77
+ return turnCostFromCents({
78
+ model: (_f = body.model) !== null && _f !== void 0 ? _f : model,
79
+ cost: body.cost,
80
+ source: body.source === "usage" ? "usage" : "catalog",
81
+ });
82
+ });
83
+ }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Outdated-version warning + `agentkit update`.
2
+ * Outdated-version warning + `agent-sdk update`.
3
3
  *
4
4
  * Every CLI run of a published install compares its own version against the
5
5
  * npm registry's `latest` dist-tag and warns on stderr when behind. The
@@ -8,7 +8,7 @@
8
8
  * network; a stale cache refreshes inline under a short timeout, and any
9
9
  * network failure is silent (the warning is best-effort, never a blocker).
10
10
  *
11
- * `agentkit update` re-runs the lookup fresh, figures out how this copy was
11
+ * `agent-sdk update` re-runs the lookup fresh, figures out how this copy was
12
12
  * installed (global npm/pnpm/yarn/bun, or a project dependency), and runs the
13
13
  * matching install command.
14
14
  */
@@ -87,7 +87,7 @@ export interface UpdateCliOptions {
87
87
  out?: (text: string) => void;
88
88
  err?: (text: string) => void;
89
89
  }
90
- /** `agentkit update` — upgrade this install to the latest published version. */
90
+ /** `agent-sdk update` — upgrade this install to the latest published version. */
91
91
  export declare function cmdUpdate(options?: UpdateCliOptions): Promise<number>;
92
92
  export {};
93
93
  //# sourceMappingURL=update-check.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"update-check.d.ts","sourceRoot":"","sources":["../../src/internal/update-check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update-check.d.ts","sourceRoot":"","sources":["../../src/internal/update-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA6CxB;;;GAGG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CA0C5D;AAQD;;;GAGG;AACH,wBAAsB,2BAA2B,CAAC,OAAO,CAAC,EAAE;IAC1D,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAqB9B;AAMD,QAAA,MAAM,WAAW,EAAE,CAAC,CAAC,SAAS,CAC5B;IAAE,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC;IAAC,aAAa,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;CAAE,EACrE,OAAO,CAMP,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAE3D,wBAAgB,oBAAoB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAsB,oBAAoB,CACxC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAavC;AAED,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,gBAAgB,EACvB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAQf;AAMD,MAAM,WAAW,qBAAqB;IACpC,qDAAqD;IACrD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,yCAAyC;IACzC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,wCAAwC;IACxC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,qEAAqE;IACrE,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA6Cf;AAUD,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,oDAAoD;IACpD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAoErC;AA+ED,MAAM,WAAW,gBAAgB;IAC/B,kBAAkB;IAClB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACzD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B;AAED,iFAAiF;AACjF,wBAAsB,SAAS,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAwE3E"}