@opengeni/contracts 3.1.0-canary.1 → 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 (434) 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 +110 -0
  4. package/dist/agent-learning.d.ts +243 -0
  5. package/dist/allowance-refusal.d.ts +9 -0
  6. package/dist/allowance-refusal.js +50 -0
  7. package/dist/allowance-refusal.js.map +1 -0
  8. package/dist/analytics-consent-report.d.ts +19 -0
  9. package/dist/analytics-consent-report.js +10 -0
  10. package/dist/analytics-consent-report.js.map +1 -0
  11. package/dist/api-key-presets.d.ts +19 -0
  12. package/dist/artifact-catalog.d.ts +188 -0
  13. package/dist/artifacts.d.ts +86 -0
  14. package/dist/atlassian-native-retirement.d.ts +16 -0
  15. package/dist/atlassian-native-retirement.js +30 -0
  16. package/dist/atlassian-native-retirement.js.map +1 -0
  17. package/dist/atlassian.d.ts +1 -0
  18. package/dist/atlassian.js +34 -19
  19. package/dist/browser-storage.d.ts +5 -0
  20. package/dist/browser-storage.js +9 -0
  21. package/dist/browser-storage.js.map +1 -0
  22. package/dist/bundled-skills.d.ts +24 -1
  23. package/dist/canonical-human-identities.js +2 -1
  24. package/dist/chunk-2ZIHHL72.js +153 -0
  25. package/dist/chunk-2ZIHHL72.js.map +1 -0
  26. package/dist/{chunk-5LYFSZ7O.js → chunk-352X6ENP.js} +31 -31
  27. package/dist/chunk-4JGHSSB7.js +11 -0
  28. package/dist/chunk-4JGHSSB7.js.map +1 -0
  29. package/dist/chunk-4QO6GJUX.js +85 -0
  30. package/dist/chunk-4QO6GJUX.js.map +1 -0
  31. package/dist/chunk-4VDMHLLL.js +49 -0
  32. package/dist/chunk-4VDMHLLL.js.map +1 -0
  33. package/dist/chunk-56SNIMDO.js +9 -0
  34. package/dist/chunk-56SNIMDO.js.map +1 -0
  35. package/dist/chunk-6C2HKFTU.js +207 -0
  36. package/dist/chunk-6C2HKFTU.js.map +1 -0
  37. package/dist/chunk-6IXO76Z6.js +72 -0
  38. package/dist/chunk-6IXO76Z6.js.map +1 -0
  39. package/dist/chunk-7272KVWZ.js +60 -0
  40. package/dist/chunk-7272KVWZ.js.map +1 -0
  41. package/dist/{chunk-7ABONTXE.js → chunk-E3GGUBHS.js} +49 -5
  42. package/dist/chunk-E3GGUBHS.js.map +1 -0
  43. package/dist/chunk-EFZYKUE2.js +767 -0
  44. package/dist/chunk-EFZYKUE2.js.map +1 -0
  45. package/dist/chunk-EKWNTOG3.js +154 -0
  46. package/dist/chunk-EKWNTOG3.js.map +1 -0
  47. package/dist/chunk-HABQ7ADB.js +234 -0
  48. package/dist/chunk-HABQ7ADB.js.map +1 -0
  49. package/dist/chunk-HRRU4QPI.js +91 -0
  50. package/dist/chunk-HRRU4QPI.js.map +1 -0
  51. package/dist/{chunk-3SIZGL3O.js → chunk-IK36LXKC.js} +18 -2
  52. package/dist/chunk-IK36LXKC.js.map +1 -0
  53. package/dist/{chunk-TXTQIYCV.js → chunk-ILJ72KPO.js} +56 -3
  54. package/dist/chunk-ILJ72KPO.js.map +1 -0
  55. package/dist/chunk-J4HQ3UKY.js +93 -0
  56. package/dist/chunk-J4HQ3UKY.js.map +1 -0
  57. package/dist/chunk-KHHZTBP7.js +11 -0
  58. package/dist/chunk-KHHZTBP7.js.map +1 -0
  59. package/dist/{chunk-WYBDERIY.js → chunk-LZ2LAHIX.js} +47 -41
  60. package/dist/chunk-LZ2LAHIX.js.map +1 -0
  61. package/dist/chunk-NDZHPTCL.js +400 -0
  62. package/dist/chunk-NDZHPTCL.js.map +1 -0
  63. package/dist/chunk-OF6OKOBF.js +54793 -0
  64. package/dist/chunk-OF6OKOBF.js.map +1 -0
  65. package/dist/chunk-OL23ARTF.js +94 -0
  66. package/dist/chunk-OL23ARTF.js.map +1 -0
  67. package/dist/chunk-PUIUXIOL.js +189 -0
  68. package/dist/chunk-PUIUXIOL.js.map +1 -0
  69. package/dist/{chunk-WBYTNVIW.js → chunk-RKX3NQYS.js} +1 -1
  70. package/dist/{chunk-Y3KNXVTD.js → chunk-RMWXDZEO.js} +128 -21
  71. package/dist/chunk-RMWXDZEO.js.map +1 -0
  72. package/dist/{chunk-MRWYRAS5.js → chunk-SHO4YO4B.js} +27 -35
  73. package/dist/chunk-SHO4YO4B.js.map +1 -0
  74. package/dist/chunk-SWRN2DJ3.js +153 -0
  75. package/dist/chunk-SWRN2DJ3.js.map +1 -0
  76. package/dist/chunk-TCXCRBPF.js +267 -0
  77. package/dist/chunk-TCXCRBPF.js.map +1 -0
  78. package/dist/chunk-TLU3UEMD.js +324 -0
  79. package/dist/chunk-TLU3UEMD.js.map +1 -0
  80. package/dist/chunk-TSWWZMUS.js +186 -0
  81. package/dist/chunk-TSWWZMUS.js.map +1 -0
  82. package/dist/{chunk-PX3VCKAU.js → chunk-WVCFSOUZ.js} +1 -1
  83. package/dist/{chunk-PX3VCKAU.js.map → chunk-WVCFSOUZ.js.map} +1 -1
  84. package/dist/chunk-XDLAGX66.js +127 -0
  85. package/dist/chunk-XDLAGX66.js.map +1 -0
  86. package/dist/chunk-YKZ4WU4P.js +33 -0
  87. package/dist/chunk-YKZ4WU4P.js.map +1 -0
  88. package/dist/{chunk-O5LEQHDM.js → chunk-Z7WEVGCL.js} +3 -3
  89. package/dist/{chunk-YBW5JSA3.js → chunk-ZDCRWCGZ.js} +119 -101
  90. package/dist/chunk-ZDCRWCGZ.js.map +1 -0
  91. package/dist/claude-provider-account-authority.d.ts +18 -0
  92. package/dist/claude-subscription-oauth.d.ts +42 -0
  93. package/dist/claude-subscription-usage.d.ts +159 -0
  94. package/dist/client-error-report.d.ts +158 -0
  95. package/dist/client-error-report.js +164 -0
  96. package/dist/client-error-report.js.map +1 -0
  97. package/dist/code-search.d.ts +52 -0
  98. package/dist/code-search.js +40 -0
  99. package/dist/code-search.js.map +1 -0
  100. package/dist/codex-provider-account-authority.js +20 -12
  101. package/dist/codex-provider-account-authority.js.map +1 -1
  102. package/dist/company-brain.d.ts +19 -81
  103. package/dist/company-profile.d.ts +144 -6
  104. package/dist/connect.d.ts +37 -0
  105. package/dist/connect.js +216 -159
  106. package/dist/connect.js.map +1 -1
  107. package/dist/connection-account-label.d.ts +2 -0
  108. package/dist/connection-account-label.js +35 -0
  109. package/dist/connection-account-label.js.map +1 -0
  110. package/dist/connection-authority.d.ts +9 -317
  111. package/dist/connection-authority.js +37 -42
  112. package/dist/connector-attachments.js +2 -1
  113. package/dist/connector-destinations.js +2 -1
  114. package/dist/connector-tool-permissions.d.ts +137 -0
  115. package/dist/cua-desktop-tools.d.ts +17 -0
  116. package/dist/define-schema.d.ts +8 -0
  117. package/dist/direct-model-provider.d.ts +36 -0
  118. package/dist/editable-artifact-codec-registry.js +5 -5
  119. package/dist/editable-artifact-committed-transaction.js +3 -2
  120. package/dist/editable-artifact-live.js +5 -5
  121. package/dist/editable-artifact-serialized-commit.js +6 -6
  122. package/dist/editable-artifact-versions.d.ts +7 -1
  123. package/dist/editable-artifact-versions.js +1 -1
  124. package/dist/editable-artifacts.js +62 -56
  125. package/dist/event-preview.d.ts +22 -0
  126. package/dist/external-identities.d.ts +174 -0
  127. package/dist/external-identities.js +15 -4
  128. package/dist/first-party-tool-authorization.d.ts +815 -0
  129. package/dist/github-repository-contracts.js +60 -43
  130. package/dist/github-repository-contracts.js.map +1 -1
  131. package/dist/google-drive.d.ts +2 -1
  132. package/dist/google-drive.js +305 -238
  133. package/dist/google-drive.js.map +1 -1
  134. package/dist/host-mcp-bindings.d.ts +39 -10
  135. package/dist/host-mcp-bindings.js +256 -171
  136. package/dist/host-mcp-bindings.js.map +1 -1
  137. package/dist/image-generation.d.ts +1 -0
  138. package/dist/index.d.ts +15715 -3850
  139. package/dist/index.js +2088 -289
  140. package/dist/insights-usage.d.ts +877 -0
  141. package/dist/insights-usage.js +559 -0
  142. package/dist/insights-usage.js.map +1 -0
  143. package/dist/interaction.d.ts +1176 -829
  144. package/dist/knowledge-entries.d.ts +984 -0
  145. package/dist/knowledge-preparation.d.ts +239 -0
  146. package/dist/managed-auth-session-sets.d.ts +7 -0
  147. package/dist/managed-auth-session-sets.js +198 -132
  148. package/dist/managed-auth-session-sets.js.map +1 -1
  149. package/dist/managed-sign-in-methods.d.ts +56 -0
  150. package/dist/managed-sign-in-methods.js +64 -0
  151. package/dist/managed-sign-in-methods.js.map +1 -0
  152. package/dist/mcp-catalog-limits.d.ts +2 -0
  153. package/dist/mcp-endpoint.js +9 -0
  154. package/dist/mcp-endpoint.js.map +1 -0
  155. package/dist/mcp-oauth.d.ts +2 -2
  156. package/dist/mcp-structured-content.d.ts +25 -0
  157. package/dist/modal-native-proof-v2.d.ts +587 -0
  158. package/dist/modal-native-proof-v2.js +38 -0
  159. package/dist/modal-native-proof-v2.js.map +1 -0
  160. package/dist/model-account-choice.d.ts +235 -0
  161. package/dist/model-account-settings.d.ts +422 -0
  162. package/dist/model-availability.d.ts +15 -0
  163. package/dist/model-connection-access.d.ts +13 -0
  164. package/dist/model-context-inspector.d.ts +98 -0
  165. package/dist/model-display.d.ts +43 -0
  166. package/dist/model-display.js +17 -0
  167. package/dist/model-display.js.map +1 -0
  168. package/dist/model-picker-order.d.ts +3 -1
  169. package/dist/model-picker-order.js +3 -0
  170. package/dist/model-picker-order.js.map +1 -1
  171. package/dist/organization-access.d.ts +412 -0
  172. package/dist/organization-access.js +39 -0
  173. package/dist/organization-access.js.map +1 -0
  174. package/dist/organization-integration-policy.d.ts +27 -0
  175. package/dist/organization-membership-lifecycle.d.ts +38 -0
  176. package/dist/organization-model-usage.d.ts +146 -0
  177. package/dist/organization-model-usage.js +78 -0
  178. package/dist/organization-model-usage.js.map +1 -0
  179. package/dist/organization-recovery.js +2 -1
  180. package/dist/organization-usage.d.ts +138 -0
  181. package/dist/permissions.d.ts +18 -0
  182. package/dist/personal-github.d.ts +1 -0
  183. package/dist/personal-github.js +199 -144
  184. package/dist/personal-github.js.map +1 -1
  185. package/dist/plugin-discovery.js +1 -1
  186. package/dist/prepared-mcp-setup.d.ts +54 -0
  187. package/dist/prepared-mcp-setup.js +12 -0
  188. package/dist/prepared-mcp-setup.js.map +1 -0
  189. package/dist/product-analytics.d.ts +116 -0
  190. package/dist/product-lifecycle-facts.d.ts +73 -0
  191. package/dist/remember.d.ts +98 -6
  192. package/dist/retained-output.d.ts +8 -0
  193. package/dist/sandbox-file-artifacts.d.ts +1 -0
  194. package/dist/sandbox-provider-command.d.ts +91 -1
  195. package/dist/sandbox-recovery.d.ts +146 -0
  196. package/dist/secret-generator.d.ts +44 -0
  197. package/dist/secret-references.d.ts +90 -0
  198. package/dist/secret-resolution.d.ts +111 -0
  199. package/dist/secret-totp.d.ts +41 -0
  200. package/dist/session-final-reply.d.ts +6 -0
  201. package/dist/session-final-reply.js +9 -0
  202. package/dist/session-final-reply.js.map +1 -0
  203. package/dist/session-goal-reports.d.ts +21 -0
  204. package/dist/session-history-import.d.ts +1272 -0
  205. package/dist/session-list-entries.d.ts +4 -0
  206. package/dist/session-list-entries.js +56 -0
  207. package/dist/session-list-entries.js.map +1 -0
  208. package/dist/session-mcp-projections.d.ts +6 -0
  209. package/dist/session-mcp-tool-permissions.d.ts +62 -0
  210. package/dist/session-message-search.d.ts +68 -0
  211. package/dist/session-target.d.ts +18 -0
  212. package/dist/session-titles.d.ts +8 -0
  213. package/dist/session-titles.js +5 -1
  214. package/dist/session-usage-limit-refusal.d.ts +34 -0
  215. package/dist/session-usage-limit-refusal.js +15 -0
  216. package/dist/session-usage-limit-refusal.js.map +1 -0
  217. package/dist/session-usage-limits.d.ts +127 -0
  218. package/dist/session-usage-limits.js +41 -0
  219. package/dist/session-usage-limits.js.map +1 -0
  220. package/dist/signup-attribution.d.ts +39 -0
  221. package/dist/site-data.d.ts +286 -0
  222. package/dist/site-operations.d.ts +39 -0
  223. package/dist/site-publishing.d.ts +778 -0
  224. package/dist/site-session-http.d.ts +89 -4
  225. package/dist/site-session-http.js +25 -1
  226. package/dist/site-sql.d.ts +421 -0
  227. package/dist/skill-catalog-context.d.ts +7 -0
  228. package/dist/skill-files.d.ts +1 -1
  229. package/dist/skill-use.d.ts +61 -0
  230. package/dist/skills.d.ts +15 -0
  231. package/dist/slack-bot-scopes.d.ts +17 -12
  232. package/dist/slack-bot-scopes.js +10 -3
  233. package/dist/slack-rest-mcp.d.ts +36 -0
  234. package/dist/slack-rest-mcp.js +25 -0
  235. package/dist/slack-rest-mcp.js.map +1 -0
  236. package/dist/spreadsheet-artifact-commands.d.ts +14 -1
  237. package/dist/spreadsheet-artifact-commands.js +8 -2
  238. package/dist/spreadsheet-artifact-query.d.ts +13 -6
  239. package/dist/spreadsheet-artifact-query.js +3 -3
  240. package/dist/subscription-account-actions.d.ts +64 -0
  241. package/dist/subscription-account-pools.d.ts +292 -0
  242. package/dist/subscription-personal-authority-v2.d.ts +28 -0
  243. package/dist/subscription-personal-authority-v2.js +12 -0
  244. package/dist/subscription-personal-authority-v2.js.map +1 -0
  245. package/dist/tool-action-review.d.ts +132 -0
  246. package/dist/tool-catalog.d.ts +408 -0
  247. package/dist/tool-policy.d.ts +5 -0
  248. package/dist/tool-review-presentation.d.ts +12 -0
  249. package/dist/tool-review-presentation.js +17 -0
  250. package/dist/tool-review-presentation.js.map +1 -0
  251. package/dist/transcription-recordings.d.ts +21 -0
  252. package/dist/turn-serving-policy.d.ts +221 -0
  253. package/dist/usage-allowances.d.ts +314 -0
  254. package/dist/usage-allowances.js +52 -0
  255. package/dist/usage-allowances.js.map +1 -0
  256. package/dist/vaults.d.ts +1286 -0
  257. package/dist/video-generation.d.ts +3 -0
  258. package/dist/video-generation.js +2 -1
  259. package/dist/workspace-instruction-policies.d.ts +13 -0
  260. package/dist/workspace-integration-wire.d.ts +36 -0
  261. package/dist/workspace-integration-wire.js +23 -0
  262. package/dist/workspace-integration-wire.js.map +1 -0
  263. package/dist/workspace-integrations.d.ts +1028 -0
  264. package/dist/workspace-state.d.ts +85 -416
  265. package/dist/xai-provider-account-authority.js +2 -1
  266. package/package.json +98 -2
  267. package/src/agent-authored-durable-text.ts +14 -11
  268. package/src/agent-config.ts +1698 -0
  269. package/src/agent-instruction-changes.ts +115 -0
  270. package/src/agent-learning.ts +188 -0
  271. package/src/agent-topology.ts +57 -52
  272. package/src/allowance-refusal.ts +81 -0
  273. package/src/analytics-consent-report.ts +20 -0
  274. package/src/api-key-presets.ts +28 -0
  275. package/src/artifact-catalog.ts +82 -0
  276. package/src/artifacts.ts +299 -227
  277. package/src/atlassian-native-retirement.ts +33 -0
  278. package/src/atlassian.ts +135 -108
  279. package/src/browser-storage.ts +10 -0
  280. package/src/bundled-skills.ts +60 -17
  281. package/src/canonical-human-identities.ts +60 -58
  282. package/src/claude-provider-account-authority.ts +12 -0
  283. package/src/claude-subscription-oauth.ts +73 -0
  284. package/src/claude-subscription-usage.ts +68 -0
  285. package/src/client-error-report.ts +343 -0
  286. package/src/code-search.ts +105 -0
  287. package/src/codex-provider-account-authority.ts +21 -16
  288. package/src/company-brain-governed-writes.ts +255 -233
  289. package/src/company-brain.ts +164 -153
  290. package/src/company-profile.ts +365 -292
  291. package/src/connect.ts +212 -173
  292. package/src/connection-account-label.ts +46 -0
  293. package/src/connection-authority.ts +183 -364
  294. package/src/connector-attachments.ts +137 -122
  295. package/src/connector-destinations.ts +46 -42
  296. package/src/connector-tool-permissions.ts +117 -0
  297. package/src/cua-desktop-tools.gen.json +6512 -0
  298. package/src/cua-desktop-tools.linux.gen.json +6600 -0
  299. package/src/cua-desktop-tools.ts +36 -0
  300. package/src/cua-desktop-tools.windows.gen.json +6353 -0
  301. package/src/define-schema.ts +10 -0
  302. package/src/direct-model-provider.ts +108 -0
  303. package/src/editable-artifact-committed-transaction.ts +17 -0
  304. package/src/editable-artifact-versions.ts +7 -1
  305. package/src/event-preview.ts +53 -3
  306. package/src/external-identities.ts +262 -145
  307. package/src/feedback.ts +43 -30
  308. package/src/first-party-tool-authorization.ts +356 -0
  309. package/src/github-repository-contracts.ts +78 -64
  310. package/src/google-drive.ts +285 -234
  311. package/src/governed-learning-activation.ts +152 -131
  312. package/src/governed-learning-evaluator.ts +140 -133
  313. package/src/host-mcp-bindings.ts +292 -198
  314. package/src/image-generation.ts +104 -95
  315. package/src/index.ts +13354 -8654
  316. package/src/insights-usage.ts +727 -0
  317. package/src/interaction.ts +3070 -2326
  318. package/src/knowledge-entries.ts +428 -0
  319. package/src/knowledge-preparation.ts +57 -0
  320. package/src/knowledge.ts +246 -213
  321. package/src/managed-auth-session-sets.ts +220 -144
  322. package/src/managed-sign-in-methods.ts +52 -0
  323. package/src/mcp-catalog-limits.ts +2 -0
  324. package/src/mcp-oauth.ts +43 -34
  325. package/src/mcp-receipts.ts +192 -192
  326. package/src/mcp-structured-content.ts +81 -0
  327. package/src/memory-slack-delivery.ts +171 -142
  328. package/src/modal-native-proof-v2.ts +429 -0
  329. package/src/model-account-choice.ts +177 -0
  330. package/src/model-account-settings.ts +210 -0
  331. package/src/model-availability.ts +22 -0
  332. package/src/model-connection-access.ts +61 -14
  333. package/src/model-context-inspector.ts +133 -99
  334. package/src/model-display.ts +221 -0
  335. package/src/model-picker-order.ts +12 -1
  336. package/src/organization-access.ts +217 -0
  337. package/src/organization-integration-policy.ts +63 -0
  338. package/src/organization-membership-lifecycle.ts +528 -382
  339. package/src/organization-model-usage.ts +81 -0
  340. package/src/organization-recovery.ts +147 -135
  341. package/src/organization-usage.ts +94 -0
  342. package/src/permissions.ts +88 -52
  343. package/src/personal-github.ts +210 -171
  344. package/src/preference-registry.ts +314 -258
  345. package/src/prepared-mcp-setup.ts +189 -0
  346. package/src/product-analytics.ts +261 -0
  347. package/src/product-lifecycle-facts.ts +122 -0
  348. package/src/remember.ts +181 -167
  349. package/src/retained-output.ts +194 -165
  350. package/src/sandbox-file-artifacts.ts +60 -47
  351. package/src/sandbox-provider-command.ts +88 -20
  352. package/src/sandbox-recovery.ts +129 -0
  353. package/src/scoped-knowledge.ts +61 -43
  354. package/src/secret-generator.ts +155 -0
  355. package/src/secret-references.ts +414 -0
  356. package/src/secret-resolution.ts +274 -0
  357. package/src/secret-totp.ts +188 -0
  358. package/src/session-final-reply.ts +16 -0
  359. package/src/session-goal-reports.ts +64 -0
  360. package/src/session-history-import.ts +177 -0
  361. package/src/session-list-entries.ts +96 -0
  362. package/src/session-mcp-projections.ts +11 -0
  363. package/src/session-mcp-tool-permissions.ts +108 -0
  364. package/src/session-message-search.ts +61 -0
  365. package/src/session-target.ts +57 -0
  366. package/src/session-titles.ts +80 -10
  367. package/src/session-topology-primitives.ts +19 -12
  368. package/src/session-usage-limit-refusal.ts +101 -0
  369. package/src/session-usage-limits.ts +171 -0
  370. package/src/signup-attribution.ts +86 -0
  371. package/src/site-data.ts +339 -0
  372. package/src/site-operations.ts +154 -0
  373. package/src/site-publishing.ts +876 -0
  374. package/src/site-session-http.ts +294 -16
  375. package/src/site-sql.ts +1123 -0
  376. package/src/skill-catalog-context.ts +50 -0
  377. package/src/skill-files.ts +3 -3
  378. package/src/skill-use.ts +80 -0
  379. package/src/skills.ts +82 -54
  380. package/src/slack-bot-scopes.ts +31 -39
  381. package/src/slack-rest-mcp.ts +222 -0
  382. package/src/slack-task-policy.ts +96 -73
  383. package/src/spreadsheet-artifact-commands.ts +73 -2
  384. package/src/spreadsheet-artifact-query.ts +187 -39
  385. package/src/subscription-account-actions.ts +84 -0
  386. package/src/subscription-account-pools.ts +53 -0
  387. package/src/subscription-personal-authority-v2.ts +66 -0
  388. package/src/task-notes.ts +55 -51
  389. package/src/tool-action-review.ts +258 -0
  390. package/src/tool-catalog.ts +609 -372
  391. package/src/tool-policy.ts +82 -0
  392. package/src/tool-result-spill.ts +12 -9
  393. package/src/tool-review-presentation.ts +385 -0
  394. package/src/transcription-recordings.ts +145 -131
  395. package/src/turn-serving-policy.ts +166 -0
  396. package/src/usage-allowances.ts +248 -0
  397. package/src/vaults.ts +850 -0
  398. package/src/video-generation.ts +385 -360
  399. package/src/work-claims.ts +173 -149
  400. package/src/workspace-instruction-policies.ts +349 -275
  401. package/src/workspace-integration-wire.ts +101 -0
  402. package/src/workspace-integrations.ts +724 -0
  403. package/src/workspace-learning-administration.ts +57 -44
  404. package/src/workspace-learning-policy.ts +127 -96
  405. package/src/workspace-state.ts +253 -333
  406. package/src/xai-provider-account-authority.ts +22 -17
  407. package/dist/chunk-3SIZGL3O.js.map +0 -1
  408. package/dist/chunk-7ABONTXE.js.map +0 -1
  409. package/dist/chunk-BCS7WHCK.js +0 -139
  410. package/dist/chunk-BCS7WHCK.js.map +0 -1
  411. package/dist/chunk-GRG7PHWQ.js +0 -25
  412. package/dist/chunk-GRG7PHWQ.js.map +0 -1
  413. package/dist/chunk-JUFK3T4Q.js +0 -80
  414. package/dist/chunk-JUFK3T4Q.js.map +0 -1
  415. package/dist/chunk-M5ZGRVIQ.js +0 -719
  416. package/dist/chunk-M5ZGRVIQ.js.map +0 -1
  417. package/dist/chunk-MRWYRAS5.js.map +0 -1
  418. package/dist/chunk-OSBYTE3O.js +0 -348
  419. package/dist/chunk-OSBYTE3O.js.map +0 -1
  420. package/dist/chunk-P3HLDT77.js +0 -59
  421. package/dist/chunk-P3HLDT77.js.map +0 -1
  422. package/dist/chunk-TEMFILR7.js +0 -143
  423. package/dist/chunk-TEMFILR7.js.map +0 -1
  424. package/dist/chunk-TXTQIYCV.js.map +0 -1
  425. package/dist/chunk-UR2GFYIE.js +0 -22598
  426. package/dist/chunk-UR2GFYIE.js.map +0 -1
  427. package/dist/chunk-WYBDERIY.js.map +0 -1
  428. package/dist/chunk-Y3KNXVTD.js.map +0 -1
  429. package/dist/chunk-YBW5JSA3.js.map +0 -1
  430. package/dist/chunk-YRXAWWCU.js +0 -45
  431. package/dist/chunk-YRXAWWCU.js.map +0 -1
  432. /package/dist/{chunk-5LYFSZ7O.js.map → chunk-352X6ENP.js.map} +0 -0
  433. /package/dist/{chunk-WBYTNVIW.js.map → chunk-RKX3NQYS.js.map} +0 -0
  434. /package/dist/{chunk-O5LEQHDM.js.map → chunk-Z7WEVGCL.js.map} +0 -0
