@opengeni/contracts 5.5.0 → 5.5.2-canary.40656248492001

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 (543) hide show
  1. package/dist/agent-authored-durable-text.d.ts +9 -9
  2. package/dist/agent-config.d.ts +148 -37
  3. package/dist/api-key-presets.d.ts +19 -0
  4. package/dist/app-action-catalog-types.d.ts +32 -0
  5. package/dist/app-action-catalog.gen.d.ts +2 -0
  6. package/dist/app-actions.d.ts +91 -0
  7. package/dist/app-actions.js +10130 -0
  8. package/dist/app-actions.js.map +1 -0
  9. package/dist/app-shot.d.ts +55 -0
  10. package/dist/artifact-catalog.d.ts +33 -0
  11. package/dist/artifacts.d.ts +166 -0
  12. package/dist/atlassian-native-retirement.d.ts +16 -0
  13. package/dist/atlassian-native-retirement.js +30 -0
  14. package/dist/atlassian-native-retirement.js.map +1 -0
  15. package/dist/atlassian.js +48 -23
  16. package/dist/automation-templates.d.ts +434 -0
  17. package/dist/automation-templates.js +31 -0
  18. package/dist/automation-templates.js.map +1 -0
  19. package/dist/billing-subscriptions.d.ts +61 -0
  20. package/dist/bots.d.ts +583 -0
  21. package/dist/bundled-skills.d.ts +58 -2
  22. package/dist/canonical-human-identities.js +3 -1
  23. package/dist/child-lifecycle-notice-protocol.d.ts +45 -0
  24. package/dist/chunk-2QKIEAGY.js +396 -0
  25. package/dist/chunk-2QKIEAGY.js.map +1 -0
  26. package/dist/chunk-2WOWEWXV.js +426 -0
  27. package/dist/chunk-2WOWEWXV.js.map +1 -0
  28. package/dist/chunk-2ZIHHL72.js +153 -0
  29. package/dist/chunk-2ZIHHL72.js.map +1 -0
  30. package/dist/chunk-32U6NKQQ.js +389 -0
  31. package/dist/chunk-32U6NKQQ.js.map +1 -0
  32. package/dist/chunk-4YDDHSO2.js +799 -0
  33. package/dist/chunk-4YDDHSO2.js.map +1 -0
  34. package/dist/chunk-56SNIMDO.js +9 -0
  35. package/dist/chunk-56SNIMDO.js.map +1 -0
  36. package/dist/chunk-5RWB6QVL.js +101 -0
  37. package/dist/chunk-5RWB6QVL.js.map +1 -0
  38. package/dist/chunk-5UGUOT3L.js +243 -0
  39. package/dist/chunk-5UGUOT3L.js.map +1 -0
  40. package/dist/chunk-6LAT33BH.js +130 -0
  41. package/dist/chunk-6LAT33BH.js.map +1 -0
  42. package/dist/chunk-7272KVWZ.js +60 -0
  43. package/dist/chunk-7272KVWZ.js.map +1 -0
  44. package/dist/chunk-72QC2GTL.js +36 -0
  45. package/dist/chunk-72QC2GTL.js.map +1 -0
  46. package/dist/chunk-7EQGGZBY.js +105 -0
  47. package/dist/chunk-7EQGGZBY.js.map +1 -0
  48. package/dist/chunk-A3LXWVYU.js +382 -0
  49. package/dist/chunk-A3LXWVYU.js.map +1 -0
  50. package/dist/chunk-AQYDZUJV.js +34 -0
  51. package/dist/chunk-AQYDZUJV.js.map +1 -0
  52. package/dist/chunk-BHCEVVUP.js +93 -0
  53. package/dist/chunk-BHCEVVUP.js.map +1 -0
  54. package/dist/chunk-BMUTAZX5.js +486 -0
  55. package/dist/chunk-BMUTAZX5.js.map +1 -0
  56. package/dist/chunk-DGG6IBBK.js +150 -0
  57. package/dist/chunk-DGG6IBBK.js.map +1 -0
  58. package/dist/{chunk-YBW5JSA3.js → chunk-FBCTUMHI.js} +123 -102
  59. package/dist/chunk-FBCTUMHI.js.map +1 -0
  60. package/dist/chunk-G2KJTFIC.js +97 -0
  61. package/dist/chunk-G2KJTFIC.js.map +1 -0
  62. package/dist/chunk-G4RKARXZ.js +1167 -0
  63. package/dist/chunk-G4RKARXZ.js.map +1 -0
  64. package/dist/chunk-H6UJJIUM.js +350 -0
  65. package/dist/chunk-H6UJJIUM.js.map +1 -0
  66. package/dist/chunk-JOTHDW4H.js +18 -0
  67. package/dist/chunk-JOTHDW4H.js.map +1 -0
  68. package/dist/chunk-L4GUEP7K.js +56480 -0
  69. package/dist/chunk-L4GUEP7K.js.map +1 -0
  70. package/dist/{chunk-SIOU2K4U.js → chunk-LJH2EYGT.js} +23 -23
  71. package/dist/chunk-MTJKSIGA.js +161 -0
  72. package/dist/chunk-MTJKSIGA.js.map +1 -0
  73. package/dist/chunk-MYHMB6GZ.js +202 -0
  74. package/dist/chunk-MYHMB6GZ.js.map +1 -0
  75. package/dist/chunk-PI5VIKJY.js +660 -0
  76. package/dist/chunk-PI5VIKJY.js.map +1 -0
  77. package/dist/{chunk-RIY7GYQS.js → chunk-PTSROVDG.js} +2 -2
  78. package/dist/chunk-PUIUXIOL.js +189 -0
  79. package/dist/chunk-PUIUXIOL.js.map +1 -0
  80. package/dist/chunk-R6VXJIMB.js +19 -0
  81. package/dist/chunk-R6VXJIMB.js.map +1 -0
  82. package/dist/chunk-RLJUNVAM.js +15 -0
  83. package/dist/chunk-RLJUNVAM.js.map +1 -0
  84. package/dist/chunk-RR6APCBK.js +213 -0
  85. package/dist/chunk-RR6APCBK.js.map +1 -0
  86. package/dist/{chunk-TXTQIYCV.js → chunk-RUQ4I6DO.js} +59 -13
  87. package/dist/chunk-RUQ4I6DO.js.map +1 -0
  88. package/dist/{chunk-WYBDERIY.js → chunk-RWEEUDHD.js} +53 -42
  89. package/dist/chunk-RWEEUDHD.js.map +1 -0
  90. package/dist/chunk-S7MSQQL6.js +158 -0
  91. package/dist/chunk-S7MSQQL6.js.map +1 -0
  92. package/dist/{chunk-5Q54VCCH.js → chunk-SHO4YO4B.js} +20 -36
  93. package/dist/chunk-SHO4YO4B.js.map +1 -0
  94. package/dist/{chunk-HHZSZYYF.js → chunk-T3HSWMA5.js} +20 -4
  95. package/dist/chunk-T3HSWMA5.js.map +1 -0
  96. package/dist/{chunk-YRKRZ6OF.js → chunk-TOOJIBJC.js} +2 -2
  97. package/dist/chunk-UCUOTRS6.js +431 -0
  98. package/dist/chunk-UCUOTRS6.js.map +1 -0
  99. package/dist/chunk-UH4K7GP7.js +424 -0
  100. package/dist/chunk-UH4K7GP7.js.map +1 -0
  101. package/dist/chunk-UIZWGPHV.js +120 -0
  102. package/dist/chunk-UIZWGPHV.js.map +1 -0
  103. package/dist/chunk-VLUKBV6Y.js +1170 -0
  104. package/dist/chunk-VLUKBV6Y.js.map +1 -0
  105. package/dist/chunk-W2QQ5Y6K.js +55 -0
  106. package/dist/chunk-W2QQ5Y6K.js.map +1 -0
  107. package/dist/{chunk-Y3KNXVTD.js → chunk-W3NBPR4E.js} +131 -31
  108. package/dist/chunk-W3NBPR4E.js.map +1 -0
  109. package/dist/{chunk-NRMCVHAU.js → chunk-WMGO4HJU.js} +11 -9
  110. package/dist/chunk-WMGO4HJU.js.map +1 -0
  111. package/dist/{chunk-MYBZRDTY.js → chunk-WQI7VNN4.js} +19 -9
  112. package/dist/chunk-WQI7VNN4.js.map +1 -0
  113. package/dist/{chunk-PX3VCKAU.js → chunk-WVCFSOUZ.js} +1 -1
  114. package/dist/{chunk-PX3VCKAU.js.map → chunk-WVCFSOUZ.js.map} +1 -1
  115. package/dist/chunk-XB6GQLBH.js +76 -0
  116. package/dist/chunk-XB6GQLBH.js.map +1 -0
  117. package/dist/{chunk-D2HKF2EF.js → chunk-XP5M3IKT.js} +2 -2
  118. package/dist/{chunk-O77VSFYZ.js → chunk-ZMPU5BWE.js} +12 -2
  119. package/dist/chunk-ZMPU5BWE.js.map +1 -0
  120. package/dist/{chunk-3SIZGL3O.js → chunk-ZYVEJFNU.js} +22 -18
  121. package/dist/chunk-ZYVEJFNU.js.map +1 -0
  122. package/dist/claude-provider-account-authority.d.ts +18 -0
  123. package/dist/claude-subscription-oauth.d.ts +25 -0
  124. package/dist/claude-subscription-usage.d.ts +95 -1
  125. package/dist/client-error-report.d.ts +154 -8
  126. package/dist/client-error-report.js +157 -2
  127. package/dist/client-error-report.js.map +1 -1
  128. package/dist/code-search.d.ts +1 -1
  129. package/dist/code-search.js.map +1 -1
  130. package/dist/codex-provider-account-authority.js +23 -12
  131. package/dist/codex-provider-account-authority.js.map +1 -1
  132. package/dist/company-profile.d.ts +144 -0
  133. package/dist/connect.d.ts +38 -0
  134. package/dist/connect.js +244 -164
  135. package/dist/connect.js.map +1 -1
  136. package/dist/connection-account-label.d.ts +2 -0
  137. package/dist/connection-account-label.js +34 -0
  138. package/dist/connection-account-label.js.map +1 -0
  139. package/dist/connection-authority.js +49 -24
  140. package/dist/connector-attachments.js +3 -1
  141. package/dist/connector-destinations.js +3 -1
  142. package/dist/connector-tool-permissions.d.ts +68 -4
  143. package/dist/credential-profiles.d.ts +166 -0
  144. package/dist/cua-desktop-tools.d.ts +19 -0
  145. package/dist/define-schema.d.ts +8 -0
  146. package/dist/desktop-app.d.ts +28 -0
  147. package/dist/direct-model-provider.d.ts +38 -0
  148. package/dist/document-artifact-commands.js +2 -2
  149. package/dist/document-artifact-query.js +2 -2
  150. package/dist/editable-artifact-binary.d.ts +7 -0
  151. package/dist/editable-artifact-causal-frontier.js +2 -2
  152. package/dist/editable-artifact-codec-registry.js +7 -7
  153. package/dist/editable-artifact-committed-transaction.js +4 -2
  154. package/dist/editable-artifact-live.js +8 -8
  155. package/dist/editable-artifact-serialized-commit.js +9 -9
  156. package/dist/editable-artifact-versions.d.ts +7 -1
  157. package/dist/editable-artifact-versions.js +1 -1
  158. package/dist/editable-artifacts.js +49 -43
  159. package/dist/event-preview.d.ts +22 -0
  160. package/dist/event-triggers.d.ts +1253 -0
  161. package/dist/event-triggers.js +148 -0
  162. package/dist/event-triggers.js.map +1 -0
  163. package/dist/external-identities.d.ts +34 -0
  164. package/dist/external-identities.js +4 -2
  165. package/dist/feedback.d.ts +181 -0
  166. package/dist/file-access.d.ts +23 -0
  167. package/dist/first-party-tool-authorization.d.ts +852 -0
  168. package/dist/github-repository-contracts.js +64 -43
  169. package/dist/github-repository-contracts.js.map +1 -1
  170. package/dist/google-drive-native-retirement.d.ts +12 -0
  171. package/dist/google-drive-native-retirement.js +20 -0
  172. package/dist/google-drive-native-retirement.js.map +1 -0
  173. package/dist/google-drive.d.ts +1 -1
  174. package/dist/google-drive.js +323 -239
  175. package/dist/google-drive.js.map +1 -1
  176. package/dist/host-mcp-bindings.js +250 -198
  177. package/dist/host-mcp-bindings.js.map +1 -1
  178. package/dist/index.d.ts +29072 -20593
  179. package/dist/index.js +2432 -366
  180. package/dist/inference-residency.d.ts +22 -0
  181. package/dist/insights-usage.d.ts +948 -0
  182. package/dist/insights-usage.js +608 -0
  183. package/dist/insights-usage.js.map +1 -0
  184. package/dist/integration-capability-id.d.ts +8 -0
  185. package/dist/interaction-action-deadline.d.ts +48 -0
  186. package/dist/interaction-driver-diagnostic.d.ts +28 -0
  187. package/dist/interaction.d.ts +2126 -881
  188. package/dist/knowledge-entries.d.ts +38 -0
  189. package/dist/knowledge-preparation.d.ts +4 -0
  190. package/dist/learning-refusal.d.ts +43 -0
  191. package/dist/learning-refusal.js +49 -0
  192. package/dist/learning-refusal.js.map +1 -0
  193. package/dist/managed-auth-session-sets.d.ts +1 -0
  194. package/dist/managed-auth-session-sets.js +207 -146
  195. package/dist/managed-auth-session-sets.js.map +1 -1
  196. package/dist/managed-sign-in-methods.d.ts +96 -0
  197. package/dist/managed-sign-in-methods.js +157 -35
  198. package/dist/managed-sign-in-methods.js.map +1 -1
  199. package/dist/mcp-structured-content.d.ts +25 -0
  200. package/dist/message-time-zone.d.ts +38 -0
  201. package/dist/message-time-zone.js +19 -0
  202. package/dist/message-time-zone.js.map +1 -0
  203. package/dist/modal-native-proof-v2.d.ts +587 -0
  204. package/dist/modal-native-proof-v2.js +39 -0
  205. package/dist/modal-native-proof-v2.js.map +1 -0
  206. package/dist/model-account-choice.d.ts +237 -0
  207. package/dist/model-account-settings.d.ts +422 -0
  208. package/dist/model-availability.d.ts +15 -0
  209. package/dist/model-connection-access.d.ts +13 -0
  210. package/dist/model-context-inspector.d.ts +8 -0
  211. package/dist/model-display.d.ts +43 -0
  212. package/dist/model-display.js +17 -0
  213. package/dist/model-display.js.map +1 -0
  214. package/dist/model-picker-order.js.map +1 -1
  215. package/dist/model-residency.d.ts +304 -0
  216. package/dist/organization-access.d.ts +416 -0
  217. package/dist/organization-access.js +40 -0
  218. package/dist/organization-access.js.map +1 -0
  219. package/dist/organization-integration-policy.d.ts +18 -0
  220. package/dist/organization-membership-lifecycle.d.ts +66 -0
  221. package/dist/organization-model-usage.d.ts +146 -0
  222. package/dist/organization-model-usage.js +87 -0
  223. package/dist/organization-model-usage.js.map +1 -0
  224. package/dist/organization-recovery.js +3 -1
  225. package/dist/organization-usage.d.ts +12 -0
  226. package/dist/passkey-only-account.d.ts +14 -0
  227. package/dist/passkey-only-account.js +13 -0
  228. package/dist/passkey-only-account.js.map +1 -0
  229. package/dist/permissions.d.ts +19 -0
  230. package/dist/personal-github.js +220 -148
  231. package/dist/personal-github.js.map +1 -1
  232. package/dist/personal-integration-setup.d.ts +81 -0
  233. package/dist/personal-integration-setup.js +42 -0
  234. package/dist/personal-integration-setup.js.map +1 -0
  235. package/dist/prepared-mcp-setup.d.ts +54 -0
  236. package/dist/prepared-mcp-setup.js +13 -0
  237. package/dist/prepared-mcp-setup.js.map +1 -0
  238. package/dist/presentation-artifact-commands.js +2 -2
  239. package/dist/presentation-artifact-query.js +2 -2
  240. package/dist/primitives.d.ts +18 -0
  241. package/dist/product-analytics.d.ts +27 -10
  242. package/dist/product-lifecycle-facts.d.ts +26 -3
  243. package/dist/prompt-cache-diagnostics.d.ts +92 -0
  244. package/dist/recordings.d.ts +1371 -0
  245. package/dist/remember.d.ts +98 -2
  246. package/dist/retained-output.d.ts +4 -2
  247. package/dist/sandbox-file-artifacts.d.ts +19 -2
  248. package/dist/sandbox-provider-command.d.ts +5 -44
  249. package/dist/sandbox-recovery.d.ts +139 -8
  250. package/dist/secret-generator.d.ts +44 -0
  251. package/dist/secret-mask-strings.d.ts +32 -0
  252. package/dist/secret-references.d.ts +90 -0
  253. package/dist/secret-resolution.d.ts +143 -0
  254. package/dist/secret-shape-masking.d.ts +52 -0
  255. package/dist/secret-shape-masking.js +19 -0
  256. package/dist/secret-shape-masking.js.map +1 -0
  257. package/dist/secret-totp.d.ts +41 -0
  258. package/dist/secret-use-approval-question.d.ts +11 -0
  259. package/dist/secret-use-approval-question.js +11 -0
  260. package/dist/secret-use-approval-question.js.map +1 -0
  261. package/dist/secret-use-approvals.d.ts +106 -0
  262. package/dist/secret-value-masking.d.ts +299 -0
  263. package/dist/secret-value-masking.js +62 -0
  264. package/dist/secret-value-masking.js.map +1 -0
  265. package/dist/secret-value.d.ts +19 -0
  266. package/dist/session-history-import.d.ts +444 -8
  267. package/dist/session-history.d.ts +111 -0
  268. package/dist/session-history.js +35 -0
  269. package/dist/session-history.js.map +1 -0
  270. package/dist/session-list-entries.d.ts +8 -0
  271. package/dist/session-list-entries.js +61 -0
  272. package/dist/session-list-entries.js.map +1 -0
  273. package/dist/session-mcp-projections.d.ts +13 -1
  274. package/dist/session-mcp-tool-permissions.d.ts +62 -0
  275. package/dist/session-target.d.ts +18 -0
  276. package/dist/session-titles.d.ts +8 -0
  277. package/dist/session-titles.js +5 -1
  278. package/dist/session-usage-limit-refusal.d.ts +34 -0
  279. package/dist/session-usage-limit-refusal.js +15 -0
  280. package/dist/session-usage-limit-refusal.js.map +1 -0
  281. package/dist/session-usage-limits.d.ts +127 -0
  282. package/dist/session-usage-limits.js +43 -0
  283. package/dist/session-usage-limits.js.map +1 -0
  284. package/dist/site-data.d.ts +286 -0
  285. package/dist/site-operations.d.ts +39 -0
  286. package/dist/site-publishing.d.ts +813 -0
  287. package/dist/site-session-http.d.ts +103 -4
  288. package/dist/site-session-http.js +27 -1
  289. package/dist/site-sql.d.ts +425 -0
  290. package/dist/skills.d.ts +38 -0
  291. package/dist/slack-bot-scopes.d.ts +9 -7
  292. package/dist/slack-bot-scopes.js +6 -3
  293. package/dist/slack-rest-mcp.d.ts +36 -0
  294. package/dist/slack-rest-mcp.js +25 -0
  295. package/dist/slack-rest-mcp.js.map +1 -0
  296. package/dist/spreadsheet-artifact-commands.d.ts +14 -1
  297. package/dist/spreadsheet-artifact-commands.js +9 -2
  298. package/dist/spreadsheet-artifact-query.d.ts +13 -6
  299. package/dist/spreadsheet-artifact-query.js +4 -3
  300. package/dist/subscription-account-actions.d.ts +83 -0
  301. package/dist/subscription-account-pools.d.ts +326 -0
  302. package/dist/subscription-personal-authority-v2.d.ts +28 -0
  303. package/dist/subscription-personal-authority-v2.js +13 -0
  304. package/dist/subscription-personal-authority-v2.js.map +1 -0
  305. package/dist/subscription-plans.d.ts +38 -0
  306. package/dist/subscription-usage-pool.d.ts +89 -0
  307. package/dist/tool-action-review.d.ts +141 -0
  308. package/dist/tool-catalog.d.ts +479 -0
  309. package/dist/tool-policy.d.ts +5 -0
  310. package/dist/tool-review-presentation.d.ts +29 -0
  311. package/dist/tool-review-presentation.js +21 -0
  312. package/dist/tool-review-presentation.js.map +1 -0
  313. package/dist/turn-serving-policy.d.ts +223 -0
  314. package/dist/usage-allowances.d.ts +30 -0
  315. package/dist/usage-allowances.js +5 -1
  316. package/dist/values.d.ts +11 -0
  317. package/dist/values.js +19 -0
  318. package/dist/values.js.map +1 -0
  319. package/dist/vault-provider-wire.d.ts +907 -0
  320. package/dist/vault-provider-wire.js +74 -0
  321. package/dist/vault-provider-wire.js.map +1 -0
  322. package/dist/vaults.d.ts +2185 -0
  323. package/dist/video-generation.d.ts +75 -0
  324. package/dist/video-generation.js +8 -1
  325. package/dist/workspace-control-event.d.ts +18 -0
  326. package/dist/workspace-control-event.js +18 -0
  327. package/dist/workspace-control-event.js.map +1 -0
  328. package/dist/workspace-governance-context.d.ts +18 -0
  329. package/dist/workspace-integration-wire.d.ts +1 -1
  330. package/dist/workspace-integration-wire.js +1 -1
  331. package/dist/workspace-integrations.d.ts +212 -12
  332. package/dist/xai-provider-account-authority.js +3 -1
  333. package/package.json +121 -4
  334. package/src/agent-authored-durable-text.ts +14 -11
  335. package/src/agent-config.ts +382 -203
  336. package/src/agent-instruction-changes.ts +94 -74
  337. package/src/agent-learning.ts +94 -66
  338. package/src/agent-topology.ts +58 -52
  339. package/src/api-key-presets.ts +28 -0
  340. package/src/app-action-catalog-types.ts +32 -0
  341. package/src/app-action-catalog.gen.ts +9905 -0
  342. package/src/app-actions.ts +365 -0
  343. package/src/app-shot.ts +176 -0
  344. package/src/artifact-catalog.ts +81 -46
  345. package/src/artifacts.ts +360 -227
  346. package/src/atlassian-native-retirement.ts +33 -0
  347. package/src/atlassian.ts +136 -108
  348. package/src/automation-templates.ts +201 -0
  349. package/src/billing-subscriptions.ts +48 -0
  350. package/src/bots.ts +238 -0
  351. package/src/bundled-skills.ts +79 -22
  352. package/src/canonical-human-identities.ts +65 -62
  353. package/src/child-lifecycle-notice-protocol.gen.json +1310 -0
  354. package/src/child-lifecycle-notice-protocol.ts +224 -0
  355. package/src/claude-provider-account-authority.ts +12 -0
  356. package/src/claude-subscription-oauth.ts +61 -19
  357. package/src/claude-subscription-usage.ts +64 -35
  358. package/src/client-error-report.ts +344 -9
  359. package/src/code-search.ts +1 -1
  360. package/src/codex-provider-account-authority.ts +22 -16
  361. package/src/company-brain-governed-writes.ts +265 -244
  362. package/src/company-brain.ts +165 -154
  363. package/src/company-profile.ts +362 -297
  364. package/src/connect.ts +222 -173
  365. package/src/connection-account-label.ts +45 -0
  366. package/src/connection-authority.ts +172 -152
  367. package/src/connector-attachments.ts +139 -123
  368. package/src/connector-destinations.ts +48 -43
  369. package/src/connector-tool-permissions.ts +104 -46
  370. package/src/credential-profiles.ts +161 -0
  371. package/src/cua-desktop-tools.gen.json +6722 -0
  372. package/src/cua-desktop-tools.linux.gen.json +6798 -0
  373. package/src/cua-desktop-tools.ts +42 -0
  374. package/src/cua-desktop-tools.windows.gen.json +6739 -0
  375. package/src/define-schema.ts +10 -0
  376. package/src/desktop-app.ts +50 -0
  377. package/src/direct-model-provider.ts +112 -0
  378. package/src/editable-artifact-binary.ts +29 -8
  379. package/src/editable-artifact-committed-transaction.ts +19 -18
  380. package/src/editable-artifact-serialized-commit.ts +8 -2
  381. package/src/editable-artifact-versions.ts +7 -1
  382. package/src/event-preview.ts +53 -3
  383. package/src/event-triggers.ts +891 -0
  384. package/src/external-identities.ts +239 -195
  385. package/src/feedback.ts +125 -30
  386. package/src/file-access.ts +26 -0
  387. package/src/first-party-tool-authorization.ts +383 -0
  388. package/src/github-repository-contracts.ts +78 -64
  389. package/src/google-drive-native-retirement.ts +20 -0
  390. package/src/google-drive.ts +286 -234
  391. package/src/governed-learning-activation.ts +159 -137
  392. package/src/governed-learning-evaluator.ts +141 -133
  393. package/src/host-mcp-bindings.ts +244 -221
  394. package/src/image-generation.ts +105 -95
  395. package/src/index.ts +13928 -9899
  396. package/src/inference-residency.ts +36 -0
  397. package/src/insights-usage.ts +774 -0
  398. package/src/integration-capability-id.ts +16 -0
  399. package/src/interaction-action-deadline.ts +143 -0
  400. package/src/interaction-driver-diagnostic.ts +89 -0
  401. package/src/interaction.ts +3527 -2427
  402. package/src/knowledge-entries.ts +386 -299
  403. package/src/knowledge-preparation.ts +49 -41
  404. package/src/knowledge.ts +242 -213
  405. package/src/learning-refusal.ts +90 -0
  406. package/src/managed-auth-session-sets.ts +180 -133
  407. package/src/managed-sign-in-methods.ts +156 -34
  408. package/src/mcp-oauth.ts +58 -46
  409. package/src/mcp-receipts.ts +199 -194
  410. package/src/mcp-structured-content.ts +81 -0
  411. package/src/memory-slack-delivery.ts +172 -142
  412. package/src/message-time-zone.ts +109 -0
  413. package/src/modal-native-proof-v2.ts +430 -0
  414. package/src/model-account-choice.ts +178 -0
  415. package/src/model-account-settings.ts +210 -0
  416. package/src/model-availability.ts +22 -0
  417. package/src/model-connection-access.ts +62 -14
  418. package/src/model-context-inspector.ts +130 -109
  419. package/src/model-display.ts +221 -0
  420. package/src/model-picker-order.ts +1 -1
  421. package/src/model-residency.ts +535 -0
  422. package/src/organization-access.ts +216 -0
  423. package/src/organization-integration-policy.ts +47 -28
  424. package/src/organization-membership-lifecycle.ts +558 -384
  425. package/src/organization-model-usage.ts +82 -0
  426. package/src/organization-recovery.ts +148 -135
  427. package/src/organization-usage.ts +84 -52
  428. package/src/passkey-only-account.ts +29 -0
  429. package/src/permissions.ts +94 -52
  430. package/src/personal-github.ts +211 -171
  431. package/src/personal-integration-setup.ts +150 -0
  432. package/src/preference-registry.ts +319 -263
  433. package/src/prepared-mcp-setup.ts +190 -0
  434. package/src/primitives.ts +22 -0
  435. package/src/product-analytics.ts +40 -15
  436. package/src/product-lifecycle-facts.ts +50 -20
  437. package/src/prompt-cache-diagnostics.ts +212 -0
  438. package/src/recordings.ts +1153 -0
  439. package/src/remember.ts +184 -172
  440. package/src/retained-output.ts +181 -168
  441. package/src/sandbox-file-artifacts.ts +78 -57
  442. package/src/sandbox-provider-command.ts +55 -72
  443. package/src/sandbox-recovery.ts +163 -77
  444. package/src/scoped-knowledge.ts +62 -43
  445. package/src/secret-generator.ts +156 -0
  446. package/src/secret-mask-strings.ts +175 -0
  447. package/src/secret-references.ts +414 -0
  448. package/src/secret-resolution.ts +322 -0
  449. package/src/secret-shape-masking.ts +573 -0
  450. package/src/secret-totp.ts +188 -0
  451. package/src/secret-use-approval-question.ts +22 -0
  452. package/src/secret-use-approvals.ts +219 -0
  453. package/src/secret-value-masking.ts +1283 -0
  454. package/src/secret-value.ts +22 -0
  455. package/src/session-goal-reports.ts +55 -49
  456. package/src/session-history-import.ts +84 -68
  457. package/src/session-history.ts +197 -0
  458. package/src/session-list-entries.ts +106 -0
  459. package/src/session-mcp-projections.ts +21 -3
  460. package/src/session-mcp-tool-permissions.ts +109 -0
  461. package/src/session-message-search.ts +46 -38
  462. package/src/session-target.ts +58 -0
  463. package/src/session-titles.ts +40 -4
  464. package/src/session-topology-primitives.ts +20 -12
  465. package/src/session-usage-limit-refusal.ts +101 -0
  466. package/src/session-usage-limits.ts +169 -0
  467. package/src/signup-attribution.ts +20 -15
  468. package/src/site-data.ts +337 -0
  469. package/src/site-operations.ts +154 -0
  470. package/src/site-publishing.ts +903 -0
  471. package/src/site-session-http.ts +344 -16
  472. package/src/site-sql.ts +1120 -0
  473. package/src/skill-use.ts +18 -17
  474. package/src/skills.ts +105 -50
  475. package/src/slack-bot-scopes.ts +18 -35
  476. package/src/slack-rest-mcp.ts +222 -0
  477. package/src/slack-task-policy.ts +97 -73
  478. package/src/spreadsheet-artifact-commands.ts +74 -13
  479. package/src/spreadsheet-artifact-query.ts +188 -50
  480. package/src/subscription-account-actions.ts +103 -0
  481. package/src/subscription-account-pools.ts +74 -0
  482. package/src/subscription-personal-authority-v2.ts +69 -0
  483. package/src/subscription-plans.ts +51 -0
  484. package/src/subscription-usage-pool.ts +44 -0
  485. package/src/task-notes.ts +70 -68
  486. package/src/tool-action-review.ts +271 -0
  487. package/src/tool-catalog.ts +694 -379
  488. package/src/tool-policy.ts +82 -0
  489. package/src/tool-result-spill.ts +13 -9
  490. package/src/tool-review-presentation.ts +643 -0
  491. package/src/turn-serving-policy.ts +167 -0
  492. package/src/usage-allowances.ts +212 -136
  493. package/src/values.ts +25 -0
  494. package/src/vault-provider-wire.ts +580 -0
  495. package/src/vaults.ts +1296 -0
  496. package/src/video-generation.ts +430 -361
  497. package/src/work-claims.ts +183 -166
  498. package/src/workspace-control-event.ts +134 -0
  499. package/src/workspace-governance-context.ts +63 -0
  500. package/src/workspace-instruction-policies.ts +346 -279
  501. package/src/workspace-integration-wire.ts +10 -0
  502. package/src/workspace-integrations.ts +488 -398
  503. package/src/workspace-learning-administration.ts +58 -44
  504. package/src/workspace-learning-policy.ts +126 -99
  505. package/src/workspace-state.ts +239 -220
  506. package/src/xai-provider-account-authority.ts +23 -17
  507. package/dist/chunk-3SIZGL3O.js.map +0 -1
  508. package/dist/chunk-566IFOVP.js +0 -26133
  509. package/dist/chunk-566IFOVP.js.map +0 -1
  510. package/dist/chunk-5IXYF6XN.js +0 -728
  511. package/dist/chunk-5IXYF6XN.js.map +0 -1
  512. package/dist/chunk-5Q54VCCH.js.map +0 -1
  513. package/dist/chunk-BCS7WHCK.js +0 -139
  514. package/dist/chunk-BCS7WHCK.js.map +0 -1
  515. package/dist/chunk-EK7NDGFR.js +0 -128
  516. package/dist/chunk-EK7NDGFR.js.map +0 -1
  517. package/dist/chunk-GRG7PHWQ.js +0 -25
  518. package/dist/chunk-GRG7PHWQ.js.map +0 -1
  519. package/dist/chunk-HHZSZYYF.js.map +0 -1
  520. package/dist/chunk-ICDZGUX2.js +0 -186
  521. package/dist/chunk-ICDZGUX2.js.map +0 -1
  522. package/dist/chunk-JUFK3T4Q.js +0 -80
  523. package/dist/chunk-JUFK3T4Q.js.map +0 -1
  524. package/dist/chunk-MYBZRDTY.js.map +0 -1
  525. package/dist/chunk-NRMCVHAU.js.map +0 -1
  526. package/dist/chunk-O77VSFYZ.js.map +0 -1
  527. package/dist/chunk-P3HLDT77.js +0 -59
  528. package/dist/chunk-P3HLDT77.js.map +0 -1
  529. package/dist/chunk-TXTQIYCV.js.map +0 -1
  530. package/dist/chunk-WYBDERIY.js.map +0 -1
  531. package/dist/chunk-Y3KNXVTD.js.map +0 -1
  532. package/dist/chunk-YBW5JSA3.js.map +0 -1
  533. package/dist/chunk-YRXAWWCU.js +0 -45
  534. package/dist/chunk-YRXAWWCU.js.map +0 -1
  535. package/dist/chunk-YWMOIZ6A.js +0 -185
  536. package/dist/chunk-YWMOIZ6A.js.map +0 -1
  537. package/dist/site-request-headers.test.d.ts +0 -1
  538. package/dist/transcription-recordings.d.ts +0 -300
  539. package/src/transcription-recordings.ts +0 -169
  540. /package/dist/{chunk-SIOU2K4U.js.map → chunk-LJH2EYGT.js.map} +0 -0
  541. /package/dist/{chunk-RIY7GYQS.js.map → chunk-PTSROVDG.js.map} +0 -0
  542. /package/dist/{chunk-YRKRZ6OF.js.map → chunk-TOOJIBJC.js.map} +0 -0
  543. /package/dist/{chunk-D2HKF2EF.js.map → chunk-XP5M3IKT.js.map} +0 -0
