@cursor/july 0.1.28 → 0.1.29

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 (122) hide show
  1. package/dist/bin/agent-serve.js +20 -2
  2. package/dist/channels/slack/slack-channel.d.ts +19 -1
  3. package/dist/channels/slack/slack-channel.d.ts.map +1 -1
  4. package/dist/channels/slack/slack-channel.js +29 -0
  5. package/dist/docs/404.html +1 -1
  6. package/dist/docs/ab.html +2 -2
  7. package/dist/docs/assets/{app.CqjrYaT2.js → app.QdunVQKg.js} +1 -1
  8. package/dist/docs/assets/chunks/@localSearchIndexroot.DGe61XHA.js +1 -0
  9. package/dist/docs/assets/chunks/{VPLocalSearchBox.ag-MwUel.js → VPLocalSearchBox.B6EpUXYf.js} +1 -1
  10. package/dist/docs/assets/chunks/{theme.BS-DJWat.js → theme.BOTJVqh7.js} +2 -2
  11. package/dist/docs/building-with-agents.html +2 -2
  12. package/dist/docs/concepts.html +2 -2
  13. package/dist/docs/deployment.html +2 -2
  14. package/dist/docs/evals.html +2 -2
  15. package/dist/docs/example-agents/approval-buddy.html +2 -2
  16. package/dist/docs/example-agents/benny.html +2 -2
  17. package/dist/docs/example-agents/bugbot.html +2 -2
  18. package/dist/docs/example-agents/codebase-wiki.html +2 -2
  19. package/dist/docs/example-agents/codeowners-review.html +2 -2
  20. package/dist/docs/example-agents/concierge.html +2 -2
  21. package/dist/docs/example-agents/fsd.html +2 -2
  22. package/dist/docs/example-agents/index.html +2 -2
  23. package/dist/docs/example-agents/knowledge-base.html +2 -2
  24. package/dist/docs/example-agents/oncall.html +2 -2
  25. package/dist/docs/example-agents/security-reviewer.html +2 -2
  26. package/dist/docs/example-agents/slack-agent.html +2 -2
  27. package/dist/docs/example-agents/weather-agent.html +2 -2
  28. package/dist/docs/guides/agent-to-agent.html +2 -2
  29. package/dist/docs/guides/cloud-runtime.html +2 -2
  30. package/dist/docs/guides/github.html +2 -2
  31. package/dist/docs/guides/human-in-the-loop.html +2 -2
  32. package/dist/docs/guides/mcp-oauth.html +2 -2
  33. package/dist/docs/guides/slack.html +2 -2
  34. package/dist/docs/guides/webhooks.html +2 -2
  35. package/dist/docs/hillclimbing.html +2 -2
  36. package/dist/docs/index.html +2 -2
  37. package/dist/docs/quickstart.html +2 -2
  38. package/dist/docs/reference/agent-config.html +2 -2
  39. package/dist/docs/reference/channels.html +2 -2
  40. package/dist/docs/reference/cli.html +2 -2
  41. package/dist/docs/reference/connections.html +2 -2
  42. package/dist/docs/reference/hooks.html +2 -2
  43. package/dist/docs/reference/http-api.html +2 -2
  44. package/dist/docs/reference/instructions.html +2 -2
  45. package/dist/docs/reference/playground.html +2 -2
  46. package/dist/docs/reference/project-layout.html +2 -2
  47. package/dist/docs/reference/prompt.html +2 -2
  48. package/dist/docs/reference/schedules.html +2 -2
  49. package/dist/docs/reference/sessions.html +2 -2
  50. package/dist/docs/reference/skills.html +2 -2
  51. package/dist/docs/reference/subagents.html +2 -2
  52. package/dist/docs/reference/tools.html +2 -2
  53. package/dist/docs/scaffolding-agents.html +2 -2
  54. package/dist/docs/storage.html +2 -2
  55. package/dist/docs/troubleshooting.html +2 -2
  56. package/dist/internal/cloud-turn-cost.d.ts +34 -0
  57. package/dist/internal/cloud-turn-cost.d.ts.map +1 -0
  58. package/dist/internal/cloud-turn-cost.js +106 -0
  59. package/dist/internal/discovery.d.ts.map +1 -1
  60. package/dist/internal/discovery.js +1 -1
  61. package/dist/internal/event-log.d.ts +6 -0
  62. package/dist/internal/event-log.d.ts.map +1 -1
  63. package/dist/internal/event-log.js +16 -0
  64. package/dist/internal/host-platforms.d.ts +13 -0
  65. package/dist/internal/host-platforms.d.ts.map +1 -1
  66. package/dist/internal/host-platforms.js +25 -16
  67. package/dist/internal/http-channel.d.ts.map +1 -1
  68. package/dist/internal/http-channel.js +3 -1
  69. package/dist/internal/local-control-plane.d.ts +25 -0
  70. package/dist/internal/local-control-plane.d.ts.map +1 -0
  71. package/dist/internal/local-control-plane.js +172 -0
  72. package/dist/internal/platform-schedule-sync.d.ts +17 -0
  73. package/dist/internal/platform-schedule-sync.d.ts.map +1 -0
  74. package/dist/internal/platform-schedule-sync.js +72 -0
  75. package/dist/internal/platform-timers.d.ts +28 -0
  76. package/dist/internal/platform-timers.d.ts.map +1 -0
  77. package/dist/internal/platform-timers.js +120 -0
  78. package/dist/internal/reminder-runner.d.ts +16 -12
  79. package/dist/internal/reminder-runner.d.ts.map +1 -1
  80. package/dist/internal/reminder-runner.js +112 -61
  81. package/dist/internal/reminder-store.d.ts +5 -4
  82. package/dist/internal/reminder-store.d.ts.map +1 -1
  83. package/dist/internal/reminder-store.js +5 -4
  84. package/dist/internal/sdk-runner.d.ts.map +1 -1
  85. package/dist/internal/sdk-runner.js +44 -1
  86. package/dist/internal/server.d.ts.map +1 -1
  87. package/dist/internal/server.js +105 -11
  88. package/dist/internal/session-engine.d.ts +22 -1
  89. package/dist/internal/session-engine.d.ts.map +1 -1
  90. package/dist/internal/session-engine.js +110 -4
  91. package/dist/internal/storage-coordinator.d.ts +4 -15
  92. package/dist/internal/storage-coordinator.d.ts.map +1 -1
  93. package/dist/internal/storage-coordinator.js +4 -30
  94. package/dist/playground/assets/index-CquRB-l0.js +85 -0
  95. package/dist/playground/assets/{index-Bul1WfrB.css → index-Dj0bWpkn.css} +1 -1
  96. package/dist/playground/index.html +2 -2
  97. package/dist/storage.d.ts +0 -3
  98. package/dist/storage.d.ts.map +1 -1
  99. package/dist/storage.js +0 -3
  100. package/dist/types.d.ts +11 -2
  101. package/dist/types.d.ts.map +1 -1
  102. package/package.json +1 -1
  103. package/src/bin/agent-serve.ts +21 -2
  104. package/src/channels/slack/slack-channel.ts +46 -0
  105. package/src/internal/cloud-turn-cost.ts +158 -0
  106. package/src/internal/discovery.ts +1 -0
  107. package/src/internal/event-log.ts +17 -0
  108. package/src/internal/host-platforms.ts +40 -18
  109. package/src/internal/http-channel.ts +3 -1
  110. package/src/internal/local-control-plane.ts +188 -0
  111. package/src/internal/platform-schedule-sync.ts +81 -0
  112. package/src/internal/platform-timers.ts +173 -0
  113. package/src/internal/reminder-runner.ts +131 -67
  114. package/src/internal/reminder-store.ts +5 -4
  115. package/src/internal/sdk-runner.ts +49 -1
  116. package/src/internal/server.ts +121 -6
  117. package/src/internal/session-engine.ts +138 -3
  118. package/src/internal/storage-coordinator.ts +4 -41
  119. package/src/storage.ts +0 -5
  120. package/src/types.ts +11 -2
  121. package/dist/docs/assets/chunks/@localSearchIndexroot.VWQoPFJ1.js +0 -1
  122. package/dist/playground/assets/index-CkN74U_L.js +0 -87
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
10
10
  <link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/docs/assets/app.CqjrYaT2.js"></script>
