@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,158 @@
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 declare const CLIENT_ERRORS_PATH = "/v1/client-errors";
23
+ export declare const CLIENT_ERROR_KINDS: readonly ["route_error", "unhandled_rejection", "window_error", "chunk_load"];
24
+ export type ClientErrorKind = (typeof CLIENT_ERROR_KINDS)[number];
25
+ /**
26
+ * Largest UTF-8 byte length of each error diagnostic field. A longer value is
27
+ * cut at the end, so a stack keeps its innermost frames.
28
+ */
29
+ export declare const CLIENT_ERROR_DETAIL_MAX_BYTES: {
30
+ readonly name: 128;
31
+ readonly message: 1024;
32
+ readonly stack: 4096;
33
+ readonly componentStack: 4096;
34
+ };
35
+ export type ClientErrorDetailField = keyof typeof CLIENT_ERROR_DETAIL_MAX_BYTES;
36
+ export declare const CLIENT_ERROR_DETAIL_FIELDS: ClientErrorDetailField[];
37
+ /**
38
+ * Largest accepted report body. The detail fields total 9,344 bytes; JSON
39
+ * escaping at most doubles that, which leaves room for the closed fields.
40
+ */
41
+ export declare const CLIENT_ERROR_REPORT_MAX_BYTES: number;
42
+ /**
43
+ * A route pattern of at most 160 characters that is `/`, `unknown`, or up to
44
+ * twelve `/`-separated segments that are each either a lowercase literal
45
+ * (`variable-sets`) or a `$param` placeholder. The grammar excludes digits in
46
+ * literals, so a concrete id cannot pass as one.
47
+ */
48
+ export declare const CLIENT_ERROR_ROUTE_PATTERN: RegExp;
49
+ /** The bundle revision token (a commit SHA, `dev`, or `unknown`). */
50
+ export declare const CLIENT_ERROR_REVISION_PATTERN: RegExp;
51
+ /** Error diagnostics. Every field is optional and already scrubbed and bounded. */
52
+ export type ClientErrorDetail = Partial<Record<ClientErrorDetailField, string>>;
53
+ export type ClientErrorReport = {
54
+ kind: ClientErrorKind;
55
+ route: string;
56
+ revision: string;
57
+ error?: ClientErrorDetail;
58
+ };
59
+ /**
60
+ * Remove what an error text must never carry while keeping what makes it
61
+ * useful. Query strings and fragments are dropped from http(s) URLs (keeping a
62
+ * stack frame's `:line:column`); authorization values, JWTs, well-known API
63
+ * token formats, the values of `token=`/`password:`-style assignments, and
64
+ * long opaque letter-and-digit runs become `[redacted]`; control characters
65
+ * other than tab and newline become spaces. Messages, file names, route paths,
66
+ * UUIDs and stack frames survive. Applying it twice changes nothing.
67
+ */
68
+ export declare function scrubClientErrorText(text: string): string;
69
+ /**
70
+ * Cut `text` to at most `maxBytes` UTF-8 bytes on a character boundary, ending
71
+ * with a truncation marker when anything was removed.
72
+ */
73
+ export declare function boundClientErrorText(text: string, maxBytes: number): string;
74
+ /** Whether `text` is already exactly what the projection would produce for it. */
75
+ export declare function isProjectedClientErrorText(text: string, field: ClientErrorDetailField): boolean;
76
+ /**
77
+ * Project raw diagnostics into a {@link ClientErrorDetail}: non-string and
78
+ * blank fields are dropped, the rest scrubbed and then bounded. Returns
79
+ * `undefined` when nothing remains. Bounding after scrubbing keeps a cut from
80
+ * splitting a credential into a fragment the scrubber no longer recognizes;
81
+ * the marker cannot form one, so the result is stable under re-projection.
82
+ */
83
+ export declare function projectClientErrorDetail(raw: Partial<Record<ClientErrorDetailField, unknown>> | null | undefined): ClientErrorDetail | undefined;
84
+ /**
85
+ * Content-free operational signals that share the error beacon route. A
86
+ * signal report carries a `signal` discriminator and only closed values; a
87
+ * report without `signal` is a {@link ClientErrorReport}. Older API servers
88
+ * reject signal reports as invalid, so the extension is backward compatible in
89
+ * both directions.
90
+ */
91
+ export declare const CLIENT_SIGNALS: readonly ["request_failure", "stream", "web_vital"];
92
+ export type ClientSignal = (typeof CLIENT_SIGNALS)[number];
93
+ /**
94
+ * Key product mutations whose failure before any HTTP response is counted.
95
+ * `send_message` includes sends the server queues behind an active turn.
96
+ */
97
+ export declare const CLIENT_REQUEST_ACTIONS: readonly ["create_session", "send_message", "steer_message", "composer_submit", "retry_turn", "connect_integration", "connect_model", "checkout_start"];
98
+ export type ClientRequestAction = (typeof CLIENT_REQUEST_ACTIONS)[number];
99
+ /**
100
+ * Why a request never produced an HTTP response: the browser reported no
101
+ * connectivity (`offline`), the client's own deadline expired (`timeout`), or
102
+ * the transport failed (`network`). Cancellations the user or the app
103
+ * initiated are never reported.
104
+ */
105
+ export declare const CLIENT_REQUEST_FAILURE_REASONS: readonly ["network", "timeout", "offline"];
106
+ export type ClientRequestFailureReason = (typeof CLIENT_REQUEST_FAILURE_REASONS)[number];
107
+ /** Browser live streams: one session's event stream, or the workspace live stream. */
108
+ export declare const CLIENT_STREAMS: readonly ["session", "workspace"];
109
+ export type ClientStream = (typeof CLIENT_STREAMS)[number];
110
+ /**
111
+ * Live stream health: a live stream dropped and started reconnecting
112
+ * (`reconnect`), stopped reconnecting (`reconnect_exhausted`), or stayed
113
+ * disconnected for longer than the long-disconnect threshold while the tab
114
+ * was visible (`long_disconnect`).
115
+ */
116
+ export declare const CLIENT_STREAM_EVENTS: readonly ["reconnect", "reconnect_exhausted", "long_disconnect"];
117
+ export type ClientStreamEvent = (typeof CLIENT_STREAM_EVENTS)[number];
118
+ /** Core Web Vitals plus time to first byte, measured once per document. */
119
+ export declare const CLIENT_WEB_VITAL_METRICS: readonly ["lcp", "inp", "cls", "ttfb"];
120
+ export type ClientWebVitalMetric = (typeof CLIENT_WEB_VITAL_METRICS)[number];
121
+ /**
122
+ * Largest accepted value: seconds for the timing metrics, the unitless layout
123
+ * shift score for `cls`.
124
+ */
125
+ export declare const CLIENT_WEB_VITAL_MAX_VALUE: Readonly<Record<ClientWebVitalMetric, number>>;
126
+ /**
127
+ * The closed page labels of the web console's product-journey projection
128
+ * (`journeyPage` in apps/web/src/lib/analytics-journey.ts; a drift test keeps
129
+ * the two identical). Workspace pages are the first path segment after
130
+ * `/workspaces/<id>/`; the rest are exact top-level routes.
131
+ */
132
+ export declare const CLIENT_PAGES: readonly ["sessions", "priority", "plugins", "capabilities", "documents", "state", "memory", "schedules", "artifacts", "settings", "organization", "insights", "machines", "files", "agents", "secrets", "variable-sets", "environments", "rigs", "playground", "read-only-chats", "inbox", "home", "session-link", "identity-link", "checkout-return", "integration-return", "device", "connect-agent", "native-sign-in", "reset-password", "setup-account", "account-auth", "site-auth", "personal-security", "other"];
133
+ export type ClientPage = (typeof CLIENT_PAGES)[number];
134
+ export type ClientRequestFailureReport = {
135
+ signal: "request_failure";
136
+ action: ClientRequestAction;
137
+ reason: ClientRequestFailureReason;
138
+ route: string;
139
+ revision: string;
140
+ };
141
+ export type ClientStreamReport = {
142
+ signal: "stream";
143
+ stream: ClientStream;
144
+ event: ClientStreamEvent;
145
+ route: string;
146
+ revision: string;
147
+ };
148
+ export type ClientWebVitalReport = {
149
+ signal: "web_vital";
150
+ metric: ClientWebVitalMetric;
151
+ page: ClientPage;
152
+ /** Seconds for timing metrics, the unitless score for `cls`. */
153
+ value: number;
154
+ revision: string;
155
+ };
156
+ export type ClientSignalReport = ClientRequestFailureReport | ClientStreamReport | ClientWebVitalReport;
157
+ /** Every body the beacon route accepts. */
158
+ export type ClientBeaconReport = ClientErrorReport | ClientSignalReport;
@@ -0,0 +1,164 @@
1
+ // src/client-error-report.ts
2
+ var CLIENT_ERRORS_PATH = "/v1/client-errors";
3
+ var CLIENT_ERROR_KINDS = [
4
+ "route_error",
5
+ "unhandled_rejection",
6
+ "window_error",
7
+ "chunk_load"
8
+ ];
9
+ var CLIENT_ERROR_DETAIL_MAX_BYTES = {
10
+ name: 128,
11
+ message: 1024,
12
+ stack: 4096,
13
+ componentStack: 4096
14
+ };
15
+ var CLIENT_ERROR_DETAIL_FIELDS = Object.keys(
16
+ CLIENT_ERROR_DETAIL_MAX_BYTES
17
+ );
18
+ var CLIENT_ERROR_REPORT_MAX_BYTES = 20 * 1024;
19
+ var ROUTE_SEGMENT = String.raw`(?:[a-z]+(?:-[a-z]+)*|\$[A-Za-z][A-Za-z0-9]{0,31})`;
20
+ var CLIENT_ERROR_ROUTE_PATTERN = new RegExp(
21
+ String.raw`^(?=.{1,160}$)(?:unknown|/|(?:/${ROUTE_SEGMENT}){1,12})$`
22
+ );
23
+ var CLIENT_ERROR_REVISION_PATTERN = /^[A-Za-z0-9._-]{1,64}$/;
24
+ var REDACTED = "[redacted]";
25
+ var TRUNCATED = "\u2026[truncated]";
26
+ var ERROR_DECODER_URL = /^https?:\/\/(?:react\.dev\/errors\/|reactjs\.org\/docs\/error-decoder)/i;
27
+ var LONE_SURROGATE = /[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g;
28
+ var CONTROL_CHARACTERS = /[\u0000-\u0008\u000B-\u001F\u007F]/g;
29
+ var URL_WITH_QUERY = /\bhttps?:\/\/[^\s?#"'<>()`]*[?#][^\s"'<>()`]*/gi;
30
+ var LINE_AND_COLUMN_SUFFIX = /(?::\d+){1,2}$/;
31
+ var AUTHORIZATION_VALUE = /\b(Bearer|Basic|Token)\s+(?=[A-Za-z._~+/=-]*[0-9])[A-Za-z0-9._~+/=-]{8,}/gi;
32
+ var JWT = /\beyJ[A-Za-z0-9_-]{5,}\.[A-Za-z0-9_-]{5,}(?:\.[A-Za-z0-9_-]*)?/g;
33
+ var KNOWN_TOKEN = /\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;
34
+ var SECRET_ASSIGNMENT = /\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;
35
+ var OPAQUE_RUN = /[A-Za-z0-9+=_-]{32,}/g;
36
+ function isOpaqueCredential(run) {
37
+ return /[0-9]/.test(run) && /[A-Za-z]/.test(run) && run.split(/[-_]/).some((stretch) => stretch.length >= 24);
38
+ }
39
+ function scrubClientErrorText(text) {
40
+ return text.replace(LONE_SURROGATE, "\uFFFD").replace(/\r\n?/g, "\n").replace(CONTROL_CHARACTERS, " ").replace(URL_WITH_QUERY, (url) => {
41
+ if (ERROR_DECODER_URL.test(url)) return url;
42
+ const cut = url.search(/[?#]/);
43
+ const suffix = url.slice(cut).match(LINE_AND_COLUMN_SUFFIX)?.[0] ?? "";
44
+ return url.slice(0, cut) + suffix;
45
+ }).replace(AUTHORIZATION_VALUE, `$1 ${REDACTED}`).replace(JWT, REDACTED).replace(KNOWN_TOKEN, REDACTED).replace(SECRET_ASSIGNMENT, `$1${REDACTED}`).replace(OPAQUE_RUN, (run) => isOpaqueCredential(run) ? REDACTED : run);
46
+ }
47
+ function utf8ByteLength(text) {
48
+ return new TextEncoder().encode(text).byteLength;
49
+ }
50
+ function boundClientErrorText(text, maxBytes) {
51
+ if (utf8ByteLength(text) <= maxBytes) return text;
52
+ const budget = maxBytes - utf8ByteLength(TRUNCATED);
53
+ let bytes = 0;
54
+ let end = 0;
55
+ for (const character of text) {
56
+ const size = utf8ByteLength(character);
57
+ if (bytes + size > budget) break;
58
+ bytes += size;
59
+ end += character.length;
60
+ }
61
+ return text.slice(0, end) + TRUNCATED;
62
+ }
63
+ function isProjectedClientErrorText(text, field) {
64
+ return text.length > 0 && utf8ByteLength(text) <= CLIENT_ERROR_DETAIL_MAX_BYTES[field] && scrubClientErrorText(text) === text;
65
+ }
66
+ function projectClientErrorDetail(raw) {
67
+ if (!raw) return void 0;
68
+ const detail = {};
69
+ for (const field of CLIENT_ERROR_DETAIL_FIELDS) {
70
+ const value = raw[field];
71
+ if (typeof value !== "string") continue;
72
+ const projected = boundClientErrorText(
73
+ scrubClientErrorText(value).trim(),
74
+ CLIENT_ERROR_DETAIL_MAX_BYTES[field]
75
+ );
76
+ if (projected) detail[field] = projected;
77
+ }
78
+ return Object.keys(detail).length > 0 ? detail : void 0;
79
+ }
80
+ var CLIENT_SIGNALS = ["request_failure", "stream", "web_vital"];
81
+ var CLIENT_REQUEST_ACTIONS = [
82
+ "create_session",
83
+ "send_message",
84
+ "steer_message",
85
+ "composer_submit",
86
+ "retry_turn",
87
+ "connect_integration",
88
+ "connect_model",
89
+ "checkout_start"
90
+ ];
91
+ var CLIENT_REQUEST_FAILURE_REASONS = ["network", "timeout", "offline"];
92
+ var CLIENT_STREAMS = ["session", "workspace"];
93
+ var CLIENT_STREAM_EVENTS = [
94
+ "reconnect",
95
+ "reconnect_exhausted",
96
+ "long_disconnect"
97
+ ];
98
+ var CLIENT_WEB_VITAL_METRICS = ["lcp", "inp", "cls", "ttfb"];
99
+ var CLIENT_WEB_VITAL_MAX_VALUE = {
100
+ lcp: 600,
101
+ inp: 600,
102
+ cls: 100,
103
+ ttfb: 600
104
+ };
105
+ var CLIENT_PAGES = [
106
+ "sessions",
107
+ "priority",
108
+ "plugins",
109
+ "capabilities",
110
+ "documents",
111
+ "state",
112
+ "memory",
113
+ "schedules",
114
+ "artifacts",
115
+ "settings",
116
+ "organization",
117
+ "insights",
118
+ "machines",
119
+ "files",
120
+ "agents",
121
+ "secrets",
122
+ "variable-sets",
123
+ "environments",
124
+ "rigs",
125
+ "playground",
126
+ "read-only-chats",
127
+ "inbox",
128
+ "home",
129
+ "session-link",
130
+ "identity-link",
131
+ "checkout-return",
132
+ "integration-return",
133
+ "device",
134
+ "connect-agent",
135
+ "native-sign-in",
136
+ "reset-password",
137
+ "setup-account",
138
+ "account-auth",
139
+ "site-auth",
140
+ "personal-security",
141
+ "other"
142
+ ];
143
+ export {
144
+ CLIENT_ERRORS_PATH,
145
+ CLIENT_ERROR_DETAIL_FIELDS,
146
+ CLIENT_ERROR_DETAIL_MAX_BYTES,
147
+ CLIENT_ERROR_KINDS,
148
+ CLIENT_ERROR_REPORT_MAX_BYTES,
149
+ CLIENT_ERROR_REVISION_PATTERN,
150
+ CLIENT_ERROR_ROUTE_PATTERN,
151
+ CLIENT_PAGES,
152
+ CLIENT_REQUEST_ACTIONS,
153
+ CLIENT_REQUEST_FAILURE_REASONS,
154
+ CLIENT_SIGNALS,
155
+ CLIENT_STREAMS,
156
+ CLIENT_STREAM_EVENTS,
157
+ CLIENT_WEB_VITAL_MAX_VALUE,
158
+ CLIENT_WEB_VITAL_METRICS,
159
+ boundClientErrorText,
160
+ isProjectedClientErrorText,
161
+ projectClientErrorDetail,
162
+ scrubClientErrorText
163
+ };
164
+ //# sourceMappingURL=client-error-report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/client-error-report.ts"],"sourcesContent":["/**\n * Wire grammar of the web client error beacon (`POST /v1/client-errors`).\n *\n * A report is a closed error kind, the matched route PATTERN (never a concrete\n * URL), the bundle revision, and optional error diagnostics: the error's name,\n * message and stack, plus React's component stack for a render failure. The\n * diagnostics are error text, not analytics. They can occasionally contain a\n * fragment of user content (an error message that quotes a value), so they are\n * scrubbed of obvious credentials and query strings by\n * {@link scrubClientErrorText} and bounded per field by\n * {@link CLIENT_ERROR_DETAIL_MAX_BYTES} in the browser, and the API re-applies\n * the same projection to whatever it receives. The web client that projects a\n * report, the API route that admits it, and the public structured-log\n * projection that prints it all validate against these exact rules, so the\n * browser can only send what the API accepts and logs.\n *\n * The same route also admits the closed operational signals below (requests\n * that never reached the server, live-stream health, and web vitals). They\n * follow the same rules: closed values only, a route pattern or page label,\n * never a URL, message, identifier, or user content.\n */\nexport const CLIENT_ERRORS_PATH = \"/v1/client-errors\";\n\nexport const CLIENT_ERROR_KINDS = [\n \"route_error\",\n \"unhandled_rejection\",\n \"window_error\",\n \"chunk_load\",\n] as const;\nexport type ClientErrorKind = (typeof CLIENT_ERROR_KINDS)[number];\n\n/**\n * Largest UTF-8 byte length of each error diagnostic field. A longer value is\n * cut at the end, so a stack keeps its innermost frames.\n */\nexport const CLIENT_ERROR_DETAIL_MAX_BYTES = {\n name: 128,\n message: 1024,\n stack: 4096,\n componentStack: 4096,\n} as const;\nexport type ClientErrorDetailField = keyof typeof CLIENT_ERROR_DETAIL_MAX_BYTES;\nexport const CLIENT_ERROR_DETAIL_FIELDS = Object.keys(\n CLIENT_ERROR_DETAIL_MAX_BYTES,\n) as ClientErrorDetailField[];\n\n/**\n * Largest accepted report body. The detail fields total 9,344 bytes; JSON\n * escaping at most doubles that, which leaves room for the closed fields.\n */\nexport const CLIENT_ERROR_REPORT_MAX_BYTES = 20 * 1024;\n\nconst ROUTE_SEGMENT = String.raw`(?:[a-z]+(?:-[a-z]+)*|\\$[A-Za-z][A-Za-z0-9]{0,31})`;\n\n/**\n * A route pattern of at most 160 characters that is `/`, `unknown`, or up to\n * twelve `/`-separated segments that are each either a lowercase literal\n * (`variable-sets`) or a `$param` placeholder. The grammar excludes digits in\n * literals, so a concrete id cannot pass as one.\n */\nexport const CLIENT_ERROR_ROUTE_PATTERN = new RegExp(\n String.raw`^(?=.{1,160}$)(?:unknown|/|(?:/${ROUTE_SEGMENT}){1,12})$`,\n);\n\n/** The bundle revision token (a commit SHA, `dev`, or `unknown`). */\nexport const CLIENT_ERROR_REVISION_PATTERN = /^[A-Za-z0-9._-]{1,64}$/;\n\n/** Error diagnostics. Every field is optional and already scrubbed and bounded. */\nexport type ClientErrorDetail = Partial<Record<ClientErrorDetailField, string>>;\n\nexport type ClientErrorReport = {\n kind: ClientErrorKind;\n route: string;\n revision: string;\n error?: ClientErrorDetail;\n};\n\nconst REDACTED = \"[redacted]\";\nconst TRUNCATED = \"…[truncated]\";\n\n// Hosts whose error URLs carry the error's arguments in the query string, and\n// nothing else (React's production error decoder links).\nconst ERROR_DECODER_URL = /^https?:\\/\\/(?:react\\.dev\\/errors\\/|reactjs\\.org\\/docs\\/error-decoder)/i;\n\nconst LONE_SURROGATE = /[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?<![\\uD800-\\uDBFF])[\\uDC00-\\uDFFF]/g;\n// Every control character except tab and newline.\n// oxlint-disable-next-line no-control-regex\nconst CONTROL_CHARACTERS = /[\\u0000-\\u0008\\u000B-\\u001F\\u007F]/g;\nconst URL_WITH_QUERY = /\\bhttps?:\\/\\/[^\\s?#\"'<>()`]*[?#][^\\s\"'<>()`]*/gi;\nconst LINE_AND_COLUMN_SUFFIX = /(?::\\d+){1,2}$/;\n// A credential, not prose such as \"Basic authentication\": it contains a digit.\nconst AUTHORIZATION_VALUE =\n /\\b(Bearer|Basic|Token)\\s+(?=[A-Za-z._~+/=-]*[0-9])[A-Za-z0-9._~+/=-]{8,}/gi;\nconst JWT = /\\beyJ[A-Za-z0-9_-]{5,}\\.[A-Za-z0-9_-]{5,}(?:\\.[A-Za-z0-9_-]*)?/g;\nconst KNOWN_TOKEN =\n /\\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;\n// The value never starts with `[` or `…`, so an already redacted value and a\n// truncation marker are left alone and the scrubber stays idempotent.\nconst SECRET_ASSIGNMENT =\n /\\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;\nconst OPAQUE_RUN = /[A-Za-z0-9+=_-]{32,}/g;\n\n/**\n * A long run that looks like a credential rather than a word, chunk name,\n * path or UUID: it mixes letters and digits and has an unbroken stretch of at\n * least 24 characters between `-`/`_` separators. Content-hashed asset names\n * (`artifact-page-chrome-DkF3x9aB`) and UUIDs have no stretch that long.\n */\nfunction isOpaqueCredential(run: string): boolean {\n return (\n /[0-9]/.test(run) &&\n /[A-Za-z]/.test(run) &&\n run.split(/[-_]/).some((stretch) => stretch.length >= 24)\n );\n}\n\n/**\n * Remove what an error text must never carry while keeping what makes it\n * useful. Query strings and fragments are dropped from http(s) URLs (keeping a\n * stack frame's `:line:column`); authorization values, JWTs, well-known API\n * token formats, the values of `token=`/`password:`-style assignments, and\n * long opaque letter-and-digit runs become `[redacted]`; control characters\n * other than tab and newline become spaces. Messages, file names, route paths,\n * UUIDs and stack frames survive. Applying it twice changes nothing.\n */\nexport function scrubClientErrorText(text: string): string {\n return text\n .replace(LONE_SURROGATE, \"\\uFFFD\")\n .replace(/\\r\\n?/g, \"\\n\")\n .replace(CONTROL_CHARACTERS, \" \")\n .replace(URL_WITH_QUERY, (url) => {\n if (ERROR_DECODER_URL.test(url)) return url;\n const cut = url.search(/[?#]/);\n const suffix = url.slice(cut).match(LINE_AND_COLUMN_SUFFIX)?.[0] ?? \"\";\n return url.slice(0, cut) + suffix;\n })\n .replace(AUTHORIZATION_VALUE, `$1 ${REDACTED}`)\n .replace(JWT, REDACTED)\n .replace(KNOWN_TOKEN, REDACTED)\n .replace(SECRET_ASSIGNMENT, `$1${REDACTED}`)\n .replace(OPAQUE_RUN, (run) => (isOpaqueCredential(run) ? REDACTED : run));\n}\n\nfunction utf8ByteLength(text: string): number {\n return new TextEncoder().encode(text).byteLength;\n}\n\n/**\n * Cut `text` to at most `maxBytes` UTF-8 bytes on a character boundary, ending\n * with a truncation marker when anything was removed.\n */\nexport function boundClientErrorText(text: string, maxBytes: number): string {\n if (utf8ByteLength(text) <= maxBytes) return text;\n const budget = maxBytes - utf8ByteLength(TRUNCATED);\n let bytes = 0;\n let end = 0;\n for (const character of text) {\n const size = utf8ByteLength(character);\n if (bytes + size > budget) break;\n bytes += size;\n end += character.length;\n }\n return text.slice(0, end) + TRUNCATED;\n}\n\n/** Whether `text` is already exactly what the projection would produce for it. */\nexport function isProjectedClientErrorText(text: string, field: ClientErrorDetailField): boolean {\n return (\n text.length > 0 &&\n utf8ByteLength(text) <= CLIENT_ERROR_DETAIL_MAX_BYTES[field] &&\n scrubClientErrorText(text) === text\n );\n}\n\n/**\n * Project raw diagnostics into a {@link ClientErrorDetail}: non-string and\n * blank fields are dropped, the rest scrubbed and then bounded. Returns\n * `undefined` when nothing remains. Bounding after scrubbing keeps a cut from\n * splitting a credential into a fragment the scrubber no longer recognizes;\n * the marker cannot form one, so the result is stable under re-projection.\n */\nexport function projectClientErrorDetail(\n raw: Partial<Record<ClientErrorDetailField, unknown>> | null | undefined,\n): ClientErrorDetail | undefined {\n if (!raw) return undefined;\n const detail: ClientErrorDetail = {};\n for (const field of CLIENT_ERROR_DETAIL_FIELDS) {\n const value = raw[field];\n if (typeof value !== \"string\") continue;\n const projected = boundClientErrorText(\n scrubClientErrorText(value).trim(),\n CLIENT_ERROR_DETAIL_MAX_BYTES[field],\n );\n if (projected) detail[field] = projected;\n }\n return Object.keys(detail).length > 0 ? detail : undefined;\n}\n\n/**\n * Content-free operational signals that share the error beacon route. A\n * signal report carries a `signal` discriminator and only closed values; a\n * report without `signal` is a {@link ClientErrorReport}. Older API servers\n * reject signal reports as invalid, so the extension is backward compatible in\n * both directions.\n */\nexport const CLIENT_SIGNALS = [\"request_failure\", \"stream\", \"web_vital\"] as const;\nexport type ClientSignal = (typeof CLIENT_SIGNALS)[number];\n\n/**\n * Key product mutations whose failure before any HTTP response is counted.\n * `send_message` includes sends the server queues behind an active turn.\n */\nexport const CLIENT_REQUEST_ACTIONS = [\n \"create_session\",\n \"send_message\",\n \"steer_message\",\n \"composer_submit\",\n \"retry_turn\",\n \"connect_integration\",\n \"connect_model\",\n \"checkout_start\",\n] as const;\nexport type ClientRequestAction = (typeof CLIENT_REQUEST_ACTIONS)[number];\n\n/**\n * Why a request never produced an HTTP response: the browser reported no\n * connectivity (`offline`), the client's own deadline expired (`timeout`), or\n * the transport failed (`network`). Cancellations the user or the app\n * initiated are never reported.\n */\nexport const CLIENT_REQUEST_FAILURE_REASONS = [\"network\", \"timeout\", \"offline\"] as const;\nexport type ClientRequestFailureReason = (typeof CLIENT_REQUEST_FAILURE_REASONS)[number];\n\n/** Browser live streams: one session's event stream, or the workspace live stream. */\nexport const CLIENT_STREAMS = [\"session\", \"workspace\"] as const;\nexport type ClientStream = (typeof CLIENT_STREAMS)[number];\n\n/**\n * Live stream health: a live stream dropped and started reconnecting\n * (`reconnect`), stopped reconnecting (`reconnect_exhausted`), or stayed\n * disconnected for longer than the long-disconnect threshold while the tab\n * was visible (`long_disconnect`).\n */\nexport const CLIENT_STREAM_EVENTS = [\n \"reconnect\",\n \"reconnect_exhausted\",\n \"long_disconnect\",\n] as const;\nexport type ClientStreamEvent = (typeof CLIENT_STREAM_EVENTS)[number];\n\n/** Core Web Vitals plus time to first byte, measured once per document. */\nexport const CLIENT_WEB_VITAL_METRICS = [\"lcp\", \"inp\", \"cls\", \"ttfb\"] as const;\nexport type ClientWebVitalMetric = (typeof CLIENT_WEB_VITAL_METRICS)[number];\n\n/**\n * Largest accepted value: seconds for the timing metrics, the unitless layout\n * shift score for `cls`.\n */\nexport const CLIENT_WEB_VITAL_MAX_VALUE: Readonly<Record<ClientWebVitalMetric, number>> = {\n lcp: 600,\n inp: 600,\n cls: 100,\n ttfb: 600,\n};\n\n/**\n * The closed page labels of the web console's product-journey projection\n * (`journeyPage` in apps/web/src/lib/analytics-journey.ts; a drift test keeps\n * the two identical). Workspace pages are the first path segment after\n * `/workspaces/<id>/`; the rest are exact top-level routes.\n */\nexport const CLIENT_PAGES = [\n \"sessions\",\n \"priority\",\n \"plugins\",\n \"capabilities\",\n \"documents\",\n \"state\",\n \"memory\",\n \"schedules\",\n \"artifacts\",\n \"settings\",\n \"organization\",\n \"insights\",\n \"machines\",\n \"files\",\n \"agents\",\n \"secrets\",\n \"variable-sets\",\n \"environments\",\n \"rigs\",\n \"playground\",\n \"read-only-chats\",\n \"inbox\",\n \"home\",\n \"session-link\",\n \"identity-link\",\n \"checkout-return\",\n \"integration-return\",\n \"device\",\n \"connect-agent\",\n \"native-sign-in\",\n \"reset-password\",\n \"setup-account\",\n \"account-auth\",\n \"site-auth\",\n \"personal-security\",\n \"other\",\n] as const;\nexport type ClientPage = (typeof CLIENT_PAGES)[number];\n\nexport type ClientRequestFailureReport = {\n signal: \"request_failure\";\n action: ClientRequestAction;\n reason: ClientRequestFailureReason;\n route: string;\n revision: string;\n};\n\nexport type ClientStreamReport = {\n signal: \"stream\";\n stream: ClientStream;\n event: ClientStreamEvent;\n route: string;\n revision: string;\n};\n\nexport type ClientWebVitalReport = {\n signal: \"web_vital\";\n metric: ClientWebVitalMetric;\n page: ClientPage;\n /** Seconds for timing metrics, the unitless score for `cls`. */\n value: number;\n revision: string;\n};\n\nexport type ClientSignalReport =\n | ClientRequestFailureReport\n | ClientStreamReport\n | ClientWebVitalReport;\n\n/** Every body the beacon route accepts. */\nexport type ClientBeaconReport = ClientErrorReport | ClientSignalReport;\n"],"mappings":";AAqBO,IAAM,qBAAqB;AAE3B,IAAM,qBAAqB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAOO,IAAM,gCAAgC;AAAA,EAC3C,MAAM;AAAA,EACN,SAAS;AAAA,EACT,OAAO;AAAA,EACP,gBAAgB;AAClB;AAEO,IAAM,6BAA6B,OAAO;AAAA,EAC/C;AACF;AAMO,IAAM,gCAAgC,KAAK;AAElD,IAAM,gBAAgB,OAAO;AAQtB,IAAM,6BAA6B,IAAI;AAAA,EAC5C,OAAO,qCAAqC,aAAa;AAC3D;AAGO,IAAM,gCAAgC;AAY7C,IAAM,WAAW;AACjB,IAAM,YAAY;AAIlB,IAAM,oBAAoB;AAE1B,IAAM,iBAAiB;AAGvB,IAAM,qBAAqB;AAC3B,IAAM,iBAAiB;AACvB,IAAM,yBAAyB;AAE/B,IAAM,sBACJ;AACF,IAAM,MAAM;AACZ,IAAM,cACJ;AAGF,IAAM,oBACJ;AACF,IAAM,aAAa;AAQnB,SAAS,mBAAmB,KAAsB;AAChD,SACE,QAAQ,KAAK,GAAG,KAChB,WAAW,KAAK,GAAG,KACnB,IAAI,MAAM,MAAM,EAAE,KAAK,CAAC,YAAY,QAAQ,UAAU,EAAE;AAE5D;AAWO,SAAS,qBAAqB,MAAsB;AACzD,SAAO,KACJ,QAAQ,gBAAgB,QAAQ,EAChC,QAAQ,UAAU,IAAI,EACtB,QAAQ,oBAAoB,GAAG,EAC/B,QAAQ,gBAAgB,CAAC,QAAQ;AAChC,QAAI,kBAAkB,KAAK,GAAG,EAAG,QAAO;AACxC,UAAM,MAAM,IAAI,OAAO,MAAM;AAC7B,UAAM,SAAS,IAAI,MAAM,GAAG,EAAE,MAAM,sBAAsB,IAAI,CAAC,KAAK;AACpE,WAAO,IAAI,MAAM,GAAG,GAAG,IAAI;AAAA,EAC7B,CAAC,EACA,QAAQ,qBAAqB,MAAM,QAAQ,EAAE,EAC7C,QAAQ,KAAK,QAAQ,EACrB,QAAQ,aAAa,QAAQ,EAC7B,QAAQ,mBAAmB,KAAK,QAAQ,EAAE,EAC1C,QAAQ,YAAY,CAAC,QAAS,mBAAmB,GAAG,IAAI,WAAW,GAAI;AAC5E;AAEA,SAAS,eAAe,MAAsB;AAC5C,SAAO,IAAI,YAAY,EAAE,OAAO,IAAI,EAAE;AACxC;AAMO,SAAS,qBAAqB,MAAc,UAA0B;AAC3E,MAAI,eAAe,IAAI,KAAK,SAAU,QAAO;AAC7C,QAAM,SAAS,WAAW,eAAe,SAAS;AAClD,MAAI,QAAQ;AACZ,MAAI,MAAM;AACV,aAAW,aAAa,MAAM;AAC5B,UAAM,OAAO,eAAe,SAAS;AACrC,QAAI,QAAQ,OAAO,OAAQ;AAC3B,aAAS;AACT,WAAO,UAAU;AAAA,EACnB;AACA,SAAO,KAAK,MAAM,GAAG,GAAG,IAAI;AAC9B;AAGO,SAAS,2BAA2B,MAAc,OAAwC;AAC/F,SACE,KAAK,SAAS,KACd,eAAe,IAAI,KAAK,8BAA8B,KAAK,KAC3D,qBAAqB,IAAI,MAAM;AAEnC;AASO,SAAS,yBACd,KAC+B;AAC/B,MAAI,CAAC,IAAK,QAAO;AACjB,QAAM,SAA4B,CAAC;AACnC,aAAW,SAAS,4BAA4B;AAC9C,UAAM,QAAQ,IAAI,KAAK;AACvB,QAAI,OAAO,UAAU,SAAU;AAC/B,UAAM,YAAY;AAAA,MAChB,qBAAqB,KAAK,EAAE,KAAK;AAAA,MACjC,8BAA8B,KAAK;AAAA,IACrC;AACA,QAAI,UAAW,QAAO,KAAK,IAAI;AAAA,EACjC;AACA,SAAO,OAAO,KAAK,MAAM,EAAE,SAAS,IAAI,SAAS;AACnD;AASO,IAAM,iBAAiB,CAAC,mBAAmB,UAAU,WAAW;AAOhE,IAAM,yBAAyB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AASO,IAAM,iCAAiC,CAAC,WAAW,WAAW,SAAS;AAIvE,IAAM,iBAAiB,CAAC,WAAW,WAAW;AAS9C,IAAM,uBAAuB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AACF;AAIO,IAAM,2BAA2B,CAAC,OAAO,OAAO,OAAO,MAAM;AAO7D,IAAM,6BAA6E;AAAA,EACxF,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,MAAM;AACR;AAQO,IAAM,eAAe;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;","names":[]}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Directories holding platform credential material that `code_search` never
3
+ * searches or reads, as path segments matched at any depth: Opengeni's
4
+ * sandbox state (`.opengeni/`: Codemode bearer tokens, Git credential files
5
+ * and bindings), the Azure CLI login cache (`.azure/`, from the sandbox's
6
+ * service-principal login with HOME=/workspace) and a Connected Machine
7
+ * agent's enrollment credentials (`.config/opengeni/`). The sandbox channel
8
+ * enforces this list; `@opengeni/jev` keeps the same list for its engine, and
9
+ * a worker test pins that the two agree.
10
+ */
11
+ export declare const CODE_SEARCH_CREDENTIAL_DIRS: readonly (readonly string[])[];
12
+ /**
13
+ * The deployment half of the `code_search` decision. `split` gives the tool to
14
+ * a fixed half of sessions (see `codeSearchSessionInExperiment`) so staging can
15
+ * compare sessions with and without it.
16
+ */
17
+ export type CodeSearchWorkspaceDefault = "off" | "on" | "split";
18
+ export type CodeSearchDeploymentPolicy = {
19
+ available: boolean;
20
+ workspaceDefault: CodeSearchWorkspaceDefault;
21
+ };
22
+ /**
23
+ * What a workspace gets: the deployment decides first, so nothing enables the
24
+ * tool where the deployment does not offer it. Otherwise an explicit workspace
25
+ * choice wins, and an absent, null or malformed setting follows the deployment
26
+ * default. Only this field is read, so an invalid sibling setting cannot turn
27
+ * an explicit Off back into the deployment default.
28
+ */
29
+ export declare function resolveWorkspaceCodeSearchMode(settings: unknown, deployment: CodeSearchDeploymentPolicy): CodeSearchWorkspaceDefault;
30
+ /**
31
+ * Fixed per-session half for the `split` experiment: 32-bit FNV-1a of the
32
+ * session id, low bit 0 gets the tool. Deterministic and dependency-free, so
33
+ * a root session's arm can be recomputed from its id. Child sessions inherit
34
+ * their parent's decision instead.
35
+ */
36
+ export declare function codeSearchSessionInExperiment(sessionId: string): boolean;
37
+ /**
38
+ * The decision frozen on a new root session when it is created. Later changes
39
+ * to the workspace setting or the deployment mode never turn the tool on for a
40
+ * session that was created without it.
41
+ */
42
+ export declare function resolveSessionCodeSearchEnabled(settings: unknown, deployment: CodeSearchDeploymentPolicy, sessionId: string): boolean;
43
+ /**
44
+ * Whether a turn of this session gets `code_search`. Only a session frozen on
45
+ * at creation can have it. The deployment (mode off or no usable key) and an
46
+ * explicit workspace Off still pause it in running sessions, because they stop
47
+ * repository content going to Jev; undoing that switch-off gives it back to
48
+ * sessions frozen on. Each such change costs every affected session one
49
+ * prompt-cache miss, which is accepted for a deliberate switch. Nothing else
50
+ * changes the tool list of a running session.
51
+ */
52
+ export declare function codeSearchEnabledForTurn(frozen: boolean | null | undefined, settings: unknown, deployment: CodeSearchDeploymentPolicy): boolean;
@@ -0,0 +1,40 @@
1
+ // src/code-search.ts
2
+ var CODE_SEARCH_CREDENTIAL_DIRS = [
3
+ [".opengeni"],
4
+ [".azure"],
5
+ [".config", "opengeni"]
6
+ ];
7
+ function resolveWorkspaceCodeSearchMode(settings, deployment) {
8
+ if (!deployment.available) return "off";
9
+ const explicit = explicitWorkspaceCodeSearchSetting(settings);
10
+ if (explicit === true) return "on";
11
+ if (explicit === false) return "off";
12
+ return deployment.workspaceDefault;
13
+ }
14
+ function explicitWorkspaceCodeSearchSetting(settings) {
15
+ const explicit = typeof settings === "object" && settings !== null ? settings.codeSearchEnabled : void 0;
16
+ return typeof explicit === "boolean" ? explicit : void 0;
17
+ }
18
+ function codeSearchSessionInExperiment(sessionId) {
19
+ let hash = 2166136261;
20
+ for (let index = 0; index < sessionId.length; index++) {
21
+ hash ^= sessionId.charCodeAt(index);
22
+ hash = Math.imul(hash, 16777619) >>> 0;
23
+ }
24
+ return (hash & 1) === 0;
25
+ }
26
+ function resolveSessionCodeSearchEnabled(settings, deployment, sessionId) {
27
+ const mode = resolveWorkspaceCodeSearchMode(settings, deployment);
28
+ return mode === "on" || mode === "split" && codeSearchSessionInExperiment(sessionId);
29
+ }
30
+ function codeSearchEnabledForTurn(frozen, settings, deployment) {
31
+ return frozen === true && deployment.available && explicitWorkspaceCodeSearchSetting(settings) !== false;
32
+ }
33
+ export {
34
+ CODE_SEARCH_CREDENTIAL_DIRS,
35
+ codeSearchEnabledForTurn,
36
+ codeSearchSessionInExperiment,
37
+ resolveSessionCodeSearchEnabled,
38
+ resolveWorkspaceCodeSearchMode
39
+ };
40
+ //# sourceMappingURL=code-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/code-search.ts"],"sourcesContent":["// Resolvers for the optional Jev-backed `code_search` agent tool. A separate\n// subpath keeps them out of browser bundles; only server code decides.\n\n/**\n * Directories holding platform credential material that `code_search` never\n * searches or reads, as path segments matched at any depth: Opengeni's\n * sandbox state (`.opengeni/`: Codemode bearer tokens, Git credential files\n * and bindings), the Azure CLI login cache (`.azure/`, from the sandbox's\n * service-principal login with HOME=/workspace) and a Connected Machine\n * agent's enrollment credentials (`.config/opengeni/`). The sandbox channel\n * enforces this list; `@opengeni/jev` keeps the same list for its engine, and\n * a worker test pins that the two agree.\n */\nexport const CODE_SEARCH_CREDENTIAL_DIRS: readonly (readonly string[])[] = [\n [\".opengeni\"],\n [\".azure\"],\n [\".config\", \"opengeni\"],\n];\n\n/**\n * The deployment half of the `code_search` decision. `split` gives the tool to\n * a fixed half of sessions (see `codeSearchSessionInExperiment`) so staging can\n * compare sessions with and without it.\n */\nexport type CodeSearchWorkspaceDefault = \"off\" | \"on\" | \"split\";\nexport type CodeSearchDeploymentPolicy = {\n available: boolean;\n workspaceDefault: CodeSearchWorkspaceDefault;\n};\n\n/**\n * What a workspace gets: the deployment decides first, so nothing enables the\n * tool where the deployment does not offer it. Otherwise an explicit workspace\n * choice wins, and an absent, null or malformed setting follows the deployment\n * default. Only this field is read, so an invalid sibling setting cannot turn\n * an explicit Off back into the deployment default.\n */\nexport function resolveWorkspaceCodeSearchMode(\n settings: unknown,\n deployment: CodeSearchDeploymentPolicy,\n): CodeSearchWorkspaceDefault {\n if (!deployment.available) return \"off\";\n const explicit = explicitWorkspaceCodeSearchSetting(settings);\n if (explicit === true) return \"on\";\n if (explicit === false) return \"off\";\n return deployment.workspaceDefault;\n}\n\nfunction explicitWorkspaceCodeSearchSetting(settings: unknown): boolean | undefined {\n const explicit =\n typeof settings === \"object\" && settings !== null\n ? (settings as { codeSearchEnabled?: unknown }).codeSearchEnabled\n : undefined;\n return typeof explicit === \"boolean\" ? explicit : undefined;\n}\n\n/**\n * Fixed per-session half for the `split` experiment: 32-bit FNV-1a of the\n * session id, low bit 0 gets the tool. Deterministic and dependency-free, so\n * a root session's arm can be recomputed from its id. Child sessions inherit\n * their parent's decision instead.\n */\nexport function codeSearchSessionInExperiment(sessionId: string): boolean {\n let hash = 0x811c9dc5;\n for (let index = 0; index < sessionId.length; index++) {\n hash ^= sessionId.charCodeAt(index);\n hash = Math.imul(hash, 0x01000193) >>> 0;\n }\n return (hash & 1) === 0;\n}\n\n/**\n * The decision frozen on a new root session when it is created. Later changes\n * to the workspace setting or the deployment mode never turn the tool on for a\n * session that was created without it.\n */\nexport function resolveSessionCodeSearchEnabled(\n settings: unknown,\n deployment: CodeSearchDeploymentPolicy,\n sessionId: string,\n): boolean {\n const mode = resolveWorkspaceCodeSearchMode(settings, deployment);\n return mode === \"on\" || (mode === \"split\" && codeSearchSessionInExperiment(sessionId));\n}\n\n/**\n * Whether a turn of this session gets `code_search`. Only a session frozen on\n * at creation can have it. The deployment (mode off or no usable key) and an\n * explicit workspace Off still pause it in running sessions, because they stop\n * repository content going to Jev; undoing that switch-off gives it back to\n * sessions frozen on. Each such change costs every affected session one\n * prompt-cache miss, which is accepted for a deliberate switch. Nothing else\n * changes the tool list of a running session.\n */\nexport function codeSearchEnabledForTurn(\n frozen: boolean | null | undefined,\n settings: unknown,\n deployment: CodeSearchDeploymentPolicy,\n): boolean {\n return (\n frozen === true &&\n deployment.available &&\n explicitWorkspaceCodeSearchSetting(settings) !== false\n );\n}\n"],"mappings":";AAaO,IAAM,8BAA8D;AAAA,EACzE,CAAC,WAAW;AAAA,EACZ,CAAC,QAAQ;AAAA,EACT,CAAC,WAAW,UAAU;AACxB;AAoBO,SAAS,+BACd,UACA,YAC4B;AAC5B,MAAI,CAAC,WAAW,UAAW,QAAO;AAClC,QAAM,WAAW,mCAAmC,QAAQ;AAC5D,MAAI,aAAa,KAAM,QAAO;AAC9B,MAAI,aAAa,MAAO,QAAO;AAC/B,SAAO,WAAW;AACpB;AAEA,SAAS,mCAAmC,UAAwC;AAClF,QAAM,WACJ,OAAO,aAAa,YAAY,aAAa,OACxC,SAA6C,oBAC9C;AACN,SAAO,OAAO,aAAa,YAAY,WAAW;AACpD;AAQO,SAAS,8BAA8B,WAA4B;AACxE,MAAI,OAAO;AACX,WAAS,QAAQ,GAAG,QAAQ,UAAU,QAAQ,SAAS;AACrD,YAAQ,UAAU,WAAW,KAAK;AAClC,WAAO,KAAK,KAAK,MAAM,QAAU,MAAM;AAAA,EACzC;AACA,UAAQ,OAAO,OAAO;AACxB;AAOO,SAAS,gCACd,UACA,YACA,WACS;AACT,QAAM,OAAO,+BAA+B,UAAU,UAAU;AAChE,SAAO,SAAS,QAAS,SAAS,WAAW,8BAA8B,SAAS;AACtF;AAWO,SAAS,yBACd,QACA,UACA,YACS;AACT,SACE,WAAW,QACX,WAAW,aACX,mCAAmC,QAAQ,MAAM;AAErD;","names":[]}
@@ -1,17 +1,25 @@
1
+ import {
2
+ defineSchema
3
+ } from "./chunk-56SNIMDO.js";
4
+
1
5
  // src/codex-provider-account-authority.ts
2
6
  import { z } from "zod";
3
- var PositiveSafeInteger = z.number().int().positive().max(Number.MAX_SAFE_INTEGER);
4
- var CodexProviderAccountAuthoritySnapshotV1 = z.discriminatedUnion("scope", [
5
- z.object({
6
- version: z.literal(1),
7
- scope: z.literal("workspace")
8
- }).strict(),
9
- z.object({
10
- version: z.literal(1),
11
- scope: z.literal("user"),
12
- authorityGeneration: PositiveSafeInteger
13
- }).strict()
14
- ]);
7
+ var PositiveSafeInteger = /* @__PURE__ */ defineSchema(
8
+ () => z.number().int().positive().max(Number.MAX_SAFE_INTEGER)
9
+ );
10
+ var CodexProviderAccountAuthoritySnapshotV1 = /* @__PURE__ */ defineSchema(
11
+ () => z.discriminatedUnion("scope", [
12
+ z.object({
13
+ version: z.literal(1),
14
+ scope: z.literal("workspace")
15
+ }).strict(),
16
+ z.object({
17
+ version: z.literal(1),
18
+ scope: z.literal("user"),
19
+ authorityGeneration: PositiveSafeInteger
20
+ }).strict()
21
+ ])
22
+ );
15
23
  var LEGACY_WORKSPACE_CODEX_PROVIDER_ACCOUNT_AUTHORITY_SNAPSHOT_V1 = {
16
24
  version: 1,
17
25
  scope: "workspace"
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/codex-provider-account-authority.ts"],"sourcesContent":["import { z } from \"zod\";\n\nconst PositiveSafeInteger = z.number().int().positive().max(Number.MAX_SAFE_INTEGER);\n\n/**\n * Opaque authority frozen at a Codex provider-account acceptance boundary.\n *\n * The snapshot deliberately carries no organization, membership, credential,\n * provider-account, subject, label, quota, token, or plan identity. A later\n * activation slice may use the user generation only together with separately\n * authorized durable state; this value is never sufficient authority alone.\n */\nexport const CodexProviderAccountAuthoritySnapshotV1 = z.discriminatedUnion(\"scope\", [\n z\n .object({\n version: z.literal(1),\n scope: z.literal(\"workspace\"),\n })\n .strict(),\n z\n .object({\n version: z.literal(1),\n scope: z.literal(\"user\"),\n authorityGeneration: PositiveSafeInteger,\n })\n .strict(),\n]);\n\nexport type CodexProviderAccountAuthoritySnapshotV1 = z.infer<\n typeof CodexProviderAccountAuthoritySnapshotV1\n>;\n\n/** Explicit compatibility value for all pre-foundation accepted work. */\nexport const LEGACY_WORKSPACE_CODEX_PROVIDER_ACCOUNT_AUTHORITY_SNAPSHOT_V1 = {\n version: 1,\n scope: \"workspace\",\n} as const satisfies CodexProviderAccountAuthoritySnapshotV1;\n"],"mappings":";AAAA,SAAS,SAAS;AAElB,IAAM,sBAAsB,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,OAAO,gBAAgB;AAU5E,IAAM,0CAA0C,EAAE,mBAAmB,SAAS;AAAA,EACnF,EACG,OAAO;AAAA,IACN,SAAS,EAAE,QAAQ,CAAC;AAAA,IACpB,OAAO,EAAE,QAAQ,WAAW;AAAA,EAC9B,CAAC,EACA,OAAO;AAAA,EACV,EACG,OAAO;AAAA,IACN,SAAS,EAAE,QAAQ,CAAC;AAAA,IACpB,OAAO,EAAE,QAAQ,MAAM;AAAA,IACvB,qBAAqB;AAAA,EACvB,CAAC,EACA,OAAO;AACZ,CAAC;AAOM,IAAM,gEAAgE;AAAA,EAC3E,SAAS;AAAA,EACT,OAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../src/codex-provider-account-authority.ts"],"sourcesContent":["import { defineSchema } from \"./define-schema\";\nimport { z } from \"zod\";\n\nconst PositiveSafeInteger = /* @__PURE__ */ defineSchema(() =>\n z.number().int().positive().max(Number.MAX_SAFE_INTEGER),\n);\n\n/**\n * Opaque authority frozen at a Codex provider-account acceptance boundary.\n *\n * The snapshot deliberately carries no organization, membership, credential,\n * provider-account, subject, label, quota, token, or plan identity. A later\n * activation slice may use the user generation only together with separately\n * authorized durable state; this value is never sufficient authority alone.\n */\nexport const CodexProviderAccountAuthoritySnapshotV1 = /* @__PURE__ */ defineSchema(() =>\n z.discriminatedUnion(\"scope\", [\n z\n .object({\n version: z.literal(1),\n scope: z.literal(\"workspace\"),\n })\n .strict(),\n z\n .object({\n version: z.literal(1),\n scope: z.literal(\"user\"),\n authorityGeneration: PositiveSafeInteger,\n })\n .strict(),\n ]),\n);\n\nexport type CodexProviderAccountAuthoritySnapshotV1 = z.infer<\n typeof CodexProviderAccountAuthoritySnapshotV1\n>;\n\n/** Explicit compatibility value for all pre-foundation accepted work. */\nexport const LEGACY_WORKSPACE_CODEX_PROVIDER_ACCOUNT_AUTHORITY_SNAPSHOT_V1 = {\n version: 1,\n scope: \"workspace\",\n} as const satisfies CodexProviderAccountAuthoritySnapshotV1;\n"],"mappings":";;;;;AACA,SAAS,SAAS;AAElB,IAAM,sBAAsC;AAAA,EAAa,MACvD,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,OAAO,gBAAgB;AACzD;AAUO,IAAM,0CAA0D;AAAA,EAAa,MAClF,EAAE,mBAAmB,SAAS;AAAA,IAC5B,EACG,OAAO;AAAA,MACN,SAAS,EAAE,QAAQ,CAAC;AAAA,MACpB,OAAO,EAAE,QAAQ,WAAW;AAAA,IAC9B,CAAC,EACA,OAAO;AAAA,IACV,EACG,OAAO;AAAA,MACN,SAAS,EAAE,QAAQ,CAAC;AAAA,MACpB,OAAO,EAAE,QAAQ,MAAM;AAAA,MACvB,qBAAqB;AAAA,IACvB,CAAC,EACA,OAAO;AAAA,EACZ,CAAC;AACH;AAOO,IAAM,gEAAgE;AAAA,EAC3E,SAAS;AAAA,EACT,OAAO;AACT;","names":[]}