@@ -2,6 +2,13 @@ import type { SessionGoalStatus, SessionStatus } from "./session-topology-primit
2
2
  import type { WorkDiscoveryProjection } from "./work-claims";
3
3
  import type { Session, SessionQueueSnapshot } from "./index";
4
4
 
5
+ /** Counts used by compact monitoring; full queue previews remain a separate read. */
6
+ export type SessionMcpQueueSummary = {
7
+ queuedTurns: number;
8
+ pendingInputs: number;
9
+ stoppingPreviousAttempt: boolean;
10
+ };
11
+
5
12
  /** MCP-only presentation choice. REST/SDK session shapes keep their own defaults. */
6
13
  export type SessionMcpDetail = "compact" | "full";
7
14
 
@@ -176,7 +183,7 @@ export type SessionMcpMonitoringSource = {
176
183
  export function compactSessionMcpDetail(
177
184
  session: Session,
178
185
  monitoring: SessionMcpMonitoringSource,
179
- queue: SessionQueueSnapshot | null,
186
+ queue: SessionQueueSnapshot | SessionMcpQueueSummary | null,
180
187
  ) {
181
188
  const title = boundSessionMcpText(session.title, 200);
182
189
  const pause = compactSessionMcpPause(session.effectiveControl);
@@ -209,6 +216,17 @@ export function compactSessionMcpDetail(
209
216
  ...(session.parentSessionId ? { parentSessionId: session.parentSessionId } : {}),
210
217
  ...(session.activeTurnId ? { activeTurnId: session.activeTurnId } : {}),
211
218
  lastSequence: session.lastSequence,
219
+ // Archived sessions keep a readable timeline but accept no new work.
220
+ ...(session.retention?.archive
221
+ ? {
222
+ archive: {
223
+ state: session.retention.archive.state,
224
+ archivedAt: session.retention.archive.archivedAt,
225
+ readOnly: true,
226
+ },
227
+ }
228
+ : {}),
229
+ ...(session.retention?.keepLive ? { keepLive: true } : {}),
212
230
  ...(goal
213
231
  ? {
214
232
  goal: {
@@ -244,8 +262,8 @@ export function compactSessionMcpDetail(
244
262
  ...(queue
245
263
  ? {
246
264
  queue: {
247
- queuedTurns: queue.items.length,
248
- pendingInputs: queue.pendingInputs.length,
265
+ queuedTurns: "items" in queue ? queue.items.length : queue.queuedTurns,
266
+ pendingInputs: "items" in queue ? queue.pendingInputs.length : queue.pendingInputs,
249
267
  ...(queue.stoppingPreviousAttempt ? { stoppingPreviousAttempt: true } : {}),
250
268
  },
251
269
  }
@@ -0,0 +1,109 @@
1
+ import * as primitives from "./primitives";
2
+ import { defineSchema } from "./define-schema";
3
+ import { z } from "zod";
4
+ import { ConnectorToolPermission } from "./connector-tool-permissions";
5
+ import { MCP_MAX_CATALOG_TOOL_ENTRIES } from "./mcp-catalog-limits";
6
+
7
+ /**
8
+ * Tool `_meta` key an MCP server sets in `tools/list` to recommend a default
9
+ * permission for that tool: `"ask"` or `"allow"`. Like `requireApproval`, it
10
+ * applies only when the workspace has no saved choice for the tool and no
11
+ * server default. The tool asks when either this or `requireApproval` says so.
12
+ */
13
+ export const MCP_TOOL_RECOMMENDED_PERMISSION_META_KEY = "opengeni/recommendedPermission" as const;
14
+
15
+ /** True when a listed MCP tool recommends Ask through its `_meta`. */
16
+ export function mcpToolRecommendsApproval(tool: object): boolean {
17
+ const meta = (tool as { _meta?: unknown })._meta;
18
+ return (
19
+ typeof meta === "object" &&
20
+ meta !== null &&
21
+ (meta as Record<string, unknown>)[MCP_TOOL_RECOMMENDED_PERMISSION_META_KEY] === "ask"
22
+ );
23
+ }
24
+
25
+ // Host-attached session MCP servers have no catalog capability. Their tool
26
+ // permissions are keyed by the same secret-free identity the runtime derives:
27
+ // `session-mcp:<serverId>:<sha256(exact url)>`. The host names the server and
28
+ // the exact URL it attaches to sessions; Opengeni stores and enforces the rules.
29
+ const sessionMcpServerId = /* @__PURE__ */ defineSchema(() =>
30
+ z
31
+ .string()
32
+ .min(1)
33
+ .max(200)
34
+ .regex(/^[A-Za-z0-9_-]+$/),
35
+ );
36
+ const sessionMcpServerUrl = /* @__PURE__ */ defineSchema(() =>
37
+ z
38
+ .string()
39
+ .min(1)
40
+ .max(2048)
41
+ .refine(
42
+ (value) => {
43
+ try {
44
+ const url = new URL(value);
45
+ return url.protocol === "https:" || url.protocol === "http:";
46
+ } catch {
47
+ return false;
48
+ }
49
+ },
50
+ { message: "url must be the exact http(s) URL attached to sessions" },
51
+ ),
52
+ );
53
+ const exactToolName = /* @__PURE__ */ defineSchema(() =>
54
+ z
55
+ .string()
56
+ .min(1)
57
+ .max(512)
58
+ .refine((name) => name !== "*" && name === name.trim(), {
59
+ message: "Tool names must be exact and cannot use the server-default wildcard.",
60
+ }),
61
+ );
62
+
63
+ export const SessionMcpToolPermissionsQuery = /* @__PURE__ */ defineSchema(() =>
64
+ z.object({ serverId: sessionMcpServerId, url: sessionMcpServerUrl }).strict(),
65
+ );
66
+ export type SessionMcpToolPermissionsQuery = z.infer<typeof SessionMcpToolPermissionsQuery>;
67
+
68
+ /** Saved choices only. Tools without a rule follow `defaultPermission`, then
69
+ * the server's recommendation (the tool's `opengeni/recommendedPermission`
70
+ * `_meta`, or the attaching session's `requireApproval`), then Allow. */
71
+ export const SessionMcpToolPermissionsResponse = /* @__PURE__ */ defineSchema(() =>
72
+ z.object({
73
+ connectionId: primitives.string,
74
+ serverId: primitives.string,
75
+ defaultPermission: ConnectorToolPermission.nullable(),
76
+ tools: z.array(z.object({ toolName: primitives.string, permission: ConnectorToolPermission })),
77
+ revision: primitives.string,
78
+ canManage: primitives.boolean,
79
+ appliesTo: z.literal("next_attempt"),
80
+ }),
81
+ );
82
+ export type SessionMcpToolPermissionsResponse = z.infer<typeof SessionMcpToolPermissionsResponse>;
83
+
84
+ export const UpdateSessionMcpToolPermissionsRequest = /* @__PURE__ */ defineSchema(() =>
85
+ z.discriminatedUnion("target", [
86
+ z
87
+ .object({
88
+ serverId: sessionMcpServerId,
89
+ url: sessionMcpServerUrl,
90
+ target: z.literal("default"),
91
+ permission: ConnectorToolPermission.nullable(),
92
+ expectedRevision: z.string().optional(),
93
+ })
94
+ .strict(),
95
+ z
96
+ .object({
97
+ serverId: sessionMcpServerId,
98
+ url: sessionMcpServerUrl,
99
+ target: z.literal("tools"),
100
+ toolNames: z.array(exactToolName).min(1).max(MCP_MAX_CATALOG_TOOL_ENTRIES),
101
+ permission: ConnectorToolPermission.nullable(),
102
+ expectedRevision: z.string().optional(),
103
+ })
104
+ .strict(),
105
+ ]),
106
+ );
107
+ export type UpdateSessionMcpToolPermissionsRequest = z.infer<
108
+ typeof UpdateSessionMcpToolPermissionsRequest
109
+ >;
@@ -1,38 +1,44 @@
1
+ import * as primitives from "./primitives";
2
+ import { defineSchema } from "./define-schema";
1
3
  import { z } from "zod";
2
4
 
3
5
  /** Literal Unicode case-insensitive search, without trimming or normalization. */
4
- export const SessionMessageSearchRequest = z
5
- .object({
6
- query: z.string().min(1).max(200),
7
- sessionId: z.string().uuid().optional(),
8
- groupBy: z.literal("session").optional(),
9
- archiveStatus: z.enum(["active", "archived", "all"]).optional(),
10
- limit: z.number().int().min(1).max(50).optional(),
11
- cursor: z.string().min(1).max(4096).optional(),
12
- })
13
- .strict()
14
- .refine((request) => !request.groupBy || !request.sessionId, {
15
- message: "groupBy=session is only supported for workspace search without sessionId",
16
- path: ["groupBy"],
17
- });
6
+ export const SessionMessageSearchRequest = /* @__PURE__ */ defineSchema(() =>
7
+ z
8
+ .object({
9
+ query: z.string().min(1).max(200),
10
+ sessionId: primitives.optionalUuid,
11
+ groupBy: z.literal("session").optional(),
12
+ archiveStatus: z.enum(["active", "archived", "all"]).optional(),
13
+ limit: z.number().int().min(1).max(50).optional(),
14
+ cursor: z.string().min(1).max(4096).optional(),
15
+ })
16
+ .strict()
17
+ .refine((request) => !request.groupBy || !request.sessionId, {
18
+ message: "groupBy=session is only supported for workspace search without sessionId",
19
+ path: ["groupBy"],
20
+ }),
21
+ );
18
22
  export type SessionMessageSearchRequest = z.infer<typeof SessionMessageSearchRequest>;
19
23
 
20
- export const SessionMessageSearchMatch = z.object({
21
- sessionId: z.string().uuid(),
22
- sessionTitle: z.string().nullable(),
23
- eventId: z.string().uuid(),
24
- sequence: z.number().int().positive(),
25
- turnId: z.string().uuid().nullable(),
26
- role: z.enum(["user", "assistant"]),
27
- messageId: z.string().nullable(),
28
- /** All offsets are zero-based UTF-16 code units; ends are exclusive. */
29
- messageMatchOffset: z.number().int().nonnegative(),
30
- snippet: z.object({
31
- text: z.string(),
32
- matchStart: z.number().int().nonnegative(),
33
- matchEnd: z.number().int().nonnegative(),
24
+ export const SessionMessageSearchMatch = /* @__PURE__ */ defineSchema(() =>
25
+ z.object({
26
+ sessionId: primitives.uuid,
27
+ sessionTitle: primitives.nullableString,
28
+ eventId: primitives.uuid,
29
+ sequence: primitives.positiveInteger,
30
+ turnId: primitives.nullableUuid,
31
+ role: z.enum(["user", "assistant"]),
32
+ messageId: primitives.nullableString,
33
+ /** All offsets are zero-based UTF-16 code units; ends are exclusive. */
34
+ messageMatchOffset: primitives.nonnegativeInteger,
35
+ snippet: z.object({
36
+ text: primitives.string,
37
+ matchStart: primitives.nonnegativeInteger,
38
+ matchEnd: primitives.nonnegativeInteger,
39
+ }),
34
40
  }),
35
- });
41
+ );
36
42
  export type SessionMessageSearchMatch = z.infer<typeof SessionMessageSearchMatch>;
37
43
 
38
44
  /** A bounded scan page, not necessarily a full page of matches. Continue even
@@ -42,13 +48,15 @@ export type SessionMessageSearchMatch = z.infer<typeof SessionMessageSearchMatch
42
48
  * With groupBy=session, matches and both matched counts describe one first-hit
43
49
  * representative per matching session, not full message/occurrence totals.
44
50
  */
45
- export const SessionMessageSearchResponse = z.object({
46
- matches: z.array(SessionMessageSearchMatch).max(50),
47
- nextCursor: z.string().nullable(),
48
- hasMore: z.boolean(),
49
- scannedMessages: z.number().int().nonnegative(),
50
- matchedMessageCount: z.number().int().nonnegative(),
51
- matchedOccurrenceCount: z.number().int().nonnegative(),
52
- countIsExact: z.boolean(),
53
- });
51
+ export const SessionMessageSearchResponse = /* @__PURE__ */ defineSchema(() =>
52
+ z.object({
53
+ matches: z.array(SessionMessageSearchMatch).max(50),
54
+ nextCursor: primitives.nullableString,
55
+ hasMore: primitives.boolean,
56
+ scannedMessages: primitives.nonnegativeInteger,
57
+ matchedMessageCount: primitives.nonnegativeInteger,
58
+ matchedOccurrenceCount: primitives.nonnegativeInteger,
59
+ countIsExact: primitives.boolean,
60
+ }),
61
+ );
54
62
  export type SessionMessageSearchResponse = z.infer<typeof SessionMessageSearchResponse>;
@@ -0,0 +1,58 @@
1
+ import * as primitives from "./primitives";
2
+ import { defineSchema } from "./define-schema";
3
+ import { z } from "zod";
4
+
5
+ /** Conversational context only. Never an authority or an implicit dispatch destination. */
6
+ export const SessionTargetContext = /* @__PURE__ */ defineSchema(() =>
7
+ z
8
+ .object({
9
+ version: primitives.nonnegativeInteger,
10
+ sessionId: primitives.nullableUuid,
11
+ operationId: primitives.nullableUuid,
12
+ })
13
+ .strict(),
14
+ );
15
+ export type SessionTargetContext = z.infer<typeof SessionTargetContext>;
16
+
17
+ export const SetSessionTargetRequest = /* @__PURE__ */ defineSchema(() =>
18
+ z
19
+ .object({
20
+ sessionId: primitives.nullableUuid,
21
+ expectedVersion: primitives.nonnegativeInteger,
22
+ operationId: primitives.uuid,
23
+ })
24
+ .strict(),
25
+ );
26
+ export type SetSessionTargetRequest = z.infer<typeof SetSessionTargetRequest>;
27
+
28
+ export const SESSION_TARGET_CONTEXT_KEY = "conversationTargetV1";
29
+
30
+ export function sessionTargetContext(metadata: Record<string, unknown>): SessionTargetContext {
31
+ return SessionTargetContext.parse(
32
+ metadata[SESSION_TARGET_CONTEXT_KEY] ?? {
33
+ version: 0,
34
+ sessionId: null,
35
+ operationId: null,
36
+ },
37
+ );
38
+ }
39
+
40
+ /** CAS plus exact retry replay; an old retry cannot restore a subsequently cleared target. */
41
+ export function nextSessionTargetContext(
42
+ current: SessionTargetContext,
43
+ request: SetSessionTargetRequest,
44
+ ): SessionTargetContext {
45
+ SetSessionTargetRequest.parse(request);
46
+ if (current.operationId === request.operationId) {
47
+ if (current.sessionId !== request.sessionId || current.version !== request.expectedVersion + 1)
48
+ throw new Error("Session target operation was reused with different input");
49
+ return current;
50
+ }
51
+ if (current.version !== request.expectedVersion)
52
+ throw new Error("Session target changed; read it again");
53
+ return {
54
+ version: current.version + 1,
55
+ sessionId: request.sessionId,
56
+ operationId: request.operationId,
57
+ };
58
+ }
@@ -18,7 +18,7 @@ export const AUTOMATIC_SESSION_TITLE_FALLBACK = "New conversation";
18
18
  // Session creation accepts a body far larger than a navigation label. Bound
19
19
  // the source before any replace/split/normalization so a persisted large prompt
20
20
  // cannot amplify memory or CPU on every client render.
21
- const PROMPT_PREVIEW_SCAN_MAX_CODE_UNITS = 4_096;
21
+ export const PROMPT_PREVIEW_SCAN_MAX_CODE_UNITS = 4_096;
22
22
 
23
23
  const SESSION_ID_PATTERN =
24
24
  /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu;
@@ -196,7 +196,9 @@ const TITLE_LABEL_PATTERN =
196
196
  /^(?:(?:suggested|generated|concise)\s+)?(?:(?:session|chat|conversation|task)\s+)?title\s*[:\-–—]\s*/iu;
197
197
 
198
198
  const LEADING_BOILERPLATE_PATTERNS = [
199
- /^(?:hi|hello|hey)(?:\s+there)?\s*[,!:.\-–—]*\s*/iu,
199
+ // Require a real separator, not ASCII-only \b: History, HelloWorld and
200
+ // Unicode word continuations are title content, as is "thereabouts" after Hi.
201
+ /^(?:hi|hello|hey)(?:\s+there)?(?=$|[\s,!:.\-–—])\s*[,!:.\-–—]*\s*/iu,
200
202
  /^(?:i\s+(?:would\s+like|want|need)\s+you\s+to|i['’]d\s+like\s+you\s+to)\s+/iu,
201
203
  /^(?:please\s+)?(?:can|could|would|will)\s+you\s+/iu,
202
204
  /^(?:your|the)\s+(?:task|job)\s+is\s+to\s+/iu,
@@ -324,6 +326,39 @@ function automaticTitleGraphemes(value: string): string[] {
324
326
  return graphemes;
325
327
  }
326
328
 
329
+ /**
330
+ * Model control tokens such as `<|fim_suffix|>`, `<|im_end|>` or `<|end▁of▁sentence|>`
331
+ * sometimes leak into generated text. They are never title content: each one
332
+ * becomes a line break, so a title keeps only its first real segment.
333
+ */
334
+ const MODEL_CONTROL_TOKEN = /<[||][^<>||\s]{1,64}[||]>/gu;
335
+
336
+ function withoutModelControlTokens(value: string): string {
337
+ return value.replace(MODEL_CONTROL_TOKEN, "\n");
338
+ }
339
+
340
+ /**
341
+ * Read-side cleanup for a durable title. Automatic titles written before
342
+ * control-token stripping can still hold a token ("Release plan<|fim_suffix|>");
343
+ * those keep only their first real segment, and a token-only title reads as no
344
+ * title. Human renames and titles without a token are returned unchanged.
345
+ */
346
+ export function cleanStoredSessionTitle(
347
+ title: string | null | undefined,
348
+ titleSource: string | null | undefined,
349
+ ): string | null {
350
+ if (title === null || title === undefined) return null;
351
+ if (titleSource === "user") return title;
352
+ const stripped = withoutModelControlTokens(title);
353
+ if (stripped === title) return title;
354
+ return (
355
+ stripped
356
+ .split("\n")
357
+ .map((part) => part.trim())
358
+ .find(Boolean) ?? null
359
+ );
360
+ }
361
+
327
362
  /** Bound an already-normalized automatic-title candidate without splitting graphemes. */
328
363
  export function boundAutomaticSessionTitle(value: string): string {
329
364
  const words = value.split(/\s+/u);
@@ -345,7 +380,7 @@ export function boundAutomaticSessionTitle(value: string): string {
345
380
  * title (normally {@link AUTOMATIC_SESSION_TITLE_FALLBACK}) in that case.
346
381
  */
347
382
  export function normalizeAutomaticSessionTitle(value: string): string | null {
348
- const firstLine = value
383
+ const firstLine = withoutModelControlTokens(value)
349
384
  .replace(/[\u0000-\u001f\u007f-\u009f]+/gu, "\n")
350
385
  .split(/\n+/u)
351
386
  .map((line) => line.trim())
@@ -450,7 +485,8 @@ export function deriveSessionDisplayTitle(
450
485
  return title || automaticSessionReferenceTitle(input.id);
451
486
  }
452
487
  if (title && !sessionTitleIsPending(input)) {
453
- return title;
488
+ const clean = cleanStoredSessionTitle(title, input.titleSource)?.trim();
489
+ if (clean) return clean;
454
490
  }
455
491
 
456
492
  for (const key of options.metadataKeys ?? []) {
@@ -1,21 +1,29 @@
1
+ import * as primitives from "./primitives";
2
+ import { defineSchema } from "./define-schema";
1
3
  import { z } from "zod";
2
4
 
3
- export const SessionStatus = z.enum([
4
- "queued",
5
- "running",
6
- "idle",
7
- "requires_action",
8
- "recovering",
9
- "waiting_capacity",
10
- "failed",
11
- "cancelled",
12
- ]);
5
+ export const SessionStatus = /* @__PURE__ */ defineSchema(() =>
6
+ z.enum([
7
+ "queued",
8
+ "running",
9
+ "idle",
10
+ "requires_action",
11
+ "recovering",
12
+ "waiting_capacity",
13
+ "failed",
14
+ "cancelled",
15
+ ]),
16
+ );
13
17
  export type SessionStatus = z.infer<typeof SessionStatus>;
14
18
 
15
- export const SessionGoalStatus = z.enum(["active", "paused", "completed"]);
19
+ export const SessionGoalStatus = /* @__PURE__ */ defineSchema(() =>
20
+ z.enum(["active", "paused", "completed"]),
21
+ );
16
22
  export type SessionGoalStatus = z.infer<typeof SessionGoalStatus>;
17
23
 
18
24
  /** Physical ceiling of the PostgreSQL integer columns that persist depth policy. */
19
25
  export const MAX_NESTED_AGENT_DEPTH = 2_147_483_647;
20
- export const NestedAgentDepthValue = z.number().int().nonnegative().max(MAX_NESTED_AGENT_DEPTH);
26
+ export const NestedAgentDepthValue = /* @__PURE__ */ defineSchema(() =>
27
+ primitives.nonnegativeInteger.max(MAX_NESTED_AGENT_DEPTH),
28
+ );
21
29
  export type NestedAgentDepthValue = z.infer<typeof NestedAgentDepthValue>;
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Browser/React Native-safe session usage limit helpers. Deliberately free of
3
+ * the zod runtime so synchronous timeline projection can use it; contract
4
+ * parity tests keep it aligned with `session-usage-limits.ts`.
5
+ */
6
+
7
+ /** `turn.completed.segmentLimit` for a stop caused by a task usage limit. */
8
+ export const SESSION_USAGE_LIMIT_SEGMENT = "session_usage_limit" as const;
9
+ /** `SessionGoal.pausedReason` for a goal paused by a task usage limit. */
10
+ export const SESSION_USAGE_LIMIT_GOAL_PAUSED_REASON = "session_usage_limit" as const;
11
+
12
+ const BASIS = "model_api_equivalent_v1";
13
+ const MAX_LIMIT_MICROS = 10_000_000 * 1_000_000;
14
+ const MESSAGE_MAX_UTF8_BYTES = 1_024;
15
+ const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
16
+
17
+ export type ParsedSessionUsageLimitReachedRefusal = {
18
+ code: "session_usage_limit_reached";
19
+ basis: "model_api_equivalent_v1";
20
+ rootSessionId: string;
21
+ limitMicros: number;
22
+ usedMicros: number;
23
+ message: string;
24
+ };
25
+
26
+ function record(value: unknown): Record<string, unknown> | null {
27
+ return value !== null && typeof value === "object" && !Array.isArray(value)
28
+ ? (value as Record<string, unknown>)
29
+ : null;
30
+ }
31
+
32
+ function micros(value: unknown, max = Number.MAX_SAFE_INTEGER): value is number {
33
+ return typeof value === "number" && Number.isSafeInteger(value) && value >= 0 && value <= max;
34
+ }
35
+
36
+ function boundedMessage(value: string): string {
37
+ const normalized = value
38
+ .slice(0, MESSAGE_MAX_UTF8_BYTES * 2)
39
+ .replace(/[\u0000-\u001f\u007f]+/g, " ")
40
+ .trim();
41
+ const bytes = new TextEncoder().encode(normalized);
42
+ let end = Math.min(bytes.length, MESSAGE_MAX_UTF8_BYTES);
43
+ while (end > 0 && end < bytes.length && (bytes[end]! & 0xc0) === 0x80) end -= 1;
44
+ return new TextDecoder().decode(bytes.slice(0, end)).trim();
45
+ }
46
+
47
+ /**
48
+ * Select only the public refusal fields from an API error body (fields may sit
49
+ * in `details`), a `turn.completed` payload's `sessionUsageLimit` record, or a
50
+ * refusal object. Anything malformed returns null instead of a guessed amount.
51
+ */
52
+ export function parseSessionUsageLimitReachedRefusal(
53
+ value: unknown,
54
+ ): ParsedSessionUsageLimitReachedRefusal | null {
55
+ const outer = record(value);
56
+ if (!outer) return null;
57
+ const source = record(outer.sessionUsageLimit) ?? outer;
58
+ if (source.code !== "session_usage_limit_reached") return null;
59
+ const fields = record(source.details) ?? source;
60
+ if (
61
+ fields.basis !== BASIS ||
62
+ typeof fields.rootSessionId !== "string" ||
63
+ !UUID.test(fields.rootSessionId) ||
64
+ !micros(fields.limitMicros, MAX_LIMIT_MICROS) ||
65
+ !micros(fields.usedMicros)
66
+ ) {
67
+ return null;
68
+ }
69
+ const refusal = {
70
+ code: "session_usage_limit_reached" as const,
71
+ basis: BASIS as "model_api_equivalent_v1",
72
+ rootSessionId: fields.rootSessionId.toLowerCase(),
73
+ limitMicros: fields.limitMicros,
74
+ usedMicros: fields.usedMicros,
75
+ message: "",
76
+ };
77
+ const message = typeof source.message === "string" ? boundedMessage(source.message) : "";
78
+ return { ...refusal, message: message || sessionUsageLimitReachedMessage(refusal) };
79
+ }
80
+
81
+ /**
82
+ * "$12.34" for known amounts, "<$0.01" for a positive amount under a cent.
83
+ * Callers must not pass unknown usage: render "Preparing usage" or
84
+ * "Usage unavailable" instead of a dollar figure.
85
+ */
86
+ export function formatSessionUsageMicros(value: number): string {
87
+ if (value > 0 && value < 10_000) return "<$0.01";
88
+ const dollars = value / 1_000_000;
89
+ return `$${dollars.toLocaleString("en-US", {
90
+ minimumFractionDigits: 2,
91
+ maximumFractionDigits: 2,
92
+ })}`;
93
+ }
94
+
95
+ /** Fixed, bounded wording: no reset date, purchase remedy or invoice claim. */
96
+ export function sessionUsageLimitReachedMessage(refusal: {
97
+ limitMicros: number;
98
+ usedMicros: number;
99
+ }): string {
100
+ return `This task's usage limit is reached (${formatSessionUsageMicros(refusal.usedMicros)} of ${formatSessionUsageMicros(refusal.limitMicros)} API-equivalent model usage). A person can raise or remove the limit to continue.`;
101
+ }