@tai42/api-client 16.0.0 → 16.0.1

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 (370) hide show
  1. package/dist/client/agents-client.d.ts +26 -0
  2. package/dist/client/agents-client.d.ts.map +1 -0
  3. package/dist/client/agents-client.js +19 -0
  4. package/dist/client/agents-client.js.map +1 -0
  5. package/dist/client/auth-client.d.ts +205 -0
  6. package/dist/client/auth-client.d.ts.map +1 -0
  7. package/dist/client/auth-client.js +59 -0
  8. package/dist/client/auth-client.js.map +1 -0
  9. package/dist/client/backend-client.d.ts +39 -0
  10. package/dist/client/backend-client.d.ts.map +1 -0
  11. package/dist/client/backend-client.js +22 -0
  12. package/dist/client/backend-client.js.map +1 -0
  13. package/dist/client/backup-client.d.ts +56 -0
  14. package/dist/client/backup-client.d.ts.map +1 -0
  15. package/dist/client/backup-client.js +12 -0
  16. package/dist/client/backup-client.js.map +1 -0
  17. package/dist/client/capabilities-client.d.ts +35 -0
  18. package/dist/client/capabilities-client.d.ts.map +1 -0
  19. package/dist/client/capabilities-client.js +19 -0
  20. package/dist/client/capabilities-client.js.map +1 -0
  21. package/dist/client/channels-client.d.ts +7 -0
  22. package/dist/client/channels-client.d.ts.map +1 -0
  23. package/dist/client/channels-client.js +10 -0
  24. package/dist/client/channels-client.js.map +1 -0
  25. package/dist/client/config-client.d.ts +59 -0
  26. package/dist/client/config-client.d.ts.map +1 -0
  27. package/dist/client/config-client.js +18 -0
  28. package/dist/client/config-client.js.map +1 -0
  29. package/dist/client/connectors-client.d.ts +225 -0
  30. package/dist/client/connectors-client.d.ts.map +1 -0
  31. package/dist/client/connectors-client.js +31 -0
  32. package/dist/client/connectors-client.js.map +1 -0
  33. package/dist/client/conversations-client.d.ts +399 -0
  34. package/dist/client/conversations-client.d.ts.map +1 -0
  35. package/dist/client/conversations-client.js +120 -0
  36. package/dist/client/conversations-client.js.map +1 -0
  37. package/dist/client/hooks-client.d.ts +113 -0
  38. package/dist/client/hooks-client.d.ts.map +1 -0
  39. package/dist/client/hooks-client.js +25 -0
  40. package/dist/client/hooks-client.js.map +1 -0
  41. package/dist/{client.d.ts → client/index.d.ts} +2235 -2666
  42. package/dist/client/index.d.ts.map +1 -0
  43. package/dist/client/index.js +79 -0
  44. package/dist/client/index.js.map +1 -0
  45. package/dist/client/interactions-client.d.ts +52 -0
  46. package/dist/client/interactions-client.d.ts.map +1 -0
  47. package/dist/client/interactions-client.js +84 -0
  48. package/dist/client/interactions-client.js.map +1 -0
  49. package/dist/client/login-client.d.ts +56 -0
  50. package/dist/client/login-client.d.ts.map +1 -0
  51. package/dist/client/login-client.js +103 -0
  52. package/dist/client/login-client.js.map +1 -0
  53. package/dist/client/manifest-client.d.ts +354 -0
  54. package/dist/client/manifest-client.d.ts.map +1 -0
  55. package/dist/client/manifest-client.js +76 -0
  56. package/dist/client/manifest-client.js.map +1 -0
  57. package/dist/client/marketplace-client.d.ts +274 -0
  58. package/dist/client/marketplace-client.d.ts.map +1 -0
  59. package/dist/client/marketplace-client.js +46 -0
  60. package/dist/client/marketplace-client.js.map +1 -0
  61. package/dist/client/mcp-config-schema-client.d.ts +5 -0
  62. package/dist/client/mcp-config-schema-client.d.ts.map +1 -0
  63. package/dist/client/mcp-config-schema-client.js +9 -0
  64. package/dist/client/mcp-config-schema-client.js.map +1 -0
  65. package/dist/client/notifications-client.d.ts +27 -0
  66. package/dist/client/notifications-client.d.ts.map +1 -0
  67. package/dist/client/notifications-client.js +11 -0
  68. package/dist/client/notifications-client.js.map +1 -0
  69. package/dist/client/observability-client.d.ts +103 -0
  70. package/dist/client/observability-client.d.ts.map +1 -0
  71. package/dist/client/observability-client.js +43 -0
  72. package/dist/client/observability-client.js.map +1 -0
  73. package/dist/client/plugins-client.d.ts +17 -0
  74. package/dist/client/plugins-client.d.ts.map +1 -0
  75. package/dist/client/plugins-client.js +9 -0
  76. package/dist/client/plugins-client.js.map +1 -0
  77. package/dist/client/policy-client.d.ts +37 -0
  78. package/dist/client/policy-client.d.ts.map +1 -0
  79. package/dist/client/policy-client.js +26 -0
  80. package/dist/client/policy-client.js.map +1 -0
  81. package/dist/client/presets-client.d.ts +335 -0
  82. package/dist/client/presets-client.d.ts.map +1 -0
  83. package/dist/client/presets-client.js +38 -0
  84. package/dist/client/presets-client.js.map +1 -0
  85. package/dist/client/profiles-client.d.ts +102 -0
  86. package/dist/client/profiles-client.d.ts.map +1 -0
  87. package/dist/client/profiles-client.js +37 -0
  88. package/dist/client/profiles-client.js.map +1 -0
  89. package/dist/client/schedules-client.d.ts +28 -0
  90. package/dist/client/schedules-client.d.ts.map +1 -0
  91. package/dist/client/schedules-client.js +13 -0
  92. package/dist/client/schedules-client.js.map +1 -0
  93. package/dist/client/settings-schema-client.d.ts +23 -0
  94. package/dist/client/settings-schema-client.d.ts.map +1 -0
  95. package/dist/client/settings-schema-client.js +9 -0
  96. package/dist/client/settings-schema-client.js.map +1 -0
  97. package/dist/client/states-client.d.ts +471 -0
  98. package/dist/client/states-client.d.ts.map +1 -0
  99. package/dist/client/states-client.js +144 -0
  100. package/dist/client/states-client.js.map +1 -0
  101. package/dist/client/storage-client.d.ts +40 -0
  102. package/dist/client/storage-client.d.ts.map +1 -0
  103. package/dist/client/storage-client.js +43 -0
  104. package/dist/client/storage-client.js.map +1 -0
  105. package/dist/client/sub-mcp-client.d.ts +17 -0
  106. package/dist/client/sub-mcp-client.d.ts.map +1 -0
  107. package/dist/client/sub-mcp-client.js +14 -0
  108. package/dist/client/sub-mcp-client.js.map +1 -0
  109. package/dist/client/system-client.d.ts +11 -0
  110. package/dist/client/system-client.d.ts.map +1 -0
  111. package/dist/client/system-client.js +13 -0
  112. package/dist/client/system-client.js.map +1 -0
  113. package/dist/client/templates-client.d.ts +29 -0
  114. package/dist/client/templates-client.d.ts.map +1 -0
  115. package/dist/client/templates-client.js +21 -0
  116. package/dist/client/templates-client.js.map +1 -0
  117. package/dist/client/tool-extensions-client.d.ts +54 -0
  118. package/dist/client/tool-extensions-client.d.ts.map +1 -0
  119. package/dist/client/tool-extensions-client.js +21 -0
  120. package/dist/client/tool-extensions-client.js.map +1 -0
  121. package/dist/client/tool-meta-client.d.ts +69 -0
  122. package/dist/client/tool-meta-client.d.ts.map +1 -0
  123. package/dist/client/tool-meta-client.js +38 -0
  124. package/dist/client/tool-meta-client.js.map +1 -0
  125. package/dist/client/tools-client.d.ts +83 -0
  126. package/dist/client/tools-client.d.ts.map +1 -0
  127. package/dist/client/tools-client.js +38 -0
  128. package/dist/client/tools-client.js.map +1 -0
  129. package/dist/client/transport.d.ts +13 -0
  130. package/dist/client/transport.d.ts.map +1 -0
  131. package/dist/client/transport.js +10 -0
  132. package/dist/client/transport.js.map +1 -0
  133. package/dist/client/trigger-links-client.d.ts +44 -0
  134. package/dist/client/trigger-links-client.d.ts.map +1 -0
  135. package/dist/client/trigger-links-client.js +30 -0
  136. package/dist/client/trigger-links-client.js.map +1 -0
  137. package/dist/client/web-entry-gate-client.d.ts +34 -0
  138. package/dist/client/web-entry-gate-client.d.ts.map +1 -0
  139. package/dist/client/web-entry-gate-client.js +25 -0
  140. package/dist/client/web-entry-gate-client.js.map +1 -0
  141. package/dist/http.d.ts.map +1 -1
  142. package/dist/http.js +33 -17
  143. package/dist/http.js.map +1 -1
  144. package/dist/schemas/api-keys.d.ts +34 -0
  145. package/dist/schemas/api-keys.d.ts.map +1 -0
  146. package/dist/schemas/api-keys.js +22 -0
  147. package/dist/schemas/api-keys.js.map +1 -0
  148. package/dist/schemas/auth-routes.d.ts +78 -0
  149. package/dist/schemas/auth-routes.d.ts.map +1 -0
  150. package/dist/schemas/auth-routes.js +42 -0
  151. package/dist/schemas/auth-routes.js.map +1 -0
  152. package/dist/schemas/backup.d.ts +78 -0
  153. package/dist/schemas/backup.d.ts.map +1 -0
  154. package/dist/schemas/backup.js +33 -0
  155. package/dist/schemas/backup.js.map +1 -0
  156. package/dist/schemas/capabilities.d.ts +99 -0
  157. package/dist/schemas/capabilities.d.ts.map +1 -0
  158. package/dist/schemas/capabilities.js +74 -0
  159. package/dist/schemas/capabilities.js.map +1 -0
  160. package/dist/schemas/channels.d.ts +7 -0
  161. package/dist/schemas/channels.d.ts.map +1 -0
  162. package/dist/schemas/channels.js +9 -0
  163. package/dist/schemas/channels.js.map +1 -0
  164. package/dist/schemas/config.d.ts +17 -0
  165. package/dist/schemas/config.d.ts.map +1 -0
  166. package/dist/schemas/config.js +17 -0
  167. package/dist/schemas/config.js.map +1 -0
  168. package/dist/schemas/connectors.d.ts +383 -0
  169. package/dist/schemas/connectors.d.ts.map +1 -0
  170. package/dist/schemas/connectors.js +122 -0
  171. package/dist/schemas/connectors.js.map +1 -0
  172. package/dist/schemas/conversations.d.ts +600 -0
  173. package/dist/schemas/conversations.d.ts.map +1 -0
  174. package/dist/schemas/conversations.js +208 -0
  175. package/dist/schemas/conversations.js.map +1 -0
  176. package/dist/schemas/extensions.d.ts +44 -0
  177. package/dist/schemas/extensions.d.ts.map +1 -0
  178. package/dist/schemas/extensions.js +29 -0
  179. package/dist/schemas/extensions.js.map +1 -0
  180. package/dist/schemas/fleet.d.ts +271 -0
  181. package/dist/schemas/fleet.d.ts.map +1 -0
  182. package/dist/schemas/fleet.js +132 -0
  183. package/dist/schemas/fleet.js.map +1 -0
  184. package/dist/schemas/hooks.d.ts +120 -0
  185. package/dist/schemas/hooks.d.ts.map +1 -0
  186. package/dist/schemas/hooks.js +44 -0
  187. package/dist/schemas/hooks.js.map +1 -0
  188. package/dist/schemas/index.d.ts +38 -0
  189. package/dist/schemas/index.d.ts.map +1 -0
  190. package/dist/schemas/index.js +38 -0
  191. package/dist/schemas/index.js.map +1 -0
  192. package/dist/schemas/interactions.d.ts +156 -0
  193. package/dist/schemas/interactions.d.ts.map +1 -0
  194. package/dist/schemas/interactions.js +124 -0
  195. package/dist/schemas/interactions.js.map +1 -0
  196. package/dist/schemas/login.d.ts +86 -0
  197. package/dist/schemas/login.d.ts.map +1 -0
  198. package/dist/schemas/login.js +54 -0
  199. package/dist/schemas/login.js.map +1 -0
  200. package/dist/schemas/manifest-mcp.d.ts +125 -0
  201. package/dist/schemas/manifest-mcp.d.ts.map +1 -0
  202. package/dist/schemas/manifest-mcp.js +61 -0
  203. package/dist/schemas/manifest-mcp.js.map +1 -0
  204. package/dist/schemas/marketplace.d.ts +708 -0
  205. package/dist/schemas/marketplace.d.ts.map +1 -0
  206. package/dist/schemas/marketplace.js +387 -0
  207. package/dist/schemas/marketplace.js.map +1 -0
  208. package/dist/schemas/notifications.d.ts +61 -0
  209. package/dist/schemas/notifications.d.ts.map +1 -0
  210. package/dist/schemas/notifications.js +38 -0
  211. package/dist/schemas/notifications.js.map +1 -0
  212. package/dist/schemas/observability.d.ts +114 -0
  213. package/dist/schemas/observability.d.ts.map +1 -0
  214. package/dist/schemas/observability.js +74 -0
  215. package/dist/schemas/observability.js.map +1 -0
  216. package/dist/schemas/policy.d.ts +58 -0
  217. package/dist/schemas/policy.d.ts.map +1 -0
  218. package/dist/schemas/policy.js +32 -0
  219. package/dist/schemas/policy.js.map +1 -0
  220. package/dist/schemas/presets.d.ts +258 -0
  221. package/dist/schemas/presets.d.ts.map +1 -0
  222. package/dist/schemas/presets.js +95 -0
  223. package/dist/schemas/presets.js.map +1 -0
  224. package/dist/schemas/profiles.d.ts +180 -0
  225. package/dist/schemas/profiles.d.ts.map +1 -0
  226. package/dist/schemas/profiles.js +100 -0
  227. package/dist/schemas/profiles.js.map +1 -0
  228. package/dist/schemas/roles.d.ts +125 -0
  229. package/dist/schemas/roles.d.ts.map +1 -0
  230. package/dist/schemas/roles.js +46 -0
  231. package/dist/schemas/roles.js.map +1 -0
  232. package/dist/schemas/schedules.d.ts +25 -0
  233. package/dist/schemas/schedules.d.ts.map +1 -0
  234. package/dist/schemas/schedules.js +24 -0
  235. package/dist/schemas/schedules.js.map +1 -0
  236. package/dist/schemas/served.d.ts +626 -0
  237. package/dist/schemas/served.d.ts.map +1 -0
  238. package/dist/schemas/served.js +28 -0
  239. package/dist/schemas/served.js.map +1 -0
  240. package/dist/schemas/settings-schema.d.ts +23 -0
  241. package/dist/schemas/settings-schema.d.ts.map +1 -0
  242. package/dist/schemas/settings-schema.js +25 -0
  243. package/dist/schemas/settings-schema.js.map +1 -0
  244. package/dist/schemas/shared.d.ts +20 -0
  245. package/dist/schemas/shared.d.ts.map +1 -0
  246. package/dist/schemas/shared.js +20 -0
  247. package/dist/schemas/shared.js.map +1 -0
  248. package/dist/schemas/states.d.ts +499 -0
  249. package/dist/schemas/states.d.ts.map +1 -0
  250. package/dist/schemas/states.js +220 -0
  251. package/dist/schemas/states.js.map +1 -0
  252. package/dist/schemas/storage.d.ts +37 -0
  253. package/dist/schemas/storage.d.ts.map +1 -0
  254. package/dist/schemas/storage.js +24 -0
  255. package/dist/schemas/storage.js.map +1 -0
  256. package/dist/schemas/studio-plugins.d.ts +30 -0
  257. package/dist/schemas/studio-plugins.d.ts.map +1 -0
  258. package/dist/schemas/studio-plugins.js +20 -0
  259. package/dist/schemas/studio-plugins.js.map +1 -0
  260. package/dist/schemas/sub-mcp.d.ts +29 -0
  261. package/dist/schemas/sub-mcp.d.ts.map +1 -0
  262. package/dist/schemas/sub-mcp.js +22 -0
  263. package/dist/schemas/sub-mcp.js.map +1 -0
  264. package/dist/schemas/system-kinds.d.ts +122 -0
  265. package/dist/schemas/system-kinds.d.ts.map +1 -0
  266. package/dist/schemas/system-kinds.js +40 -0
  267. package/dist/schemas/system-kinds.js.map +1 -0
  268. package/dist/schemas/templates.d.ts +26 -0
  269. package/dist/schemas/templates.d.ts.map +1 -0
  270. package/dist/schemas/templates.js +11 -0
  271. package/dist/schemas/templates.js.map +1 -0
  272. package/dist/schemas/tool-meta.d.ts +64 -0
  273. package/dist/schemas/tool-meta.d.ts.map +1 -0
  274. package/dist/schemas/tool-meta.js +44 -0
  275. package/dist/schemas/tool-meta.js.map +1 -0
  276. package/dist/schemas/tools.d.ts +62 -0
  277. package/dist/schemas/tools.d.ts.map +1 -0
  278. package/dist/schemas/tools.js +53 -0
  279. package/dist/schemas/tools.js.map +1 -0
  280. package/dist/schemas/trigger-links.d.ts +71 -0
  281. package/dist/schemas/trigger-links.d.ts.map +1 -0
  282. package/dist/schemas/trigger-links.js +46 -0
  283. package/dist/schemas/trigger-links.js.map +1 -0
  284. package/dist/schemas/web-entry.d.ts +45 -0
  285. package/dist/schemas/web-entry.d.ts.map +1 -0
  286. package/dist/schemas/web-entry.js +36 -0
  287. package/dist/schemas/web-entry.js.map +1 -0
  288. package/dist/tool-runs.d.ts +4 -4
  289. package/package.json +1 -1
  290. package/src/client/agents-client.ts +23 -0
  291. package/src/client/auth-client.ts +144 -0
  292. package/src/client/backend-client.ts +25 -0
  293. package/src/client/backup-client.ts +16 -0
  294. package/src/client/capabilities-client.ts +22 -0
  295. package/src/client/channels-client.ts +11 -0
  296. package/src/client/config-client.ts +21 -0
  297. package/src/client/connectors-client.ts +52 -0
  298. package/src/client/conversations-client.ts +240 -0
  299. package/src/client/hooks-client.ts +44 -0
  300. package/src/client/index.ts +122 -0
  301. package/src/client/interactions-client.ts +89 -0
  302. package/src/client/login-client.ts +109 -0
  303. package/src/client/manifest-client.ts +118 -0
  304. package/src/client/marketplace-client.ts +122 -0
  305. package/src/client/mcp-config-schema-client.ts +11 -0
  306. package/src/client/notifications-client.ts +13 -0
  307. package/src/client/observability-client.ts +82 -0
  308. package/src/client/plugins-client.ts +11 -0
  309. package/src/client/policy-client.ts +41 -0
  310. package/src/client/presets-client.ts +124 -0
  311. package/src/client/profiles-client.ts +51 -0
  312. package/src/client/schedules-client.ts +22 -0
  313. package/src/client/settings-schema-client.ts +11 -0
  314. package/src/client/states-client.ts +292 -0
  315. package/src/client/storage-client.ts +63 -0
  316. package/src/client/sub-mcp-client.ts +17 -0
  317. package/src/client/system-client.ts +16 -0
  318. package/src/client/templates-client.ts +28 -0
  319. package/src/client/tool-extensions-client.ts +24 -0
  320. package/src/client/tool-meta-client.ts +65 -0
  321. package/src/client/tools-client.ts +66 -0
  322. package/src/client/transport.ts +18 -0
  323. package/src/client/trigger-links-client.ts +51 -0
  324. package/src/client/web-entry-gate-client.ts +45 -0
  325. package/src/http.ts +48 -24
  326. package/src/schemas/api-keys.ts +26 -0
  327. package/src/schemas/auth-routes.ts +48 -0
  328. package/src/schemas/backup.ts +42 -0
  329. package/src/schemas/capabilities.ts +87 -0
  330. package/src/schemas/channels.ts +11 -0
  331. package/src/schemas/config.ts +17 -0
  332. package/src/schemas/connectors.ts +138 -0
  333. package/src/schemas/conversations.ts +256 -0
  334. package/src/schemas/extensions.ts +34 -0
  335. package/src/schemas/fleet.ts +153 -0
  336. package/src/schemas/hooks.ts +56 -0
  337. package/src/schemas/index.ts +37 -0
  338. package/src/schemas/interactions.ts +146 -0
  339. package/src/schemas/login.ts +62 -0
  340. package/src/schemas/manifest-mcp.ts +69 -0
  341. package/src/schemas/marketplace.ts +447 -0
  342. package/src/schemas/notifications.ts +42 -0
  343. package/src/schemas/observability.ts +86 -0
  344. package/src/schemas/policy.ts +37 -0
  345. package/src/schemas/presets.ts +113 -0
  346. package/src/schemas/profiles.ts +119 -0
  347. package/src/schemas/roles.ts +57 -0
  348. package/src/schemas/schedules.ts +27 -0
  349. package/src/schemas/served.ts +49 -0
  350. package/src/schemas/settings-schema.ts +31 -0
  351. package/src/schemas/shared.ts +21 -0
  352. package/src/schemas/states.ts +272 -0
  353. package/src/schemas/storage.ts +31 -0
  354. package/src/schemas/studio-plugins.ts +21 -0
  355. package/src/schemas/sub-mcp.ts +24 -0
  356. package/src/schemas/system-kinds.ts +46 -0
  357. package/src/schemas/templates.ts +11 -0
  358. package/src/schemas/tool-meta.ts +51 -0
  359. package/src/schemas/tools.ts +61 -0
  360. package/src/schemas/trigger-links.ts +54 -0
  361. package/src/schemas/web-entry.ts +46 -0
  362. package/dist/client.d.ts.map +0 -1
  363. package/dist/client.js +0 -920
  364. package/dist/client.js.map +0 -1
  365. package/dist/schemas.d.ts +0 -5172
  366. package/dist/schemas.d.ts.map +0 -1
  367. package/dist/schemas.js +0 -2268
  368. package/dist/schemas.js.map +0 -1
  369. package/src/client.ts +0 -1771
  370. package/src/schemas.ts +0 -2760
