@opengeni/sdk 3.1.0 → 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 (295) hide show
  1. package/README.md +1037 -71
  2. package/dist/accounts.d.ts +5 -1
  3. package/dist/accounts.js +13 -1
  4. package/dist/accounts.js.map +1 -1
  5. package/dist/adapters/express.d.ts +31 -0
  6. package/dist/adapters/express.js +87 -0
  7. package/dist/adapters/express.js.map +1 -0
  8. package/dist/adapters/hono.d.ts +16 -0
  9. package/dist/adapters/hono.js +8 -0
  10. package/dist/adapters/hono.js.map +1 -0
  11. package/dist/adapters/next.d.ts +29 -0
  12. package/dist/adapters/next.js +22 -0
  13. package/dist/adapters/next.js.map +1 -0
  14. package/dist/allowance-refusal.d.ts +2 -0
  15. package/dist/allowance-refusal.js +50 -0
  16. package/dist/allowance-refusal.js.map +1 -0
  17. package/dist/app-links.d.ts +42 -0
  18. package/dist/app-links.js +66 -0
  19. package/dist/app-links.js.map +1 -0
  20. package/dist/artifact-catalog.d.ts +40 -0
  21. package/dist/artifact-client.d.ts +20 -8
  22. package/dist/artifacts.d.ts +1 -1
  23. package/dist/artifacts.js +8 -6
  24. package/dist/automations.js +8 -2
  25. package/dist/automations.js.map +1 -1
  26. package/dist/azure-live-transport.d.ts +32 -0
  27. package/dist/browser.d.ts +7 -2
  28. package/dist/browser.js +27 -5
  29. package/dist/chat/fold.d.ts +75 -0
  30. package/dist/chat/handler.d.ts +41 -0
  31. package/dist/chat/http.d.ts +67 -0
  32. package/dist/chat/ids.d.ts +34 -0
  33. package/dist/chat/index.d.ts +9 -0
  34. package/dist/chat/index.js +1703 -0
  35. package/dist/chat/index.js.map +1 -0
  36. package/dist/chat/openai.d.ts +30 -0
  37. package/dist/chat/opengeni.d.ts +129 -0
  38. package/dist/chat/types.d.ts +207 -0
  39. package/dist/chat/vercel.d.ts +49 -0
  40. package/dist/chats.d.ts +8 -0
  41. package/dist/chunk-4AHR4KGA.js +301 -0
  42. package/dist/chunk-4AHR4KGA.js.map +1 -0
  43. package/dist/chunk-6HZGAIUE.js +1665 -0
  44. package/dist/chunk-6HZGAIUE.js.map +1 -0
  45. package/dist/chunk-7EWT3PV6.js +368 -0
  46. package/dist/chunk-7EWT3PV6.js.map +1 -0
  47. package/dist/{chunk-VYCTL62C.js → chunk-GZQSWAKD.js} +1 -1
  48. package/dist/chunk-GZQSWAKD.js.map +1 -0
  49. package/dist/chunk-JXXCTW5W.js +1392 -0
  50. package/dist/chunk-JXXCTW5W.js.map +1 -0
  51. package/dist/{chunk-YTAWBDO2.js → chunk-KADZ5PGG.js} +28 -2
  52. package/dist/chunk-KADZ5PGG.js.map +1 -0
  53. package/dist/{chunk-YKZME56C.js → chunk-KWADQ227.js} +3 -3
  54. package/dist/{chunk-YKZME56C.js.map → chunk-KWADQ227.js.map} +1 -1
  55. package/dist/{chunk-7ZXBPJZP.js → chunk-NEM5N6C6.js} +3902 -1457
  56. package/dist/chunk-NEM5N6C6.js.map +1 -0
  57. package/dist/{chunk-GW3EJ2GP.js → chunk-O7KANXC3.js} +86 -13
  58. package/dist/chunk-O7KANXC3.js.map +1 -0
  59. package/dist/{chunk-VUQZAB3O.js → chunk-OAKHWFSV.js} +28 -32
  60. package/dist/chunk-OAKHWFSV.js.map +1 -0
  61. package/dist/chunk-P7UWKORG.js +561 -0
  62. package/dist/chunk-P7UWKORG.js.map +1 -0
  63. package/dist/chunk-QGEIL4TR.js +195 -0
  64. package/dist/chunk-QGEIL4TR.js.map +1 -0
  65. package/dist/chunk-RJHCBZF7.js +270 -0
  66. package/dist/chunk-RJHCBZF7.js.map +1 -0
  67. package/dist/chunk-S3D75WSQ.js +340 -0
  68. package/dist/chunk-S3D75WSQ.js.map +1 -0
  69. package/dist/chunk-UM4ZXXJR.js +9 -0
  70. package/dist/chunk-UM4ZXXJR.js.map +1 -0
  71. package/dist/chunk-VPVMLM7Q.js +15 -0
  72. package/dist/chunk-VPVMLM7Q.js.map +1 -0
  73. package/dist/{chunk-C2H7HBNP.js → chunk-WVCJRSGJ.js} +119 -14
  74. package/dist/chunk-WVCJRSGJ.js.map +1 -0
  75. package/dist/chunk-XA7HVIHI.js +126 -0
  76. package/dist/chunk-XA7HVIHI.js.map +1 -0
  77. package/dist/{chunk-TX3EIENU.js → chunk-YDVPI7WT.js} +73 -2
  78. package/dist/chunk-YDVPI7WT.js.map +1 -0
  79. package/dist/chunk-YKIHNLWD.js +153 -0
  80. package/dist/chunk-YKIHNLWD.js.map +1 -0
  81. package/dist/chunk-ZDUBPV33.js +277 -0
  82. package/dist/chunk-ZDUBPV33.js.map +1 -0
  83. package/dist/client.d.ts +1065 -124
  84. package/dist/codex-realtime-controller.d.ts +13 -0
  85. package/dist/codex-realtime-controller.js +4 -2
  86. package/dist/codex-realtime-v3-wire.d.ts +3 -2
  87. package/dist/codex-realtime.d.ts +5 -1
  88. package/dist/company-brain.d.ts +1 -11
  89. package/dist/company-profile.d.ts +13 -0
  90. package/dist/core.d.ts +7 -2
  91. package/dist/core.js +25 -6
  92. package/dist/deprecation.d.ts +47 -0
  93. package/dist/document-authority-client.d.ts +24 -2
  94. package/dist/document-authority.js +7 -5
  95. package/dist/editable-artifacts/index.d.ts +1 -1
  96. package/dist/editable-artifacts/types.d.ts +12 -2
  97. package/dist/editable-artifacts.js +19 -3
  98. package/dist/editable-artifacts.js.map +1 -1
  99. package/dist/embedding-client.d.ts +129 -0
  100. package/dist/errors.d.ts +76 -1
  101. package/dist/feedback.d.ts +23 -0
  102. package/dist/gateway-realtime-transport.js +1 -1
  103. package/dist/github-repositories.d.ts +10 -0
  104. package/dist/github-repositories.js +36 -0
  105. package/dist/github-repositories.js.map +1 -0
  106. package/dist/index.d.ts +64 -11
  107. package/dist/index.js +566 -141
  108. package/dist/index.js.map +1 -1
  109. package/dist/insights-usage.d.ts +33 -0
  110. package/dist/insights-usage.js +7 -0
  111. package/dist/insights-usage.js.map +1 -0
  112. package/dist/interaction.d.ts +103 -71
  113. package/dist/interaction.js +4 -2
  114. package/dist/knowledge.d.ts +7 -0
  115. package/dist/knowledge.js +20 -0
  116. package/dist/knowledge.js.map +1 -0
  117. package/dist/known-tools.d.ts +4 -0
  118. package/dist/message-links.d.ts +68 -0
  119. package/dist/model-context.d.ts +68 -0
  120. package/dist/model-display.d.ts +2 -0
  121. package/dist/model-display.js +17 -0
  122. package/dist/model-display.js.map +1 -0
  123. package/dist/model-picker-order.d.ts +1 -0
  124. package/dist/model-picker-order.js +10 -0
  125. package/dist/model-picker-order.js.map +1 -0
  126. package/dist/organization-integration-policy.d.ts +26 -0
  127. package/dist/organization-integration-policy.js +26 -0
  128. package/dist/organization-integration-policy.js.map +1 -0
  129. package/dist/pr-review-client.d.ts +1 -1
  130. package/dist/pr-review.d.ts +1 -1
  131. package/dist/pr-review.js.map +1 -1
  132. package/dist/preference-registry.d.ts +1 -1
  133. package/dist/prepared-mcp-setup.d.ts +5 -0
  134. package/dist/proxy.d.ts +13 -11
  135. package/dist/realtime.d.ts +4 -2
  136. package/dist/realtime.js +253 -7
  137. package/dist/realtime.js.map +1 -1
  138. package/dist/session-history-import.d.ts +22 -0
  139. package/dist/session-history-import.js +36 -0
  140. package/dist/session-history-import.js.map +1 -0
  141. package/dist/session-list-entries.d.ts +1 -0
  142. package/dist/session-list-entries.js +7 -0
  143. package/dist/session-list-entries.js.map +1 -0
  144. package/dist/session-message-search.d.ts +53 -0
  145. package/dist/session-proxy-client.d.ts +28 -0
  146. package/dist/session-proxy.d.ts +334 -0
  147. package/dist/session-proxy.js +24 -0
  148. package/dist/session-proxy.js.map +1 -0
  149. package/dist/session-titles.d.ts +2 -0
  150. package/dist/session-usage-limits.d.ts +10 -0
  151. package/dist/session-usage-limits.js +43 -0
  152. package/dist/session-usage-limits.js.map +1 -0
  153. package/dist/shared-catalog-loader.d.ts +34 -0
  154. package/dist/site-bridge-host.d.ts +112 -0
  155. package/dist/site-bridge-host.js +285 -0
  156. package/dist/site-bridge-host.js.map +1 -0
  157. package/dist/site-browser-entry.d.ts +1 -0
  158. package/dist/site-browser-runtime.gen.d.ts +1 -0
  159. package/dist/site-data.d.ts +178 -0
  160. package/dist/site-document.d.ts +5 -0
  161. package/dist/site-document.js +20 -0
  162. package/dist/site-document.js.map +1 -0
  163. package/dist/site-document.test.d.ts +1 -0
  164. package/dist/site-http.d.ts +17 -0
  165. package/dist/site-sql.d.ts +31 -0
  166. package/dist/site-tool-bridge.d.ts +57 -0
  167. package/dist/site.d.ts +182 -0
  168. package/dist/site.js +62 -0
  169. package/dist/site.js.map +1 -0
  170. package/dist/skills.d.ts +75 -0
  171. package/dist/sse.d.ts +1 -1
  172. package/dist/stream.d.ts +2 -0
  173. package/dist/tenant-workspaces.d.ts +47 -0
  174. package/dist/tenant-workspaces.js +8 -0
  175. package/dist/tenant-workspaces.js.map +1 -0
  176. package/dist/tool-auth.d.ts +87 -0
  177. package/dist/tool-auth.js +23 -0
  178. package/dist/tool-auth.js.map +1 -0
  179. package/dist/tool-display-metadata.d.ts +3 -0
  180. package/dist/tools-37DCTCNZ.js +12 -0
  181. package/dist/tools-37DCTCNZ.js.map +1 -0
  182. package/dist/tools.d.ts +81 -0
  183. package/dist/transcription.d.ts +1 -1
  184. package/dist/types.d.ts +2848 -573
  185. package/dist/usage-allowances.d.ts +36 -0
  186. package/dist/usage-allowances.js +80 -0
  187. package/dist/usage-allowances.js.map +1 -0
  188. package/dist/vault-types.d.ts +236 -0
  189. package/dist/vaults-api.d.ts +57 -0
  190. package/dist/workspace-artifacts.d.ts +47 -5
  191. package/dist/workspace-instruction-policies.d.ts +2 -2
  192. package/dist/workspace-integrations.d.ts +74 -0
  193. package/dist/workspace-integrations.js +65 -0
  194. package/dist/workspace-integrations.js.map +1 -0
  195. package/dist/workspace-state.d.ts +8 -71
  196. package/package.json +99 -5
  197. package/src/accounts.ts +18 -0
  198. package/src/adapters/express.ts +136 -0
  199. package/src/adapters/hono.ts +18 -0
  200. package/src/adapters/next.ts +42 -0
  201. package/src/allowance-refusal.ts +5 -0
  202. package/src/app-links.ts +117 -0
  203. package/src/artifact-catalog.ts +51 -0
  204. package/src/artifact-client.ts +40 -49
  205. package/src/artifacts.ts +1 -0
  206. package/src/automations-client.ts +8 -2
  207. package/src/azure-live-transport.ts +286 -0
  208. package/src/browser.ts +37 -0
  209. package/src/chat/fold.ts +431 -0
  210. package/src/chat/handler.ts +240 -0
  211. package/src/chat/http.ts +257 -0
  212. package/src/chat/ids.ts +85 -0
  213. package/src/chat/index.ts +88 -0
  214. package/src/chat/openai.ts +439 -0
  215. package/src/chat/opengeni.ts +737 -0
  216. package/src/chat/types.ts +219 -0
  217. package/src/chat/vercel.ts +204 -0
  218. package/src/chats.ts +16 -0
  219. package/src/client.ts +5822 -1847
  220. package/src/codex-realtime-controller.ts +163 -8
  221. package/src/codex-realtime-v3-wire.ts +4 -3
  222. package/src/codex-realtime-v3.ts +12 -3
  223. package/src/codex-realtime.ts +11 -3
  224. package/src/company-brain.ts +0 -40
  225. package/src/company-profile.ts +13 -0
  226. package/src/core.ts +20 -0
  227. package/src/deprecation.ts +149 -0
  228. package/src/document-authority-client.ts +104 -1
  229. package/src/editable-artifacts/controller.ts +36 -2
  230. package/src/editable-artifacts/index.ts +1 -0
  231. package/src/editable-artifacts/types.ts +29 -16
  232. package/src/embedding-client.ts +519 -0
  233. package/src/errors.ts +303 -4
  234. package/src/feedback.ts +20 -0
  235. package/src/gateway-realtime-transport.ts +3 -3
  236. package/src/github-repositories.ts +60 -0
  237. package/src/index.ts +611 -64
  238. package/src/insights-usage.ts +61 -0
  239. package/src/interaction.ts +274 -93
  240. package/src/knowledge.ts +72 -0
  241. package/src/known-tools.ts +279 -0
  242. package/src/message-links.ts +178 -0
  243. package/src/model-context.ts +113 -0
  244. package/src/model-display.ts +11 -0
  245. package/src/model-picker-order.ts +6 -0
  246. package/src/organization-integration-policy.ts +54 -0
  247. package/src/pr-review-client.ts +1 -1
  248. package/src/pr-review.ts +1 -1
  249. package/src/preference-registry.ts +2 -0
  250. package/src/prepared-mcp-setup.ts +123 -0
  251. package/src/proxy.ts +23 -12
  252. package/src/realtime.ts +16 -6
  253. package/src/session-history-import.ts +84 -0
  254. package/src/session-list-entries.ts +1 -0
  255. package/src/session-message-search.ts +47 -0
  256. package/src/session-proxy-client.ts +68 -0
  257. package/src/session-proxy.ts +2098 -0
  258. package/src/session-titles.ts +10 -0
  259. package/src/session-usage-limits.ts +71 -0
  260. package/src/shared-catalog-loader.ts +169 -0
  261. package/src/site-bridge-host.ts +422 -0
  262. package/src/site-browser-entry.ts +6 -0
  263. package/src/site-browser-runtime.gen.ts +2 -0
  264. package/src/site-data.ts +372 -0
  265. package/src/site-document.test.ts +64 -0
  266. package/src/site-document.ts +18 -0
  267. package/src/site-http.ts +171 -0
  268. package/src/site-sql.ts +153 -0
  269. package/src/site-tool-bridge.ts +401 -0
  270. package/src/site.ts +867 -0
  271. package/src/skills.ts +69 -0
  272. package/src/sse.ts +9 -3
  273. package/src/stream.ts +33 -10
  274. package/src/tenant-workspaces.ts +148 -0
  275. package/src/tool-auth.ts +301 -0
  276. package/src/tool-display-metadata.ts +27 -0
  277. package/src/tools.ts +452 -0
  278. package/src/transcription.ts +3 -0
  279. package/src/types.ts +3216 -581
  280. package/src/usage-allowances.ts +189 -0
  281. package/src/vault-types.ts +293 -0
  282. package/src/vaults-api.ts +288 -0
  283. package/src/workspace-artifacts.ts +55 -6
  284. package/src/workspace-instruction-policies.ts +2 -1
  285. package/src/workspace-integrations.ts +402 -0
  286. package/src/workspace-state.ts +8 -82
  287. package/dist/chunk-7ZXBPJZP.js.map +0 -1
  288. package/dist/chunk-C2H7HBNP.js.map +0 -1
  289. package/dist/chunk-C4DJPZRU.js +0 -119
  290. package/dist/chunk-C4DJPZRU.js.map +0 -1
  291. package/dist/chunk-GW3EJ2GP.js.map +0 -1
  292. package/dist/chunk-TX3EIENU.js.map +0 -1
  293. package/dist/chunk-VUQZAB3O.js.map +0 -1
  294. package/dist/chunk-VYCTL62C.js.map +0 -1
  295. package/dist/chunk-YTAWBDO2.js.map +0 -1