@@ -1,4 +1,6 @@
1
+ import { defineSchema } from "./define-schema";
1
2
  import { z } from "zod";
3
+ import { Permission } from "./permissions";
2
4
 
3
5
  export const ATTEMPT_TOOL_CATALOG_VERSION = 1 as const;
4
6
  export const TOOL_GATEWAY_CATALOG_VERSION = 1 as const;
@@ -14,365 +16,582 @@ export const CODEMODE_CLAIM_LEASE_MS = 30_000;
14
16
  export const CODEMODE_CLAIM_HEARTBEAT_MS = 10_000;
15
17
  export const CODEMODE_MAX_CONCURRENT_CALLS_PER_ATTEMPT = 16;
16
18
 
17
- const sha256 = z.string().regex(/^[0-9a-f]{64}$/u);
18
- const serverIdentifier = z
19
- .string()
20
- .min(1)
21
- .max(256)
22
- .regex(/^[A-Za-z0-9_-]+$/u);
23
- const toolIdentifier = z
24
- .string()
25
- .min(1)
26
- .max(512)
27
- .regex(/^[^\u0000-\u001f\u007f]+$/u);
28
- const namespaceSegment = z
29
- .string()
30
- .min(1)
31
- .max(128)
32
- .regex(/^[A-Za-z_$][A-Za-z0-9_$]*$/u)
33
- .refine((value) => !["__proto__", "prototype", "constructor"].includes(value), {
34
- message: "unsafe Codemode namespace segment",
35
- });
36
- const jsonObject = z.record(z.string().max(512), z.json());
19
+ const sha256 = /* @__PURE__ */ defineSchema(() => z.string().regex(/^[0-9a-f]{64}$/u));
20
+ const serverIdentifier = /* @__PURE__ */ defineSchema(() =>
21
+ z
22
+ .string()
23
+ .min(1)
24
+ .max(256)
25
+ .regex(/^[A-Za-z0-9_-]+$/u),
26
+ );
27
+ const toolIdentifier = /* @__PURE__ */ defineSchema(() =>
28
+ z
29
+ .string()
30
+ .min(1)
31
+ .max(512)
32
+ .regex(/^[^\u0000-\u001f\u007f]+$/u),
33
+ );
34
+ const namespaceSegment = /* @__PURE__ */ defineSchema(() =>
35
+ z
36
+ .string()
37
+ .min(1)
38
+ .max(128)
39
+ .regex(/^[A-Za-z_$][A-Za-z0-9_$]*$/u)
40
+ .refine((value) => !["__proto__", "prototype", "constructor"].includes(value), {
41
+ message: "unsafe Codemode namespace segment",
42
+ }),
43
+ );
44
+ const jsonObject = /* @__PURE__ */ defineSchema(() => z.record(z.string().max(512), z.json()));
37
45
 