@@ -0,0 +1,30 @@
1
+ /** Trigger-link mint, listing and revoke sub-client. */
2
+ import * as s from '../schemas';
3
+ import { encodeSegment } from '../http';
4
+ export function triggerLinksClient(t) {
5
+ const { req } = t;
6
+ return {
7
+ // Mint a trigger link for a topic. `ttl_seconds` is sent EXPLICITLY
8
+ // (including `null` for a permanent link) — the server requires the key present
9
+ // and 400s a dropped one; `tool_kwargs` is omitted when undefined. The raw
10
+ // `token` rides the response ONCE (composed into the QR URL client-side).
11
+ createTriggerLink: (body) => req('/api/hooks/trigger-links', s.triggerLinkCreated, {
12
+ method: 'POST',
13
+ body: {
14
+ topic: body.topic,
15
+ name: body.name,
16
+ execution_key: body.execution_key,
17
+ require_api_key: body.require_api_key,
18
+ ttl_seconds: body.ttl_seconds,
19
+ tool_kwargs: body.tool_kwargs,
20
+ },
21
+ }),
22
+ // Every live trigger-link record (hash prefix only — never a raw token).
23
+ listTriggerLinks: (signal) => req('/api/hooks/trigger-links', s.triggerLinkList, { signal }),
24
+ // Revoke a link by name (immediate + durable). 404 when the name is unknown.
25
+ deleteTriggerLink: (name) => req(`/api/hooks/trigger-links/${encodeSegment(name)}`, s.triggerLinkDeleted, {
26
+ method: 'DELETE',
27
+ }),
28
+ };
29
+ }
30
+ //# sourceMappingURL=trigger-links-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger-links-client.js","sourceRoot":"","sources":["../../src/client/trigger-links-client.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,OAAO,KAAK,CAAC,MAAM,YAAY,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAoBxC,MAAM,UAAU,kBAAkB,CAAC,CAAY;IAC7C,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAClB,OAAO;QACL,oEAAoE;QACpE,gFAAgF;QAChF,2EAA2E;QAC3E,0EAA0E;QAC1E,iBAAiB,EAAE,CAAC,IAA2B,EAAE,EAAE,CACjD,GAAG,CAAC,0BAA0B,EAAE,CAAC,CAAC,kBAAkB,EAAE;YACpD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE;gBACJ,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;aAC9B;SACF,CAAC;QACJ,yEAAyE;QACzE,gBAAgB,EAAE,CAAC,MAAoB,EAAE,EAAE,CACzC,GAAG,CAAC,0BAA0B,EAAE,CAAC,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,CAAC;QAChE,6EAA6E;QAC7E,iBAAiB,EAAE,CAAC,IAAY,EAAE,EAAE,CAClC,GAAG,CAAC,4BAA4B,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,kBAAkB,EAAE;YAC3E,MAAM,EAAE,QAAQ;SACjB,CAAC;KACL,CAAC;AACJ,CAAC"}
@@ -0,0 +1,34 @@
1
+ import type { Transport } from './transport';
2
+ /**
3
+ * Body for minting a web entry code (POST
4
+ * `/api/channels/web/gates/{identity}/codes`). Both fields are optional-nullable
5
+ * and sent EXPLICITLY: `label` is a human tag (`null` for none); `expires_at` is
6
+ * an ISO-8601 instant the code dies at (`null` for a code that never expires).
7
+ */
8
+ export interface WebEntryCodeMintBody {
9
+ readonly label: string | null;
10
+ readonly expires_at: string | null;
11
+ }
12
+ export declare function webEntryGateClient(t: Transport): {
13
+ getWebEntryGate: (identity: string, signal?: AbortSignal) => Promise<{
14
+ enabled: boolean;
15
+ codes: {
16
+ code_id: string;
17
+ label: string | null;
18
+ created_at: string;
19
+ expires_at: string | null;
20
+ }[];
21
+ }>;
22
+ setWebEntryGate: (identity: string, enabled: boolean) => Promise<{
23
+ enabled: boolean;
24
+ }>;
25
+ mintWebEntryCode: (identity: string, body: WebEntryCodeMintBody) => Promise<{
26
+ code: string;
27
+ code_id: string;
28
+ expires_at: string | null;
29
+ }>;
30
+ revokeWebEntryCode: (identity: string, codeId: string) => Promise<{
31
+ status: "revoked";
32
+ }>;
33
+ };
34
+ //# sourceMappingURL=web-entry-gate-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-entry-gate-client.d.ts","sourceRoot":"","sources":["../../src/client/web-entry-gate-client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,SAAS;gCAMf,MAAM,WAAW,WAAW;;;;;;;;;gCAE5B,MAAM,WAAW,OAAO;;;iCAOvB,MAAM,QAAQ,oBAAoB;;;;;mCAMhC,MAAM,UAAU,MAAM;;;EAOxD"}
@@ -0,0 +1,25 @@
1
+ /** Web-channel entry-gate sub-client. */
2
+ import * as s from '../schemas';
3
+ import { encodeSegment } from '../http';
4
+ export function webEntryGateClient(t) {
5
+ const { req } = t;
6
+ return {
7
+ // A web route's entry gate, keyed by its `our_identity`: read the flag + its
8
+ // live codes, flip the flag, mint a code (raw returned ONCE), revoke a code by
9
+ // its hash id. The conversation monitor's first route mutations.
10
+ getWebEntryGate: (identity, signal) => req(`/api/channels/web/gates/${encodeSegment(identity)}`, s.webEntryGate, { signal }),
11
+ setWebEntryGate: (identity, enabled) => req(`/api/channels/web/gates/${encodeSegment(identity)}`, s.webEntryGateState, {
12
+ method: 'PUT',
13
+ body: { enabled },
14
+ }),
15
+ // Mint a code. `label`/`expires_at` are sent EXPLICITLY (including `null`). The
16
+ // raw `code` rides the reply ONCE (composed into the chat URL client-side).
17
+ mintWebEntryCode: (identity, body) => req(`/api/channels/web/gates/${encodeSegment(identity)}/codes`, s.webEntryCodeMinted, {
18
+ method: 'POST',
19
+ body: { label: body.label, expires_at: body.expires_at },
20
+ }),
21
+ // Revoke a code by its hash id (immediate + durable). 404 when the id is unknown.
22
+ revokeWebEntryCode: (identity, codeId) => req(`/api/channels/web/gates/${encodeSegment(identity)}/codes/${encodeSegment(codeId)}`, s.webEntryCodeRevoked, { method: 'DELETE' }),
23
+ };
24
+ }
25
+ //# sourceMappingURL=web-entry-gate-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-entry-gate-client.js","sourceRoot":"","sources":["../../src/client/web-entry-gate-client.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,KAAK,CAAC,MAAM,YAAY,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAcxC,MAAM,UAAU,kBAAkB,CAAC,CAAY;IAC7C,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAClB,OAAO;QACL,6EAA6E;QAC7E,+EAA+E;QAC/E,iEAAiE;QACjE,eAAe,EAAE,CAAC,QAAgB,EAAE,MAAoB,EAAE,EAAE,CAC1D,GAAG,CAAC,2BAA2B,aAAa,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,CAAC;QACvF,eAAe,EAAE,CAAC,QAAgB,EAAE,OAAgB,EAAE,EAAE,CACtD,GAAG,CAAC,2BAA2B,aAAa,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,iBAAiB,EAAE;YAC7E,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,EAAE,OAAO,EAAE;SAClB,CAAC;QACJ,gFAAgF;QAChF,4EAA4E;QAC5E,gBAAgB,EAAE,CAAC,QAAgB,EAAE,IAA0B,EAAE,EAAE,CACjE,GAAG,CAAC,2BAA2B,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,kBAAkB,EAAE;YACpF,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;SACzD,CAAC;QACJ,kFAAkF;QAClF,kBAAkB,EAAE,CAAC,QAAgB,EAAE,MAAc,EAAE,EAAE,CACvD,GAAG,CACD,2BAA2B,aAAa,CAAC,QAAQ,CAAC,UAAU,aAAa,CAAC,MAAM,CAAC,EAAE,EACnF,CAAC,CAAC,mBAAmB,EACrB,EAAE,MAAM,EAAE,QAAQ,EAAE,CACrB;KACJ,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAI7B,oFAAoF;AACpF,MAAM,WAAW,SAAS;IACxB,iFAAiF;IACjF,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,yEAAyE;IACzE,QAAQ,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC9B,wEAAwE;IACxE,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAGxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IACxE,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAID;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAQ5D;AA+BD,wBAAsB,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAClD,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,CAAC,EACT,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAgDrB;AAED;;;GAGG;AACH,wBAAsB,OAAO,CAC3B,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,MAAM,CAAC,CAejB;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAiBf;AAMD,sFAAsF;AACtF,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAOjG"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAI7B,oFAAoF;AACpF,MAAM,WAAW,SAAS;IACxB,iFAAiF;IACjF,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,yEAAyE;IACzE,QAAQ,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC9B,wEAAwE;IACxE,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAGxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IACxE,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAID;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAQ5D;AAmFD,wBAAsB,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAClD,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,CAAC,EACT,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAoBrB;AAED;;;GAGG;AACH,wBAAsB,OAAO,CAC3B,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,MAAM,CAAC,CAejB;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAiBf;AAMD,sFAAsF;AACtF,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAOjG"}
package/dist/http.js CHANGED
@@ -59,23 +59,14 @@ function retryAfterSeconds(header) {
59
59
  const seconds = Number(header.trim());
60
60
  return Number.isFinite(seconds) && seconds >= 0 ? seconds : undefined;
61
61
  }