@@ -0,0 +1,189 @@
1
+ // @opengeni/sdk/usage-allowances — usage allowance reads and administration as
2
+ // free functions over any client's `requestJson`, so a browser console can use
3
+ // them without widening the native browser client. The root `OpenGeniClient`
4
+ // methods of the same names call the same routes.
5
+ //
6
+ // Amounts are integer USD micros (1 USD = 1,000,000). Display `fraction` and
7
+ // `status` in products that must not show money; see docs/usage-allowances.md.
8
+ import type { OpenGeniClient, OpenGeniRequestOptions } from "./client";
9
+ import type {
10
+ ClearWorkspaceAllowanceRequest,
11
+ ClearWorkspaceAllowanceResponse,
12
+ GetMyUsageRequest,
13
+ GetUsageRequest,
14
+ GrantWorkspaceCreditsRequest,
15
+ MemberAllowance,
16
+ SetMemberAllowanceRequest,
17
+ SetWorkspaceAllowanceRequest,
18
+ WorkspaceAllowance,
19
+ WorkspaceAllowanceState,
20
+ WorkspaceCreditGrant,
21
+ WorkspaceUsageResponse,
22
+ } from "@opengeni/contracts/usage-allowances";
23
+
24
+ export type {
25
+ AllowanceExhaustedRefusal,
26
+ ClearWorkspaceAllowanceRequest,
27
+ ClearWorkspaceAllowanceResponse,
28
+ GetMyUsageRequest,
29
+ GetUsageRequest,
30
+ GrantWorkspaceCreditsRequest,
31
+ MemberAllowance,
32
+ MemberAllowanceDefault,
33
+ MemberAllowanceRule,
34
+ MemberAllowanceUsage,
35
+ SetMemberAllowanceRequest,
36
+ SetWorkspaceAllowanceRequest,
37
+ UsageAllowancePeriod,
38
+ UsageAllowanceStatus,
39
+ UsageAllowanceWindow,
40
+ WorkspaceAllowance,
41
+ WorkspaceAllowanceConfig,
42
+ WorkspaceAllowanceState,
43
+ WorkspaceAllowanceUsage,
44
+ WorkspaceCreditGrant,
45
+ WorkspaceUsageResponse,
46
+ } from "@opengeni/contracts/usage-allowances";
47
+
48
+ /** The one client capability these functions need. */
49
+ export type UsageAllowanceRequestClient = Pick<OpenGeniClient, "requestJson">;
50
+
51
+ /** A member target: canonical subject id, or an external identity. */
52
+ export type UsageAllowanceMemberTarget = string | { source: string; externalId: string };
53
+
54
+ function workspacePath(workspaceId: string): string {
55
+ return `/v1/workspaces/${encodeURIComponent(workspaceId)}`;
56
+ }
57
+
58
+ /** Query strings for usage reads: only defined values, stringified. */
59
+ export function usageAllowanceQuery(query: GetUsageRequest): Record<string, string> {
60
+ return Object.fromEntries(
61
+ Object.entries(query)
62
+ .filter(([, value]) => value !== undefined)
63
+ .map(([key, value]) => [key, String(value)]),
64
+ );
65
+ }
66
+
67
+ /** Configuration, or null when no ceiling is configured. Budget-read authority. */
68
+ export async function getWorkspaceAllowance(
69
+ client: UsageAllowanceRequestClient,
70
+ workspaceId: string,
71
+ ): Promise<WorkspaceAllowance | null> {
72
+ return await client.requestJson("GET", `${workspacePath(workspaceId)}/allowance`);
73
+ }
74
+
75
+ /** Lifecycle version plus configuration; version survives a clear. Budget-read authority. */
76
+ export async function getWorkspaceAllowanceState(
77
+ client: UsageAllowanceRequestClient,
78
+ workspaceId: string,
79
+ ): Promise<WorkspaceAllowanceState> {
80
+ return await client.requestJson("GET", `${workspacePath(workspaceId)}/allowance/state`);
81
+ }
82
+
83
+ /**
84
+ * Set the workspace ceiling with exact-version compare-and-set. Requires a
85
+ * verified organization administrator or a full-access organization key.
86
+ */
87
+ export async function setWorkspaceAllowance(
88
+ client: UsageAllowanceRequestClient,
89
+ workspaceId: string,
90
+ request: SetWorkspaceAllowanceRequest,
91
+ ): Promise<WorkspaceAllowance> {
92
+ return await client.requestJson("PUT", `${workspacePath(workspaceId)}/allowance`, request);
93
+ }
94
+
95
+ /** Remove the ceiling (not a refund or counter reset). Returns the next lifecycle version. */
96
+ export async function clearWorkspaceAllowance(
97
+ client: UsageAllowanceRequestClient,
98
+ workspaceId: string,
99
+ request: ClearWorkspaceAllowanceRequest,
100
+ ): Promise<ClearWorkspaceAllowanceResponse> {
101
+ return await client.requestJson("DELETE", `${workspacePath(workspaceId)}/allowance`, request);
102
+ }
103
+
104
+ /** One-off credits on top of the included amount. Reuse the operationId to retry. */
105
+ export async function grantWorkspaceCredits(
106
+ client: UsageAllowanceRequestClient,
107
+ workspaceId: string,
108
+ request: GrantWorkspaceCreditsRequest,
109
+ ): Promise<WorkspaceCreditGrant> {
110
+ return await client.requestJson(
111
+ "POST",
112
+ `${workspacePath(workspaceId)}/allowance/grants`,
113
+ request,
114
+ );
115
+ }
116
+
117
+ /**
118
+ * Set or restore (`rule: null`) one member's ceiling with exact-version CAS.
119
+ * Shares may oversubscribe the pool; the workspace ceiling still binds.
120
+ */
121
+ export async function setMemberAllowance(
122
+ client: UsageAllowanceRequestClient,
123
+ workspaceId: string,
124
+ member: UsageAllowanceMemberTarget,
125
+ request: SetMemberAllowanceRequest,
126
+ ): Promise<MemberAllowance> {
127
+ const path =
128
+ typeof member === "string"
129
+ ? encodeURIComponent(member)
130
+ : `external/${encodeURIComponent(member.source)}/${encodeURIComponent(member.externalId)}`;
131
+ return await client.requestJson(
132
+ "PUT",
133
+ `${workspacePath(workspaceId)}/members/${path}/allowance`,
134
+ request,
135
+ );
136
+ }
137
+
138
+ /** The paginated roster page. Workspace admin, organization admin, or org-key read. */
139
+ export async function getUsage(
140
+ client: UsageAllowanceRequestClient,
141
+ workspaceId: string,
142
+ query: GetUsageRequest = {},
143
+ options: OpenGeniRequestOptions = {},
144
+ ): Promise<WorkspaceUsageResponse> {
145
+ return await client.requestJson(
146
+ "GET",
147
+ `${workspacePath(workspaceId)}/usage`,
148
+ undefined,
149
+ usageAllowanceQuery(query),
150
+ options,
151
+ );
152
+ }
153
+
154
+ /** The caller's own row plus the workspace aggregate. Any authenticated member. */
155
+ export async function getMyUsage(
156
+ client: UsageAllowanceRequestClient,
157
+ workspaceId: string,
158
+ query: GetMyUsageRequest = {},
159
+ options: OpenGeniRequestOptions = {},
160
+ ): Promise<WorkspaceUsageResponse> {
161
+ return await client.requestJson(
162
+ "GET",
163
+ `${workspacePath(workspaceId)}/usage/me`,
164
+ undefined,
165
+ usageAllowanceQuery(query),
166
+ options,
167
+ );
168
+ }
169
+
170
+ /** Every roster page for one period (follows `nextCursor`). */
171
+ export async function getAllUsage(
172
+ client: UsageAllowanceRequestClient,
173
+ workspaceId: string,
174
+ query: Omit<GetUsageRequest, "cursor"> = {},
175
+ options: OpenGeniRequestOptions = {},
176
+ ): Promise<WorkspaceUsageResponse> {
177
+ const first = await getUsage(client, workspaceId, { limit: 200, ...query }, options);
178
+ const members = [...first.members];
179
+ let cursor = first.nextCursor;
180
+ // Bounded: a cursor that repeats would otherwise loop forever.
181
+ const seen = new Set<string>();
182
+ while (cursor && !seen.has(cursor)) {
183
+ seen.add(cursor);
184
+ const page = await getUsage(client, workspaceId, { limit: 200, ...query, cursor }, options);
185
+ members.push(...page.members);
186
+ cursor = page.nextCursor;
187
+ }
188
+ return { ...first, members, nextCursor: null };
189
+ }
@@ -0,0 +1,293 @@
1
+ // Vault wire types (hand-written mirrors of `@opengeni/contracts` vaults.ts).
2
+ // SDK consumers do not need the contracts runtime; apps/web pins these
3
+ // mirrors against the zod schemas in a type-parity test.
4
+ import type { VaultPolicy } from "./types";
5
+
6
+ export type { VaultPolicy };
7
+
8
+ export type VaultOwnerKind = "user" | "workspace" | "organization" | "task";
9
+ export type VaultSource = "opengeni" | "onepassword" | "host";
10
+ export type VaultMode = "read_write" | "read_only";
11
+ export type VaultSyncStatus = "ok" | "syncing" | "error" | "auth_expired" | "rate_limited";
12
+ export type VaultItemType = "login" | "api_key" | "note" | "file" | "passkey";
13
+ export type VaultFieldKind = "text" | "concealed" | "totp" | "file";
14
+
15
+ export type VaultAvailability = {
16
+ /** null = every workspace in the organization. */
17
+ allowedWorkspaceIds: string[] | null;
18
+ allowPersonalWorkspaces: boolean;
19
+ };
20
+
21
+ export type VaultSummary = {
22
+ id: string;
23
+ workspaceId: string;
24
+ ownerKind: VaultOwnerKind;
25
+ ownerLabel: string;
26
+ rootSessionId: string | null;
27
+ name: string;
28
+ description: string | null;
29
+ source: VaultSource;
30
+ mode: VaultMode;
31
+ syncStatus: VaultSyncStatus;
32
+ syncErrorCode: string | null;
33
+ syncErrorMessage: string | null;
34
+ lastSyncedAt: string | null;
35
+ rateLimitedUntil: string | null;
36
+ providerConnectionId: string | null;
37
+ availability: VaultAvailability | null;
38
+ isDefault: boolean;
39
+ itemCount: number;
40
+ canWrite: boolean;
41
+ canManage: boolean;
42
+ generation: number;
43
+ createdAt: string;
44
+ updatedAt: string;
45
+ };
46
+
47
+ export type VaultItemReferences = {
48
+ primary: string | null;
49
+ otp: string | null;
50
+ byField: Record<string, string>;
51
+ };
52
+
53
+ export type VaultItemSummary = {
54
+ id: string;
55
+ vaultId: string;
56
+ type: VaultItemType;
57
+ name: string;
58
+ websites: string[];
59
+ username: string | null;
60
+ hasTotp: boolean;
61
+ hasPasskey: boolean;
62
+ expiresAt: string | null;
63
+ archivedAt: string | null;
64
+ lastUsedAt: string | null;
65
+ updatedAt: string;
66
+ references: VaultItemReferences;
67
+ };
68
+
69
+ export type VaultItemField = {
70
+ id: string;
71
+ name: string;
72
+ kind: VaultFieldKind;
73
+ position: number;
74
+ /** null for provider fields. */
75
+ currentVersion: number | null;
76
+ /** Plaintext only for kind "text"; null otherwise. */
77
+ value: string | null;
78
+ fileName: string | null;
79
+ fileSize: number | null;
80
+ reference: string;
81
+ updatedAt: string;
82
+ };
83
+
84
+ export type PasskeySummary = {
85
+ rpId: string;
86
+ userName: string | null;
87
+ credentialIdSuffix: string;
88
+ signCount: number;
89
+ leasedUntil: string | null;
90
+ lastUsedAt: string | null;
91
+ };
92
+
93
+ export type VaultItem = VaultItemSummary & {
94
+ fields: VaultItemField[];
95
+ passkey: PasskeySummary | null;
96
+ aliases: string[];
97
+ primaryFieldId: string | null;
98
+ createdBySubjectId: string | null;
99
+ createdAt: string;
100
+ generation: number;
101
+ };
102
+
103
+ export type VaultVersionCreatedByKind =
104
+ | "human"
105
+ | "agent"
106
+ | "api_key"
107
+ | "migration"
108
+ | "provider"
109
+ | "system";
110
+
111
+ export type VaultFieldVersionMeta = {
112
+ version: number;
113
+ current: boolean;
114
+ createdAt: string;
115
+ createdByKind: VaultVersionCreatedByKind;
116
+ createdBySubjectId: string | null;
117
+ };
118
+
119
+ export type GeneratePasswordOptions = {
120
+ length?: number | undefined;
121
+ lowercase?: boolean | undefined;
122
+ uppercase?: boolean | undefined;
123
+ digits?: boolean | undefined;
124
+ symbols?: boolean | undefined;
125
+ symbolSet?: string | undefined;
126
+ excludeAmbiguous?: boolean | undefined;
127
+ requireEachClass?: boolean | undefined;
128
+ };
129
+
130
+ export type CreateVaultRequest = {
131
+ name: string;
132
+ description?: string | undefined;
133
+ ownerKind: "user" | "workspace" | "organization";
134
+ availability?: VaultAvailability | undefined;
135
+ };
136
+
137
+ export type UpdateVaultRequest = {
138
+ expectedGeneration: number;
139
+ name?: string | undefined;
140
+ description?: string | null | undefined;
141
+ availability?: VaultAvailability | undefined;
142
+ };
143
+
144
+ export type VaultFieldInput = {
145
+ fieldId?: string | undefined;
146
+ name: string;
147
+ kind?: VaultFieldKind | undefined;
148
+ value?: string | undefined;
149
+ generate?: GeneratePasswordOptions | undefined;
150
+ fromReference?: string | undefined;
151
+ fileBase64?: string | undefined;
152
+ fileName?: string | undefined;
153
+ restoreVersion?: number | undefined;
154
+ remove?: true | undefined;
155
+ };
156
+
157
+ export type CreateVaultItemRequest = {
158
+ type: VaultItemType;
159
+ name: string;
160
+ websites?: string[] | undefined;
161
+ expiresAt?: string | null | undefined;
162
+ fields: VaultFieldInput[];
163
+ primaryFieldName?: string | undefined;
164
+ };
165
+
166
+ export type UpdateVaultItemRequest = Partial<CreateVaultItemRequest> & {
167
+ expectedGeneration: number;
168
+ };
169
+
170
+ export type MoveVaultItemRequest = {
171
+ targetVaultId: string;
172
+ mode: "move" | "copy";
173
+ newName?: string | undefined;
174
+ };
175
+
176
+ export type RevealVaultFieldResponse = {
177
+ value: string;
178
+ encoding: "utf8" | "base64";
179
+ version: number | null;
180
+ totp: { code: string; periodSeconds: number; expiresAt: string } | null;
181
+ };
182
+
183
+ export type ListVaultItemsQuery = {
184
+ q?: string | undefined;
185
+ type?: VaultItemType | undefined;
186
+ includeArchived?: boolean | undefined;
187
+ cursor?: string | undefined;
188
+ limit?: number | undefined;
189
+ };
190
+
191
+ export type SessionSecretsVault = VaultSummary & { selected: boolean; selectable: boolean };
192
+
193
+ export type SessionSecretsView = {
194
+ capabilityEnabled: boolean;
195
+ policy: VaultPolicy;
196
+ effectiveVaultIds: string[];
197
+ /** Nearest ancestor that narrowed, if any. */
198
+ narrowedBySessionId: string | null;
199
+ taskVault: VaultSummary | null;
200
+ taskItems: VaultItemSummary[];
201
+ reachableVaults: SessionSecretsVault[];
202
+ };
203
+
204
+ export type OnePasswordPlanTier = "family" | "teams" | "business";
205
+
206
+ export type InstallOnePasswordRequest = {
207
+ token: string;
208
+ ownership: "user" | "workspace" | "organization";
209
+ planTier?: OnePasswordPlanTier | undefined;
210
+ label?: string | undefined;
211
+ };
212
+
213
+ export type ProviderVaultMeta = {
214
+ externalVaultId: string;
215
+ name: string;
216
+ itemCount: number | null;
217
+ linkedVaultId: string | null;
218
+ };
219
+
220
+ export type InstallOnePasswordResponse = {
221
+ connectionId: string;
222
+ accountName: string | null;
223
+ vaults: ProviderVaultMeta[];
224
+ };
225
+
226
+ /** A 1Password service account connected in a workspace. Never carries the token. */
227
+ export type OnePasswordConnectionSummary = {
228
+ id: string;
229
+ /** Who can use the vaults linked through it. */
230
+ ownership: "user" | "workspace" | "organization";
231
+ /** Sign-in host from the token, for example "my.1password.com". */
232
+ accountName: string | null;
233
+ label: string | null;
234
+ planTier: OnePasswordPlanTier;
235
+ /** When the current token was last checked against 1Password. */
236
+ verifiedAt: string;
237
+ createdAt: string;
238
+ createdBySubjectId: string | null;
239
+ /** The caller can link vaults, replace the token and disconnect it. */
240
+ canManage: boolean;
241
+ };
242
+
243
+ /** A new token for an existing connection; its linked vaults keep working. */
244
+ export type ReplaceOnePasswordTokenRequest = {
245
+ token: string;
246
+ planTier?: OnePasswordPlanTier | undefined;
247
+ };
248
+
249
+ export type DisconnectOnePasswordResponse = {
250
+ /** The Opengeni vaults that were unlinked. Nothing is deleted in 1Password. */
251
+ unlinkedVaultIds: string[];
252
+ };
253
+
254
+ export type LinkProviderVaultRequest = {
255
+ provider: "onepassword" | "host";
256
+ connectionId?: string | undefined;
257
+ externalVaultId: string;
258
+ ownerKind: "user" | "workspace" | "organization";
259
+ mode: VaultMode;
260
+ name?: string | undefined;
261
+ availability?: VaultAvailability | undefined;
262
+ };
263
+
264
+ export type CreateManagedProviderVaultRequest = {
265
+ name: string;
266
+ ownerKind: "user" | "workspace" | "organization";
267
+ groupId?: string | undefined;
268
+ };
269
+
270
+ export type VaultErrorCode =
271
+ | "vault_not_found"
272
+ | "vault_item_not_found"
273
+ | "vault_field_not_found"
274
+ | "vault_name_conflict"
275
+ | "vault_item_name_conflict"
276
+ | "vault_limit_reached"
277
+ | "vault_read_only"
278
+ | "vault_generation_conflict"
279
+ | "vault_permission_denied"
280
+ | "vault_reveal_requires_human"
281
+ | "vault_policy_outside_parent"
282
+ | "encryption_key_missing"
283
+ | "provider_auth_invalid"
284
+ | "provider_auth_expired"
285
+ | "provider_rate_limited"
286
+ | "provider_unavailable"
287
+ | "provider_conflict"
288
+ | "variable_sets_removed"
289
+ | "secret_save_forbidden"
290
+ | "invalid_secret_name"
291
+ | "secret_value_too_large"
292
+ | "human_auth_required"
293
+ | "secret_search_cursor_invalid";