38
46
  /** Opaque authority identity. Display/wire names must never be parsed as authority. */
39
- export const AttemptToolIdentity = z
40
- .object({
41
- serverId: serverIdentifier,
42
- toolName: toolIdentifier,
43
- })
44
- .strict();
47
+ export const AttemptToolIdentity = /* @__PURE__ */ defineSchema(() =>
48
+ z
49
+ .object({
50
+ serverId: serverIdentifier,
51
+ toolName: toolIdentifier,
52
+ })
53
+ .strict(),
54
+ );
45
55
  export type AttemptToolIdentity = z.infer<typeof AttemptToolIdentity>;
46
56
 
47
57
  /** Protocol-neutral tool identity shared by MCP, HTTP/SDK, agents, and Codemode. */
48
58
  export const ToolGatewayIdentity = AttemptToolIdentity;
49
59
  export type ToolGatewayIdentity = AttemptToolIdentity;
50
60
 
51
- export const AttemptToolCatalogIcon = z
52
- .object({
53
- src: z.string().min(1).max(8_192),
54
- mimeType: z.string().min(1).max(128).optional(),
55
- sizes: z.array(z.string().min(1).max(64)).max(16).optional(),
56
- theme: z.enum(["light", "dark"]).optional(),
57
- })
58
- .strict();
61
+ export const AttemptToolCatalogIcon = /* @__PURE__ */ defineSchema(() =>
62
+ z
63
+ .object({
64
+ src: z.string().min(1).max(8_192),
65
+ mimeType: z.string().min(1).max(128).optional(),
66
+ sizes: z.array(z.string().min(1).max(64)).max(16).optional(),
67
+ theme: z.enum(["light", "dark"]).optional(),
68
+ })
69
+ .strict(),
70
+ );
59
71
  export type AttemptToolCatalogIcon = z.infer<typeof AttemptToolCatalogIcon>;
