@opengeni/core 3.0.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 (257) hide show
  1. package/README.md +4 -4
  2. package/dist/access/index.d.ts +131 -7
  3. package/dist/access/service-initiator.d.ts +3 -0
  4. package/dist/application/archived-session-imports.d.ts +6 -0
  5. package/dist/application/composer-submit.d.ts +1 -1
  6. package/dist/application/connect-operation.d.ts +6 -0
  7. package/dist/application/external-workspace-members.d.ts +13 -1
  8. package/dist/application/modal-native-live-declaration-join.d.ts +37 -0
  9. package/dist/application/modal-native-original-configuration.d.ts +79 -0
  10. package/dist/application/modal-native-worker-host-transport.d.ts +297 -0
  11. package/dist/application/new-session-drafts.d.ts +29 -2
  12. package/dist/application/organization-privacy.d.ts +57 -0
  13. package/dist/application/prepared-mcp-connection.d.ts +31 -0
  14. package/dist/application/sandbox-recovery.d.ts +58 -0
  15. package/dist/application/session-commands.d.ts +3 -0
  16. package/dist/application/session-tenancy.d.ts +13 -4
  17. package/dist/billing/agent-run-admission.d.ts +21 -0
  18. package/dist/billing/limits.d.ts +27 -1
  19. package/dist/billing/model-call-admission.d.ts +34 -0
  20. package/dist/billing/model-usage-settlement.d.ts +112 -0
  21. package/dist/canonical-human-identities.js +1 -1
  22. package/dist/{chunk-VCZFFEPB.js → chunk-7T2SZ7BI.js} +16 -2
  23. package/dist/chunk-7T2SZ7BI.js.map +1 -0
  24. package/dist/{chunk-ZYCNLYGH.js → chunk-OMJFIIWK.js} +178 -12
  25. package/dist/chunk-OMJFIIWK.js.map +1 -0
  26. package/dist/{chunk-H7X52RI2.js → chunk-QI2M2B2K.js} +83 -8
  27. package/dist/chunk-QI2M2B2K.js.map +1 -0
  28. package/dist/{chunk-OF65T3PM.js → chunk-TTWTXQB2.js} +94 -6
  29. package/dist/chunk-TTWTXQB2.js.map +1 -0
  30. package/dist/codex-model-availability.d.ts +55 -0
  31. package/dist/default-session-model.d.ts +192 -0
  32. package/dist/dependencies.d.ts +41 -7
  33. package/dist/developer-setup-credential-ceiling.d.ts +10 -0
  34. package/dist/domain/agent-config-resolution.d.ts +49 -0
  35. package/dist/domain/automations.d.ts +8 -1
  36. package/dist/domain/capabilities.d.ts +112 -8
  37. package/dist/domain/connection-account-selection-error.d.ts +8 -0
  38. package/dist/domain/connector-tool-permissions.d.ts +62 -0
  39. package/dist/domain/direct-model-provider.d.ts +3 -0
  40. package/dist/domain/editable-artifacts/agent-application.d.ts +10 -1
  41. package/dist/domain/editable-artifacts/durable-export.d.ts +22 -1
  42. package/dist/domain/editable-artifacts/ports.d.ts +10 -0
  43. package/dist/domain/editable-artifacts/service.d.ts +3 -1
  44. package/dist/domain/editable-artifacts/types.d.ts +1 -1
  45. package/dist/domain/encryption-key.d.ts +12 -0
  46. package/dist/domain/insights-timing.d.ts +16 -0
  47. package/dist/domain/insights-usage.d.ts +27 -0
  48. package/dist/domain/insights.d.ts +21 -3
  49. package/dist/domain/knowledge-files.d.ts +1 -1
  50. package/dist/domain/knowledge-preparation.d.ts +10 -0
  51. package/dist/domain/knowledge-preparation.test.d.ts +1 -0
  52. package/dist/domain/knowledge-search.d.ts +15 -76
  53. package/dist/domain/mcp-account-bindings.d.ts +17 -0
  54. package/dist/domain/mcp-account-routes.d.ts +21 -0
  55. package/dist/domain/native-mcp-connection-admission.d.ts +3 -0
  56. package/dist/domain/organization-integration-catalog.d.ts +15 -0
  57. package/dist/domain/personal-connection-delegations.d.ts +73 -12
  58. package/dist/domain/pr-review.d.ts +121 -6
  59. package/dist/domain/realtime-voice-billing.d.ts +103 -0
  60. package/dist/domain/resources.d.ts +17 -1
  61. package/dist/domain/scheduled-task-access.d.ts +265 -0
  62. package/dist/domain/scheduled-task-account-audit.d.ts +27 -0
  63. package/dist/domain/scheduled-task-audience.d.ts +70 -0
  64. package/dist/domain/scheduled-tasks.d.ts +61 -18
  65. package/dist/domain/session-connection-accounts.d.ts +53 -0
  66. package/dist/domain/session-file-access.d.ts +4 -0
  67. package/dist/domain/session-native-connection-replacement.d.ts +14 -0
  68. package/dist/domain/session-start-timing.d.ts +7 -0
  69. package/dist/domain/session-tool-policy.d.ts +102 -4
  70. package/dist/domain/sessions.d.ts +179 -15
  71. package/dist/domain/site-audience.d.ts +52 -0
  72. package/dist/domain/skills.d.ts +29 -1
  73. package/dist/domain/slack-bot.d.ts +46 -1
  74. package/dist/domain/slack-publication-secret-safety.d.ts +1 -1
  75. package/dist/domain/vaults/index.d.ts +7 -0
  76. package/dist/domain/vaults/mapping.d.ts +25 -0
  77. package/dist/domain/vaults/provider-registry.d.ts +72 -0
  78. package/dist/domain/vaults/provider-sync.d.ts +176 -0
  79. package/dist/domain/vaults/provider-writes.d.ts +57 -0
  80. package/dist/domain/vaults/secret-resolver.d.ts +34 -0
  81. package/dist/domain/vaults/types.d.ts +24 -0
  82. package/dist/domain/vaults/vault-service.d.ts +35 -0
  83. package/dist/domain/voice-input-billing.d.ts +77 -0
  84. package/dist/domain/web-search-billing.d.ts +51 -0
  85. package/dist/domain/workspace-credits.d.ts +7 -0
  86. package/dist/editable-artifact-live/application.d.ts +2 -1
  87. package/dist/editable-artifact-live/server.d.ts +5 -1
  88. package/dist/editable-artifact-live/ticket.d.ts +2 -1
  89. package/dist/editable-artifact-live/types.d.ts +9 -0
  90. package/dist/editable-artifact-live.js +2 -2
  91. package/dist/editable-artifacts.js +10 -2
  92. package/dist/goal-admission.d.ts +627 -0
  93. package/dist/host-session-usage-limit.d.ts +15 -0
  94. package/dist/index.d.ts +43 -8
  95. package/dist/index.js +22682 -11743
  96. package/dist/index.js.map +1 -1
  97. package/dist/managed-session.d.ts +110 -7
  98. package/dist/model-call.d.ts +58 -0
  99. package/dist/model-catalog.d.ts +29 -3
  100. package/dist/model-provider-credentials.d.ts +43 -0
  101. package/dist/product-usage-metrics.d.ts +30 -0
  102. package/dist/rigs/index.d.ts +1 -13
  103. package/dist/sandbox/fleet.d.ts +58 -4
  104. package/dist/sandbox/routing.d.ts +42 -2
  105. package/dist/sandbox/runtime-settings.d.ts +27 -17
  106. package/dist/session-authorization.d.ts +10 -0
  107. package/dist/session-usage-limit-metrics.d.ts +60 -0
  108. package/dist/session-usage-limits.d.ts +89 -0
  109. package/dist/site-agent-clamp.d.ts +71 -0
  110. package/dist/site-session-origin.d.ts +39 -2
  111. package/dist/transcription.d.ts +120 -3
  112. package/dist/turn-surface.d.ts +20 -0
  113. package/dist/user-presence.d.ts +32 -0
  114. package/dist/workflow-wake-contract.d.ts +13 -1
  115. package/package.json +15 -22
  116. package/src/access/index.ts +961 -38
  117. package/src/access/service-initiator.ts +50 -0
  118. package/src/application/api-integration-servers.ts +9 -0
  119. package/src/application/archived-session-imports.ts +161 -0
  120. package/src/application/composer-submit.ts +3 -2
  121. package/src/application/connect-authority.ts +3 -3
  122. package/src/application/connect-operation.ts +37 -3
  123. package/src/application/external-continuation.ts +20 -3
  124. package/src/application/external-link-work-admission.ts +3 -0
  125. package/src/application/external-workspace-members.ts +51 -3
  126. package/src/application/modal-native-live-declaration-join.ts +196 -0
  127. package/src/application/modal-native-original-configuration.ts +261 -0
  128. package/src/application/modal-native-worker-host-transport.ts +263 -0
  129. package/src/application/new-session-drafts.ts +172 -55
  130. package/src/application/organization-privacy.ts +161 -0
  131. package/src/application/prepared-mcp-connection.ts +133 -0
  132. package/src/application/sandbox-recovery.ts +78 -0
  133. package/src/application/session-commands.ts +73 -1
  134. package/src/application/session-mcp-credential-rotation.ts +61 -18
  135. package/src/application/session-tenancy.ts +262 -44
  136. package/src/application/user-resource-grants.ts +1 -29
  137. package/src/billing/agent-run-admission.ts +117 -0
  138. package/src/billing/limits.ts +138 -14
  139. package/src/billing/model-call-admission.ts +118 -0
  140. package/src/billing/model-usage-settlement.ts +472 -0
  141. package/src/codex-model-availability.ts +264 -0
  142. package/src/default-session-model.ts +692 -0
  143. package/src/dependencies.ts +48 -6
  144. package/src/developer-setup-credential-ceiling.ts +60 -0
  145. package/src/domain/agent-config-resolution.ts +148 -0
  146. package/src/domain/automations.ts +76 -2
  147. package/src/domain/capabilities.ts +830 -181
  148. package/src/domain/connection-account-selection-error.ts +19 -0
  149. package/src/domain/connector-tool-permissions.ts +572 -0
  150. package/src/domain/direct-model-provider.ts +62 -0
  151. package/src/domain/editable-artifacts/agent-application.ts +44 -6
  152. package/src/domain/editable-artifacts/durable-export.ts +100 -5
  153. package/src/domain/editable-artifacts/in-memory.ts +6 -0
  154. package/src/domain/editable-artifacts/ports.ts +11 -0
  155. package/src/domain/editable-artifacts/service.ts +20 -0
  156. package/src/domain/editable-artifacts/types.ts +1 -1
  157. package/src/domain/encryption-key.ts +26 -0
  158. package/src/domain/file-owner.ts +16 -1
  159. package/src/domain/github-action-policies.ts +1 -1
  160. package/src/domain/github-skill-source.ts +3 -1
  161. package/src/domain/insights-timing.ts +95 -0
  162. package/src/domain/insights-usage.ts +67 -0
  163. package/src/domain/insights.ts +167 -43
  164. package/src/domain/knowledge-files.ts +10 -3
  165. package/src/domain/knowledge-messages.ts +1 -0
  166. package/src/domain/knowledge-preparation.test.ts +276 -0
  167. package/src/domain/knowledge-preparation.ts +147 -0
  168. package/src/domain/knowledge-search.test.ts +617 -5
  169. package/src/domain/knowledge-search.ts +240 -23
  170. package/src/domain/mcp-account-bindings.ts +169 -0
  171. package/src/domain/mcp-account-routes.ts +152 -0
  172. package/src/domain/native-mcp-connection-admission.ts +14 -0
  173. package/src/domain/organization-integration-catalog.ts +88 -0
  174. package/src/domain/personal-connection-delegations.ts +399 -257
  175. package/src/domain/pr-review.ts +24 -8
  176. package/src/domain/realtime-voice-billing.ts +425 -0
  177. package/src/domain/resources.ts +50 -4
  178. package/src/domain/scheduled-task-access.ts +1089 -0
  179. package/src/domain/scheduled-task-account-audit.ts +90 -0
  180. package/src/domain/scheduled-task-audience.ts +249 -0
  181. package/src/domain/scheduled-tasks.ts +1313 -374
  182. package/src/domain/session-connection-accounts.ts +239 -0
  183. package/src/domain/session-file-access.ts +47 -0
  184. package/src/domain/session-native-connection-replacement.ts +64 -0
  185. package/src/domain/session-start-timing.ts +60 -0
  186. package/src/domain/session-tool-policy.ts +489 -14
  187. package/src/domain/sessions.ts +2254 -717
  188. package/src/domain/site-audience.ts +130 -0
  189. package/src/domain/skills.ts +9 -0
  190. package/src/domain/slack-bot.ts +141 -4
  191. package/src/domain/slack-publication-secret-safety.ts +1 -1
  192. package/src/domain/vaults/index.ts +19 -0
  193. package/src/domain/vaults/mapping.ts +190 -0
  194. package/src/domain/vaults/provider-registry.ts +201 -0
  195. package/src/domain/vaults/provider-sync.ts +531 -0
  196. package/src/domain/vaults/provider-writes.ts +288 -0
  197. package/src/domain/vaults/secret-resolver.ts +464 -0
  198. package/src/domain/vaults/types.ts +26 -0
  199. package/src/domain/vaults/vault-service.ts +1316 -0
  200. package/src/domain/voice-input-billing.ts +330 -0
  201. package/src/domain/web-search-billing.ts +169 -0
  202. package/src/domain/workspace-credits.ts +13 -0
  203. package/src/editable-artifact-live/application.ts +8 -1
  204. package/src/editable-artifact-live/server.ts +154 -6
  205. package/src/editable-artifact-live/ticket.ts +86 -1
  206. package/src/editable-artifact-live/types.ts +10 -0
  207. package/src/goal-admission.ts +220 -0
  208. package/src/host-session-usage-limit.ts +25 -0
  209. package/src/index.ts +75 -11
  210. package/src/managed-session.ts +137 -6
  211. package/src/model-call.ts +79 -0
  212. package/src/model-catalog.ts +345 -91
  213. package/src/model-provider-credentials.ts +394 -0
  214. package/src/product-usage-metrics.ts +101 -0
  215. package/src/rigs/index.ts +23 -111
  216. package/src/sandbox/fleet.ts +253 -28
  217. package/src/sandbox/routing.ts +204 -43
  218. package/src/sandbox/runtime-settings.ts +159 -85
  219. package/src/session-authorization.ts +172 -23
  220. package/src/session-usage-limit-metrics.ts +95 -0
  221. package/src/session-usage-limits.ts +415 -0
  222. package/src/site-agent-clamp.ts +226 -0
  223. package/src/site-session-origin.ts +84 -5
  224. package/src/transcription.ts +123 -4
  225. package/src/turn-surface.ts +47 -0
  226. package/src/user-presence.ts +134 -0
  227. package/src/workflow-wake-contract.ts +14 -1
  228. package/dist/application/host-mcp-owner.d.ts +0 -6
  229. package/dist/application/host-mcp-resolvers.d.ts +0 -13
  230. package/dist/chunk-5WZYFL45.js +0 -266
  231. package/dist/chunk-5WZYFL45.js.map +0 -1
  232. package/dist/chunk-H7X52RI2.js.map +0 -1
  233. package/dist/chunk-OF65T3PM.js.map +0 -1
  234. package/dist/chunk-VCZFFEPB.js.map +0 -1
  235. package/dist/chunk-ZYCNLYGH.js.map +0 -1
  236. package/dist/domain/connection-authority.d.ts +0 -97
  237. package/dist/domain/connection-authority.js +0 -169
  238. package/dist/domain/connection-authority.js.map +0 -1
  239. package/dist/domain/environments.d.ts +0 -33
  240. package/dist/domain/host-mcp-authority-source-admission.d.ts +0 -10
  241. package/dist/domain/host-mcp-task-admission.d.ts +0 -18
  242. package/dist/domain/packs.d.ts +0 -59
  243. package/dist/domain/product-integration-pack.d.ts +0 -44
  244. package/dist/domain/product-integration-skill.gen.d.ts +0 -5
  245. package/dist/remote-mcp-credentials.d.ts +0 -23
  246. package/dist/remote-mcp-credentials.js +0 -11
  247. package/dist/remote-mcp-credentials.js.map +0 -1
  248. package/src/application/host-mcp-owner.ts +0 -41
  249. package/src/application/host-mcp-resolvers.ts +0 -84
  250. package/src/domain/connection-authority.ts +0 -329
  251. package/src/domain/environments.ts +0 -120
  252. package/src/domain/host-mcp-authority-source-admission.ts +0 -25
  253. package/src/domain/host-mcp-task-admission.ts +0 -121
  254. package/src/domain/packs.ts +0 -699
  255. package/src/domain/product-integration-pack.ts +0 -42
  256. package/src/domain/product-integration-skill.gen.ts +0 -52
  257. package/src/remote-mcp-credentials.ts +0 -361