12
+ <script type="module" src="/docs/assets/app.QdunVQKg.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/docs/assets/chunks/theme.BS-DJWat.js">
14
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.BOTJVqh7.js">
15
15
  <link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
16
16
  <link rel="modulepreload" href="/docs/assets/example-agents_weather-agent.md.C9Qv-W0o.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
10
10
  <link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/docs/assets/app.CqjrYaT2.js"></script>
12
+ <script type="module" src="/docs/assets/app.QdunVQKg.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/docs/assets/chunks/theme.BS-DJWat.js">
14
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.BOTJVqh7.js">
15
15
  <link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
16
16
  <link rel="modulepreload" href="/docs/assets/guides_agent-to-agent.md.Bpzgq2Pq.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
10
10
  <link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/docs/assets/app.CqjrYaT2.js"></script>
12
+ <script type="module" src="/docs/assets/app.QdunVQKg.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/docs/assets/chunks/theme.BS-DJWat.js">
14
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.BOTJVqh7.js">
15
15
  <link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
16
16
  <link rel="modulepreload" href="/docs/assets/guides_cloud-runtime.md.gVzabdQL.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
10
10
  <link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/docs/assets/app.CqjrYaT2.js"></script>
12
+ <script type="module" src="/docs/assets/app.QdunVQKg.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/docs/assets/chunks/theme.BS-DJWat.js">
14
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.BOTJVqh7.js">
15
15
  <link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