60
72
 
61
73
  /** MCP annotations retained without inventing stronger effect guarantees. */
62
- export const AttemptToolAnnotations = z
63
- .object({
64
- title: z.string().max(512).optional(),
65
- readOnlyHint: z.boolean().optional(),
66
- destructiveHint: z.boolean().optional(),
67
- idempotentHint: z.boolean().optional(),
68
- openWorldHint: z.boolean().optional(),
69
- })
70
- .loose();
74
+ export const AttemptToolAnnotations = /* @__PURE__ */ defineSchema(() =>
75
+ z
76
+ .object({
77
+ title: z.string().max(512).optional(),
78
+ readOnlyHint: z.boolean().optional(),
79
+ destructiveHint: z.boolean().optional(),
80
+ idempotentHint: z.boolean().optional(),
81
+ openWorldHint: z.boolean().optional(),
82
+ })
83
+ .loose(),
84
+ );
71
85
  export type AttemptToolAnnotations = z.infer<typeof AttemptToolAnnotations>;
72
86
 
73
87
  /** JSON Schema is preserved as received. Runtime byte/node guards remain authoritative. */
74
88
  export const AttemptToolJsonSchema = jsonObject;
75
89
  export type AttemptToolJsonSchema = z.infer<typeof AttemptToolJsonSchema>;
76
90
 
77
- export const AttemptToolCatalogEntry = z
78
- .object({
79
- identity: AttemptToolIdentity,
80
- /** Exact model-wire projection for this generation, e.g. `slack__search`. */
81
- modelName: toolIdentifier,
82
- /** Safe generated Codemode namespace; convenience only, never authority. */
83
- codemodePath: z.array(namespaceSegment).min(2).max(ATTEMPT_TOOL_CATALOG_MAX_PATH_SEGMENTS),
84
- title: z.string().min(1).max(512).optional(),
85
- description: z.string().max(32_768).optional(),
86
- inputSchema: AttemptToolJsonSchema,
87
- outputSchema: AttemptToolJsonSchema.optional(),
88
- annotations: AttemptToolAnnotations.optional(),
89
- icons: z.array(AttemptToolCatalogIcon).max(16).optional(),
90
- source: z.enum(["opengeni", "files", "docs", "mcp", "codex_apps", "interaction"]),
91
- approval: z.enum(["none", "human", "policy"]),
92
- })
93
- .strict();
91
+ /** Presentation only; never parsed as execution or account authority. */
92
+ export const ToolDisplayMetadata = /* @__PURE__ */ defineSchema(() =>
93
+ z
94
+ .object({
95
+ toolName: toolIdentifier,
96
+ title: z.string().min(1).max(512).optional(),
97
+ /** Account to name beside the tool. Set only when the connector has more than one. */
98
+ accountLabel: z.string().min(1).max(1024).optional(),
99
+ /** The connector the tool belongs to, e.g. "Linear". */
100
+ connector: z.string().min(1).max(512).optional(),
101
+ /** The connector's provider, so a host can draw its logo. */
102
+ providerDomain: z.string().min(1).max(253).optional(),
103
+ })
104
+ .strict(),
105
+ );
106
+ export type ToolDisplayMetadata = z.infer<typeof ToolDisplayMetadata>;
107
+
108
+ /**
109
+ * How one connector account route is named. The model always gets the full
110
+ * account in tool descriptions; people see the connector, and the account only
111
+ * when there is more than one to tell apart.
112
+ */
113
+ export type McpAccountRouteLabel = {
114
+ /** Model-facing account description. */
115
+ model: string;
116
+ connector: string;
117
+ providerDomain: string;
118
+ /** Present only when the connector has several accounts in the turn. */
119
+ account?: string | undefined;
120
+ };
121
+
122
+ /** The short account line for approvals: "Linear", or "Linear · alice@example.com". */
123
+ export function mcpAccountRouteReviewLabel(label: McpAccountRouteLabel): string {
124
+ return label.account ? `${label.connector} · ${label.account}` : label.connector;
125
+ }
126
+
127
+ export const AttemptToolCatalogEntry = /* @__PURE__ */ defineSchema(() =>
128
+ z
129
+ .object({
130
+ identity: AttemptToolIdentity,
131
+ /** Exact model-wire projection for this generation, e.g. `slack__search`. */
132
+ modelName: toolIdentifier,
133
+ /** Safe generated Codemode namespace; convenience only, never authority. */
134
+ codemodePath: z.array(namespaceSegment).min(2).max(ATTEMPT_TOOL_CATALOG_MAX_PATH_SEGMENTS),
135
+ title: z.string().min(1).max(512).optional(),
136
+ description: z.string().max(32_768).optional(),
137
+ inputSchema: AttemptToolJsonSchema,
138
+ outputSchema: AttemptToolJsonSchema.optional(),
139
+ annotations: AttemptToolAnnotations.optional(),
140
+ icons: z.array(AttemptToolCatalogIcon).max(16).optional(),
141
+ source: z.enum(["opengeni", "files", "docs", "mcp", "codex_apps", "interaction"]),
142
+ approval: z.enum(["none", "human", "policy"]),
143
+ })
144
+ .strict(),
145
+ );
94
146
  export type AttemptToolCatalogEntry = z.infer<typeof AttemptToolCatalogEntry>;