@@ -0,0 +1,297 @@
1
+ import type { Settings } from "@opengeni/config";
2
+ import { z } from "zod";
3
+ declare const intent: z.ZodDiscriminatedUnion<[z.ZodObject<{
4
+ protocol: z.ZodLiteral<"opengeni-modal-native-worker-host-proof">;
5
+ version: z.ZodLiteral<2>;
6
+ principalKind: z.ZodLiteral<"worker_host">;
7
+ purpose: z.ZodLiteral<"original-native-custody-proof">;
8
+ scope: z.ZodObject<{
9
+ version: z.ZodLiteral<2>;
10
+ declarationId: z.ZodString;
11
+ planId: z.ZodString;
12
+ creatorId: z.ZodString;
13
+ accountId: z.ZodString;
14
+ workspaceId: z.ZodString;
15
+ sessionId: z.ZodString;
16
+ turnId: z.ZodString;
17
+ attemptId: z.ZodString;
18
+ executionGeneration: z.ZodNumber;
19
+ triggerEventId: z.ZodString;
20
+ sandboxGroupId: z.ZodString;
21
+ routeKind: z.ZodLiteral<"home">;
22
+ routeTargetId: z.ZodNull;
23
+ routeEpoch: z.ZodNumber;
24
+ }, z.core.$strict>;
25
+ configurationCaptureRef: z.ZodObject<{
26
+ id: z.ZodString;
27
+ revision: z.ZodNumber;
28
+ }, z.core.$strict>;
29
+ proofGrantRef: z.ZodObject<{
30
+ id: z.ZodString;
31
+ epoch: z.ZodNumber;
32
+ }, z.core.$strict>;
33
+ requestId: z.ZodString;
34
+ action: z.ZodLiteral<"declare_preparation">;
35
+ }, z.core.$strict>, z.ZodObject<{
36
+ protocol: z.ZodLiteral<"opengeni-modal-native-worker-host-proof">;
37
+ version: z.ZodLiteral<2>;
38
+ principalKind: z.ZodLiteral<"worker_host">;
39
+ purpose: z.ZodLiteral<"original-native-custody-proof">;
40
+ scope: z.ZodObject<{
41
+ version: z.ZodLiteral<2>;
42
+ declarationId: z.ZodString;
43
+ planId: z.ZodString;
44
+ creatorId: z.ZodString;
45
+ accountId: z.ZodString;
46
+ workspaceId: z.ZodString;
47
+ sessionId: z.ZodString;
48
+ turnId: z.ZodString;
49
+ attemptId: z.ZodString;
50
+ executionGeneration: z.ZodNumber;
51
+ triggerEventId: z.ZodString;
52
+ sandboxGroupId: z.ZodString;
53
+ routeKind: z.ZodLiteral<"home">;
54
+ routeTargetId: z.ZodNull;
55
+ routeEpoch: z.ZodNumber;
56
+ }, z.core.$strict>;
57
+ configurationCaptureRef: z.ZodObject<{
58
+ id: z.ZodString;
59
+ revision: z.ZodNumber;
60
+ }, z.core.$strict>;
61
+ proofGrantRef: z.ZodObject<{
62
+ id: z.ZodString;
63
+ epoch: z.ZodNumber;
64
+ }, z.core.$strict>;
65
+ requestId: z.ZodString;
66
+ action: z.ZodLiteral<"claim_namespace_read">;
67
+ recordRevision: z.ZodNumber;
68
+ }, z.core.$strict>, z.ZodObject<{
69
+ protocol: z.ZodLiteral<"opengeni-modal-native-worker-host-proof">;
70
+ version: z.ZodLiteral<2>;
71
+ principalKind: z.ZodLiteral<"worker_host">;
72
+ purpose: z.ZodLiteral<"original-native-custody-proof">;
73
+ scope: z.ZodObject<{
74
+ version: z.ZodLiteral<2>;
75
+ declarationId: z.ZodString;
76
+ planId: z.ZodString;
77
+ creatorId: z.ZodString;
78
+ accountId: z.ZodString;
79
+ workspaceId: z.ZodString;
80
+ sessionId: z.ZodString;
81
+ turnId: z.ZodString;
82
+ attemptId: z.ZodString;
83
+ executionGeneration: z.ZodNumber;
84
+ triggerEventId: z.ZodString;
85
+ sandboxGroupId: z.ZodString;
86
+ routeKind: z.ZodLiteral<"home">;
87
+ routeTargetId: z.ZodNull;
88
+ routeEpoch: z.ZodNumber;
89
+ }, z.core.$strict>;
90
+ configurationCaptureRef: z.ZodObject<{
91
+ id: z.ZodString;
92
+ revision: z.ZodNumber;
93
+ }, z.core.$strict>;
94
+ proofGrantRef: z.ZodObject<{
95
+ id: z.ZodString;
96
+ epoch: z.ZodNumber;
97
+ }, z.core.$strict>;
98
+ requestId: z.ZodString;
99
+ action: z.ZodLiteral<"claim_original_command_read">;
100
+ recordRevision: z.ZodNumber;
101
+ }, z.core.$strict>, z.ZodObject<{
102
+ protocol: z.ZodLiteral<"opengeni-modal-native-worker-host-proof">;
103
+ version: z.ZodLiteral<2>;
104
+ principalKind: z.ZodLiteral<"worker_host">;
105
+ purpose: z.ZodLiteral<"original-native-custody-proof">;
106
+ scope: z.ZodObject<{
107
+ version: z.ZodLiteral<2>;
108
+ declarationId: z.ZodString;
109
+ planId: z.ZodString;
110
+ creatorId: z.ZodString;
111
+ accountId: z.ZodString;
112
+ workspaceId: z.ZodString;
113
+ sessionId: z.ZodString;
114
+ turnId: z.ZodString;
115
+ attemptId: z.ZodString;
116
+ executionGeneration: z.ZodNumber;
117
+ triggerEventId: z.ZodString;
118
+ sandboxGroupId: z.ZodString;
119
+ routeKind: z.ZodLiteral<"home">;
120
+ routeTargetId: z.ZodNull;
121
+ routeEpoch: z.ZodNumber;
122
+ }, z.core.$strict>;
123
+ configurationCaptureRef: z.ZodObject<{
124
+ id: z.ZodString;
125
+ revision: z.ZodNumber;
126
+ }, z.core.$strict>;
127
+ proofGrantRef: z.ZodObject<{
128
+ id: z.ZodString;
129
+ epoch: z.ZodNumber;
130
+ }, z.core.$strict>;
131
+ requestId: z.ZodString;
132
+ action: z.ZodLiteral<"capture_namespace_binding">;
133
+ acquisition: z.ZodObject<{
134
+ claimId: z.ZodString;
135
+ nonce: z.ZodString;
136
+ claimRevision: z.ZodNumber;
137
+ recordRevision: z.ZodNumber;
138
+ captureId: z.ZodString;
139
+ acquisitionId: z.ZodString;
140
+ }, z.core.$strict>;
141
+ }, z.core.$strict>, z.ZodObject<{
142
+ protocol: z.ZodLiteral<"opengeni-modal-native-worker-host-proof">;
143
+ version: z.ZodLiteral<2>;
144
+ principalKind: z.ZodLiteral<"worker_host">;
145
+ purpose: z.ZodLiteral<"original-native-custody-proof">;
146
+ scope: z.ZodObject<{
147
+ version: z.ZodLiteral<2>;
148
+ declarationId: z.ZodString;
149
+ planId: z.ZodString;
150
+ creatorId: z.ZodString;
151
+ accountId: z.ZodString;
152
+ workspaceId: z.ZodString;
153
+ sessionId: z.ZodString;
154
+ turnId: z.ZodString;
155
+ attemptId: z.ZodString;
156
+ executionGeneration: z.ZodNumber;
157
+ triggerEventId: z.ZodString;
158
+ sandboxGroupId: z.ZodString;
159
+ routeKind: z.ZodLiteral<"home">;
160
+ routeTargetId: z.ZodNull;
161
+ routeEpoch: z.ZodNumber;
162
+ }, z.core.$strict>;
163
+ configurationCaptureRef: z.ZodObject<{
164
+ id: z.ZodString;
165
+ revision: z.ZodNumber;
166
+ }, z.core.$strict>;
167
+ proofGrantRef: z.ZodObject<{
168
+ id: z.ZodString;
169
+ epoch: z.ZodNumber;
170
+ }, z.core.$strict>;
171
+ requestId: z.ZodString;
172
+ action: z.ZodLiteral<"capture_original_page">;
173
+ acquisition: z.ZodObject<{
174
+ claimId: z.ZodString;
175
+ nonce: z.ZodString;
176
+ claimRevision: z.ZodNumber;
177
+ recordRevision: z.ZodNumber;
178
+ captureId: z.ZodString;
179
+ acquisitionId: z.ZodString;
180
+ }, z.core.$strict>;
181
+ }, z.core.$strict>, z.ZodObject<{
182
+ protocol: z.ZodLiteral<"opengeni-modal-native-worker-host-proof">;
183
+ version: z.ZodLiteral<2>;
184
+ principalKind: z.ZodLiteral<"worker_host">;
185
+ purpose: z.ZodLiteral<"original-native-custody-proof">;
186
+ scope: z.ZodObject<{
187
+ version: z.ZodLiteral<2>;
188
+ declarationId: z.ZodString;
189
+ planId: z.ZodString;
190
+ creatorId: z.ZodString;
191
+ accountId: z.ZodString;
192
+ workspaceId: z.ZodString;
193
+ sessionId: z.ZodString;
194
+ turnId: z.ZodString;
195
+ attemptId: z.ZodString;
196
+ executionGeneration: z.ZodNumber;
197
+ triggerEventId: z.ZodString;
198
+ sandboxGroupId: z.ZodString;
199
+ routeKind: z.ZodLiteral<"home">;
200
+ routeTargetId: z.ZodNull;
201
+ routeEpoch: z.ZodNumber;
202
+ }, z.core.$strict>;
203
+ configurationCaptureRef: z.ZodObject<{
204
+ id: z.ZodString;
205
+ revision: z.ZodNumber;
206
+ }, z.core.$strict>;
207
+ proofGrantRef: z.ZodObject<{
208
+ id: z.ZodString;
209
+ epoch: z.ZodNumber;
210
+ }, z.core.$strict>;
211
+ requestId: z.ZodString;
212
+ action: z.ZodLiteral<"reconcile_same_capture">;
213
+ acquisition: z.ZodObject<{
214
+ claimId: z.ZodString;
215
+ nonce: z.ZodString;
216
+ claimRevision: z.ZodNumber;
217
+ recordRevision: z.ZodNumber;
218
+ captureId: z.ZodString;
219
+ acquisitionId: z.ZodString;
220
+ }, z.core.$strict>;
221
+ }, z.core.$strict>, z.ZodObject<{
222
+ protocol: z.ZodLiteral<"opengeni-modal-native-worker-host-proof">;
223
+ version: z.ZodLiteral<2>;
224
+ principalKind: z.ZodLiteral<"worker_host">;
225
+ purpose: z.ZodLiteral<"original-native-custody-proof">;
226
+ scope: z.ZodObject<{
227
+ version: z.ZodLiteral<2>;
228
+ declarationId: z.ZodString;
229
+ planId: z.ZodString;
230
+ creatorId: z.ZodString;
231
+ accountId: z.ZodString;
232
+ workspaceId: z.ZodString;
233
+ sessionId: z.ZodString;
234
+ turnId: z.ZodString;
235
+ attemptId: z.ZodString;
236
+ executionGeneration: z.ZodNumber;
237
+ triggerEventId: z.ZodString;
238
+ sandboxGroupId: z.ZodString;
239
+ routeKind: z.ZodLiteral<"home">;
240
+ routeTargetId: z.ZodNull;
241
+ routeEpoch: z.ZodNumber;
242
+ }, z.core.$strict>;
243
+ configurationCaptureRef: z.ZodObject<{
244
+ id: z.ZodString;
245
+ revision: z.ZodNumber;
246
+ }, z.core.$strict>;
247
+ proofGrantRef: z.ZodObject<{
248
+ id: z.ZodString;
249
+ epoch: z.ZodNumber;
250
+ }, z.core.$strict>;
251
+ requestId: z.ZodString;
252
+ action: z.ZodLiteral<"settle_original_acquisition">;
253
+ acquisition: z.ZodObject<{
254
+ claimId: z.ZodString;
255
+ nonce: z.ZodString;
256
+ claimRevision: z.ZodNumber;
257
+ recordRevision: z.ZodNumber;
258
+ captureId: z.ZodString;
259
+ acquisitionId: z.ZodString;
260
+ }, z.core.$strict>;
261
+ }, z.core.$strict>], "action">;
262
+ declare const timing: z.ZodObject<{
263
+ bodySha256: z.ZodString;
264
+ issuedAt: z.ZodNumber;
265
+ expiresAt: z.ZodNumber;
266
+ }, z.core.$strict>;
267
+ type Intent = z.infer<typeof intent>;
268
+ export type NativeWorkerHostTransportDescriptionV2 = Intent & z.infer<typeof timing>;
269
+ declare const transportBrand: unique symbol;
270
+ export type NativeWorkerHostTransport = Readonly<{
271
+ [transportBrand]: true;
272
+ }>;
273
+ declare const verifiedBrand: unique symbol;
274
+ export type VerifiedNativeWorkerHostTransport = Readonly<{
275
+ [verifiedBrand]: true;
276
+ }>;
277
+ /** Host startup only. Deliberately DOES NOT call resolveFirstPartyDelegationSecret:
278
+ * neither configured access-key substitution nor the public local/test fallback
279
+ * can select this new purpose root. Missing explicit deployment secret is OFF.
280
+ * No variable lookup, provider request, config mutation or persistence occurs. */
281
+ export declare function configuredNativeWorkerHostTransport(settings: Pick<Settings, "delegationSecret">): NativeWorkerHostTransport | null;
282
+ /** Release only this transport's derived-key copy, not a config/grant/custody
283
+ * lifecycle or observation slot. Outstanding native I/O needs its own join. */
284
+ export declare function disposeNativeWorkerHostTransport(transport: NativeWorkerHostTransport): void;
285
+ /** Private worker/core transport serialization. The caller MUST first establish
286
+ * canonical original-host admission. This helper cannot establish that admission
287
+ * and is intentionally not exported from the core package's public entrypoints. */
288
+ export declare function signNativeWorkerHostTransport(transport: NativeWorkerHostTransport, input: Intent, body: Uint8Array, nowSeconds?: number): string;
289
+ /** Only host transport authenticity is verified. A later narrow authorizer must
290
+ * independently source-join original live/maintenance authority, configuration,
291
+ * grant, claim, acquisition, body fields/cursors and exact action-specific CAS. */
292
+ export declare function verifyNativeWorkerHostTransport(transport: NativeWorkerHostTransport, envelope: string, body: Uint8Array, nowSeconds?: number): VerifiedNativeWorkerHostTransport | null;
293
+ /** Request-local inspection of a previously verified MAC, NOT current admission.
294
+ * The narrow host authorizer must still recheck expiry and current authority/CAS.
295
+ * Copying a description, token or ref cannot mint grant or native-I/O authority. */
296
+ export declare function nativeWorkerHostTransportDescription(transport: NativeWorkerHostTransport, proof: VerifiedNativeWorkerHostTransport): NativeWorkerHostTransportDescriptionV2;
297
+ export {};
@@ -1,9 +1,25 @@
1
1
  import { type AccessGrant, type NewSessionDraft as NewSessionDraftValue } from "@opengeni/contracts";