16
16
  <link rel="modulepreload" href="/docs/assets/guides_github.md.DOOCpqsW.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
10
10
  <link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/docs/assets/app.CqjrYaT2.js"></script>
12
+ <script type="module" src="/docs/assets/app.QdunVQKg.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/docs/assets/chunks/theme.BS-DJWat.js">
14
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.BOTJVqh7.js">
15
15
  <link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
16
16
  <link rel="modulepreload" href="/docs/assets/guides_human-in-the-loop.md.DlUqsp1S.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
10
10
  <link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/docs/assets/app.CqjrYaT2.js"></script>
12
+ <script type="module" src="/docs/assets/app.QdunVQKg.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/docs/assets/chunks/theme.BS-DJWat.js">
14
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.BOTJVqh7.js">
15
15
  <link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
16
16
  <link rel="modulepreload" href="/docs/assets/guides_mcp-oauth.md.Dd8EgSem.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
10
10
  <link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/docs/assets/app.CqjrYaT2.js"></script>
12
+ <script type="module" src="/docs/assets/app.QdunVQKg.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/docs/assets/chunks/theme.BS-DJWat.js">
14
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.BOTJVqh7.js">
15
15
  <link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
16
16
  <link rel="modulepreload" href="/docs/assets/guides_slack.md.CjmJSvZS.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
10
10
  <link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/docs/assets/app.CqjrYaT2.js"></script>
12
+ <script type="module" src="/docs/assets/app.QdunVQKg.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/docs/assets/chunks/theme.BS-DJWat.js">
14
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.BOTJVqh7.js">
15
15
  <link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
16
16
  <link rel="modulepreload" href="/docs/assets/guides_webhooks.md.wSOYas3X.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
10
10
  <link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/docs/assets/app.CqjrYaT2.js"></script>
12
+ <script type="module" src="/docs/assets/app.QdunVQKg.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/docs/assets/chunks/theme.BS-DJWat.js">
14
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.BOTJVqh7.js">
15
15
  <link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
16
16
  <link rel="modulepreload" href="/docs/assets/hillclimbing.md.DHNast08.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
10
10
  <link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/docs/assets/app.CqjrYaT2.js"></script>
12
+ <script type="module" src="/docs/assets/app.QdunVQKg.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/docs/assets/chunks/theme.BS-DJWat.js">
14
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.BOTJVqh7.js">
15
15
  <link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
16
16
  <link rel="modulepreload" href="/docs/assets/index.md.CH_s5uZe.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
10
10
  <link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/docs/assets/app.CqjrYaT2.js"></script>
12
+ <script type="module" src="/docs/assets/app.QdunVQKg.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/docs/assets/chunks/theme.BS-DJWat.js">
14
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.BOTJVqh7.js">
15
15
  <link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
16
16
  <link rel="modulepreload" href="/docs/assets/quickstart.md.BU6Iwi_9.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
10
10
  <link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/docs/assets/app.CqjrYaT2.js"></script>
12
+ <script type="module" src="/docs/assets/app.QdunVQKg.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/docs/assets/chunks/theme.BS-DJWat.js">
14
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.BOTJVqh7.js">
15
15
  <link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