62
- export async function apiRequest(config, path, schema, options = {}) {
63
- const doFetch = config.fetch ?? globalThis.fetch;
64
- const token = config.getToken();
65
- const headers = { ...JSON_HEADERS };
66
- if (token)
67
- headers['x-api-key'] = token;
68
- const response = await doFetch(buildUrl(config.baseUrl ?? '', path, options.query), {
69
- method: options.method ?? 'GET',
70
- headers,
71
- body: options.body === undefined ? undefined : JSON.stringify(options.body),
72
- signal: options.signal,
73
- });
74
- if (response.status === 401)
75
- throw new ApiUnauthorizedError();
76
- // `Retry-After` rides on the error so a retrying caller waits the delay the server
77
- // named (the gated routes' reloading 503 carries one) instead of guessing.
78
- const retryAfter = retryAfterSeconds(response.headers.get('Retry-After'));
62
+ /**
63
+ * Read the JSON body of a request response, applying the transport's error
64
+ * policy: a non-2xx status throws (a 409 as `ApiConflictError` carrying the
65
+ * parsed body, every other as `ApiError` with the server message/code and the
66
+ * named `Retry-After` delay), and a body that is not JSON throws `ApiSchemaError`
67
+ * on a 2xx or `ApiError` otherwise. Returns the parsed payload only for a 2xx.
68
+ */
69
+ async function readJsonPayload(response, path, retryAfter) {
79
70
  let payload;
80
71
  try {
81
72
  payload = await response.json();
@@ -94,6 +85,11 @@ export async function apiRequest(config, path, schema, options = {}) {
94
85
  throw new ApiConflictError(text, payload);
95
86
  throw new ApiError(text, response.status, code, retryAfter, payload);
96
87
  }
88
+ return payload;
89
+ }
90
+ /** Unwrap the `{ data }` envelope and validate it against `schema`; a missing
91
+ * envelope or a validation failure throws `ApiSchemaError`. */
92
+ function validateEnvelope(schema, path, payload) {
97
93
  if (!isDataEnvelope(payload)) {
98
94
  throw new ApiSchemaError(path, 'response was not a { data } envelope');
99
95
  }
@@ -102,6 +98,26 @@ export async function apiRequest(config, path, schema, options = {}) {
102
98
  throw new ApiSchemaError(path, parsed.error.issues);
103
99
  return parsed.data;
104
100
  }
101
+ export async function apiRequest(config, path, schema, options = {}) {
102
+ const doFetch = config.fetch ?? globalThis.fetch;
103
+ const token = config.getToken();
104
+ const headers = { ...JSON_HEADERS };
105
+ if (token)
106
+ headers['x-api-key'] = token;
107
+ const response = await doFetch(buildUrl(config.baseUrl ?? '', path, options.query), {
108
+ method: options.method ?? 'GET',
109
+ headers,
110
+ body: options.body === undefined ? undefined : JSON.stringify(options.body),
111
+ signal: options.signal,
112
+ });
113
+ if (response.status === 401)
114
+ throw new ApiUnauthorizedError();
115
+ // `Retry-After` rides on the error so a retrying caller waits the delay the server
116
+ // named (the gated routes' reloading 503 carries one) instead of guessing.
117
+ const retryAfter = retryAfterSeconds(response.headers.get('Retry-After'));
118
+ const payload = await readJsonPayload(response, path, retryAfter);
119
+ return validateEnvelope(schema, path, payload);
120
+ }
105
121
  /**
106
122
  * Fetch a plain-text endpoint (the skeleton's `/health` → `"OK"`). No `{ data }`
107
123
  * envelope, no zod — the body is returned verbatim. Non-2xx still throws loudly.
package/dist/http.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /** API-key payload and mint/edit/revoke response schemas. */
2
+ import { z } from 'zod';
3
+ /** The per-key payloads (`GET /api/auth/tokens-payload`). The stable per-mint
4
+ * `key_fingerprint` is nested under `policy_data`; the picker reads it there. */
5
+ export declare const tokensPayload: z.ZodArray<z.ZodObject<{
6
+ user_id: z.ZodString;
7
+ description: z.ZodString;
8
+ scopes: z.ZodArray<z.ZodString>;
9
+ policy_data: z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>;
10
+ condition: z.ZodOptional<z.ZodNullable<z.ZodObject<{
11
+ content: z.ZodOptional<z.ZodString>;
12
+ id: z.ZodOptional<z.ZodString>;
13
+ kwargs: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
14
+ }, z.core.$strict>>>;
15
+ }, z.core.$strip>>;
16
+ export type TokensPayload = z.infer<typeof tokensPayload>;
17
+ /** Mint reply `{ api_key, key_fingerprint }` narrowed to the raw `sk-…` key,
18
+ * returned once at creation and never again. */
19
+ export declare const createdApiKey: z.ZodPipe<z.ZodObject<{
20
+ api_key: z.ZodString;
21
+ key_fingerprint: z.ZodString;
22
+ }, z.core.$strip>, z.ZodTransform<string, {
23
+ api_key: string;
24
+ key_fingerprint: string;
25
+ }>>;
26
+ export declare const editApiKeyResult: z.ZodObject<{
27
+ user_id: z.ZodString;
28
+ updated: z.ZodBoolean;
29
+ }, z.core.$strip>;
30
+ export declare const revokeApiKeyResult: z.ZodObject<{
31
+ user_id: z.ZodString;
32
+ revoked: z.ZodBoolean;
33
+ }, z.core.$strip>;
34
+ //# sourceMappingURL=api-keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-keys.d.ts","sourceRoot":"","sources":["../../src/schemas/api-keys.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;iFACiF;AACjF,eAAO,MAAM,aAAa;;;;;;;;;;kBASzB,CAAC;AACF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D;iDACiD;AACjD,eAAO,MAAM,aAAa;;;;;;GAEc,CAAC;AACzC,eAAO,MAAM,gBAAgB;;;iBAA0D,CAAC;AACxF,eAAO,MAAM,kBAAkB;;;iBAA0D,CAAC"}
@@ -0,0 +1,22 @@
1
+ /** API-key payload and mint/edit/revoke response schemas. */
2
+ import { z } from 'zod';
3
+ import { templatedText } from './served';
4
+ import { jsonValue } from './shared';
5
+ /** The per-key payloads (`GET /api/auth/tokens-payload`). The stable per-mint
6
+ * `key_fingerprint` is nested under `policy_data`; the picker reads it there. */
7
+ export const tokensPayload = z.array(z.object({
8
+ // The value an `execution_key` binding names.
9
+ user_id: z.string().min(1),
10
+ description: z.string(),
11
+ scopes: z.array(z.string()),
12
+ policy_data: jsonValue,
13
+ condition: templatedText.nullable().optional(),
14
+ }));
15
+ /** Mint reply `{ api_key, key_fingerprint }` narrowed to the raw `sk-…` key,
16
+ * returned once at creation and never again. */
17
+ export const createdApiKey = z
18
+ .object({ api_key: z.string(), key_fingerprint: z.string() })
19
+ .transform((minted) => minted.api_key);
20
+ export const editApiKeyResult = z.object({ user_id: z.string(), updated: z.boolean() });
21
+ export const revokeApiKeyResult = z.object({ user_id: z.string(), revoked: z.boolean() });
22
+ //# sourceMappingURL=api-keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-keys.js","sourceRoot":"","sources":["../../src/schemas/api-keys.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC;iFACiF;AACjF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAClC,CAAC,CAAC,MAAM,CAAC;IACP,8CAA8C;IAC9C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC3B,WAAW,EAAE,SAAS;IACtB,SAAS,EAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAC/C,CAAC,CACH,CAAC;AAGF;iDACiD;AACjD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC;KAC3B,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;KAC5D,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACxF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC"}
@@ -0,0 +1,78 @@
1
+ /** Route catalog, scope mapping and public-route response schemas. */
2
+ import { z } from 'zod';
3
+ /** `{ url: scope_id }` — every URL currently mapped to a scope. */
4
+ export declare const authScopes: z.ZodRecord<z.ZodString, z.ZodString>;
5
+ export declare const addUrlToScopeResult: z.ZodObject<{
6
+ scope_id: z.ZodString;
7
+ url: z.ZodString;
8
+ }, z.core.$strip>;
9
+ export declare const removeUrlFromScopeResult: z.ZodObject<{
10
+ url: z.ZodString;
11
+ }, z.core.$strip>;
12
+ export declare const removeScopeResult: z.ZodObject<{
13
+ scope_id: z.ZodString;
14
+ deleted_keys: z.ZodNumber;
15
+ }, z.core.$strip>;
16
+ /**
17
+ * A route's authorization ACTION class, joined onto the catalog from the route
18
+ * registry. `read`/`write` routes are GRANTABLE — a role's per-tag level opens
19
+ * them; `fenced`/`secret` routes are ADMIN-ONLY and never grantable (no per-tag
20
+ * level reaches them). `null` marks a path the registry carries no metadata for
21
+ * (an unregistered/ungated path — no feature tags, no action).
22
+ */
23
+ export declare const routeAction: z.ZodEnum<{
24
+ read: "read";
25
+ write: "write";
26
+ secret: "secret";
27
+ fenced: "fenced";
28
+ }>;
29
+ export type RouteAction = z.infer<typeof routeAction>;
30
+ /**
31
+ * One row of the route catalog (`GET /api/auth/routes`) — a plain HTTP route with
32
+ * its current mapping, JOINED with its route-registry metadata. `mapped` is the
33
+ * scope id, the public marker, or `null` when the path is unmapped (the mapper's
34
+ * "unassigned" bucket source). `methods` is the route's method set with `HEAD`
35
+ * removed. `tags` are the route's feature-group labels, `summary` its one-line
36
+ * description, and `action` its authorization class — the join fields the Roles
37
+ * grant editor reads to derive grantable feature groups and mark the admin-only
38
+ * (fenced/secret) routes it must never offer a grant for. An unregistered path
39
+ * carries `tags: []`, `summary: ''`, `action: null`.
40
+ */
41
+ export declare const authRoute: z.ZodObject<{
42
+ path: z.ZodString;
43
+ methods: z.ZodArray<z.ZodString>;
44
+ mapped: z.ZodNullable<z.ZodString>;
45
+ tags: z.ZodArray<z.ZodString>;
46
+ summary: z.ZodString;
47
+ action: z.ZodNullable<z.ZodEnum<{
48
+ read: "read";
49
+ write: "write";
50
+ secret: "secret";
51
+ fenced: "fenced";
52
+ }>>;
53
+ }, z.core.$strip>;
54
+ export type AuthRoute = z.infer<typeof authRoute>;
55
+ export declare const authRoutes: z.ZodArray<z.ZodObject<{
56
+ path: z.ZodString;
57
+ methods: z.ZodArray<z.ZodString>;
58
+ mapped: z.ZodNullable<z.ZodString>;
59
+ tags: z.ZodArray<z.ZodString>;
60
+ summary: z.ZodString;
61
+ action: z.ZodNullable<z.ZodEnum<{
62
+ read: "read";
63
+ write: "write";
64
+ secret: "secret";
65
+ fenced: "fenced";
66
+ }>>;
67
+ }, z.core.$strip>>;
68
+ /** `GET /api/auth/public-routes` — the sorted urls pinned to the public marker. */
69
+ export declare const publicRoutes: z.ZodArray<z.ZodString>;
70
+ /** `POST /api/auth/public-routes` — the pinned url. */
71
+ export declare const pinPublicResult: z.ZodObject<{
72
+ url: z.ZodString;
73
+ }, z.core.$strip>;
74
+ /** `DELETE /api/auth/public-routes` — the unpinned url (404 when not pinned). */
75
+ export declare const unpinPublicResult: z.ZodObject<{
76
+ url: z.ZodString;
77
+ }, z.core.$strip>;
78
+ //# sourceMappingURL=auth-routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-routes.d.ts","sourceRoot":"","sources":["../../src/schemas/auth-routes.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,mEAAmE;AACnE,eAAO,MAAM,UAAU,uCAAmC,CAAC;AAE3D,eAAO,MAAM,mBAAmB;;;iBAAsD,CAAC;AACvF,eAAO,MAAM,wBAAwB;;iBAAgC,CAAC;AACtE,eAAO,MAAM,iBAAiB;;;iBAA+D,CAAC;AAE9F;;;;;;GAMG;AACH,eAAO,MAAM,WAAW;;;;;EAAgD,CAAC;AACzE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;iBAOpB,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAClD,eAAO,MAAM,UAAU;;;;;;;;;;;;kBAAqB,CAAC;AAC7C,mFAAmF;AACnF,eAAO,MAAM,YAAY,yBAAsB,CAAC;AAEhD,uDAAuD;AACvD,eAAO,MAAM,eAAe;;iBAAgC,CAAC;AAC7D,iFAAiF;AACjF,eAAO,MAAM,iBAAiB;;iBAAgC,CAAC"}
@@ -0,0 +1,42 @@
1
+ /** Route catalog, scope mapping and public-route response schemas. */
2
+ import { z } from 'zod';
3
+ /** `{ url: scope_id }` — every URL currently mapped to a scope. */
4
+ export const authScopes = z.record(z.string(), z.string());
5
+ export const addUrlToScopeResult = z.object({ scope_id: z.string(), url: z.string() });
6
+ export const removeUrlFromScopeResult = z.object({ url: z.string() });
7
+ export const removeScopeResult = z.object({ scope_id: z.string(), deleted_keys: z.number() });
8
+ /**
9
+ * A route's authorization ACTION class, joined onto the catalog from the route
10
+ * registry. `read`/`write` routes are GRANTABLE — a role's per-tag level opens
11
+ * them; `fenced`/`secret` routes are ADMIN-ONLY and never grantable (no per-tag
12
+ * level reaches them). `null` marks a path the registry carries no metadata for
13
+ * (an unregistered/ungated path — no feature tags, no action).
14
+ */
15
+ export const routeAction = z.enum(['read', 'write', 'fenced', 'secret']);
16
+ /**
17
+ * One row of the route catalog (`GET /api/auth/routes`) — a plain HTTP route with
18
+ * its current mapping, JOINED with its route-registry metadata. `mapped` is the
19
+ * scope id, the public marker, or `null` when the path is unmapped (the mapper's
20
+ * "unassigned" bucket source). `methods` is the route's method set with `HEAD`
21
+ * removed. `tags` are the route's feature-group labels, `summary` its one-line
22
+ * description, and `action` its authorization class — the join fields the Roles
23
+ * grant editor reads to derive grantable feature groups and mark the admin-only
24
+ * (fenced/secret) routes it must never offer a grant for. An unregistered path
25
+ * carries `tags: []`, `summary: ''`, `action: null`.
26
+ */
27
+ export const authRoute = z.object({
28
+ path: z.string(),
29
+ methods: z.array(z.string()),
30
+ mapped: z.string().nullable(),
31
+ tags: z.array(z.string()),
32
+ summary: z.string(),
33
+ action: routeAction.nullable(),
34
+ });
35
+ export const authRoutes = z.array(authRoute);
36
+ /** `GET /api/auth/public-routes` — the sorted urls pinned to the public marker. */
37
+ export const publicRoutes = z.array(z.string());
38
+ /** `POST /api/auth/public-routes` — the pinned url. */
39
+ export const pinPublicResult = z.object({ url: z.string() });
40
+ /** `DELETE /api/auth/public-routes` — the unpinned url (404 when not pinned). */
41
+ export const unpinPublicResult = z.object({ url: z.string() });
42
+ //# sourceMappingURL=auth-routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-routes.js","sourceRoot":"","sources":["../../src/schemas/auth-routes.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,mEAAmE;AACnE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAE3D,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACvF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACtE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAE9F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAGzE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,MAAM,EAAE,WAAW,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAC7C,mFAAmF;AACnF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAEhD,uDAAuD;AACvD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC7D,iFAAiF;AACjF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC"}
@@ -0,0 +1,78 @@
1
+ /** Backup section, document and import-report response schemas. */
2
+ import { z } from 'zod';
3
+ export declare const backupSections: z.ZodArray<z.ZodObject<{
4
+ name: z.ZodString;
5
+ secret: z.ZodBoolean;
6
+ }, z.core.$strip>>;
7
+ /** The exported backup document — validated when the UI reads a picked file. */
8
+ export declare const backupDocument: z.ZodObject<{
9
+ version: z.ZodLiteral<1>;
10
+ created_at: z.ZodString;
11
+ sections: z.ZodRecord<z.ZodString, z.ZodUnknown>;
12
+ errors: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
13
+ }, z.core.$strip>;
14
+ export type BackupDocument = z.infer<typeof backupDocument>;
15
+ export declare const backupImportReport: z.ZodObject<{
16
+ ok: z.ZodBoolean;
17
+ sections: z.ZodRecord<z.ZodString, z.ZodObject<{
18
+ created: z.ZodNumber;
19
+ updated: z.ZodNumber;
20
+ skipped: z.ZodNumber;
21
+ errors: z.ZodArray<z.ZodString>;
22
+ new_api_keys: z.ZodOptional<z.ZodArray<z.ZodObject<{
23
+ user_id: z.ZodString;
24
+ description: z.ZodString;
25
+ api_key: z.ZodString;
26
+ }, z.core.$strip>>>;
27
+ fanout: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
28
+ mode: z.ZodLiteral<"local-only">;
29
+ note: z.ZodString;
30
+ }, z.core.$strip>, z.ZodObject<{
31
+ op: z.ZodString;
32
+ reachable: z.ZodBoolean;
33
+ local_only: z.ZodBoolean;
34
+ results: z.ZodArray<z.ZodObject<{
35
+ name: z.ZodString;
36
+ outcome: z.ZodEnum<{
37
+ failed: "failed";
38
+ resyncing: "resyncing";
39
+ recycling: "recycling";
40
+ stale: "stale";
41
+ applied: "applied";
42
+ missing: "missing";
43
+ departed: "departed";
44
+ timed_out: "timed_out";
45
+ }>;
46
+ payload: z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>;
47
+ error: z.ZodNullable<z.ZodString>;
48
+ detail: z.ZodNullable<z.ZodString>;
49
+ }, z.core.$strip>>;
50
+ error: z.ZodNullable<z.ZodString>;
51
+ mode: z.ZodLiteral<"fleet">;
52
+ }, z.core.$strip>, z.ZodObject<{
53
+ op: z.ZodString;
54
+ reachable: z.ZodBoolean;
55
+ local_only: z.ZodBoolean;
56
+ results: z.ZodArray<z.ZodObject<{
57
+ name: z.ZodString;
58
+ outcome: z.ZodEnum<{
59
+ failed: "failed";
60
+ resyncing: "resyncing";
61
+ recycling: "recycling";
62
+ stale: "stale";
63
+ applied: "applied";
64
+ missing: "missing";
65
+ departed: "departed";
66
+ timed_out: "timed_out";
67
+ }>;
68
+ payload: z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>;
69
+ error: z.ZodNullable<z.ZodString>;
70
+ detail: z.ZodNullable<z.ZodString>;
71
+ }, z.core.$strip>>;
72
+ error: z.ZodNullable<z.ZodString>;
73
+ mode: z.ZodLiteral<"unreachable">;
74
+ }, z.core.$strip>], "mode">>;
75
+ }, z.core.$strip>>;
76
+ }, z.core.$strip>;
77
+ export type BackupImportReport = z.infer<typeof backupImportReport>;
78
+ //# sourceMappingURL=backup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/schemas/backup.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,cAAc;;;kBAA+D,CAAC;AAE3F,gFAAgF;AAChF,eAAO,MAAM,cAAc;;;;;iBAKzB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAyB7B,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
@@ -0,0 +1,33 @@
1
+ /** Backup section, document and import-report response schemas. */
2
+ import { z } from 'zod';
3
+ import { fleetReportFanout } from './fleet';
4
+ export const backupSections = z.array(z.object({ name: z.string(), secret: z.boolean() }));
5
+ /** The exported backup document — validated when the UI reads a picked file. */
6
+ export const backupDocument = z.object({
7
+ version: z.literal(1),
8
+ created_at: z.string(),
9
+ sections: z.record(z.string(), z.unknown()),
10
+ errors: z.record(z.string(), z.string()).optional(),
11
+ });
12
+ export const backupImportReport = z.object({
13
+ ok: z.boolean(),
14
+ sections: z.record(z.string(), z.object({
15
+ created: z.number(),
16
+ updated: z.number(),
17
+ skipped: z.number(),
18
+ errors: z.array(z.string()),
19
+ new_api_keys: z
20
+ .array(z.object({
21
+ user_id: z.string(),
22
+ description: z.string(),
23
+ api_key: z.string(),
24
+ }))
25
+ .optional(),
26
+ // The `manifest` and `env` sections apply through the config pipeline, so their
27
+ // report carries the mode-wrapped fleet `fanout` of the restore's reload; other
28
+ // sections omit it. Parsed EXPLICITLY so the shared fleet-report handler can
29
+ // surface a failed restore propagation — otherwise zod would strip it silently.
30
+ fanout: fleetReportFanout.optional(),
31
+ })),
32
+ });
33
+ //# sourceMappingURL=backup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/schemas/backup.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE5C,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAE3F,gFAAgF;AAChF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACrB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IAC3C,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACpD,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE;IACf,QAAQ,EAAE,CAAC,CAAC,MAAM,CAChB,CAAC,CAAC,MAAM,EAAE,EACV,CAAC,CAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC3B,YAAY,EAAE,CAAC;aACZ,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;YACnB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;YACvB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;SACpB,CAAC,CACH;aACA,QAAQ,EAAE;QACb,gFAAgF;QAChF,gFAAgF;QAChF,6EAA6E;QAC7E,gFAAgF;QAChF,MAAM,EAAE,iBAAiB,CAAC,QAAQ,EAAE;KACrC,CAAC,CACH;CACF,CAAC,CAAC"}