@opengeni/contracts 3.1.0-canary.2 → 3.1.2

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 (429) hide show
  1. package/dist/agent-authored-durable-text.d.ts +9 -9
  2. package/dist/agent-config.d.ts +971 -0
  3. package/dist/agent-instruction-changes.d.ts +0 -2
  4. package/dist/allowance-refusal.d.ts +9 -0
  5. package/dist/allowance-refusal.js +50 -0
  6. package/dist/allowance-refusal.js.map +1 -0
  7. package/dist/analytics-consent-report.d.ts +19 -0
  8. package/dist/analytics-consent-report.js +10 -0
  9. package/dist/analytics-consent-report.js.map +1 -0
  10. package/dist/api-key-presets.d.ts +19 -0
  11. package/dist/artifact-catalog.d.ts +188 -0
  12. package/dist/artifacts.d.ts +86 -0
  13. package/dist/atlassian-native-retirement.d.ts +16 -0
  14. package/dist/atlassian-native-retirement.js +30 -0
  15. package/dist/atlassian-native-retirement.js.map +1 -0
  16. package/dist/atlassian.d.ts +1 -0
  17. package/dist/atlassian.js +34 -19
  18. package/dist/browser-storage.d.ts +5 -0
  19. package/dist/browser-storage.js +9 -0
  20. package/dist/browser-storage.js.map +1 -0
  21. package/dist/bundled-skills.d.ts +24 -1
  22. package/dist/canonical-human-identities.js +2 -1
  23. package/dist/chunk-2ZIHHL72.js +153 -0
  24. package/dist/chunk-2ZIHHL72.js.map +1 -0
  25. package/dist/{chunk-5LYFSZ7O.js → chunk-352X6ENP.js} +31 -31
  26. package/dist/chunk-4JGHSSB7.js +11 -0
  27. package/dist/chunk-4JGHSSB7.js.map +1 -0
  28. package/dist/chunk-4QO6GJUX.js +85 -0
  29. package/dist/chunk-4QO6GJUX.js.map +1 -0
  30. package/dist/chunk-4VDMHLLL.js +49 -0
  31. package/dist/chunk-4VDMHLLL.js.map +1 -0
  32. package/dist/chunk-56SNIMDO.js +9 -0
  33. package/dist/chunk-56SNIMDO.js.map +1 -0
  34. package/dist/chunk-6C2HKFTU.js +207 -0
  35. package/dist/chunk-6C2HKFTU.js.map +1 -0
  36. package/dist/chunk-6IXO76Z6.js +72 -0
  37. package/dist/chunk-6IXO76Z6.js.map +1 -0
  38. package/dist/chunk-7272KVWZ.js +60 -0
  39. package/dist/chunk-7272KVWZ.js.map +1 -0
  40. package/dist/{chunk-7ABONTXE.js → chunk-E3GGUBHS.js} +49 -5
  41. package/dist/chunk-E3GGUBHS.js.map +1 -0
  42. package/dist/chunk-EFZYKUE2.js +767 -0
  43. package/dist/chunk-EFZYKUE2.js.map +1 -0
  44. package/dist/chunk-EKWNTOG3.js +154 -0
  45. package/dist/chunk-EKWNTOG3.js.map +1 -0
  46. package/dist/chunk-HABQ7ADB.js +234 -0
  47. package/dist/chunk-HABQ7ADB.js.map +1 -0
  48. package/dist/chunk-HRRU4QPI.js +91 -0
  49. package/dist/chunk-HRRU4QPI.js.map +1 -0
  50. package/dist/{chunk-3SIZGL3O.js → chunk-IK36LXKC.js} +18 -2
  51. package/dist/chunk-IK36LXKC.js.map +1 -0
  52. package/dist/{chunk-TXTQIYCV.js → chunk-ILJ72KPO.js} +56 -3
  53. package/dist/chunk-ILJ72KPO.js.map +1 -0
  54. package/dist/chunk-J4HQ3UKY.js +93 -0
  55. package/dist/chunk-J4HQ3UKY.js.map +1 -0
  56. package/dist/chunk-KHHZTBP7.js +11 -0
  57. package/dist/chunk-KHHZTBP7.js.map +1 -0
  58. package/dist/{chunk-WYBDERIY.js → chunk-LZ2LAHIX.js} +47 -41
  59. package/dist/chunk-LZ2LAHIX.js.map +1 -0
  60. package/dist/chunk-NDZHPTCL.js +400 -0
  61. package/dist/chunk-NDZHPTCL.js.map +1 -0
  62. package/dist/chunk-OF6OKOBF.js +54793 -0
  63. package/dist/chunk-OF6OKOBF.js.map +1 -0
  64. package/dist/chunk-OL23ARTF.js +94 -0
  65. package/dist/chunk-OL23ARTF.js.map +1 -0
  66. package/dist/chunk-PUIUXIOL.js +189 -0
  67. package/dist/chunk-PUIUXIOL.js.map +1 -0
  68. package/dist/{chunk-Y3KNXVTD.js → chunk-RMWXDZEO.js} +128 -21
  69. package/dist/chunk-RMWXDZEO.js.map +1 -0
  70. package/dist/{chunk-MRWYRAS5.js → chunk-SHO4YO4B.js} +27 -35
  71. package/dist/chunk-SHO4YO4B.js.map +1 -0
  72. package/dist/chunk-SWRN2DJ3.js +153 -0
  73. package/dist/chunk-SWRN2DJ3.js.map +1 -0
  74. package/dist/chunk-TCXCRBPF.js +267 -0
  75. package/dist/chunk-TCXCRBPF.js.map +1 -0
  76. package/dist/chunk-TLU3UEMD.js +324 -0
  77. package/dist/chunk-TLU3UEMD.js.map +1 -0
  78. package/dist/chunk-TSWWZMUS.js +186 -0
  79. package/dist/chunk-TSWWZMUS.js.map +1 -0
  80. package/dist/{chunk-PX3VCKAU.js → chunk-WVCFSOUZ.js} +1 -1
  81. package/dist/{chunk-PX3VCKAU.js.map → chunk-WVCFSOUZ.js.map} +1 -1
  82. package/dist/chunk-XDLAGX66.js +127 -0
  83. package/dist/chunk-XDLAGX66.js.map +1 -0
  84. package/dist/chunk-YKZ4WU4P.js +33 -0
  85. package/dist/chunk-YKZ4WU4P.js.map +1 -0
  86. package/dist/{chunk-O5LEQHDM.js → chunk-Z7WEVGCL.js} +3 -3
  87. package/dist/{chunk-YBW5JSA3.js → chunk-ZDCRWCGZ.js} +119 -101
  88. package/dist/chunk-ZDCRWCGZ.js.map +1 -0
  89. package/dist/claude-provider-account-authority.d.ts +18 -0
  90. package/dist/claude-subscription-oauth.d.ts +42 -0
  91. package/dist/claude-subscription-usage.d.ts +159 -0
  92. package/dist/client-error-report.d.ts +158 -0
  93. package/dist/client-error-report.js +164 -0
  94. package/dist/client-error-report.js.map +1 -0
  95. package/dist/code-search.d.ts +52 -0
  96. package/dist/code-search.js +40 -0
  97. package/dist/code-search.js.map +1 -0
  98. package/dist/codex-provider-account-authority.js +20 -12
  99. package/dist/codex-provider-account-authority.js.map +1 -1
  100. package/dist/company-profile.d.ts +144 -6
  101. package/dist/connect.d.ts +37 -0
  102. package/dist/connect.js +216 -159
  103. package/dist/connect.js.map +1 -1
  104. package/dist/connection-account-label.d.ts +2 -0
  105. package/dist/connection-account-label.js +35 -0
  106. package/dist/connection-account-label.js.map +1 -0
  107. package/dist/connection-authority.d.ts +9 -317
  108. package/dist/connection-authority.js +37 -42
  109. package/dist/connector-attachments.js +2 -1
  110. package/dist/connector-destinations.js +2 -1
  111. package/dist/connector-tool-permissions.d.ts +137 -0
  112. package/dist/cua-desktop-tools.d.ts +17 -0
  113. package/dist/define-schema.d.ts +8 -0
  114. package/dist/direct-model-provider.d.ts +36 -0
  115. package/dist/editable-artifact-codec-registry.js +5 -5
  116. package/dist/editable-artifact-committed-transaction.js +3 -2
  117. package/dist/editable-artifact-live.js +5 -5
  118. package/dist/editable-artifact-serialized-commit.js +6 -6
  119. package/dist/editable-artifact-versions.d.ts +7 -1
  120. package/dist/editable-artifact-versions.js +1 -1
  121. package/dist/editable-artifacts.js +62 -56
  122. package/dist/event-preview.d.ts +22 -0
  123. package/dist/external-identities.d.ts +138 -0
  124. package/dist/external-identities.js +9 -4
  125. package/dist/first-party-tool-authorization.d.ts +815 -0
  126. package/dist/github-repository-contracts.js +60 -43
  127. package/dist/github-repository-contracts.js.map +1 -1
  128. package/dist/google-drive.d.ts +2 -1
  129. package/dist/google-drive.js +305 -238
  130. package/dist/google-drive.js.map +1 -1
  131. package/dist/host-mcp-bindings.d.ts +5 -0
  132. package/dist/host-mcp-bindings.js +233 -170
  133. package/dist/host-mcp-bindings.js.map +1 -1
  134. package/dist/image-generation.d.ts +1 -0
  135. package/dist/index.d.ts +16761 -5946
  136. package/dist/index.js +1973 -260
  137. package/dist/insights-usage.d.ts +877 -0
  138. package/dist/insights-usage.js +559 -0
  139. package/dist/insights-usage.js.map +1 -0
  140. package/dist/interaction.d.ts +1176 -829
  141. package/dist/knowledge-entries.d.ts +81 -2
  142. package/dist/knowledge-preparation.d.ts +239 -0
  143. package/dist/managed-auth-session-sets.d.ts +7 -0
  144. package/dist/managed-auth-session-sets.js +198 -132
  145. package/dist/managed-auth-session-sets.js.map +1 -1
  146. package/dist/managed-sign-in-methods.d.ts +56 -0
  147. package/dist/managed-sign-in-methods.js +64 -0
  148. package/dist/managed-sign-in-methods.js.map +1 -0
  149. package/dist/mcp-catalog-limits.d.ts +2 -0
  150. package/dist/mcp-oauth.d.ts +2 -2
  151. package/dist/mcp-structured-content.d.ts +25 -0
  152. package/dist/modal-native-proof-v2.d.ts +587 -0
  153. package/dist/modal-native-proof-v2.js +38 -0
  154. package/dist/modal-native-proof-v2.js.map +1 -0
  155. package/dist/model-account-choice.d.ts +235 -0
  156. package/dist/model-account-settings.d.ts +422 -0
  157. package/dist/model-availability.d.ts +15 -0
  158. package/dist/model-connection-access.d.ts +13 -0
  159. package/dist/model-context-inspector.d.ts +98 -0
  160. package/dist/model-display.d.ts +43 -0
  161. package/dist/model-display.js +17 -0
  162. package/dist/model-display.js.map +1 -0
  163. package/dist/model-picker-order.d.ts +3 -1
  164. package/dist/model-picker-order.js +3 -0
  165. package/dist/model-picker-order.js.map +1 -1
  166. package/dist/organization-access.d.ts +412 -0
  167. package/dist/organization-access.js +39 -0
  168. package/dist/organization-access.js.map +1 -0
  169. package/dist/organization-integration-policy.d.ts +27 -0
  170. package/dist/organization-membership-lifecycle.d.ts +38 -0
  171. package/dist/organization-model-usage.d.ts +146 -0
  172. package/dist/organization-model-usage.js +78 -0
  173. package/dist/organization-model-usage.js.map +1 -0
  174. package/dist/organization-recovery.js +2 -1
  175. package/dist/organization-usage.d.ts +138 -0
  176. package/dist/permissions.d.ts +18 -0
  177. package/dist/personal-github.d.ts +1 -0
  178. package/dist/personal-github.js +199 -144
  179. package/dist/personal-github.js.map +1 -1
  180. package/dist/prepared-mcp-setup.d.ts +54 -0
  181. package/dist/prepared-mcp-setup.js +12 -0
  182. package/dist/prepared-mcp-setup.js.map +1 -0
  183. package/dist/product-analytics.d.ts +116 -0
  184. package/dist/product-lifecycle-facts.d.ts +73 -0
  185. package/dist/remember.d.ts +98 -6
  186. package/dist/retained-output.d.ts +8 -0
  187. package/dist/sandbox-file-artifacts.d.ts +1 -0
  188. package/dist/sandbox-provider-command.d.ts +91 -1
  189. package/dist/sandbox-recovery.d.ts +146 -0
  190. package/dist/secret-generator.d.ts +44 -0
  191. package/dist/secret-references.d.ts +90 -0
  192. package/dist/secret-resolution.d.ts +111 -0
  193. package/dist/secret-totp.d.ts +41 -0
  194. package/dist/session-final-reply.d.ts +6 -0
  195. package/dist/session-final-reply.js +9 -0
  196. package/dist/session-final-reply.js.map +1 -0
  197. package/dist/session-goal-reports.d.ts +21 -0
  198. package/dist/session-history-import.d.ts +1272 -0
  199. package/dist/session-list-entries.d.ts +4 -0
  200. package/dist/session-list-entries.js +56 -0
  201. package/dist/session-list-entries.js.map +1 -0
  202. package/dist/session-mcp-projections.d.ts +6 -0
  203. package/dist/session-mcp-tool-permissions.d.ts +62 -0
  204. package/dist/session-message-search.d.ts +68 -0
  205. package/dist/session-target.d.ts +18 -0
  206. package/dist/session-titles.d.ts +8 -0
  207. package/dist/session-titles.js +5 -1
  208. package/dist/session-usage-limit-refusal.d.ts +34 -0
  209. package/dist/session-usage-limit-refusal.js +15 -0
  210. package/dist/session-usage-limit-refusal.js.map +1 -0
  211. package/dist/session-usage-limits.d.ts +127 -0
  212. package/dist/session-usage-limits.js +41 -0
  213. package/dist/session-usage-limits.js.map +1 -0
  214. package/dist/signup-attribution.d.ts +39 -0
  215. package/dist/site-data.d.ts +286 -0
  216. package/dist/site-operations.d.ts +39 -0
  217. package/dist/site-publishing.d.ts +778 -0
  218. package/dist/site-session-http.d.ts +89 -4
  219. package/dist/site-session-http.js +25 -1
  220. package/dist/site-sql.d.ts +421 -0
  221. package/dist/skill-catalog-context.d.ts +7 -0
  222. package/dist/skill-files.d.ts +1 -1
  223. package/dist/skill-use.d.ts +61 -0
  224. package/dist/skills.d.ts +15 -0
  225. package/dist/slack-bot-scopes.d.ts +17 -12
  226. package/dist/slack-bot-scopes.js +10 -3
  227. package/dist/slack-rest-mcp.d.ts +36 -0
  228. package/dist/slack-rest-mcp.js +25 -0
  229. package/dist/slack-rest-mcp.js.map +1 -0
  230. package/dist/spreadsheet-artifact-commands.d.ts +14 -1
  231. package/dist/spreadsheet-artifact-commands.js +8 -2
  232. package/dist/spreadsheet-artifact-query.d.ts +13 -6
  233. package/dist/spreadsheet-artifact-query.js +3 -3
  234. package/dist/subscription-account-actions.d.ts +64 -0
  235. package/dist/subscription-account-pools.d.ts +292 -0
  236. package/dist/subscription-personal-authority-v2.d.ts +28 -0
  237. package/dist/subscription-personal-authority-v2.js +12 -0
  238. package/dist/subscription-personal-authority-v2.js.map +1 -0
  239. package/dist/tool-action-review.d.ts +132 -0
  240. package/dist/tool-catalog.d.ts +408 -0
  241. package/dist/tool-policy.d.ts +5 -0
  242. package/dist/tool-review-presentation.d.ts +12 -0
  243. package/dist/tool-review-presentation.js +17 -0
  244. package/dist/tool-review-presentation.js.map +1 -0
  245. package/dist/transcription-recordings.d.ts +21 -0
  246. package/dist/turn-serving-policy.d.ts +221 -0
  247. package/dist/usage-allowances.d.ts +314 -0
  248. package/dist/usage-allowances.js +52 -0
  249. package/dist/usage-allowances.js.map +1 -0
  250. package/dist/vaults.d.ts +1286 -0
  251. package/dist/video-generation.d.ts +3 -0
  252. package/dist/video-generation.js +2 -1
  253. package/dist/workspace-integration-wire.d.ts +36 -0
  254. package/dist/workspace-integration-wire.js +23 -0
  255. package/dist/workspace-integration-wire.js.map +1 -0
  256. package/dist/workspace-integrations.d.ts +1028 -0
  257. package/dist/xai-provider-account-authority.js +2 -1
  258. package/package.json +93 -5
  259. package/src/agent-authored-durable-text.ts +14 -11
  260. package/src/agent-config.ts +1698 -0
  261. package/src/agent-instruction-changes.ts +91 -74
  262. package/src/agent-learning.ts +94 -67
  263. package/src/agent-topology.ts +57 -52
  264. package/src/allowance-refusal.ts +81 -0
  265. package/src/analytics-consent-report.ts +20 -0
  266. package/src/api-key-presets.ts +28 -0
  267. package/src/artifact-catalog.ts +82 -0
  268. package/src/artifacts.ts +299 -227
  269. package/src/atlassian-native-retirement.ts +33 -0
  270. package/src/atlassian.ts +135 -108
  271. package/src/browser-storage.ts +10 -0
  272. package/src/bundled-skills.ts +60 -17
  273. package/src/canonical-human-identities.ts +60 -58
  274. package/src/claude-provider-account-authority.ts +12 -0
  275. package/src/claude-subscription-oauth.ts +73 -0
  276. package/src/claude-subscription-usage.ts +68 -0
  277. package/src/client-error-report.ts +343 -0
  278. package/src/code-search.ts +105 -0
  279. package/src/codex-provider-account-authority.ts +21 -16
  280. package/src/company-brain-governed-writes.ts +255 -233
  281. package/src/company-brain.ts +164 -153
  282. package/src/company-profile.ts +365 -292
  283. package/src/connect.ts +212 -173
  284. package/src/connection-account-label.ts +46 -0
  285. package/src/connection-authority.ts +183 -364
  286. package/src/connector-attachments.ts +137 -122
  287. package/src/connector-destinations.ts +46 -42
  288. package/src/connector-tool-permissions.ts +117 -0
  289. package/src/cua-desktop-tools.gen.json +6512 -0
  290. package/src/cua-desktop-tools.linux.gen.json +6600 -0
  291. package/src/cua-desktop-tools.ts +36 -0
  292. package/src/cua-desktop-tools.windows.gen.json +6353 -0
  293. package/src/define-schema.ts +10 -0
  294. package/src/direct-model-provider.ts +108 -0
  295. package/src/editable-artifact-committed-transaction.ts +17 -0
  296. package/src/editable-artifact-versions.ts +7 -1
  297. package/src/event-preview.ts +53 -3
  298. package/src/external-identities.ts +249 -176
  299. package/src/feedback.ts +43 -30
  300. package/src/first-party-tool-authorization.ts +356 -0
  301. package/src/github-repository-contracts.ts +78 -64
  302. package/src/google-drive.ts +285 -234
  303. package/src/governed-learning-activation.ts +152 -131
  304. package/src/governed-learning-evaluator.ts +140 -133
  305. package/src/host-mcp-bindings.ts +252 -198
  306. package/src/image-generation.ts +104 -95
  307. package/src/index.ts +13235 -8687
  308. package/src/insights-usage.ts +727 -0
  309. package/src/interaction.ts +3070 -2326
  310. package/src/knowledge-entries.ts +361 -276
  311. package/src/knowledge-preparation.ts +57 -0
  312. package/src/knowledge.ts +246 -213
  313. package/src/managed-auth-session-sets.ts +220 -144
  314. package/src/managed-sign-in-methods.ts +52 -0
  315. package/src/mcp-catalog-limits.ts +2 -0
  316. package/src/mcp-oauth.ts +43 -34
  317. package/src/mcp-receipts.ts +192 -192
  318. package/src/mcp-structured-content.ts +81 -0
  319. package/src/memory-slack-delivery.ts +171 -142
  320. package/src/modal-native-proof-v2.ts +429 -0
  321. package/src/model-account-choice.ts +177 -0
  322. package/src/model-account-settings.ts +210 -0
  323. package/src/model-availability.ts +22 -0
  324. package/src/model-connection-access.ts +61 -14
  325. package/src/model-context-inspector.ts +133 -99
  326. package/src/model-display.ts +221 -0
  327. package/src/model-picker-order.ts +12 -1
  328. package/src/organization-access.ts +217 -0
  329. package/src/organization-integration-policy.ts +63 -0
  330. package/src/organization-membership-lifecycle.ts +528 -382
  331. package/src/organization-model-usage.ts +81 -0
  332. package/src/organization-recovery.ts +147 -135
  333. package/src/organization-usage.ts +94 -0
  334. package/src/permissions.ts +88 -52
  335. package/src/personal-github.ts +210 -171
  336. package/src/preference-registry.ts +314 -258
  337. package/src/prepared-mcp-setup.ts +189 -0
  338. package/src/product-analytics.ts +261 -0
  339. package/src/product-lifecycle-facts.ts +122 -0
  340. package/src/remember.ts +181 -167
  341. package/src/retained-output.ts +194 -165
  342. package/src/sandbox-file-artifacts.ts +60 -47
  343. package/src/sandbox-provider-command.ts +88 -20
  344. package/src/sandbox-recovery.ts +129 -0
  345. package/src/scoped-knowledge.ts +61 -43
  346. package/src/secret-generator.ts +155 -0
  347. package/src/secret-references.ts +414 -0
  348. package/src/secret-resolution.ts +274 -0
  349. package/src/secret-totp.ts +188 -0
  350. package/src/session-final-reply.ts +16 -0
  351. package/src/session-goal-reports.ts +64 -0
  352. package/src/session-history-import.ts +177 -0
  353. package/src/session-list-entries.ts +96 -0
  354. package/src/session-mcp-projections.ts +11 -0
  355. package/src/session-mcp-tool-permissions.ts +108 -0
  356. package/src/session-message-search.ts +61 -0
  357. package/src/session-target.ts +57 -0
  358. package/src/session-titles.ts +80 -10
  359. package/src/session-topology-primitives.ts +19 -12
  360. package/src/session-usage-limit-refusal.ts +101 -0
  361. package/src/session-usage-limits.ts +171 -0
  362. package/src/signup-attribution.ts +86 -0
  363. package/src/site-data.ts +339 -0
  364. package/src/site-operations.ts +154 -0
  365. package/src/site-publishing.ts +876 -0
  366. package/src/site-session-http.ts +294 -16
  367. package/src/site-sql.ts +1123 -0
  368. package/src/skill-catalog-context.ts +50 -0
  369. package/src/skill-files.ts +3 -3
  370. package/src/skill-use.ts +80 -0
  371. package/src/skills.ts +82 -54
  372. package/src/slack-bot-scopes.ts +31 -39
  373. package/src/slack-rest-mcp.ts +222 -0
  374. package/src/slack-task-policy.ts +96 -73
  375. package/src/spreadsheet-artifact-commands.ts +73 -2
  376. package/src/spreadsheet-artifact-query.ts +187 -39
  377. package/src/subscription-account-actions.ts +84 -0
  378. package/src/subscription-account-pools.ts +53 -0
  379. package/src/subscription-personal-authority-v2.ts +66 -0
  380. package/src/task-notes.ts +55 -51
  381. package/src/tool-action-review.ts +258 -0
  382. package/src/tool-catalog.ts +609 -372
  383. package/src/tool-policy.ts +82 -0
  384. package/src/tool-result-spill.ts +12 -9
  385. package/src/tool-review-presentation.ts +385 -0
  386. package/src/transcription-recordings.ts +145 -131
  387. package/src/turn-serving-policy.ts +166 -0
  388. package/src/usage-allowances.ts +248 -0
  389. package/src/vaults.ts +850 -0
  390. package/src/video-generation.ts +385 -360
  391. package/src/work-claims.ts +173 -149
  392. package/src/workspace-instruction-policies.ts +349 -276
  393. package/src/workspace-integration-wire.ts +101 -0
  394. package/src/workspace-integrations.ts +724 -0
  395. package/src/workspace-learning-administration.ts +57 -44
  396. package/src/workspace-learning-policy.ts +127 -96
  397. package/src/workspace-state.ts +250 -220
  398. package/src/xai-provider-account-authority.ts +22 -17
  399. package/dist/chunk-2AC63F4S.js +0 -171
  400. package/dist/chunk-2AC63F4S.js.map +0 -1
  401. package/dist/chunk-3SIZGL3O.js.map +0 -1
  402. package/dist/chunk-7ABONTXE.js.map +0 -1
  403. package/dist/chunk-BCS7WHCK.js +0 -139
  404. package/dist/chunk-BCS7WHCK.js.map +0 -1
  405. package/dist/chunk-GRG7PHWQ.js +0 -25
  406. package/dist/chunk-GRG7PHWQ.js.map +0 -1
  407. package/dist/chunk-JUFK3T4Q.js +0 -80
  408. package/dist/chunk-JUFK3T4Q.js.map +0 -1
  409. package/dist/chunk-M5ZGRVIQ.js +0 -719
  410. package/dist/chunk-M5ZGRVIQ.js.map +0 -1
  411. package/dist/chunk-MRWYRAS5.js.map +0 -1
  412. package/dist/chunk-OVFORMPW.js +0 -348
  413. package/dist/chunk-OVFORMPW.js.map +0 -1
  414. package/dist/chunk-P3HLDT77.js +0 -59
  415. package/dist/chunk-P3HLDT77.js.map +0 -1
  416. package/dist/chunk-QQUJ6NPW.js +0 -23093
  417. package/dist/chunk-QQUJ6NPW.js.map +0 -1
  418. package/dist/chunk-TXTQIYCV.js.map +0 -1
  419. package/dist/chunk-WYBDERIY.js.map +0 -1
  420. package/dist/chunk-Y3KNXVTD.js.map +0 -1
  421. package/dist/chunk-YBW5JSA3.js.map +0 -1
  422. package/dist/chunk-YRXAWWCU.js +0 -45
  423. package/dist/chunk-YRXAWWCU.js.map +0 -1
  424. package/dist/host-mcp-resolvers.d.ts +0 -32
  425. package/dist/host-mcp-resolvers.js +0 -34
  426. package/dist/host-mcp-resolvers.js.map +0 -1
  427. package/src/host-mcp-resolvers.ts +0 -50
  428. /package/dist/{chunk-5LYFSZ7O.js.map → chunk-352X6ENP.js.map} +0 -0
  429. /package/dist/{chunk-O5LEQHDM.js.map → chunk-Z7WEVGCL.js.map} +0 -0