2
2
  import type { AppDependencies } from "../dependencies.js";
3
3
  import { type AccessGrantAuthorization } from "../access/index.js";
4
+ import { type Settings } from "@opengeni/config";
4
5
  type NewSessionDraftDependencies = Pick<AppDependencies, "settings" | "db" | "objectStorage">;
6
+ /**
7
+ * Whether a stored draft's model policy was the person's choice. A row written
8
+ * before the marker existed (or by an older client) counts as a choice unless
9
+ * it is exactly the deployment default policy (model, reasoning, standard
10
+ * speed), which is what an untouched composer used to save.
11
+ */
12
+ export declare function draftModelProvided(settings: Settings, draft: Pick<NewSessionDraftValue, "model" | "reasoningEffort" | "latencyMode" | "modelProvided">): boolean;
13
+ type NewSessionDraftReadOptions = {
14
+ /**
15
+ * Project a draft that follows the default onto today's resolved default.
16
+ * Callers that only reuse a chosen model (Slack defaults) skip the
17
+ * resolution; session creation resolves the default itself.
18
+ */
19
+ projectDefaultModel?: boolean;
20
+ };
5
21
  /** Read the authenticated actor's server-authoritative pre-session composer state. */
6
- declare function getActorNewSessionDraftInFileScope(deps: Pick<NewSessionDraftDependencies, "settings" | "db">, grant: AccessGrant, workspaceId: string): Promise<NewSessionDraftValue>;
22
+ declare function getActorNewSessionDraftInFileScope(deps: Pick<NewSessionDraftDependencies, "settings" | "db">, grant: AccessGrant, workspaceId: string, readOptions?: NewSessionDraftReadOptions): Promise<NewSessionDraftValue>;
7
23
  /**
8
24
  * Validate and save one exact actor-private draft revision. Create-time-only
9
25
  * checks (live machine target, rig/variable-set state, and permission
@@ -19,6 +35,17 @@ declare function saveActorNewSessionDraftInFileScope(deps: NewSessionDraftDepend
19
35
  * the historical bare-membership fence.
20
36
  */