16
16
  <link rel="modulepreload" href="/docs/assets/reference_agent-config.md.DrW2JUM8.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
10
10
  <link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/docs/assets/app.CqjrYaT2.js"></script>
12
+ <script type="module" src="/docs/assets/app.QdunVQKg.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/docs/assets/chunks/theme.BS-DJWat.js">
14
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.BOTJVqh7.js">
15
15
  <link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
16
16
  <link rel="modulepreload" href="/docs/assets/reference_channels.md.CDhTRfUz.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
10
10
  <link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/docs/assets/app.CqjrYaT2.js"></script>
12
+ <script type="module" src="/docs/assets/app.QdunVQKg.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/docs/assets/chunks/theme.BS-DJWat.js">
14
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.BOTJVqh7.js">
15
15
  <link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
16
16
  <link rel="modulepreload" href="/docs/assets/reference_cli.md.ccoKOoXt.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
10
10
  <link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/docs/assets/app.CqjrYaT2.js"></script>
12
+ <script type="module" src="/docs/assets/app.QdunVQKg.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/docs/assets/chunks/theme.BS-DJWat.js">
14
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.BOTJVqh7.js">
15
15
  <link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
16
16
  <link rel="modulepreload" href="/docs/assets/reference_connections.md.B9Q3TOve.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
10
10
  <link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/docs/assets/app.CqjrYaT2.js"></script>
12
+ <script type="module" src="/docs/assets/app.QdunVQKg.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/docs/assets/chunks/theme.BS-DJWat.js">
14
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.BOTJVqh7.js">
15
15
  <link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
16
16
  <link rel="modulepreload" href="/docs/assets/reference_hooks.md.DyLVfE1O.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
10
10
  <link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/docs/assets/app.CqjrYaT2.js"></script>
12
+ <script type="module" src="/docs/assets/app.QdunVQKg.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/docs/assets/chunks/theme.BS-DJWat.js">
14
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.BOTJVqh7.js">
15
15
  <link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
16
16
  <link rel="modulepreload" href="/docs/assets/reference_http-api.md.BncLd3PZ.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
10
10
  <link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/docs/assets/app.CqjrYaT2.js"></script>
12
+ <script type="module" src="/docs/assets/app.QdunVQKg.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/docs/assets/chunks/theme.BS-DJWat.js">
14
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.BOTJVqh7.js">
15
15
  <link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
16
16
  <link rel="modulepreload" href="/docs/assets/reference_instructions.md.CgoV-YEb.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
10
10
  <link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/docs/assets/app.CqjrYaT2.js"></script>
12
+ <script type="module" src="/docs/assets/app.QdunVQKg.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/docs/assets/chunks/theme.BS-DJWat.js">
14
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.BOTJVqh7.js">
15
15
  <link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
16
16
  <link rel="modulepreload" href="/docs/assets/reference_playground.md.CPZhfYaO.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
10
10
  <link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/docs/assets/app.CqjrYaT2.js"></script>
12
+ <script type="module" src="/docs/assets/app.QdunVQKg.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/docs/assets/chunks/theme.BS-DJWat.js">
14
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.BOTJVqh7.js">
15
15
  <link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
16
16
  <link rel="modulepreload" href="/docs/assets/reference_project-layout.md.Bd_CKtNS.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
10
10
  <link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/docs/assets/app.CqjrYaT2.js"></script>
12
+ <script type="module" src="/docs/assets/app.QdunVQKg.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/docs/assets/chunks/theme.BS-DJWat.js">
14
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.BOTJVqh7.js">
15
15
  <link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
16
16
  <link rel="modulepreload" href="/docs/assets/reference_prompt.md.BaiweQxE.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
10
10
  <link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/docs/assets/app.CqjrYaT2.js"></script>
12
+ <script type="module" src="/docs/assets/app.QdunVQKg.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/docs/assets/chunks/theme.BS-DJWat.js">
14
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.BOTJVqh7.js">
15
15
  <link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
16
16
  <link rel="modulepreload" href="/docs/assets/reference_schedules.md.w_F2mXB6.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
10
10
  <link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/docs/assets/app.CqjrYaT2.js"></script>
12
+ <script type="module" src="/docs/assets/app.QdunVQKg.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/docs/assets/chunks/theme.BS-DJWat.js">
14
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.BOTJVqh7.js">
15
15
  <link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