95
147
 
96
148
  /** One canonical gateway entry. Adapter-specific names are projections, never authority. */
97
149
  export const ToolGatewayCatalogEntry = AttemptToolCatalogEntry;
98
150
  export type ToolGatewayCatalogEntry = AttemptToolCatalogEntry;
99
151
 
100
- export const ToolGatewayCatalog = z
101
- .object({
102
- version: z.literal(TOOL_GATEWAY_CATALOG_VERSION),
103
- accountId: z.string().uuid(),
104
- workspaceId: z.string().uuid(),
105
- generation: z.number().int().positive(),
106
- digest: sha256,
107
- createdAt: z.string().datetime({ offset: true }),
108
- entries: z.array(ToolGatewayCatalogEntry).max(ATTEMPT_TOOL_CATALOG_MAX_ENTRIES),
109
- })
110
- .strict()
111
- .superRefine((catalog, context) => {
112
- const identities = new Set<string>();
113
- const modelNames = new Set<string>();
114
- const toolPaths = new Set<string>();
115
- for (const [index, entry] of catalog.entries.entries()) {
116
- const identity = `${entry.identity.serverId}\u0000${entry.identity.toolName}`;
117
- const toolPath = entry.codemodePath.join(".");
118
- if (identities.has(identity)) {
119
- context.addIssue({
120
- code: "custom",
121
- path: ["entries", index, "identity"],
122
- message: "duplicate tool identity",
123
- });
124
- }
125
- if (modelNames.has(entry.modelName)) {
126
- context.addIssue({
127
- code: "custom",
128
- path: ["entries", index, "modelName"],
129
- message: "duplicate model tool name",
130
- });
131
- }
132
- if (toolPaths.has(toolPath)) {
133
- context.addIssue({
134
- code: "custom",
135
- path: ["entries", index, "codemodePath"],
136
- message: "duplicate tool path",
137
- });
152
+ export const ToolGatewayCatalog = /* @__PURE__ */ defineSchema(() =>
153
+ z
154
+ .object({
155
+ version: z.literal(TOOL_GATEWAY_CATALOG_VERSION),
156
+ accountId: z.string().uuid(),
157
+ workspaceId: z.string().uuid(),
158
+ generation: z.number().int().positive(),
159
+ digest: sha256,
160
+ createdAt: z.string().datetime({ offset: true }),
161
+ entries: z.array(ToolGatewayCatalogEntry).max(ATTEMPT_TOOL_CATALOG_MAX_ENTRIES),
162
+ })
163
+ .strict()
164
+ .superRefine((catalog, context) => {
165
+ const identities = new Set<string>();
166
+ const modelNames = new Set<string>();
167
+ const toolPaths = new Set<string>();
168
+ for (const [index, entry] of catalog.entries.entries()) {
169
+ const identity = `${entry.identity.serverId}\u0000${entry.identity.toolName}`;
170
+ const toolPath = entry.codemodePath.join(".");
171
+ if (identities.has(identity)) {
172
+ context.addIssue({
173
+ code: "custom",
174
+ path: ["entries", index, "identity"],
175
+ message: "duplicate tool identity",
176
+ });
177
+ }
178
+ if (modelNames.has(entry.modelName)) {
179
+ context.addIssue({
180
+ code: "custom",
181
+ path: ["entries", index, "modelName"],
182
+ message: "duplicate model tool name",
183
+ });
184
+ }
185
+ if (toolPaths.has(toolPath)) {
186
+ context.addIssue({
187
+ code: "custom",
188
+ path: ["entries", index, "codemodePath"],
189
+ message: "duplicate tool path",
190
+ });
191
+ }
192
+ identities.add(identity);
193
+ modelNames.add(entry.modelName);
194
+ toolPaths.add(toolPath);
138
195
  }
139
- identities.add(identity);
140
- modelNames.add(entry.modelName);
141
- toolPaths.add(toolPath);
142
- }
143
- });
196
+ }),
197
+ );
144
198
  export type ToolGatewayCatalog = z.infer<typeof ToolGatewayCatalog>;
145
199
 
146
- export const ToolGatewayCaller = z
147
- .object({
148
- kind: z.enum(["model", "codemode", "http", "mcp", "browser"]),
149
- subjectId: z.string().min(1).max(1_024),
150
- })
151
- .strict();
200
+ export const ToolGatewayCaller = /* @__PURE__ */ defineSchema(() =>
201
+ z
202
+ .object({
203
+ kind: z.enum(["model", "codemode", "http", "mcp", "browser"]),
204
+ subjectId: z.string().min(1).max(1_024),
205
+ })
206
+ .strict(),
207
+ );
152
208
  export type ToolGatewayCaller = z.infer<typeof ToolGatewayCaller>;
153
209
 
154
- export const AttemptToolCatalog = z
155
- .object({
156
- version: z.literal(ATTEMPT_TOOL_CATALOG_VERSION),
157
- accountId: z.string().uuid(),
158
- workspaceId: z.string().uuid(),
159
- sessionId: z.string().uuid(),
160
- turnId: z.string().uuid(),
161
- attemptId: z.string().uuid(),
162
- executionGeneration: z.number().int().positive(),
163
- generation: z.number().int().positive(),
164
- digest: sha256,
165
- createdAt: z.string().datetime({ offset: true }),
166
- entries: z.array(AttemptToolCatalogEntry).max(ATTEMPT_TOOL_CATALOG_MAX_ENTRIES),
167
- })
168
- .strict()
169
- .superRefine((catalog, context) => {
170
- const identities = new Set<string>();
171
- const modelNames = new Set<string>();
172
- const codemodePaths = new Set<string>();
173
- for (const [index, entry] of catalog.entries.entries()) {
174
- const identity = `${entry.identity.serverId}\u0000${entry.identity.toolName}`;
175
- const codemodePath = entry.codemodePath.join(".");
176
- if (identities.has(identity)) {
177
- context.addIssue({
178
- code: "custom",
179
- path: ["entries", index, "identity"],
180
- message: "duplicate tool identity",
181
- });
182
- }
183
- if (modelNames.has(entry.modelName)) {
184
- context.addIssue({
185
- code: "custom",
186
- path: ["entries", index, "modelName"],
187
- message: "duplicate model tool name",
188
- });
189
- }
190
- if (codemodePaths.has(codemodePath)) {
191
- context.addIssue({
192
- code: "custom",
193
- path: ["entries", index, "codemodePath"],
194
- message: "duplicate Codemode tool path",
195
- });
210
+ /**
211
+ * MCP request `_meta` key naming the attempt surface that issued a call to the
212
+ * first-party server: `model` for a direct model tool call, `codemode` for a
213
+ * Codemode script. Only the worker's own tool gateway sets it, and only for the
214
+ * first-party server. A read reached the model's context only when it says
215
+ * `model`; a Codemode script may keep the output to itself.
216
+ */
217
+ export const FIRST_PARTY_MCP_CALLER_META_KEY = "opengeniCaller";
218
+
219
+ export const AttemptToolCatalog = /* @__PURE__ */ defineSchema(() =>
220
+ z
221
+ .object({
222
+ version: z.literal(ATTEMPT_TOOL_CATALOG_VERSION),
223
+ accountId: z.string().uuid(),
224
+ workspaceId: z.string().uuid(),
225
+ sessionId: z.string().uuid(),
226
+ turnId: z.string().uuid(),
227
+ attemptId: z.string().uuid(),
228
+ executionGeneration: z.number().int().positive(),
229
+ generation: z.number().int().positive(),
230
+ digest: sha256,
231
+ createdAt: z.string().datetime({ offset: true }),
232
+ /** Native permission ceiling frozen by the worker with this catalog.
233
+ * Absence is legacy/unknown, not permission to derive a larger live set. */
234
+ firstPartyMcpPermissions: z.array(Permission).max(128).optional(),
235
+ entries: z.array(AttemptToolCatalogEntry).max(ATTEMPT_TOOL_CATALOG_MAX_ENTRIES),
236
+ })
237
+ .strict()
238
+ .superRefine((catalog, context) => {
239
+ const identities = new Set<string>();
240
+ const modelNames = new Set<string>();
241
+ const codemodePaths = new Set<string>();
242
+ for (const [index, entry] of catalog.entries.entries()) {
243
+ const identity = `${entry.identity.serverId}\u0000${entry.identity.toolName}`;
244
+ const codemodePath = entry.codemodePath.join(".");
245
+ if (identities.has(identity)) {
246
+ context.addIssue({
247
+ code: "custom",
248
+ path: ["entries", index, "identity"],
249
+ message: "duplicate tool identity",
250
+ });
251
+ }
252
+ if (modelNames.has(entry.modelName)) {
253
+ context.addIssue({
254
+ code: "custom",
255
+ path: ["entries", index, "modelName"],
256
+ message: "duplicate model tool name",
257
+ });
258
+ }
259
+ if (codemodePaths.has(codemodePath)) {
260
+ context.addIssue({
261
+ code: "custom",
262
+ path: ["entries", index, "codemodePath"],
263
+ message: "duplicate Codemode tool path",
264
+ });
265
+ }
266
+ identities.add(identity);
267
+ modelNames.add(entry.modelName);
268
+ codemodePaths.add(codemodePath);
196
269
  }
197
- identities.add(identity);
198
- modelNames.add(entry.modelName);
199
- codemodePaths.add(codemodePath);
200
- }
201
- });
270
+ }),
271
+ );
202
272
  export type AttemptToolCatalog = z.infer<typeof AttemptToolCatalog>;
203
273
 
204
- export const AttemptToolCaller = z
205
- .object({
206
- kind: z.enum(["model", "codemode"]),
207
- subjectId: z.string().min(1).max(1_024),
208
- })
209
- .strict();
274
+ export const AttemptToolCaller = /* @__PURE__ */ defineSchema(() =>
275
+ z
276
+ .object({
277
+ kind: z.enum(["model", "codemode"]),
278
+ subjectId: z.string().min(1).max(1_024),
279
+ })
280
+ .strict(),
281
+ );
210
282
  export type AttemptToolCaller = z.infer<typeof AttemptToolCaller>;
211
283
 
212
- export const AttemptToolCall = z
213
- .object({
214
- operationId: z.string().uuid(),
215
- catalogDigest: sha256,
216
- identity: AttemptToolIdentity,
217
- arguments: jsonObject,
218
- caller: AttemptToolCaller,
219
- })
220
- .strict();
284
+ export const AttemptToolCall = /* @__PURE__ */ defineSchema(() =>
285
+ z
286
+ .object({
287
+ operationId: z.string().uuid(),
288
+ catalogDigest: sha256,
289
+ identity: AttemptToolIdentity,
290
+ arguments: jsonObject,
291
+ caller: AttemptToolCaller,
292
+ })
293
+ .strict(),
294
+ );
221
295
  export type AttemptToolCall = z.infer<typeof AttemptToolCall>;
222
296
 
223
- const McpAnnotations = z.record(z.string().max(256), z.json()).optional();
224
- const McpMeta = z.record(z.string().max(512), z.json()).optional();
225
-
226
- export const AttemptToolTextContent = z
227
- .object({
228
- type: z.literal("text"),
229
- text: z.string(),
230
- annotations: McpAnnotations,
231
- _meta: McpMeta,
232
- })
233
- .loose();
234
-
235
- export const AttemptToolImageContent = z
236
- .object({
237
- type: z.literal("image"),
238
- data: z.string(),
239
- mimeType: z.string().min(1).max(128),
240
- annotations: McpAnnotations,
241
- _meta: McpMeta,
242
- })
243
- .loose();
244
-
245
- export const AttemptToolAudioContent = z
246
- .object({
247
- type: z.literal("audio"),
248
- data: z.string(),
249
- mimeType: z.string().min(1).max(128),
250
- annotations: McpAnnotations,
251
- _meta: McpMeta,
252
- })
253
- .loose();
254
-
255
- export const AttemptToolResourceLinkContent = z
256
- .object({
257
- type: z.literal("resource_link"),
258
- name: z.string().min(1).max(1_024),
259
- title: z.string().max(1_024).optional(),
260
- uri: z.string().min(1).max(16_384),
261
- description: z.string().max(32_768).optional(),
262
- mimeType: z.string().max(128).optional(),
263
- size: z.number().int().nonnegative().optional(),
264
- icons: z.array(AttemptToolCatalogIcon).max(16).optional(),
265
- annotations: McpAnnotations,
266
- _meta: McpMeta,
267
- })
268
- .loose();
269
-
270
- const AttemptToolTextResource = z
271
- .object({
272
- uri: z.string().min(1).max(16_384),
273
- mimeType: z.string().max(128).optional(),
274
- text: z.string(),
275
- _meta: McpMeta,
276
- })
277
- .loose();
278
-
279
- const AttemptToolBlobResource = z
280
- .object({
281
- uri: z.string().min(1).max(16_384),
282
- mimeType: z.string().max(128).optional(),
283
- blob: z.string(),
284
- _meta: McpMeta,
285
- })
286
- .loose();
287
-
288
- export const AttemptToolEmbeddedResourceContent = z
289
- .object({
290
- type: z.literal("resource"),
291
- resource: z.union([AttemptToolTextResource, AttemptToolBlobResource]),
292
- annotations: McpAnnotations,
293
- _meta: McpMeta,
294
- })
295
- .loose();
296
-
297
- export const AttemptToolContent = z.discriminatedUnion("type", [
298
- AttemptToolTextContent,
299
- AttemptToolImageContent,
300
- AttemptToolAudioContent,
301
- AttemptToolResourceLinkContent,
302
- AttemptToolEmbeddedResourceContent,
303
- ]);
297
+ const McpAnnotations = /* @__PURE__ */ defineSchema(() =>
298
+ z.record(z.string().max(256), z.json()).optional(),
299
+ );
300
+ const McpMeta = /* @__PURE__ */ defineSchema(() =>
301
+ z.record(z.string().max(512), z.json()).optional(),
302
+ );
303
+
304
+ export const AttemptToolTextContent = /* @__PURE__ */ defineSchema(() =>
305
+ z
306
+ .object({
307
+ type: z.literal("text"),
308
+ text: z.string(),
309
+ annotations: McpAnnotations,
310
+ _meta: McpMeta,
311
+ })
312
+ .loose(),
313
+ );
314
+
315
+ export const AttemptToolImageContent = /* @__PURE__ */ defineSchema(() =>
316
+ z
317
+ .object({
318
+ type: z.literal("image"),
319
+ data: z.string(),
320
+ mimeType: z.string().min(1).max(128),
321
+ annotations: McpAnnotations,
322
+ _meta: McpMeta,
323
+ })
324
+ .loose(),
325
+ );
326
+
327
+ export const AttemptToolAudioContent = /* @__PURE__ */ defineSchema(() =>
328
+ z
329
+ .object({
330
+ type: z.literal("audio"),
331
+ data: z.string(),
332
+ mimeType: z.string().min(1).max(128),
333
+ annotations: McpAnnotations,
334
+ _meta: McpMeta,
335
+ })
336
+ .loose(),
337
+ );
338
+
339
+ export const AttemptToolResourceLinkContent = /* @__PURE__ */ defineSchema(() =>
340
+ z
341
+ .object({
342
+ type: z.literal("resource_link"),
343
+ name: z.string().min(1).max(1_024),
344
+ title: z.string().max(1_024).optional(),
345
+ uri: z.string().min(1).max(16_384),
346
+ description: z.string().max(32_768).optional(),
347
+ mimeType: z.string().max(128).optional(),
348
+ size: z.number().int().nonnegative().optional(),
349
+ icons: z.array(AttemptToolCatalogIcon).max(16).optional(),
350
+ annotations: McpAnnotations,
351
+ _meta: McpMeta,
352
+ })
353
+ .loose(),
354
+ );
355
+
356
+ const AttemptToolTextResource = /* @__PURE__ */ defineSchema(() =>
357
+ z
358
+ .object({
359
+ uri: z.string().min(1).max(16_384),
360
+ mimeType: z.string().max(128).optional(),
361
+ text: z.string(),
362
+ _meta: McpMeta,
363
+ })
364
+ .loose(),
365
+ );
366
+
367
+ const AttemptToolBlobResource = /* @__PURE__ */ defineSchema(() =>
368
+ z
369
+ .object({
370
+ uri: z.string().min(1).max(16_384),
371
+ mimeType: z.string().max(128).optional(),
372
+ blob: z.string(),
373
+ _meta: McpMeta,
374
+ })
375
+ .loose(),
376
+ );
377
+
378
+ export const AttemptToolEmbeddedResourceContent = /* @__PURE__ */ defineSchema(() =>
379
+ z
380
+ .object({
381
+ type: z.literal("resource"),
382
+ resource: z.union([AttemptToolTextResource, AttemptToolBlobResource]),
383
+ annotations: McpAnnotations,
384
+ _meta: McpMeta,
385
+ })
386
+ .loose(),
387
+ );
388
+
389
+ export const AttemptToolContent = /* @__PURE__ */ defineSchema(() =>
390
+ z.discriminatedUnion("type", [
391
+ AttemptToolTextContent,
392
+ AttemptToolImageContent,
393
+ AttemptToolAudioContent,
394
+ AttemptToolResourceLinkContent,
395
+ AttemptToolEmbeddedResourceContent,
396
+ ]),
397
+ );
304
398
  export type AttemptToolContent = z.infer<typeof AttemptToolContent>;
305
399
 
306
400
  /** Exact MCP-shaped result. No output type is fabricated when `outputSchema` is absent. */
307
- export const AttemptToolResult = z
308
- .object({
309
- content: z.array(AttemptToolContent).max(ATTEMPT_TOOL_CATALOG_MAX_CONTENT_BLOCKS),
310
- structuredContent: jsonObject.optional(),
311
- isError: z.boolean().optional(),
312
- _meta: McpMeta,
313
- })
314
- .loose();
401
+ export const AttemptToolResult = /* @__PURE__ */ defineSchema(() =>
402
+ z
403
+ .object({
404
+ content: z.array(AttemptToolContent).max(ATTEMPT_TOOL_CATALOG_MAX_CONTENT_BLOCKS),
405
+ structuredContent: jsonObject.optional(),
406
+ isError: z.boolean().optional(),
407
+ _meta: McpMeta,
408
+ })
409
+ .loose(),
410
+ );
315
411
  export type AttemptToolResult = z.infer<typeof AttemptToolResult>;
316
412
 
317
413
  export const ToolGatewayResult = AttemptToolResult;
318
414
  export type ToolGatewayResult = AttemptToolResult;
319
415
 
320
- export const ToolGatewayCallRequest = z
321
- .object({
322
- operationId: z.string().uuid().optional(),
323
- catalogDigest: sha256,
324
- identity: ToolGatewayIdentity,
325
- arguments: jsonObject,
326
- /** Host-owned Site context. Publisher-controlled iframe code cannot set it. */
327
- siteArtifactId: z.string().uuid().optional(),
328
- siteVersionId: z.string().uuid().optional(),
329
- /** Opaque, server-issued, single-use capability for an approval-required call. */
330
- approvalToken: z
331
- .string()
332
- .regex(/^ogta_[A-Za-z0-9_-]{43}$/u)
333
- .optional(),
334
- })
335
- .strict()
336
- .superRefine(requireCompleteSiteToolContext);
416
+ export const ToolGatewayCallRequest = /* @__PURE__ */ defineSchema(() =>
417
+ z
418
+ .object({
419
+ operationId: z.string().uuid().optional(),
420
+ catalogDigest: sha256,
421
+ identity: ToolGatewayIdentity,
422
+ arguments: jsonObject,
423
+ /** Host-owned Site context. Publisher-controlled iframe code cannot set it. */
424
+ siteArtifactId: z.string().uuid().optional(),
425
+ siteVersionId: z.string().uuid().optional(),
426
+ /** Opaque, server-issued, single-use capability for an approval-required call. */
427
+ approvalToken: z
428
+ .string()
429
+ .regex(/^ogta_[A-Za-z0-9_-]{43}$/u)
430
+ .optional(),
431
+ })
432
+ .strict()
433
+ .superRefine(requireCompleteSiteToolContext),
434
+ );
337
435
  export type ToolGatewayCallRequest = z.infer<typeof ToolGatewayCallRequest>;
338
436
 
339
- export const ToolGatewayApprovalRequest = z
340
- .object({
341
- operationId: z.string().uuid(),
342
- catalogDigest: sha256,
343
- identity: ToolGatewayIdentity,
344
- arguments: jsonObject,
345
- })
346
- .strict();
437
+ export const ToolGatewayApprovalRequest = /* @__PURE__ */ defineSchema(() =>
438
+ z
439
+ .object({
440
+ operationId: z.string().uuid(),
441
+ catalogDigest: sha256,
442
+ identity: ToolGatewayIdentity,
443
+ arguments: jsonObject,
444
+ })
445
+ .strict(),
446
+ );
347
447
  export type ToolGatewayApprovalRequest = z.infer<typeof ToolGatewayApprovalRequest>;
348
448
 
349
- export const ToolGatewayApprovalResponse = z
350
- .object({
351
- operationId: z.string().uuid(),
352
- catalogDigest: sha256,
353
- identity: ToolGatewayIdentity,
354
- approvalToken: z.string().regex(/^ogta_[A-Za-z0-9_-]{43}$/u),
355
- expiresAt: z.string().datetime({ offset: true }),
356
- })
357
- .strict();
449
+ export const ToolGatewayApprovalResponse = /* @__PURE__ */ defineSchema(() =>
450
+ z
451
+ .object({
452
+ operationId: z.string().uuid(),
453
+ catalogDigest: sha256,
454
+ identity: ToolGatewayIdentity,
455
+ approvalToken: z.string().regex(/^ogta_[A-Za-z0-9_-]{43}$/u),
456
+ expiresAt: z.string().datetime({ offset: true }),
457
+ })
458
+ .strict(),
459
+ );
358
460
  export type ToolGatewayApprovalResponse = z.infer<typeof ToolGatewayApprovalResponse>;
359
461
 
360
- export const ToolGatewayCallResponse = z
361
- .object({
362
- operationId: z.string().uuid(),
363
- catalogDigest: sha256,
364
- result: ToolGatewayResult,
365
- })
366
- .strict();
462
+ export const ToolGatewayCallResponse = /* @__PURE__ */ defineSchema(() =>
463
+ z
464
+ .object({
465
+ operationId: z.string().uuid(),
466
+ catalogDigest: sha256,
467
+ result: ToolGatewayResult,
468
+ })
469
+ .strict(),
470
+ );
367
471
  export type ToolGatewayCallResponse = z.infer<typeof ToolGatewayCallResponse>;
368
472
 
369
- export const ToolGatewayDeclarationsResponse = z
370
- .object({
371
- catalogDigest: sha256,
372
- moduleSpecifier: z.string().min(1).max(512),
373
- source: z.string().max(16 * 1024 * 1024),
374
- })
375
- .strict();
473
+ /** A selector, never an authority claim. Symbolic paths use the canonical projection. */
474
+ export const ToolGatewayTarget = /* @__PURE__ */ defineSchema(() =>
475
+ z.union([
476
+ z.object({ identity: ToolGatewayIdentity }).strict(),
477
+ z.object({ path: z.array(namespaceSegment).min(2).max(8) }).strict(),
478
+ ]),
479
+ );
480
+ export type ToolGatewayTarget = z.infer<typeof ToolGatewayTarget>;
481
+
482
+ const targetContext = {
483
+ siteArtifactId: z.string().uuid().optional(),
484
+ siteVersionId: z.string().uuid().optional(),
485
+ };
486
+ export const ToolGatewayResolveRequest = /* @__PURE__ */ defineSchema(() =>
487
+ z
488
+ .object({
489
+ target: ToolGatewayTarget,
490
+ ...targetContext,
491
+ })
492
+ .strict()
493
+ .superRefine(requireCompleteSiteToolContext),
494
+ );
495
+ export type ToolGatewayResolveRequest = z.infer<typeof ToolGatewayResolveRequest>;
496
+
497
+ export const ToolGatewayResolvedTool = /* @__PURE__ */ defineSchema(() =>
498
+ z
499
+ .object({
500
+ version: z.literal(1),
501
+ definitionDigest: sha256,
502
+ entry: ToolGatewayCatalogEntry,
503
+ })
504
+ .strict(),
505
+ );
506
+ export type ToolGatewayResolvedTool = z.infer<typeof ToolGatewayResolvedTool>;
507
+
508
+ export const ToolGatewayInvokeRequest = /* @__PURE__ */ defineSchema(() =>
509
+ z
510
+ .object({
511
+ target: ToolGatewayTarget,
512
+ operationId: z.string().uuid(),
513
+ arguments: jsonObject,
514
+ /** Omission explicitly selects the current authorized definition. */
515
+ expectedDefinitionDigest: sha256.optional(),
516
+ approvalToken: z
517
+ .string()
518
+ .regex(/^ogta_[A-Za-z0-9_-]{43}$/u)
519
+ .optional(),
520
+ ...targetContext,
521
+ })
522
+ .strict()
523
+ .superRefine(requireCompleteSiteToolContext),
524
+ );
525
+ export type ToolGatewayInvokeRequest = z.infer<typeof ToolGatewayInvokeRequest>;
526
+
527
+ export const ToolGatewayInvokeResponse = /* @__PURE__ */ defineSchema(() =>
528
+ z
529
+ .object({
530
+ operationId: z.string().uuid(),
531
+ tool: ToolGatewayResolvedTool,
532
+ result: ToolGatewayResult,
533
+ })
534
+ .strict(),
535
+ );
536
+ export type ToolGatewayInvokeResponse = z.infer<typeof ToolGatewayInvokeResponse>;
537
+
538
+ export const ToolGatewayTargetApprovalRequest = /* @__PURE__ */ defineSchema(() =>
539
+ z
540
+ .object({
541
+ identity: ToolGatewayIdentity,
542
+ operationId: z.string().uuid(),
543
+ arguments: jsonObject,
544
+ expectedDefinitionDigest: sha256,
545
+ ...targetContext,
546
+ })
547
+ .strict()
548
+ .superRefine(requireCompleteSiteToolContext),
549
+ );
550
+ export type ToolGatewayTargetApprovalRequest = z.infer<typeof ToolGatewayTargetApprovalRequest>;
551
+ export const ToolGatewayTargetApprovalResponse = /* @__PURE__ */ defineSchema(() =>
552
+ z
553
+ .object({
554
+ bindingVersion: z.literal(2),
555
+ operationId: z.string().uuid(),
556
+ tool: ToolGatewayResolvedTool,
557
+ approvalToken: z.string().regex(/^ogta_[A-Za-z0-9_-]{43}$/u),
558
+ expiresAt: z.string().datetime({ offset: true }),
559
+ })
560
+ .strict(),
561
+ );
562
+ export type ToolGatewayTargetApprovalResponse = z.infer<typeof ToolGatewayTargetApprovalResponse>;
563
+
564
+ /** Bounded compatibility manifest, not workspace discovery. */
565
+ export const ToolGatewayManifestRequest = /* @__PURE__ */ defineSchema(() =>
566
+ z
567
+ .object({
568
+ identities: z.array(ToolGatewayIdentity).max(256),
569
+ ...targetContext,
570
+ })
571
+ .strict()
572
+ .superRefine(requireCompleteSiteToolContext),
573
+ );
574
+ export type ToolGatewayManifestRequest = z.infer<typeof ToolGatewayManifestRequest>;
575
+ export const ToolGatewayManifestResponse = /* @__PURE__ */ defineSchema(() =>
576
+ z
577
+ .object({
578
+ version: z.literal(1),
579
+ digest: sha256,
580
+ tools: z.array(ToolGatewayResolvedTool).max(256),
581
+ })
582
+ .strict(),
583
+ );
584
+ export type ToolGatewayManifestResponse = z.infer<typeof ToolGatewayManifestResponse>;
585
+
586
+ export const ToolGatewayDeclarationsResponse = /* @__PURE__ */ defineSchema(() =>
587
+ z
588
+ .object({
589
+ catalogDigest: sha256,
590
+ moduleSpecifier: z.string().min(1).max(512),
591
+ source: z.string().max(16 * 1024 * 1024),
592
+ })
593
+ .strict(),
594
+ );
376
595
  export type ToolGatewayDeclarationsResponse = z.infer<typeof ToolGatewayDeclarationsResponse>;
377
596
 
378
597
  function requireCompleteSiteToolContext(
@@ -387,14 +606,17 @@ function requireCompleteSiteToolContext(
387
606
  });
388
607
  }
389
608
 
390
- export const CodemodeOperationState = z.enum([
391
- "queued",
392
- "running",
393
- "completed",
394
- "failed",
395
- "outcome_unknown",
396
- "cancelled",
397
- ]);
609
+ export const CodemodeOperationState = /* @__PURE__ */ defineSchema(() =>
610
+ z.enum([
611
+ "queued",
612
+ "waiting_for_approval",
613
+ "running",
614
+ "completed",
615
+ "failed",
616
+ "outcome_unknown",
617
+ "cancelled",
618
+ ]),
619
+ );
398
620
  export type CodemodeOperationState = z.infer<typeof CodemodeOperationState>;
399
621
 
400
622
  /**
@@ -402,69 +624,84 @@ export type CodemodeOperationState = z.infer<typeof CodemodeOperationState>;
402
624
  * idempotency key to one exact call; callers may safely poll/retry the same
403
625
  * operation id but may never repurpose it.
404
626
  */
405
- export const CodemodeOperation = z
406
- .object({
407
- version: z.literal(CODEMODE_OPERATION_VERSION),
408
- operationId: z.string().uuid(),
409
- accountId: z.string().uuid(),
410
- workspaceId: z.string().uuid(),
411
- sessionId: z.string().uuid(),
412
- turnId: z.string().uuid(),
413
- attemptId: z.string().uuid(),
414
- executionGeneration: z.number().int().positive(),
415
- catalogDigest: sha256,
416
- requestDigest: sha256,
417
- identity: AttemptToolIdentity,
418
- arguments: jsonObject,
419
- caller: AttemptToolCaller.refine((caller) => caller.kind === "codemode", {
420
- message: "Codemode operation caller must be codemode",
421
- }),
422
- state: CodemodeOperationState,
423
- result: AttemptToolResult.nullable(),
424
- errorCode: z.string().min(1).max(128).nullable(),
425
- errorMessage: z.string().min(1).max(4_096).nullable(),
426
- createdAt: z.string().datetime({ offset: true }),
427
- claimedAt: z.string().datetime({ offset: true }).nullable(),
428
- executionStartedAt: z.string().datetime({ offset: true }).nullable(),
429
- completedAt: z.string().datetime({ offset: true }).nullable(),
430
- updatedAt: z.string().datetime({ offset: true }),
431
- })
432
- .strict();
627
+ export const CodemodeOperation = /* @__PURE__ */ defineSchema(() =>
628
+ z
629
+ .object({
630
+ version: z.literal(CODEMODE_OPERATION_VERSION),
631
+ operationId: z.string().uuid(),
632
+ accountId: z.string().uuid(),
633
+ workspaceId: z.string().uuid(),
634
+ sessionId: z.string().uuid(),
635
+ turnId: z.string().uuid(),
636
+ attemptId: z.string().uuid(),
637
+ executionGeneration: z.number().int().positive(),
638
+ catalogDigest: sha256,
639
+ requestDigest: sha256,
640
+ identity: AttemptToolIdentity,
641
+ arguments: jsonObject,
642
+ caller: AttemptToolCaller.refine((caller) => caller.kind === "codemode", {
643
+ message: "Codemode operation caller must be codemode",
644
+ }),
645
+ state: CodemodeOperationState,
646
+ /** Present only for clients that acknowledged durable approval continuation. */
647
+ durableApproval: z.literal(true).optional(),
648
+ approvalRequestId: z.string().uuid().optional(),
649
+ result: AttemptToolResult.nullable(),
650
+ errorCode: z.string().min(1).max(128).nullable(),
651
+ errorMessage: z.string().min(1).max(4_096).nullable(),
652
+ createdAt: z.string().datetime({ offset: true }),
653
+ claimedAt: z.string().datetime({ offset: true }).nullable(),
654
+ executionStartedAt: z.string().datetime({ offset: true }).nullable(),
655
+ completedAt: z.string().datetime({ offset: true }).nullable(),
656
+ updatedAt: z.string().datetime({ offset: true }),
657
+ })
658
+ .strict(),
659
+ );
433
660
  export type CodemodeOperation = z.infer<typeof CodemodeOperation>;
434
661
 
435
- export const CodemodeCallRequest = z
436
- .object({
437
- operationId: z.string().uuid(),
438
- catalogDigest: sha256,
439
- identity: AttemptToolIdentity,
440
- arguments: jsonObject,
441
- })
442
- .strict();
662
+ export const CodemodeCallRequest = /* @__PURE__ */ defineSchema(() =>
663
+ z
664
+ .object({
665
+ /** Opt-in transport capability, never permission to execute. */
666
+ durableApproval: z.literal(true).optional(),
667
+ operationId: z.string().uuid(),
668
+ catalogDigest: sha256,
669
+ identity: AttemptToolIdentity,
670
+ arguments: jsonObject,
671
+ })
672
+ .strict(),
673
+ );
443
674
  export type CodemodeCallRequest = z.infer<typeof CodemodeCallRequest>;
444
675
 
445
- export const CodemodeCallSubmission = z
446
- .object({
447
- operation: CodemodeOperation,
448
- dispatch: z.enum(["accepted", "already_running", "terminal", "unavailable", "rejected"]),
449
- })
450
- .strict();
676
+ export const CodemodeCallSubmission = /* @__PURE__ */ defineSchema(() =>
677
+ z
678
+ .object({
679
+ operation: CodemodeOperation,
680
+ dispatch: z.enum(["accepted", "already_running", "terminal", "unavailable", "rejected"]),
681
+ })
682
+ .strict(),
683
+ );
451
684
  export type CodemodeCallSubmission = z.infer<typeof CodemodeCallSubmission>;
452
685
 
453
686
  /** Tiny NATS wake-up. Postgres, never the broker payload, is durable truth. */
454
- export const CodemodeDispatchRequest = z
455
- .object({
456
- version: z.literal(CODEMODE_OPERATION_VERSION),
457
- operationId: z.string().uuid(),
458
- catalogDigest: sha256,
459
- })
460
- .strict();
687
+ export const CodemodeDispatchRequest = /* @__PURE__ */ defineSchema(() =>
688
+ z
689
+ .object({
690
+ version: z.literal(CODEMODE_OPERATION_VERSION),
691
+ operationId: z.string().uuid(),
692
+ catalogDigest: sha256,
693
+ })
694
+ .strict(),
695
+ );
461
696
  export type CodemodeDispatchRequest = z.infer<typeof CodemodeDispatchRequest>;
462
697
 
463
- export const CodemodeDispatchAck = z
464
- .object({
465
- version: z.literal(CODEMODE_OPERATION_VERSION),
466
- operationId: z.string().uuid(),
467
- status: z.enum(["accepted", "already_running", "terminal", "unavailable", "rejected"]),
468
- })
469
- .strict();
698
+ export const CodemodeDispatchAck = /* @__PURE__ */ defineSchema(() =>
699
+ z
700
+ .object({
701
+ version: z.literal(CODEMODE_OPERATION_VERSION),
702
+ operationId: z.string().uuid(),
703
+ status: z.enum(["accepted", "already_running", "terminal", "unavailable", "rejected"]),
704
+ })
705
+ .strict(),
706
+ );
470
707
  export type CodemodeDispatchAck = z.infer<typeof CodemodeDispatchAck>;