21
37
  canonicalManagedHumanSession?: boolean, externalAuthorization?: AccessGrantAuthorization): Promise<NewSessionDraftValue>;
22
- export declare function getActorNewSessionDraft(deps: Parameters<typeof getActorNewSessionDraftInFileScope>[0], grant: AccessGrant, workspaceId: string, authorization?: AccessGrantAuthorization): Promise<NewSessionDraftValue>;
38
+ export declare function getActorNewSessionDraft(deps: Parameters<typeof getActorNewSessionDraftInFileScope>[0], grant: AccessGrant, workspaceId: string, authorization?: AccessGrantAuthorization, readOptions?: NewSessionDraftReadOptions): Promise<NewSessionDraftValue>;
23
39
  export declare function saveActorNewSessionDraft(...args: Parameters<typeof saveActorNewSessionDraftInFileScope>): Promise<NewSessionDraftValue>;
40
+ /**
41
+ * The model policy the person explicitly chose in the website composer, or an
42
+ * empty object when their draft follows the default.
43
+ *
44
+ * Only the model policy is reused. Connectors, repositories, Variable Sets,
45
+ * Sandbox Environment and compute target in the draft are the person's last
46
+ * explicit narrowing of one website chat, so surfaces that start work without
47
+ * the composer (Slack) resolve those from workspace defaults instead of
48
+ * silently inheriting that narrowing.
49
+ */
50
+ export declare function getActorNewSessionModelChoice(deps: Parameters<typeof getActorNewSessionDraft>[0], grant: AccessGrant, workspaceId: string): Promise<Pick<NewSessionDraftValue, "model" | "reasoningEffort" | "latencyMode"> | Record<string, never>>;
24
51
  export {};