16
16
  <link rel="modulepreload" href="/docs/assets/reference_sessions.md.DLd6mvbv.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
10
10
  <link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/docs/assets/app.CqjrYaT2.js"></script>
12
+ <script type="module" src="/docs/assets/app.QdunVQKg.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/docs/assets/chunks/theme.BS-DJWat.js">
14
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.BOTJVqh7.js">
15
15
  <link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
16
16
  <link rel="modulepreload" href="/docs/assets/reference_skills.md.B_jHN7JL.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
10
10
  <link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/docs/assets/app.CqjrYaT2.js"></script>
12
+ <script type="module" src="/docs/assets/app.QdunVQKg.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/docs/assets/chunks/theme.BS-DJWat.js">
14
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.BOTJVqh7.js">
15
15
  <link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
16
16
  <link rel="modulepreload" href="/docs/assets/reference_subagents.md.zWAMNfi1.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
10
10
  <link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/docs/assets/app.CqjrYaT2.js"></script>
12
+ <script type="module" src="/docs/assets/app.QdunVQKg.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/docs/assets/chunks/theme.BS-DJWat.js">
14
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.BOTJVqh7.js">
15
15
  <link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
16
16
  <link rel="modulepreload" href="/docs/assets/reference_tools.md.BRSDnTbN.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
10
10
  <link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/docs/assets/app.CqjrYaT2.js"></script>
12
+ <script type="module" src="/docs/assets/app.QdunVQKg.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/docs/assets/chunks/theme.BS-DJWat.js">
14
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.BOTJVqh7.js">
15
15
  <link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
16
16
  <link rel="modulepreload" href="/docs/assets/scaffolding-agents.md.C3pTrmoE.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
10
10
  <link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/docs/assets/app.CqjrYaT2.js"></script>
12
+ <script type="module" src="/docs/assets/app.QdunVQKg.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/docs/assets/chunks/theme.BS-DJWat.js">
14
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.BOTJVqh7.js">
15
15
  <link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
16
16
  <link rel="modulepreload" href="/docs/assets/storage.md.DRTdnFvd.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
10
10
  <link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/docs/assets/app.CqjrYaT2.js"></script>
12
+ <script type="module" src="/docs/assets/app.QdunVQKg.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/docs/assets/chunks/theme.BS-DJWat.js">
14
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.BOTJVqh7.js">
15
15
  <link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
16
16
  <link rel="modulepreload" href="/docs/assets/troubleshooting.md.CmQkmnzC.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Recover token usage / estimated cost for cloud turns that finished without