@@ -0,0 +1,68 @@
1
+ import { defineSchema } from "./define-schema";
2
+ import { z } from "zod";
3
+
4
+ export const ClaudeUsageWindowId = /* @__PURE__ */ defineSchema(() =>
5
+ z.enum([
6
+ "five_hour",
7
+ "seven_day",
8
+ "seven_day_opus",
9
+ "seven_day_sonnet",
10
+ "seven_day_overage_included",
11
+ "overage",
12
+ ]),
13
+ );
14
+ export const ClaudeUsageWindow = /* @__PURE__ */ defineSchema(() =>
15
+ z
16
+ .object({
17
+ id: ClaudeUsageWindowId,
18
+ usedPercent: z.number().finite().nonnegative().nullable(),
19
+ resetsAt: z.string().datetime().nullable(),
20
+ status: z.enum(["allowed", "allowed_warning", "rejected"]).nullable(),
21
+ observedAt: z.string().datetime(),
22
+ source: z.enum(["response_headers", "provider"]).optional(),
23
+ })
24
+ .strict(),
25
+ );
26
+ export type ClaudeUsageWindow = z.infer<typeof ClaudeUsageWindow>;
27
+
28
+ /** One response's dispatch authority; never combine statuses from different responses. */
29
+ export const ClaudeUsageRequestStatus = /* @__PURE__ */ defineSchema(() =>
30
+ z
31
+ .object({
32
+ status: z.enum(["allowed", "allowed_warning", "rejected"]).nullable(),
33
+ resetsAt: z.string().datetime().nullable(),
34
+ representativeClaim: ClaudeUsageWindowId.nullable(),
35
+ overageStatus: z.enum(["allowed", "allowed_warning", "rejected"]).nullable(),
36
+ overageResetsAt: z.string().datetime().nullable(),
37
+ upstreamModelId: z.string().min(1).max(256).nullable(),
38
+ observedAt: z.string().datetime(),
39
+ source: z.enum(["response_headers", "provider"]).optional(),
40
+ })
41
+ .strict(),
42
+ );
43
+ export type ClaudeUsageRequestStatus = z.infer<typeof ClaudeUsageRequestStatus>;
44
+
45
+ /** Provider observations, never an estimate based on Opengeni token counts. */
46
+ export const ClaudeSubscriptionUsage = /* @__PURE__ */ defineSchema(() =>
47
+ z
48
+ .object({
49
+ connected: z.boolean(),
50
+ credentialVersion: z.number().int().positive().nullable(),
51
+ windows: z.array(ClaudeUsageWindow).max(6),
52
+ observedAt: z.string().datetime().nullable(),
53
+ source: z.enum(["response_headers", "provider"]).nullable(),
54
+ refreshStatus: z.enum([
55
+ "not_checked",
56
+ "available",
57
+ "scope_required",
58
+ "unavailable",
59
+ "reconnect",
60
+ ]),
61
+ refreshCheckedAt: z.string().datetime().nullable(),
62
+ requestStatus: ClaudeUsageRequestStatus.nullable().optional(),
63
+ // Model-scoped dispatch evidence; allowances retain an ordering watermark.
64
+ requestRestrictions: z.array(ClaudeUsageRequestStatus).max(64).optional(),
65
+ })
66
+ .strict(),
67
+ );
68
+ export type ClaudeSubscriptionUsage = z.infer<typeof ClaudeSubscriptionUsage>;
@@ -0,0 +1,343 @@
1
+ /**
2
+ * Wire grammar of the web client error beacon (`POST /v1/client-errors`).
3
+ *
4
+ * A report is a closed error kind, the matched route PATTERN (never a concrete
5
+ * URL), the bundle revision, and optional error diagnostics: the error's name,
6
+ * message and stack, plus React's component stack for a render failure. The
7
+ * diagnostics are error text, not analytics. They can occasionally contain a
8
+ * fragment of user content (an error message that quotes a value), so they are
9
+ * scrubbed of obvious credentials and query strings by
10
+ * {@link scrubClientErrorText} and bounded per field by
11
+ * {@link CLIENT_ERROR_DETAIL_MAX_BYTES} in the browser, and the API re-applies
12
+ * the same projection to whatever it receives. The web client that projects a
13
+ * report, the API route that admits it, and the public structured-log
14
+ * projection that prints it all validate against these exact rules, so the
15
+ * browser can only send what the API accepts and logs.
16
+ *
17
+ * The same route also admits the closed operational signals below (requests
18
+ * that never reached the server, live-stream health, and web vitals). They
19
+ * follow the same rules: closed values only, a route pattern or page label,
20
+ * never a URL, message, identifier, or user content.
21
+ */
22
+ export const CLIENT_ERRORS_PATH = "/v1/client-errors";
23
+
24
+ export const CLIENT_ERROR_KINDS = [
25
+ "route_error",
26
+ "unhandled_rejection",
27
+ "window_error",
28
+ "chunk_load",
29
+ ] as const;
30
+ export type ClientErrorKind = (typeof CLIENT_ERROR_KINDS)[number];
31
+
32
+ /**
33
+ * Largest UTF-8 byte length of each error diagnostic field. A longer value is
34
+ * cut at the end, so a stack keeps its innermost frames.
35
+ */
36
+ export const CLIENT_ERROR_DETAIL_MAX_BYTES = {
37
+ name: 128,
38
+ message: 1024,
39
+ stack: 4096,
40
+ componentStack: 4096,
41
+ } as const;
42
+ export type ClientErrorDetailField = keyof typeof CLIENT_ERROR_DETAIL_MAX_BYTES;
43
+ export const CLIENT_ERROR_DETAIL_FIELDS = Object.keys(
44
+ CLIENT_ERROR_DETAIL_MAX_BYTES,
45
+ ) as ClientErrorDetailField[];
46
+
47
+ /**
48
+ * Largest accepted report body. The detail fields total 9,344 bytes; JSON
49
+ * escaping at most doubles that, which leaves room for the closed fields.
50
+ */
51
+ export const CLIENT_ERROR_REPORT_MAX_BYTES = 20 * 1024;
52
+
53
+ const ROUTE_SEGMENT = String.raw`(?:[a-z]+(?:-[a-z]+)*|\$[A-Za-z][A-Za-z0-9]{0,31})`;
54
+
55
+ /**
56
+ * A route pattern of at most 160 characters that is `/`, `unknown`, or up to
57
+ * twelve `/`-separated segments that are each either a lowercase literal
58
+ * (`variable-sets`) or a `$param` placeholder. The grammar excludes digits in
59
+ * literals, so a concrete id cannot pass as one.
60
+ */
61
+ export const CLIENT_ERROR_ROUTE_PATTERN = new RegExp(
62
+ String.raw`^(?=.{1,160}$)(?:unknown|/|(?:/${ROUTE_SEGMENT}){1,12})$`,
63
+ );
64
+
65
+ /** The bundle revision token (a commit SHA, `dev`, or `unknown`). */
66
+ export const CLIENT_ERROR_REVISION_PATTERN = /^[A-Za-z0-9._-]{1,64}$/;
67
+
68
+ /** Error diagnostics. Every field is optional and already scrubbed and bounded. */
69
+ export type ClientErrorDetail = Partial<Record<ClientErrorDetailField, string>>;
70
+
71
+ export type ClientErrorReport = {
72
+ kind: ClientErrorKind;
73
+ route: string;
74
+ revision: string;
75
+ error?: ClientErrorDetail;
76
+ };
77
+
78
+ const REDACTED = "[redacted]";
79
+ const TRUNCATED = "…[truncated]";
80
+
81
+ // Hosts whose error URLs carry the error's arguments in the query string, and
82
+ // nothing else (React's production error decoder links).
83
+ const ERROR_DECODER_URL = /^https?:\/\/(?:react\.dev\/errors\/|reactjs\.org\/docs\/error-decoder)/i;
84
+
85
+ const LONE_SURROGATE = /[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g;
86
+ // Every control character except tab and newline.
87
+ // oxlint-disable-next-line no-control-regex
88
+ const CONTROL_CHARACTERS = /[\u0000-\u0008\u000B-\u001F\u007F]/g;
89
+ const URL_WITH_QUERY = /\bhttps?:\/\/[^\s?#"'<>()`]*[?#][^\s"'<>()`]*/gi;
90
+ const LINE_AND_COLUMN_SUFFIX = /(?::\d+){1,2}$/;
91
+ // A credential, not prose such as "Basic authentication": it contains a digit.
92
+ const AUTHORIZATION_VALUE =
93
+ /\b(Bearer|Basic|Token)\s+(?=[A-Za-z._~+/=-]*[0-9])[A-Za-z0-9._~+/=-]{8,}/gi;
94
+ const JWT = /\beyJ[A-Za-z0-9_-]{5,}\.[A-Za-z0-9_-]{5,}(?:\.[A-Za-z0-9_-]*)?/g;
95
+ const KNOWN_TOKEN =
96
+ /\b(?:sk-(?:proj-|ant-)?|sk_(?:live|test)_|rk_(?:live|test)_|gh[pousr]_|github_pat_|glpat-|npm_|xox[abposr]-|ops_|AKIA|ASIA|AIza)[A-Za-z0-9_-]{12,}/g;
97
+ // The value never starts with `[` or `…`, so an already redacted value and a
98
+ // truncation marker are left alone and the scrubber stays idempotent.
99
+ const SECRET_ASSIGNMENT =
100
+ /\b((?:access[_-]?token|refresh[_-]?token|id[_-]?token|session[_-]?token|token|client[_-]?secret|secret|password|passwd|api[_-]?key|apikey|authorization|cookie|private[_-]?key)["']?\s*[:=]\s*["']?)[^\s"'&,;}[…][^\s"'&,;}]*/gi;
101
+ const OPAQUE_RUN = /[A-Za-z0-9+=_-]{32,}/g;
102
+
103
+ /**
104
+ * A long run that looks like a credential rather than a word, chunk name,
105
+ * path or UUID: it mixes letters and digits and has an unbroken stretch of at
106
+ * least 24 characters between `-`/`_` separators. Content-hashed asset names
107
+ * (`artifact-page-chrome-DkF3x9aB`) and UUIDs have no stretch that long.
108
+ */
109
+ function isOpaqueCredential(run: string): boolean {
110
+ return (
111
+ /[0-9]/.test(run) &&
112
+ /[A-Za-z]/.test(run) &&
113
+ run.split(/[-_]/).some((stretch) => stretch.length >= 24)
114
+ );
115
+ }
116
+
117
+ /**
118
+ * Remove what an error text must never carry while keeping what makes it
119
+ * useful. Query strings and fragments are dropped from http(s) URLs (keeping a
120
+ * stack frame's `:line:column`); authorization values, JWTs, well-known API
121
+ * token formats, the values of `token=`/`password:`-style assignments, and
122
+ * long opaque letter-and-digit runs become `[redacted]`; control characters
123
+ * other than tab and newline become spaces. Messages, file names, route paths,
124
+ * UUIDs and stack frames survive. Applying it twice changes nothing.
125
+ */
126
+ export function scrubClientErrorText(text: string): string {
127
+ return text
128
+ .replace(LONE_SURROGATE, "\uFFFD")
129
+ .replace(/\r\n?/g, "\n")
130
+ .replace(CONTROL_CHARACTERS, " ")
131
+ .replace(URL_WITH_QUERY, (url) => {
132
+ if (ERROR_DECODER_URL.test(url)) return url;
133
+ const cut = url.search(/[?#]/);
134
+ const suffix = url.slice(cut).match(LINE_AND_COLUMN_SUFFIX)?.[0] ?? "";
135
+ return url.slice(0, cut) + suffix;
136
+ })
137
+ .replace(AUTHORIZATION_VALUE, `$1 ${REDACTED}`)
138
+ .replace(JWT, REDACTED)
139
+ .replace(KNOWN_TOKEN, REDACTED)
140
+ .replace(SECRET_ASSIGNMENT, `$1${REDACTED}`)
141
+ .replace(OPAQUE_RUN, (run) => (isOpaqueCredential(run) ? REDACTED : run));
142
+ }
143
+
144
+ function utf8ByteLength(text: string): number {
145
+ return new TextEncoder().encode(text).byteLength;
146
+ }
147
+
148
+ /**
149
+ * Cut `text` to at most `maxBytes` UTF-8 bytes on a character boundary, ending
150
+ * with a truncation marker when anything was removed.
151
+ */
152
+ export function boundClientErrorText(text: string, maxBytes: number): string {
153
+ if (utf8ByteLength(text) <= maxBytes) return text;
154
+ const budget = maxBytes - utf8ByteLength(TRUNCATED);
155
+ let bytes = 0;
156
+ let end = 0;
157
+ for (const character of text) {
158
+ const size = utf8ByteLength(character);
159
+ if (bytes + size > budget) break;
160
+ bytes += size;
161
+ end += character.length;
162
+ }
163
+ return text.slice(0, end) + TRUNCATED;
164
+ }
165
+
166
+ /** Whether `text` is already exactly what the projection would produce for it. */
167
+ export function isProjectedClientErrorText(text: string, field: ClientErrorDetailField): boolean {
168
+ return (
169
+ text.length > 0 &&
170
+ utf8ByteLength(text) <= CLIENT_ERROR_DETAIL_MAX_BYTES[field] &&
171
+ scrubClientErrorText(text) === text
172
+ );
173
+ }
174
+
175
+ /**
176
+ * Project raw diagnostics into a {@link ClientErrorDetail}: non-string and
177
+ * blank fields are dropped, the rest scrubbed and then bounded. Returns
178
+ * `undefined` when nothing remains. Bounding after scrubbing keeps a cut from
179
+ * splitting a credential into a fragment the scrubber no longer recognizes;
180
+ * the marker cannot form one, so the result is stable under re-projection.
181
+ */
182
+ export function projectClientErrorDetail(
183
+ raw: Partial<Record<ClientErrorDetailField, unknown>> | null | undefined,
184
+ ): ClientErrorDetail | undefined {
185
+ if (!raw) return undefined;
186
+ const detail: ClientErrorDetail = {};
187
+ for (const field of CLIENT_ERROR_DETAIL_FIELDS) {
188
+ const value = raw[field];
189
+ if (typeof value !== "string") continue;
190
+ const projected = boundClientErrorText(
191
+ scrubClientErrorText(value).trim(),
192
+ CLIENT_ERROR_DETAIL_MAX_BYTES[field],
193
+ );
194
+ if (projected) detail[field] = projected;
195
+ }
196
+ return Object.keys(detail).length > 0 ? detail : undefined;
197
+ }
198
+
199
+ /**
200
+ * Content-free operational signals that share the error beacon route. A
201
+ * signal report carries a `signal` discriminator and only closed values; a
202
+ * report without `signal` is a {@link ClientErrorReport}. Older API servers
203
+ * reject signal reports as invalid, so the extension is backward compatible in
204
+ * both directions.
205
+ */
206
+ export const CLIENT_SIGNALS = ["request_failure", "stream", "web_vital"] as const;
207
+ export type ClientSignal = (typeof CLIENT_SIGNALS)[number];
208
+
209
+ /**
210
+ * Key product mutations whose failure before any HTTP response is counted.
211
+ * `send_message` includes sends the server queues behind an active turn.
212
+ */
213
+ export const CLIENT_REQUEST_ACTIONS = [
214
+ "create_session",
215
+ "send_message",
216
+ "steer_message",
217
+ "composer_submit",
218
+ "retry_turn",
219
+ "connect_integration",
220
+ "connect_model",
221
+ "checkout_start",
222
+ ] as const;
223
+ export type ClientRequestAction = (typeof CLIENT_REQUEST_ACTIONS)[number];
224
+
225
+ /**
226
+ * Why a request never produced an HTTP response: the browser reported no
227
+ * connectivity (`offline`), the client's own deadline expired (`timeout`), or
228
+ * the transport failed (`network`). Cancellations the user or the app
229
+ * initiated are never reported.
230
+ */
231
+ export const CLIENT_REQUEST_FAILURE_REASONS = ["network", "timeout", "offline"] as const;
232
+ export type ClientRequestFailureReason = (typeof CLIENT_REQUEST_FAILURE_REASONS)[number];
233
+
234
+ /** Browser live streams: one session's event stream, or the workspace live stream. */
235
+ export const CLIENT_STREAMS = ["session", "workspace"] as const;
236
+ export type ClientStream = (typeof CLIENT_STREAMS)[number];
237
+
238
+ /**
239
+ * Live stream health: a live stream dropped and started reconnecting
240
+ * (`reconnect`), stopped reconnecting (`reconnect_exhausted`), or stayed
241
+ * disconnected for longer than the long-disconnect threshold while the tab
242
+ * was visible (`long_disconnect`).
243
+ */
244
+ export const CLIENT_STREAM_EVENTS = [
245
+ "reconnect",
246
+ "reconnect_exhausted",
247
+ "long_disconnect",
248
+ ] as const;
249
+ export type ClientStreamEvent = (typeof CLIENT_STREAM_EVENTS)[number];
250
+
251
+ /** Core Web Vitals plus time to first byte, measured once per document. */
252
+ export const CLIENT_WEB_VITAL_METRICS = ["lcp", "inp", "cls", "ttfb"] as const;
253
+ export type ClientWebVitalMetric = (typeof CLIENT_WEB_VITAL_METRICS)[number];
254
+
255
+ /**
256
+ * Largest accepted value: seconds for the timing metrics, the unitless layout
257
+ * shift score for `cls`.
258
+ */
259
+ export const CLIENT_WEB_VITAL_MAX_VALUE: Readonly<Record<ClientWebVitalMetric, number>> = {
260
+ lcp: 600,
261
+ inp: 600,
262
+ cls: 100,
263
+ ttfb: 600,
264
+ };
265
+
266
+ /**
267
+ * The closed page labels of the web console's product-journey projection
268
+ * (`journeyPage` in apps/web/src/lib/analytics-journey.ts; a drift test keeps
269
+ * the two identical). Workspace pages are the first path segment after
270
+ * `/workspaces/<id>/`; the rest are exact top-level routes.
271
+ */
272
+ export const CLIENT_PAGES = [
273
+ "sessions",
274
+ "priority",
275
+ "plugins",
276
+ "capabilities",
277
+ "documents",
278
+ "state",
279
+ "memory",
280
+ "schedules",
281
+ "artifacts",
282
+ "settings",
283
+ "organization",
284
+ "insights",
285
+ "machines",
286
+ "files",
287
+ "agents",
288
+ "secrets",
289
+ "variable-sets",
290
+ "environments",
291
+ "rigs",
292
+ "playground",
293
+ "read-only-chats",
294
+ "inbox",
295
+ "home",
296
+ "session-link",
297
+ "identity-link",
298
+ "checkout-return",
299
+ "integration-return",
300
+ "device",
301
+ "connect-agent",
302
+ "native-sign-in",
303
+ "reset-password",
304
+ "setup-account",
305
+ "account-auth",
306
+ "site-auth",
307
+ "personal-security",
308
+ "other",
309
+ ] as const;
310
+ export type ClientPage = (typeof CLIENT_PAGES)[number];
311
+
312
+ export type ClientRequestFailureReport = {
313
+ signal: "request_failure";
314
+ action: ClientRequestAction;
315
+ reason: ClientRequestFailureReason;
316
+ route: string;
317
+ revision: string;
318
+ };
319
+
320
+ export type ClientStreamReport = {
321
+ signal: "stream";
322
+ stream: ClientStream;
323
+ event: ClientStreamEvent;
324
+ route: string;
325
+ revision: string;
326
+ };
327
+
328
+ export type ClientWebVitalReport = {
329
+ signal: "web_vital";
330
+ metric: ClientWebVitalMetric;
331
+ page: ClientPage;
332
+ /** Seconds for timing metrics, the unitless score for `cls`. */
333
+ value: number;
334
+ revision: string;
335
+ };
336
+
337
+ export type ClientSignalReport =
338
+ | ClientRequestFailureReport
339
+ | ClientStreamReport
340
+ | ClientWebVitalReport;
341
+
342
+ /** Every body the beacon route accepts. */
343
+ export type ClientBeaconReport = ClientErrorReport | ClientSignalReport;
@@ -0,0 +1,105 @@
1
+ // Resolvers for the optional Jev-backed `code_search` agent tool. A separate
2
+ // subpath keeps them out of browser bundles; only server code decides.
3
+
4
+ /**
5
+ * Directories holding platform credential material that `code_search` never
6
+ * searches or reads, as path segments matched at any depth: Opengeni's
7
+ * sandbox state (`.opengeni/`: Codemode bearer tokens, Git credential files
8
+ * and bindings), the Azure CLI login cache (`.azure/`, from the sandbox's
9
+ * service-principal login with HOME=/workspace) and a Connected Machine
10
+ * agent's enrollment credentials (`.config/opengeni/`). The sandbox channel
11
+ * enforces this list; `@opengeni/jev` keeps the same list for its engine, and
12
+ * a worker test pins that the two agree.
13
+ */
14
+ export const CODE_SEARCH_CREDENTIAL_DIRS: readonly (readonly string[])[] = [
15
+ [".opengeni"],
16
+ [".azure"],
17
+ [".config", "opengeni"],
18
+ ];
19
+
20
+ /**
21
+ * The deployment half of the `code_search` decision. `split` gives the tool to
22
+ * a fixed half of sessions (see `codeSearchSessionInExperiment`) so staging can
23
+ * compare sessions with and without it.
24
+ */
25
+ export type CodeSearchWorkspaceDefault = "off" | "on" | "split";
26
+ export type CodeSearchDeploymentPolicy = {
27
+ available: boolean;
28
+ workspaceDefault: CodeSearchWorkspaceDefault;
29
+ };
30
+
31
+ /**
32
+ * What a workspace gets: the deployment decides first, so nothing enables the
33
+ * tool where the deployment does not offer it. Otherwise an explicit workspace
34
+ * choice wins, and an absent, null or malformed setting follows the deployment
35
+ * default. Only this field is read, so an invalid sibling setting cannot turn
36
+ * an explicit Off back into the deployment default.
37
+ */
38
+ export function resolveWorkspaceCodeSearchMode(
39
+ settings: unknown,
40
+ deployment: CodeSearchDeploymentPolicy,
41
+ ): CodeSearchWorkspaceDefault {
42
+ if (!deployment.available) return "off";
43
+ const explicit = explicitWorkspaceCodeSearchSetting(settings);
44
+ if (explicit === true) return "on";
45
+ if (explicit === false) return "off";
46
+ return deployment.workspaceDefault;
47
+ }
48
+
49
+ function explicitWorkspaceCodeSearchSetting(settings: unknown): boolean | undefined {
50
+ const explicit =
51
+ typeof settings === "object" && settings !== null
52
+ ? (settings as { codeSearchEnabled?: unknown }).codeSearchEnabled
53
+ : undefined;
54
+ return typeof explicit === "boolean" ? explicit : undefined;
55
+ }
56
+
57
+ /**
58
+ * Fixed per-session half for the `split` experiment: 32-bit FNV-1a of the
59
+ * session id, low bit 0 gets the tool. Deterministic and dependency-free, so
60
+ * a root session's arm can be recomputed from its id. Child sessions inherit
61
+ * their parent's decision instead.
62
+ */
63
+ export function codeSearchSessionInExperiment(sessionId: string): boolean {
64
+ let hash = 0x811c9dc5;
65
+ for (let index = 0; index < sessionId.length; index++) {
66
+ hash ^= sessionId.charCodeAt(index);
67
+ hash = Math.imul(hash, 0x01000193) >>> 0;
68
+ }
69
+ return (hash & 1) === 0;
70
+ }
71
+
72
+ /**
73
+ * The decision frozen on a new root session when it is created. Later changes
74
+ * to the workspace setting or the deployment mode never turn the tool on for a
75
+ * session that was created without it.
76
+ */
77
+ export function resolveSessionCodeSearchEnabled(
78
+ settings: unknown,
79
+ deployment: CodeSearchDeploymentPolicy,
80
+ sessionId: string,
81
+ ): boolean {
82
+ const mode = resolveWorkspaceCodeSearchMode(settings, deployment);
83
+ return mode === "on" || (mode === "split" && codeSearchSessionInExperiment(sessionId));
84
+ }
85
+
86
+ /**
87
+ * Whether a turn of this session gets `code_search`. Only a session frozen on
88
+ * at creation can have it. The deployment (mode off or no usable key) and an
89
+ * explicit workspace Off still pause it in running sessions, because they stop
90
+ * repository content going to Jev; undoing that switch-off gives it back to
91
+ * sessions frozen on. Each such change costs every affected session one
92
+ * prompt-cache miss, which is accepted for a deliberate switch. Nothing else
93
+ * changes the tool list of a running session.
94
+ */
95
+ export function codeSearchEnabledForTurn(
96
+ frozen: boolean | null | undefined,
97
+ settings: unknown,
98
+ deployment: CodeSearchDeploymentPolicy,
99
+ ): boolean {
100
+ return (
101
+ frozen === true &&
102
+ deployment.available &&
103
+ explicitWorkspaceCodeSearchSetting(settings) !== false
104
+ );
105
+ }
@@ -1,6 +1,9 @@
1
+ import { defineSchema } from "./define-schema";
1
2
  import { z } from "zod";
2
3
 
3
- const PositiveSafeInteger = z.number().int().positive().max(Number.MAX_SAFE_INTEGER);
4
+ const PositiveSafeInteger = /* @__PURE__ */ defineSchema(() =>
5
+ z.number().int().positive().max(Number.MAX_SAFE_INTEGER),
6
+ );
4
7
 
5
8
  /**
6
9
  * Opaque authority frozen at a Codex provider-account acceptance boundary.
@@ -10,21 +13,23 @@ const PositiveSafeInteger = z.number().int().positive().max(Number.MAX_SAFE_INTE
10
13
  * activation slice may use the user generation only together with separately
11
14
  * authorized durable state; this value is never sufficient authority alone.
12
15
  */
13
- export const CodexProviderAccountAuthoritySnapshotV1 = z.discriminatedUnion("scope", [
14
- z
15
- .object({
16
- version: z.literal(1),
17
- scope: z.literal("workspace"),
18
- })
19
- .strict(),
20
- z
21
- .object({
22
- version: z.literal(1),
23
- scope: z.literal("user"),
24
- authorityGeneration: PositiveSafeInteger,
25
- })
26
- .strict(),
27
- ]);
16
+ export const CodexProviderAccountAuthoritySnapshotV1 = /* @__PURE__ */ defineSchema(() =>
17
+ z.discriminatedUnion("scope", [
18
+ z
19
+ .object({
20
+ version: z.literal(1),
21
+ scope: z.literal("workspace"),
22
+ })
23
+ .strict(),
24
+ z
25
+ .object({
26
+ version: z.literal(1),
27
+ scope: z.literal("user"),
28
+ authorityGeneration: PositiveSafeInteger,
29
+ })
30
+ .strict(),
31
+ ]),
32
+ );
28
33
 
29
34
  export type CodexProviderAccountAuthoritySnapshotV1 = z.infer<
30
35
  typeof CodexProviderAccountAuthoritySnapshotV1