@@ -0,0 +1,57 @@
1
+ import type { Settings } from "@opengeni/config";
2
+ import type { OrganizationPrivacySettings, UpdateOrganizationPrivacySettingsRequest } from "@opengeni/contracts";
3
+ import { type Database, type OrganizationPrivacyPreferences } from "@opengeni/db";
4
+ /**
5
+ * Privacy: who can see chats, schedules and their runs. An organization's
6
+ * owners and admins choose whether Only me is allowed (the private session
7
+ * setting), the default audience for new chats and schedules, and whether
8
+ * admins see that other people's Only me schedules exist. A deployment, such
9
+ * as a product that embeds Opengeni, can only narrow those choices. See
10
+ * docs/design/privacy-audiences-2026-10-11.md.
11
+ */
12
+ export type PrivacySettings = Pick<Settings, "privacyOnlyMeAllowed" | "privacyWorkspaceDefaultRequired" | "privacyAdminScheduleSummariesRequired">;
13
+ export type PrivacyDeploymentLimits = OrganizationPrivacySettings["limits"];
14
+ export declare function privacyDeploymentLimits(settings: PrivacySettings): PrivacyDeploymentLimits;
15
+ export type EffectiveOrganizationPrivacy = {
16
+ defaultVisibility: "private" | "workspace";
17
+ adminsSeePrivateSchedules: boolean;
18
+ };
19
+ /** The organization's choices with the deployment's limits applied. */
20
+ export declare function effectiveOrganizationPrivacy(preferences: Pick<OrganizationPrivacyPreferences, "defaultVisibility" | "adminsSeePrivateSchedules">, limits: PrivacyDeploymentLimits): EffectiveOrganizationPrivacy;
21
+ export declare function resolveOrganizationPrivacy(deps: {
22
+ db: Database;
23
+ settings: PrivacySettings;
24
+ }, accountId: string): Promise<EffectiveOrganizationPrivacy>;
25
+ /**
26
+ * Refuse a new Only me chat or schedule in a shared workspace when this
27
+ * deployment turns Only me off. A Personal workspace is only ever its owner's,
28
+ * so it is unaffected. Existing Only me items keep their audience: narrowing
29
+ * is always allowed, widening never happens silently.
30
+ */
31
+ export declare function requireDeploymentAllowsOnlyMe(deps: {
32
+ db: Database;
33
+ settings: PrivacySettings;
34
+ }, input: {
35
+ workspaceId: string;
36
+ actorSubjectId: string;
37
+ }): Promise<void>;
38
+ /** Raised when a change would go past what this deployment allows. */
39
+ export declare class OrganizationPrivacyLockedError extends Error {
40
+ readonly name = "OrganizationPrivacyLockedError";
41
+ }
42
+ export declare function getOrganizationPrivacySettings(deps: {
43
+ db: Database;
44
+ settings: PrivacySettings;
45
+ }, organizationId: string): Promise<OrganizationPrivacySettings>;
46
+ /**
47
+ * Change the organization's privacy choices. Only an owner or admin may, and
48
+ * never past the deployment's limits.
49
+ */
50
+ export declare function updateOrganizationPrivacySettings(deps: {
51
+ db: Database;
52
+ settings: PrivacySettings;
53
+ }, input: {
54
+ organizationId: string;
55
+ actorSubjectId: string;
56
+ request: UpdateOrganizationPrivacySettingsRequest;
57
+ }): Promise<OrganizationPrivacySettings>;
@@ -0,0 +1,31 @@
1
+ import { type AccessGrant, type ConnectionMetadata } from "@opengeni/contracts";
2
+ import type { ConnectOwnership, PreparedMcpSetup } from "@opengeni/contracts/connect";
3
+ import type { Settings } from "@opengeni/config";
4
+ import { type Database } from "@opengeni/db";
5
+ import { type McpCapabilityProbe } from "../domain/capabilities.js";
6
+ /** Initialize/list tools before committing anything. Secret headers stay in this
7
+ * invocation; the installation contains only an ordinary native connection ref.
8
+ * The caller commits the connection and this installation in one authorized
9
+ * Connect operation, so retries cannot leave an orphan credential or catalog. */
10
+ export declare function prepareMcpConnectionActivation(input: {
11
+ grant: AccessGrant;
12
+ settings: Settings;
13
+ setup: PreparedMcpSetup;
14
+ ownership: ConnectOwnership;
15
+ headers: Record<string, string>;
16
+ probe?: McpCapabilityProbe;
17
+ }): Promise<{
18
+ capabilityId: string;
19
+ commit: (db: Database, connection: ConnectionMetadata) => Promise<{
20
+ id: string;
21
+ accountId: string;
22
+ workspaceId: string;
23
+ capabilityId: string;
24
+ kind: "api" | "mcp" | "plugin" | "skill";
25
+ status: "active" | "disabled";
26
+ config: Record<string, unknown>;
27
+ metadata: Record<string, unknown>;
28
+ enabledAt: string;
29
+ updatedAt: string;
30
+ }>;
31
+ }>;
@@ -0,0 +1,58 @@
1
+ import type { SandboxRecoveryRequest } from "@opengeni/contracts";
2
+ import { type AccessGrantAuthorization } from "../access/index.js";
3
+ import type { AppDependencies } from "../dependencies.js";
4
+ type Dependencies = Pick<AppDependencies, "db" | "sessionAuthorization">;
5
+ /** The read-only projection also serves the exact built-in local human. Its
6
+ * provenance stamp is set only by the local resolver, never a bearer claim. */
7
+ export declare function requireSandboxRecoveryPreviewHuman(authorization: AccessGrantAuthorization, workspaceId: string): void;
8
+ export declare function getManagedHumanSandboxRecovery(deps: Dependencies, authorization: AccessGrantAuthorization, workspaceId: string, sessionId: string): Promise<{
9
+ version: 1;
10
+ status: "blocked" | "consent_accepted" | "eligible" | "restored" | "restoring" | "unsupported";
11
+ reason: string | null;
12
+ checkpoint: {
13
+ version: 1;
14
+ sessionId: string;
15
+ sandboxGroupId: string;
16
+ leaseId: string;
17
+ routeEpoch: number;
18
+ authorityEpoch: number;
19
+ leaseEpoch: number;
20
+ workspaceGeneration: number;
21
+ archiveGeneration: number;
22
+ artifactId: string;
23
+ revision: string;
24
+ capturedAt: string;
25
+ } | null;
26
+ operationId: string | null;
27
+ automaticAvailable?: boolean | undefined;
28
+ automaticLane?: "checkpoint" | "fresh_workspace" | undefined;
29
+ availableAt?: string | undefined;
30
+ }>;
31
+ export declare function consentManagedHumanSandboxRecovery(deps: Dependencies, authorization: AccessGrantAuthorization, workspaceId: string, sessionId: string, request: SandboxRecoveryRequest): Promise<{
32
+ outcome: "accepted" | "replayed";
33
+ operationId: string;
34
+ recovery: {
35
+ version: 1;
36
+ status: "blocked" | "consent_accepted" | "eligible" | "restored" | "restoring" | "unsupported";
37
+ reason: string | null;
38
+ checkpoint: {
39
+ version: 1;
40
+ sessionId: string;
41
+ sandboxGroupId: string;
42
+ leaseId: string;
43
+ routeEpoch: number;
44
+ authorityEpoch: number;
45
+ leaseEpoch: number;
46
+ workspaceGeneration: number;
47
+ archiveGeneration: number;
48
+ artifactId: string;
49
+ revision: string;
50
+ capturedAt: string;
51
+ } | null;
52
+ operationId: string | null;
53
+ automaticAvailable?: boolean | undefined;
54
+ automaticLane?: "checkpoint" | "fresh_workspace" | undefined;
55
+ availableAt?: string | undefined;
56
+ };
57
+ }>;
58
+ export {};
@@ -1,4 +1,5 @@
1
1
  import type { ComposerDraft, DeleteSessionQueueItemRequest, EditSessionQueueItemRequest, MoveSessionQueueItemRequest, SaveComposerDraftRequest, SessionAuthorizationPort, SessionAuthorizationSurface, SessionControlRequest, SessionControlResponse, SessionQueueMutationResponse, SteerSessionQueueItemRequest, WorkspaceInferenceControlRequest, WorkspaceInferenceControlResponse } from "@opengeni/contracts";