3
+ * either field on `turn.completed`.
4
+ *
5
+ * Cloud `run.wait()` often drops streamed usage after SSE reconnect, and
6
+ * older engines never persisted cost. The playground Trace tab only renders
7
+ * what is on the event, so historical sessions stay blank unless we backfill
8
+ * from `Agent.getUsage` when the stream is read.
9
+ */
10
+ import type { ModelSetting, SessionEvent, TurnUsage } from "../types.js";
11
+ export interface CloudRunUsage {
12
+ runId: string;
13
+ usage: TurnUsage;
14
+ }
15
+ export interface CloudAgentUsage {
16
+ usage: TurnUsage;
17
+ runs: CloudRunUsage[];
18
+ }
19
+ export declare function usageTokenSum(usage: TurnUsage | undefined): number;
20
+ export declare function isUnpricedCompletedTurn(event: SessionEvent): boolean;
21
+ export declare function cloudSdkAgentIdFromEvents(events: ReadonlyArray<SessionEvent>): string | undefined;
22
+ /**
23
+ * Copy usage/cost onto unpriced `turn.completed` events. Returns undefined
24
+ * when the snapshot cannot be attributed safely (multiple unmatched turns).
25
+ */
26
+ export declare function applyCloudUsageToEvents(events: ReadonlyArray<SessionEvent>, billed: CloudAgentUsage, model: ModelSetting): SessionEvent[] | undefined;
27
+ export declare function mapSdkTokenUsage(usage: {
28
+ inputTokens: number;
29
+ outputTokens: number;
30
+ cacheReadTokens: number;
31
+ cacheWriteTokens: number;
32
+ reasoningTokens?: number;
33
+ }): TurnUsage;
34
+ //# sourceMappingURL=cloud-turn-cost.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-turn-cost.d.ts","sourceRoot":"","sources":["../../src/internal/cloud-turn-cost.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EAEZ,SAAS,EACV,MAAM,aAAa,CAAC;AAGrB,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,aAAa,EAAE,CAAC;CACvB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAUlE;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAMpE;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,GAClC,MAAM,GAAG,SAAS,CAYpB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,EACnC,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,YAAY,GAClB,YAAY,EAAE,GAAG,SAAS,CAkE5B;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,SAAS,CAWZ"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Recover token usage / estimated cost for cloud turns that finished without
3
+ * either field on `turn.completed`.
4
+ *
5
+ * Cloud `run.wait()` often drops streamed usage after SSE reconnect, and
6
+ * older engines never persisted cost. The playground Trace tab only renders
7
+ * what is on the event, so historical sessions stay blank unless we backfill
8
+ * from `Agent.getUsage` when the stream is read.
9
+ */
10
+ import { estimateTurnCost } from "./model-pricing.js";
11
+ export function usageTokenSum(usage) {
12
+ if (usage === undefined) {
13
+ return 0;
14
+ }
15
+ return (usage.inputTokens +
16
+ usage.outputTokens +
17
+ usage.cacheReadTokens +
18
+ usage.cacheWriteTokens);
19
+ }
20
+ export function isUnpricedCompletedTurn(event) {
21
+ return (event.type === "turn.completed" &&
22
+ usageTokenSum(event.data.usage) <= 0 &&
23
+ event.data.cost === undefined);
24
+ }
25
+ export function cloudSdkAgentIdFromEvents(events) {
26
+ let sdkAgentId;
27
+ for (const event of events) {
28
+ if (event.type !== "agent.bound") {
29
+ continue;
30
+ }
31
+ const id = event.data.sdkAgentId.trim();
32
+ if (id.startsWith("bc-")) {
33
+ sdkAgentId = id;
34
+ }
35
+ }
36
+ return sdkAgentId;
37
+ }
38
+ /**
39
+ * Copy usage/cost onto unpriced `turn.completed` events. Returns undefined
40
+ * when the snapshot cannot be attributed safely (multiple unmatched turns).
41
+ */
42
+ export function applyCloudUsageToEvents(events, billed, model) {
43
+ const completedIndexes = [];
44
+ const unpricedIndexes = [];
45
+ for (let i = 0; i < events.length; i++) {
46
+ const event = events[i];
47
+ if (event === undefined || event.type !== "turn.completed") {
48
+ continue;
49
+ }
50
+ completedIndexes.push(i);
51
+ if (isUnpricedCompletedTurn(event)) {
52
+ unpricedIndexes.push(i);
53
+ }
54
+ }
55
+ if (unpricedIndexes.length === 0) {
56
+ return [...events];
57
+ }
58
+ const patches = new Map();
59
+ if (unpricedIndexes.length === 1 &&
60
+ completedIndexes.length === 1 &&
61
+ usageTokenSum(billed.usage) > 0) {
62
+ const index = unpricedIndexes[0];
63
+ if (index !== undefined) {
64
+ patches.set(index, {
65
+ usage: billed.usage,
66
+ cost: estimateTurnCost(model, billed.usage),
67
+ });
68
+ }
69
+ }
70
+ else if (billed.runs.length === unpricedIndexes.length &&
71
+ billed.runs.every((run) => usageTokenSum(run.usage) > 0)) {
72
+ for (let i = 0; i < unpricedIndexes.length; i++) {
73
+ const index = unpricedIndexes[i];
74
+ const run = billed.runs[i];
75
+ if (index === undefined || run === undefined) {
76
+ return undefined;
77
+ }
78
+ patches.set(index, {
79
+ usage: run.usage,
80
+ cost: estimateTurnCost(model, run.usage),
81
+ });
82
+ }
83
+ }
84
+ else {
85
+ return undefined;
86
+ }
87
+ return events.map((event, index) => {
88
+ const patch = patches.get(index);
89
+ if (patch === undefined || event.type !== "turn.completed") {
90
+ return event;
91
+ }
92
+ return Object.assign(Object.assign({}, event), { data: Object.assign(Object.assign(Object.assign({}, event.data), { usage: patch.usage }), (patch.cost === undefined ? {} : { cost: patch.cost })) });
93
+ });
94
+ }
95
+ export function mapSdkTokenUsage(usage) {
96
+ const mapped = {
97
+ inputTokens: usage.inputTokens,
98
+ outputTokens: usage.outputTokens,
99
+ cacheReadTokens: usage.cacheReadTokens,
100
+ cacheWriteTokens: usage.cacheWriteTokens,
101
+ };
102
+ if (usage.reasoningTokens !== undefined) {
103
+ mapped.reasoningTokens = usage.reasoningTokens;
104
+ }
105
+ return mapped;
106
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/internal/discovery.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiBH,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,gBAAgB,EASrB,KAAK,UAAU,EAqBhB,MAAM,aAAa,CAAC;AA0BrB,MAAM,WAAW,uBAAuB;IACtC,sDAAsD;IACtD,YAAY,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC3E;AAmBD;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASrE;AAED,sEAAsE;AACtE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,aAAa,EAAE,CAAC,CA2B1B;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC,CAAC,CAoBzD;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,uBAAuB,GAAG;IACjC,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CACtB,GACL,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC,CAAC,CAgBzD;AAWD,iFAAiF;AACjF,eAAO,MAAM,cAAc,EAAE,GAAG,CAAC,MAAM,CAIrC,CAAC;AAEH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,YAAY,CAAC,CAiEvB;AAED,qEAAqE;AACrE,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAElE;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,CAOnE;AA+oBD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAiB3E;AAmtBD,wBAAgB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,gBAAgB,CA4InE"}
1
+ {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/internal/discovery.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiBH,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,gBAAgB,EASrB,KAAK,UAAU,EAqBhB,MAAM,aAAa,CAAC;AA0BrB,MAAM,WAAW,uBAAuB;IACtC,sDAAsD;IACtD,YAAY,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC3E;AAmBD;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASrE;AAED,sEAAsE;AACtE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,aAAa,EAAE,CAAC,CA2B1B;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC,CAAC,CAoBzD;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,uBAAuB,GAAG;IACjC,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CACtB,GACL,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC,CAAC,CAgBzD;AAWD,iFAAiF;AACjF,eAAO,MAAM,cAAc,EAAE,GAAG,CAAC,MAAM,CAIrC,CAAC;AAEH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,YAAY,CAAC,CAiEvB;AAED,qEAAqE;AACrE,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAElE;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,CAOnE;AA+oBD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAiB3E;AAmtBD,wBAAgB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,gBAAgB,CA6InE"}
@@ -1445,7 +1445,7 @@ export function projectInfo(project) {
1445
1445
  url: "/v1/session/:sessionId/approvals/:callId",
1446
1446
  },
1447
1447
  ];
1448
- return Object.assign(Object.assign({ name: project.name, model: agent.model, runtime: agent.runtime, cloud: agent.cloud === undefined ? undefined : toPublicCloudInfo(agent.cloud), local: agent.local, hosting: agent.hosting, concurrency: agent.concurrency, mcp: { path: MCP_ENDPOINT_PATH, tools: mcpEndpointToolNames(project) }, instructions: agent.instructions === undefined
1448
+ return Object.assign(Object.assign({ name: project.name, description: agent.description, model: agent.model, runtime: agent.runtime, cloud: agent.cloud === undefined ? undefined : toPublicCloudInfo(agent.cloud), local: agent.local, hosting: agent.hosting, concurrency: agent.concurrency, mcp: { path: MCP_ENDPOINT_PATH, tools: mcpEndpointToolNames(project) }, instructions: agent.instructions === undefined
1449
1449
  ? undefined
1450
1450
  : {
1451
1451
  chars: agent.instructions.length,
@@ -32,6 +32,12 @@ export declare class SessionEventLog {
32
32
  /** Wait for pending file writes (used on close). */
33
33
  flush(): Promise<void>;
34
34
  snapshot(startIndex?: number): SessionEvent[];
35
+ /**
36
+ * Replace one already-recorded event in memory. Used to backfill usage/cost
37
+ * onto historical `turn.completed` rows without rewriting `events.ndjson`.
38
+ * Live subscribers are not notified — patch before opening a replay stream.
39
+ */
40
+ replace(index: number, event: SessionEvent): boolean;
35
41
  subscribe(listener: (event: SessionEvent) => void): () => void;
36
42
  /**
37
43
  * NDJSON stream: replays recorded events from `startIndex`, then follows