2
+ import type { Settings } from "@opengeni/config";
2
3
  import { type Database, type SessionCommandReceiptRow } from "@opengeni/db";
3
4
  import { type EventBus } from "@opengeni/events";
4
5
  import type { SessionWorkflowClient } from "../dependencies.js";
@@ -37,6 +38,7 @@ type SessionCommandPostCommitDeps = {
37
38
  };
38
39
  export declare function sendAgentSessionMessage(deps: {
39
40
  db: Database;
41
+ settings?: Settings;
40
42
  bus: EventBus;
41
43
  workflowClient: Pick<SessionWorkflowClient, "wakeSessionWorkflow">;
42
44
  sessionAuthorization?: SessionAuthorizationPort | null;
@@ -47,6 +49,7 @@ export declare function sendAgentSessionMessage(deps: {
47
49
  }): Promise<import("@opengeni/db").AgentInternalUpdateCommandResult>;
48
50
  export declare function steerAgentSession(deps: {
49
51
  db: Database;
52
+ settings?: Settings;
50
53
  bus: EventBus;
51
54
  workflowClient: Pick<SessionWorkflowClient, "wakeSessionWorkflow">;
52
55
  sessionAuthorization?: SessionAuthorizationPort | null;
@@ -1,7 +1,10 @@
1
- import { ForkSessionResponse, SessionTenancyCreateCapabilities, UpdateSessionVisibilityResponse, type ForkSessionRequest, type SessionAuthorizationSurface, type UpdateSessionVisibilityRequest } from "@opengeni/contracts";
1
+ import { ForkSessionResponse, SessionVisibilityChangePreview, SessionTenancyCreateCapabilities, UpdateSessionVisibilityResponse, type ForkSessionRequest, type SessionAuthorizationSurface, type SessionVisibility, type UpdateSessionVisibilityRequest } from "@opengeni/contracts";
2
2
  import { type AccessGrantAuthorization } from "../access/index.js";
3
3
  import type { AppDependencies } from "../dependencies.js";
4
4
  type SessionTenancyDependencies = Pick<AppDependencies, "db" | "bus" | "sessionAuthorization" | "settings">;
5
+ type SessionVisibilityDependencies = SessionTenancyDependencies & {
6
+ workflowClient: Pick<AppDependencies["workflowClient"], "wakeSessionWorkflow">;
7
+ };
5
8
  export declare class SessionTenancyManagedHumanRequiredError extends Error {
6
9
  readonly name = "SessionTenancyManagedHumanRequiredError";
7
10
  constructor();
@@ -12,8 +15,14 @@ export declare class SessionTenancyPersistenceOutcomeUnknownError extends Error
12
15
  }
13
16
  export declare function requireCanonicalManagedHuman(authorization: AccessGrantAuthorization, workspaceId: string): void;
14
17
  export declare function requireVerifiedOwningUser(authorization: AccessGrantAuthorization, workspaceId: string): void;
15
- export declare function getManagedHumanSessionCreateCapabilities(deps: Pick<SessionTenancyDependencies, "db">, authorization: AccessGrantAuthorization, workspaceId: string): Promise<SessionTenancyCreateCapabilities>;
16
- export declare function requireManagedHumanPrivateSessionCreate(deps: Pick<SessionTenancyDependencies, "db">, authorization: AccessGrantAuthorization, workspaceId: string): Promise<void>;
17
- export declare function updateManagedHumanSessionVisibility(deps: SessionTenancyDependencies, authorization: AccessGrantAuthorization, workspaceId: string, sessionId: string, request: UpdateSessionVisibilityRequest, authorizationSurface?: SessionAuthorizationSurface): Promise<UpdateSessionVisibilityResponse>;
18
+ export declare function getManagedHumanSessionCreateCapabilities(deps: Pick<SessionTenancyDependencies, "db" | "settings">, authorization: AccessGrantAuthorization, workspaceId: string): Promise<SessionTenancyCreateCapabilities>;
19
+ export declare function requireManagedHumanPrivateSessionCreate(deps: Pick<SessionTenancyDependencies, "db" | "settings">, authorization: AccessGrantAuthorization, workspaceId: string): Promise<void>;
20
+ export declare function updateManagedHumanSessionVisibility(deps: SessionVisibilityDependencies, authorization: AccessGrantAuthorization, workspaceId: string, sessionId: string, request: UpdateSessionVisibilityRequest, authorizationSurface?: SessionAuthorizationSurface): Promise<UpdateSessionVisibilityResponse>;
21
+ /**
22
+ * Owner-only preview for the audience dialog: what a change to `visibility`
23
+ * would stop, and what would still refuse it. Same gates as the change itself,
24
+ * so a non-owner learns nothing a refused change would not tell them.
25
+ */
26
+ export declare function previewManagedHumanSessionVisibilityChange(deps: SessionTenancyDependencies, authorization: AccessGrantAuthorization, workspaceId: string, sessionId: string, targetVisibility: SessionVisibility, authorizationSurface?: SessionAuthorizationSurface): Promise<SessionVisibilityChangePreview>;
18
27
  export declare function forkManagedHumanSession(deps: SessionTenancyDependencies, authorization: AccessGrantAuthorization, workspaceId: string, sourceSessionId: string, request: ForkSessionRequest, authorizationSurface?: SessionAuthorizationSurface): Promise<ForkSessionResponse>;
19
28
  export {};
@@ -0,0 +1,21 @@
1
+ import { type Settings } from "@opengeni/config";
2
+ import type { EntitlementsPort } from "@opengeni/contracts";
3
+ import { type Database } from "@opengeni/db";
4
+ export type AgentRunAdmissionDenial = "insufficient_credits" | "allowance_exhausted" | "monthly_model_cost_limit" | "monthly_agent_run_limit";
5
+ /** Read-only admission shared by service-authored runs and goal Resume. */
6
+ export declare function agentRunAdmissionDenial(services: {
7
+ db: Database;
8
+ settings: Settings;
9
+ entitlements?: EntitlementsPort | null;
10
+ }, input: {
11
+ accountId: string;
12
+ workspaceId: string;
13
+ model: string;
14
+ requestedAgentRuns: number;
15
+ /** The accepted work's causal human, not the scheduler/service caller. */
16
+ initiatingHumanSubjectId?: string | null;
17
+ acceptedTurn?: {
18
+ sessionId: string;
19
+ turnId: string;
20
+ };
21
+ }): Promise<AgentRunAdmissionDenial | null>;
@@ -2,17 +2,43 @@ import { type Settings } from "@opengeni/config";
2
2
  import type { LimitAction, LimitDecision, SessionTurnSource, TurnInitiator, TurnInitiatorContext } from "@opengeni/contracts";
3
3
  import type { ApiRouteDeps } from "../dependencies.js";
4
4
  export type LimitDependencies = Pick<ApiRouteDeps, "db" | "settings">;
5
+ /** Deterministic/local embeddings never debit credits, even in paid mode. */
6
+ export declare function paidDocumentEmbedding(settings: Settings): boolean;
7
+ /** Round up each provider request so a positive input cannot become a free debit. */
8
+ export declare function documentEmbeddingCostMicros(settings: Settings, inputBytes: number): number;
5
9
  export type LimitCheckInput = {
6
10
  accountId: string;
7
11
  workspaceId?: string;
12
+ /** Frozen causal human, never the API key or service admitting the work. */
13
+ initiatingHumanSubjectId?: string | null;
14
+ acceptedTurn?: {
15
+ sessionId: string;
16
+ turnId: string;
17
+ };
8
18
  action: LimitAction;
9
19
  quantity?: number;
10
20
  model?: string | null;
11
21
  };
12
- export declare function modelFundingForAdmission(settings: Settings, model: string | null | undefined, codexBilled: boolean): {
22
+ export declare function modelFundingForAdmission(settings: Settings, model: string | null | undefined, codexBilled: boolean,
23
+ /**
24
+ * The shared core's live funding answer for a connected subscription that
25
+ * has cut over to the core (`coreRoutedSubscriptionFunding`); undefined
26
+ * keeps the legacy answer.
27
+ */
28
+ coreRoutedFunding?: boolean): {
13
29
  fundedWithoutCredits: boolean;
14
30
  countsTowardTokenCap: boolean;
15
31
  };
32
+ export declare function coreRoutedSubscriptionFunding(db: LimitDependencies["db"], settings: Settings, input: {
33
+ accountId: string;
34
+ workspaceId: string;
35
+ model: string | null | undefined;
36
+ subjectId: string | null;
37
+ acceptedTurn?: {
38
+ sessionId: string;
39
+ turnId: string;
40
+ };
41
+ }): Promise<boolean | undefined>;
16
42
  export declare function requireLimit(deps: LimitDependencies, input: LimitCheckInput): Promise<void>;
17
43
  export declare function checkLimit(deps: LimitDependencies, input: LimitCheckInput): Promise<LimitDecision>;
18
44
  export declare function recordWorkspaceUsage(deps: LimitDependencies, input: {
@@ -0,0 +1,34 @@
1
+ import { type Settings } from "@opengeni/config";
2
+ import type { EntitlementsPort } from "@opengeni/contracts";
3
+ import { type Database } from "@opengeni/db";
4
+ export type ModelCallAdmissionDenial = "insufficient_credits" | "allowance_exhausted" | "monthly_model_cost_limit" | "monthly_token_limit";
5
+ export type ModelCallAdmission = {
6
+ allowed: true;
7
+ creditPolicyRevision: number | undefined;
8
+ } | {
9
+ allowed: false;
10
+ denial: ModelCallAdmissionDenial;
11
+ message: string;
12
+ };
13
+ /**
14
+ * Admission for one stateless model call, with the same funding rules as an
15
+ * agent turn between model calls: an Opengeni-credit model needs a positive
16
+ * spendable balance, the workspace allowance must not be exhausted, and the
17
+ * static monthly caps apply. Admission is a read, never a reservation or an
18
+ * estimate of the call's cost; settlement charges actual usage afterwards.
19
+ * Externally funded calls (subscriptions, workspace or organization keys)
20
+ * skip the credit gate and the token cap.
21
+ */
22
+ export declare function admitModelCall(services: {
23
+ db: Database;
24
+ settings: Settings;
25
+ entitlements?: EntitlementsPort | null;
26
+ }, input: {
27
+ accountId: string;
28
+ workspaceId: string;
29
+ /** Canonical product model id; scopes model-specific promotional credits. */
30
+ model: string;
31
+ chargesOpenGeniCredits: boolean;
32
+ countsTowardTokenCap: boolean;
33
+ subjectId: string | null;
34
+ }): Promise<ModelCallAdmission>;