@cavi-ai/api-client 0.1.0

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 (665) hide show
  1. package/ARCHITECTURE.md +12 -0
  2. package/CHANGELOG.md +80 -0
  3. package/CONTRIBUTING.md +158 -0
  4. package/LICENSE +21 -0
  5. package/README.md +618 -0
  6. package/SECURITY.md +48 -0
  7. package/dist/contracts/index.d.ts +5 -0
  8. package/dist/contracts/index.d.ts.map +1 -0
  9. package/dist/contracts/index.js +4 -0
  10. package/dist/contracts/paths.d.ts +154 -0
  11. package/dist/contracts/paths.d.ts.map +1 -0
  12. package/dist/contracts/paths.js +89 -0
  13. package/dist/contracts/resolve.d.ts +7 -0
  14. package/dist/contracts/resolve.d.ts.map +1 -0
  15. package/dist/contracts/resolve.js +22 -0
  16. package/dist/contracts/surfaces.d.ts +13 -0
  17. package/dist/contracts/surfaces.d.ts.map +1 -0
  18. package/dist/contracts/surfaces.js +332 -0
  19. package/dist/contracts/team-manifest.d.ts +200 -0
  20. package/dist/contracts/team-manifest.d.ts.map +1 -0
  21. package/dist/contracts/team-manifest.js +951 -0
  22. package/dist/core/data/guards.d.ts +6 -0
  23. package/dist/core/data/guards.d.ts.map +1 -0
  24. package/dist/core/data/guards.js +22 -0
  25. package/dist/core/data/index.d.ts +2 -0
  26. package/dist/core/data/index.d.ts.map +1 -0
  27. package/dist/core/data/index.js +1 -0
  28. package/dist/core/env/config.d.ts +40 -0
  29. package/dist/core/env/config.d.ts.map +1 -0
  30. package/dist/core/env/config.js +44 -0
  31. package/dist/core/env/index.d.ts +3 -0
  32. package/dist/core/env/index.d.ts.map +1 -0
  33. package/dist/core/env/index.js +2 -0
  34. package/dist/core/env/repo-root.d.ts +11 -0
  35. package/dist/core/env/repo-root.d.ts.map +1 -0
  36. package/dist/core/env/repo-root.js +36 -0
  37. package/dist/core/gateway/agent/commands.d.ts +93 -0
  38. package/dist/core/gateway/agent/commands.d.ts.map +1 -0
  39. package/dist/core/gateway/agent/commands.js +351 -0
  40. package/dist/core/gateway/agent/config.d.ts +158 -0
  41. package/dist/core/gateway/agent/config.d.ts.map +1 -0
  42. package/dist/core/gateway/agent/config.js +536 -0
  43. package/dist/core/gateway/agent/index.d.ts +4 -0
  44. package/dist/core/gateway/agent/index.d.ts.map +1 -0
  45. package/dist/core/gateway/agent/index.js +3 -0
  46. package/dist/core/gateway/agent/voice-config.d.ts +20 -0
  47. package/dist/core/gateway/agent/voice-config.d.ts.map +1 -0
  48. package/dist/core/gateway/agent/voice-config.js +65 -0
  49. package/dist/core/gateway/client/capabilities.d.ts +28 -0
  50. package/dist/core/gateway/client/capabilities.d.ts.map +1 -0
  51. package/dist/core/gateway/client/capabilities.js +288 -0
  52. package/dist/core/gateway/client/client.d.ts +106 -0
  53. package/dist/core/gateway/client/client.d.ts.map +1 -0
  54. package/dist/core/gateway/client/client.js +41 -0
  55. package/dist/core/gateway/client/error-details.d.ts +17 -0
  56. package/dist/core/gateway/client/error-details.d.ts.map +1 -0
  57. package/dist/core/gateway/client/error-details.js +50 -0
  58. package/dist/core/gateway/client/fetch.d.ts +24 -0
  59. package/dist/core/gateway/client/fetch.d.ts.map +1 -0
  60. package/dist/core/gateway/client/fetch.js +98 -0
  61. package/dist/core/gateway/client/index.d.ts +6 -0
  62. package/dist/core/gateway/client/index.d.ts.map +1 -0
  63. package/dist/core/gateway/client/index.js +5 -0
  64. package/dist/core/gateway/client/runtime-targets.d.ts +11 -0
  65. package/dist/core/gateway/client/runtime-targets.d.ts.map +1 -0
  66. package/dist/core/gateway/client/runtime-targets.js +86 -0
  67. package/dist/core/gateway/envelope/envelope.d.ts +25 -0
  68. package/dist/core/gateway/envelope/envelope.d.ts.map +1 -0
  69. package/dist/core/gateway/envelope/envelope.js +141 -0
  70. package/dist/core/gateway/envelope/index.d.ts +3 -0
  71. package/dist/core/gateway/envelope/index.d.ts.map +1 -0
  72. package/dist/core/gateway/envelope/index.js +1 -0
  73. package/dist/core/gateway/envelope/types.d.ts +32 -0
  74. package/dist/core/gateway/envelope/types.d.ts.map +1 -0
  75. package/dist/core/gateway/envelope/types.js +1 -0
  76. package/dist/core/gateway/index.d.ts +11 -0
  77. package/dist/core/gateway/index.d.ts.map +1 -0
  78. package/dist/core/gateway/index.js +10 -0
  79. package/dist/core/gateway/jobs.d.ts +44 -0
  80. package/dist/core/gateway/jobs.d.ts.map +1 -0
  81. package/dist/core/gateway/jobs.js +104 -0
  82. package/dist/core/gateway/portal/config-patch.d.ts +42 -0
  83. package/dist/core/gateway/portal/config-patch.d.ts.map +1 -0
  84. package/dist/core/gateway/portal/config-patch.js +99 -0
  85. package/dist/core/gateway/portal/index.d.ts +2 -0
  86. package/dist/core/gateway/portal/index.d.ts.map +1 -0
  87. package/dist/core/gateway/portal/index.js +1 -0
  88. package/dist/core/gateway/providers/factory.d.ts +18 -0
  89. package/dist/core/gateway/providers/factory.d.ts.map +1 -0
  90. package/dist/core/gateway/providers/factory.js +40 -0
  91. package/dist/core/gateway/providers/index.d.ts +5 -0
  92. package/dist/core/gateway/providers/index.d.ts.map +1 -0
  93. package/dist/core/gateway/providers/index.js +4 -0
  94. package/dist/core/gateway/providers/normalize.d.ts +2 -0
  95. package/dist/core/gateway/providers/normalize.d.ts.map +1 -0
  96. package/dist/core/gateway/providers/normalize.js +6 -0
  97. package/dist/core/gateway/providers/registry.d.ts +5 -0
  98. package/dist/core/gateway/providers/registry.d.ts.map +1 -0
  99. package/dist/core/gateway/providers/registry.js +76 -0
  100. package/dist/core/gateway/providers/types.d.ts +42 -0
  101. package/dist/core/gateway/providers/types.d.ts.map +1 -0
  102. package/dist/core/gateway/providers/types.js +4 -0
  103. package/dist/core/gateway/resources/index.d.ts +3 -0
  104. package/dist/core/gateway/resources/index.d.ts.map +1 -0
  105. package/dist/core/gateway/resources/index.js +2 -0
  106. package/dist/core/gateway/resources/media.d.ts +165 -0
  107. package/dist/core/gateway/resources/media.d.ts.map +1 -0
  108. package/dist/core/gateway/resources/media.js +170 -0
  109. package/dist/core/gateway/resources/wiki.d.ts +136 -0
  110. package/dist/core/gateway/resources/wiki.d.ts.map +1 -0
  111. package/dist/core/gateway/resources/wiki.js +72 -0
  112. package/dist/core/gateway/rpc/client.d.ts +150 -0
  113. package/dist/core/gateway/rpc/client.d.ts.map +1 -0
  114. package/dist/core/gateway/rpc/client.js +675 -0
  115. package/dist/core/gateway/rpc/device-crypto.d.ts +19 -0
  116. package/dist/core/gateway/rpc/device-crypto.d.ts.map +1 -0
  117. package/dist/core/gateway/rpc/device-crypto.js +75 -0
  118. package/dist/core/gateway/rpc/device-store.d.ts +8 -0
  119. package/dist/core/gateway/rpc/device-store.d.ts.map +1 -0
  120. package/dist/core/gateway/rpc/device-store.js +113 -0
  121. package/dist/core/gateway/rpc/error.d.ts +5 -0
  122. package/dist/core/gateway/rpc/error.d.ts.map +1 -0
  123. package/dist/core/gateway/rpc/error.js +9 -0
  124. package/dist/core/gateway/rpc/index.d.ts +6 -0
  125. package/dist/core/gateway/rpc/index.d.ts.map +1 -0
  126. package/dist/core/gateway/rpc/index.js +5 -0
  127. package/dist/core/gateway/rpc/preauth-handshake.d.ts +39 -0
  128. package/dist/core/gateway/rpc/preauth-handshake.d.ts.map +1 -0
  129. package/dist/core/gateway/rpc/preauth-handshake.js +58 -0
  130. package/dist/core/gateway/run/contracts.d.ts +126 -0
  131. package/dist/core/gateway/run/contracts.d.ts.map +1 -0
  132. package/dist/core/gateway/run/contracts.js +23 -0
  133. package/dist/core/gateway/run/event-stream.d.ts +106 -0
  134. package/dist/core/gateway/run/event-stream.d.ts.map +1 -0
  135. package/dist/core/gateway/run/event-stream.js +264 -0
  136. package/dist/core/gateway/run/index.d.ts +5 -0
  137. package/dist/core/gateway/run/index.d.ts.map +1 -0
  138. package/dist/core/gateway/run/index.js +4 -0
  139. package/dist/core/gateway/run/sse-run-event-provider.d.ts +55 -0
  140. package/dist/core/gateway/run/sse-run-event-provider.d.ts.map +1 -0
  141. package/dist/core/gateway/run/sse-run-event-provider.js +394 -0
  142. package/dist/core/gateway/run/stream-failure.d.ts +11 -0
  143. package/dist/core/gateway/run/stream-failure.d.ts.map +1 -0
  144. package/dist/core/gateway/run/stream-failure.js +101 -0
  145. package/dist/core/gateway/snapshots/cache.d.ts +7 -0
  146. package/dist/core/gateway/snapshots/cache.d.ts.map +1 -0
  147. package/dist/core/gateway/snapshots/cache.js +13 -0
  148. package/dist/core/gateway/snapshots/contracts.d.ts +279 -0
  149. package/dist/core/gateway/snapshots/contracts.d.ts.map +1 -0
  150. package/dist/core/gateway/snapshots/contracts.js +1 -0
  151. package/dist/core/gateway/snapshots/index.d.ts +7 -0
  152. package/dist/core/gateway/snapshots/index.d.ts.map +1 -0
  153. package/dist/core/gateway/snapshots/index.js +6 -0
  154. package/dist/core/gateway/snapshots/loaders.d.ts +76 -0
  155. package/dist/core/gateway/snapshots/loaders.d.ts.map +1 -0
  156. package/dist/core/gateway/snapshots/loaders.js +515 -0
  157. package/dist/core/gateway/snapshots/session-loaders.d.ts +116 -0
  158. package/dist/core/gateway/snapshots/session-loaders.d.ts.map +1 -0
  159. package/dist/core/gateway/snapshots/session-loaders.js +310 -0
  160. package/dist/core/gateway/snapshots/system-loaders.d.ts +16 -0
  161. package/dist/core/gateway/snapshots/system-loaders.d.ts.map +1 -0
  162. package/dist/core/gateway/snapshots/system-loaders.js +61 -0
  163. package/dist/core/gateway/snapshots/transforms.d.ts +38 -0
  164. package/dist/core/gateway/snapshots/transforms.d.ts.map +1 -0
  165. package/dist/core/gateway/snapshots/transforms.js +328 -0
  166. package/dist/core/http/client-id.d.ts +6 -0
  167. package/dist/core/http/client-id.d.ts.map +1 -0
  168. package/dist/core/http/client-id.js +29 -0
  169. package/dist/core/http/client.d.ts +25 -0
  170. package/dist/core/http/client.d.ts.map +1 -0
  171. package/dist/core/http/client.js +234 -0
  172. package/dist/core/http/contracts.d.ts +3 -0
  173. package/dist/core/http/contracts.d.ts.map +1 -0
  174. package/dist/core/http/contracts.js +5 -0
  175. package/dist/core/http/errors.d.ts +17 -0
  176. package/dist/core/http/errors.d.ts.map +1 -0
  177. package/dist/core/http/errors.js +16 -0
  178. package/dist/core/http/gateway-error.d.ts +15 -0
  179. package/dist/core/http/gateway-error.d.ts.map +1 -0
  180. package/dist/core/http/gateway-error.js +15 -0
  181. package/dist/core/http/index.d.ts +10 -0
  182. package/dist/core/http/index.d.ts.map +1 -0
  183. package/dist/core/http/index.js +9 -0
  184. package/dist/core/http/json-client.d.ts +17 -0
  185. package/dist/core/http/json-client.d.ts.map +1 -0
  186. package/dist/core/http/json-client.js +62 -0
  187. package/dist/core/http/raw-client.d.ts +16 -0
  188. package/dist/core/http/raw-client.d.ts.map +1 -0
  189. package/dist/core/http/raw-client.js +36 -0
  190. package/dist/core/http/redaction.d.ts +20 -0
  191. package/dist/core/http/redaction.d.ts.map +1 -0
  192. package/dist/core/http/redaction.js +58 -0
  193. package/dist/core/http/types.d.ts +44 -0
  194. package/dist/core/http/types.d.ts.map +1 -0
  195. package/dist/core/http/types.js +3 -0
  196. package/dist/core/runtime/index.d.ts +2 -0
  197. package/dist/core/runtime/index.d.ts.map +1 -0
  198. package/dist/core/runtime/index.js +1 -0
  199. package/dist/core/runtime/paths.d.ts +5 -0
  200. package/dist/core/runtime/paths.d.ts.map +1 -0
  201. package/dist/core/runtime/paths.js +29 -0
  202. package/dist/core/sse/index.d.ts +2 -0
  203. package/dist/core/sse/index.d.ts.map +1 -0
  204. package/dist/core/sse/index.js +1 -0
  205. package/dist/core/sse/stream.d.ts +17 -0
  206. package/dist/core/sse/stream.d.ts.map +1 -0
  207. package/dist/core/sse/stream.js +106 -0
  208. package/dist/core/ws/close.d.ts +11 -0
  209. package/dist/core/ws/close.d.ts.map +1 -0
  210. package/dist/core/ws/close.js +34 -0
  211. package/dist/core/ws/gateway-websocket.d.ts +2 -0
  212. package/dist/core/ws/gateway-websocket.d.ts.map +1 -0
  213. package/dist/core/ws/gateway-websocket.js +1 -0
  214. package/dist/core/ws/index.d.ts +4 -0
  215. package/dist/core/ws/index.d.ts.map +1 -0
  216. package/dist/core/ws/index.js +3 -0
  217. package/dist/core/ws/targets.d.ts +21 -0
  218. package/dist/core/ws/targets.d.ts.map +1 -0
  219. package/dist/core/ws/targets.js +61 -0
  220. package/dist/extensions/cavi/adapters/cavi-control-adapters/gateway-ws-loaders.d.ts +21 -0
  221. package/dist/extensions/cavi/adapters/cavi-control-adapters/gateway-ws-loaders.d.ts.map +1 -0
  222. package/dist/extensions/cavi/adapters/cavi-control-adapters/gateway-ws-loaders.js +22 -0
  223. package/dist/extensions/cavi/adapters/cavi-control-adapters/gateway-ws-snapshot-loaders.d.ts +30 -0
  224. package/dist/extensions/cavi/adapters/cavi-control-adapters/gateway-ws-snapshot-loaders.d.ts.map +1 -0
  225. package/dist/extensions/cavi/adapters/cavi-control-adapters/gateway-ws-snapshot-loaders.js +72 -0
  226. package/dist/extensions/cavi/adapters/cavi-control-adapters/library-live.d.ts +4 -0
  227. package/dist/extensions/cavi/adapters/cavi-control-adapters/library-live.d.ts.map +1 -0
  228. package/dist/extensions/cavi/adapters/cavi-control-adapters/library-live.js +66 -0
  229. package/dist/extensions/cavi/adapters/cavi-control-adapters/operator-control-live.d.ts +7 -0
  230. package/dist/extensions/cavi/adapters/cavi-control-adapters/operator-control-live.d.ts.map +1 -0
  231. package/dist/extensions/cavi/adapters/cavi-control-adapters/operator-control-live.js +318 -0
  232. package/dist/extensions/cavi/adapters/create-cavi-control-adapters.d.ts +88 -0
  233. package/dist/extensions/cavi/adapters/create-cavi-control-adapters.d.ts.map +1 -0
  234. package/dist/extensions/cavi/adapters/create-cavi-control-adapters.js +172 -0
  235. package/dist/extensions/cavi/client.d.ts +72 -0
  236. package/dist/extensions/cavi/client.d.ts.map +1 -0
  237. package/dist/extensions/cavi/client.js +19 -0
  238. package/dist/extensions/cavi/contracts/index.d.ts +6 -0
  239. package/dist/extensions/cavi/contracts/index.d.ts.map +1 -0
  240. package/dist/extensions/cavi/contracts/index.js +5 -0
  241. package/dist/extensions/cavi/contracts/mobile.d.ts +441 -0
  242. package/dist/extensions/cavi/contracts/mobile.d.ts.map +1 -0
  243. package/dist/extensions/cavi/contracts/mobile.js +467 -0
  244. package/dist/extensions/cavi/contracts/paths.d.ts +121 -0
  245. package/dist/extensions/cavi/contracts/paths.d.ts.map +1 -0
  246. package/dist/extensions/cavi/contracts/paths.js +197 -0
  247. package/dist/extensions/cavi/contracts/portals.d.ts +78 -0
  248. package/dist/extensions/cavi/contracts/portals.d.ts.map +1 -0
  249. package/dist/extensions/cavi/contracts/portals.js +70 -0
  250. package/dist/extensions/cavi/contracts/resolve.d.ts +3 -0
  251. package/dist/extensions/cavi/contracts/resolve.d.ts.map +1 -0
  252. package/dist/extensions/cavi/contracts/resolve.js +4 -0
  253. package/dist/extensions/cavi/contracts/surfaces.d.ts +5 -0
  254. package/dist/extensions/cavi/contracts/surfaces.d.ts.map +1 -0
  255. package/dist/extensions/cavi/contracts/surfaces.js +551 -0
  256. package/dist/extensions/cavi/discourse/contracts.d.ts +5 -0
  257. package/dist/extensions/cavi/discourse/contracts.d.ts.map +1 -0
  258. package/dist/extensions/cavi/discourse/contracts.js +7 -0
  259. package/dist/extensions/cavi/discourse/fallback.d.ts +3 -0
  260. package/dist/extensions/cavi/discourse/fallback.d.ts.map +1 -0
  261. package/dist/extensions/cavi/discourse/fallback.js +364 -0
  262. package/dist/extensions/cavi/discourse/live.d.ts +5 -0
  263. package/dist/extensions/cavi/discourse/live.d.ts.map +1 -0
  264. package/dist/extensions/cavi/discourse/live.js +22 -0
  265. package/dist/extensions/cavi/discourse/normalize-helpers.d.ts +11 -0
  266. package/dist/extensions/cavi/discourse/normalize-helpers.d.ts.map +1 -0
  267. package/dist/extensions/cavi/discourse/normalize-helpers.js +155 -0
  268. package/dist/extensions/cavi/discourse/normalize.d.ts +4 -0
  269. package/dist/extensions/cavi/discourse/normalize.d.ts.map +1 -0
  270. package/dist/extensions/cavi/discourse/normalize.js +287 -0
  271. package/dist/extensions/cavi/domain/discourse.d.ts +161 -0
  272. package/dist/extensions/cavi/domain/discourse.d.ts.map +1 -0
  273. package/dist/extensions/cavi/domain/discourse.js +1 -0
  274. package/dist/extensions/cavi/domain/index.d.ts +6 -0
  275. package/dist/extensions/cavi/domain/index.d.ts.map +1 -0
  276. package/dist/extensions/cavi/domain/index.js +5 -0
  277. package/dist/extensions/cavi/domain/library.d.ts +80 -0
  278. package/dist/extensions/cavi/domain/library.d.ts.map +1 -0
  279. package/dist/extensions/cavi/domain/library.js +2 -0
  280. package/dist/extensions/cavi/domain/observability.d.ts +34 -0
  281. package/dist/extensions/cavi/domain/observability.d.ts.map +1 -0
  282. package/dist/extensions/cavi/domain/observability.js +1 -0
  283. package/dist/extensions/cavi/domain/operator.d.ts +420 -0
  284. package/dist/extensions/cavi/domain/operator.d.ts.map +1 -0
  285. package/dist/extensions/cavi/domain/operator.js +1 -0
  286. package/dist/extensions/cavi/domain/project-board.d.ts +96 -0
  287. package/dist/extensions/cavi/domain/project-board.d.ts.map +1 -0
  288. package/dist/extensions/cavi/domain/project-board.js +1 -0
  289. package/dist/extensions/cavi/fallbacks/provider.d.ts +13 -0
  290. package/dist/extensions/cavi/fallbacks/provider.d.ts.map +1 -0
  291. package/dist/extensions/cavi/fallbacks/provider.js +23 -0
  292. package/dist/extensions/cavi/fallbacks/snapshots/agent-memory.d.ts +3 -0
  293. package/dist/extensions/cavi/fallbacks/snapshots/agent-memory.d.ts.map +1 -0
  294. package/dist/extensions/cavi/fallbacks/snapshots/agent-memory.js +6 -0
  295. package/dist/extensions/cavi/fallbacks/snapshots/cost-history.d.ts +3 -0
  296. package/dist/extensions/cavi/fallbacks/snapshots/cost-history.d.ts.map +1 -0
  297. package/dist/extensions/cavi/fallbacks/snapshots/cost-history.js +73 -0
  298. package/dist/extensions/cavi/fallbacks/snapshots/incidents.d.ts +3 -0
  299. package/dist/extensions/cavi/fallbacks/snapshots/incidents.d.ts.map +1 -0
  300. package/dist/extensions/cavi/fallbacks/snapshots/incidents.js +50 -0
  301. package/dist/extensions/cavi/fallbacks/snapshots/index.d.ts +10 -0
  302. package/dist/extensions/cavi/fallbacks/snapshots/index.d.ts.map +1 -0
  303. package/dist/extensions/cavi/fallbacks/snapshots/index.js +9 -0
  304. package/dist/extensions/cavi/fallbacks/snapshots/library.d.ts +3 -0
  305. package/dist/extensions/cavi/fallbacks/snapshots/library.d.ts.map +1 -0
  306. package/dist/extensions/cavi/fallbacks/snapshots/library.js +110 -0
  307. package/dist/extensions/cavi/fallbacks/snapshots/operator-control/defaults.d.ts +8 -0
  308. package/dist/extensions/cavi/fallbacks/snapshots/operator-control/defaults.d.ts.map +1 -0
  309. package/dist/extensions/cavi/fallbacks/snapshots/operator-control/defaults.js +29 -0
  310. package/dist/extensions/cavi/fallbacks/snapshots/operator-control/index.d.ts +4 -0
  311. package/dist/extensions/cavi/fallbacks/snapshots/operator-control/index.d.ts.map +1 -0
  312. package/dist/extensions/cavi/fallbacks/snapshots/operator-control/index.js +3 -0
  313. package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-memory.d.ts +3 -0
  314. package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-memory.d.ts.map +1 -0
  315. package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-memory.js +63 -0
  316. package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-registry-detail.d.ts +3 -0
  317. package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-registry-detail.d.ts.map +1 -0
  318. package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-registry-detail.js +716 -0
  319. package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-section-status.d.ts +3 -0
  320. package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-section-status.d.ts.map +1 -0
  321. package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-section-status.js +38 -0
  322. package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-status.d.ts +3 -0
  323. package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-status.d.ts.map +1 -0
  324. package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-status.js +84 -0
  325. package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-tasks.d.ts +3 -0
  326. package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-tasks.d.ts.map +1 -0
  327. package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-tasks.js +111 -0
  328. package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-worker-ready.d.ts +3 -0
  329. package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-worker-ready.d.ts.map +1 -0
  330. package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-worker-ready.js +16 -0
  331. package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-worker-tasks.d.ts +3 -0
  332. package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-worker-tasks.d.ts.map +1 -0
  333. package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-worker-tasks.js +43 -0
  334. package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot.d.ts +3 -0
  335. package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot.d.ts.map +1 -0
  336. package/dist/extensions/cavi/fallbacks/snapshots/operator-control/snapshot.js +16 -0
  337. package/dist/extensions/cavi/fallbacks/snapshots/operator-control/transports.d.ts +4 -0
  338. package/dist/extensions/cavi/fallbacks/snapshots/operator-control/transports.d.ts.map +1 -0
  339. package/dist/extensions/cavi/fallbacks/snapshots/operator-control/transports.js +65 -0
  340. package/dist/extensions/cavi/fallbacks/snapshots/overview.d.ts +3 -0
  341. package/dist/extensions/cavi/fallbacks/snapshots/overview.d.ts.map +1 -0
  342. package/dist/extensions/cavi/fallbacks/snapshots/overview.js +40 -0
  343. package/dist/extensions/cavi/fallbacks/snapshots/routing.d.ts +3 -0
  344. package/dist/extensions/cavi/fallbacks/snapshots/routing.d.ts.map +1 -0
  345. package/dist/extensions/cavi/fallbacks/snapshots/routing.js +36 -0
  346. package/dist/extensions/cavi/fallbacks/snapshots/runs.d.ts +4 -0
  347. package/dist/extensions/cavi/fallbacks/snapshots/runs.d.ts.map +1 -0
  348. package/dist/extensions/cavi/fallbacks/snapshots/runs.js +133 -0
  349. package/dist/extensions/cavi/fallbacks/snapshots/shared.d.ts +2 -0
  350. package/dist/extensions/cavi/fallbacks/snapshots/shared.d.ts.map +1 -0
  351. package/dist/extensions/cavi/fallbacks/snapshots/shared.js +1 -0
  352. package/dist/extensions/cavi/index.d.ts +27 -0
  353. package/dist/extensions/cavi/index.d.ts.map +1 -0
  354. package/dist/extensions/cavi/index.js +26 -0
  355. package/dist/extensions/cavi/library/api.d.ts +18 -0
  356. package/dist/extensions/cavi/library/api.d.ts.map +1 -0
  357. package/dist/extensions/cavi/library/api.js +67 -0
  358. package/dist/extensions/cavi/library/client.d.ts +51 -0
  359. package/dist/extensions/cavi/library/client.d.ts.map +1 -0
  360. package/dist/extensions/cavi/library/client.js +23 -0
  361. package/dist/extensions/cavi/library/clip.d.ts +93 -0
  362. package/dist/extensions/cavi/library/clip.d.ts.map +1 -0
  363. package/dist/extensions/cavi/library/clip.js +272 -0
  364. package/dist/extensions/cavi/operator-control/constants.d.ts +4 -0
  365. package/dist/extensions/cavi/operator-control/constants.d.ts.map +1 -0
  366. package/dist/extensions/cavi/operator-control/constants.js +3 -0
  367. package/dist/extensions/cavi/operator-control/defaults.d.ts +11 -0
  368. package/dist/extensions/cavi/operator-control/defaults.d.ts.map +1 -0
  369. package/dist/extensions/cavi/operator-control/defaults.js +243 -0
  370. package/dist/extensions/cavi/operator-control/load-section.d.ts +24 -0
  371. package/dist/extensions/cavi/operator-control/load-section.d.ts.map +1 -0
  372. package/dist/extensions/cavi/operator-control/load-section.js +46 -0
  373. package/dist/extensions/cavi/portal/client.d.ts +16 -0
  374. package/dist/extensions/cavi/portal/client.d.ts.map +1 -0
  375. package/dist/extensions/cavi/portal/client.js +38 -0
  376. package/dist/extensions/cavi/portal/tts.d.ts +69 -0
  377. package/dist/extensions/cavi/portal/tts.d.ts.map +1 -0
  378. package/dist/extensions/cavi/portal/tts.js +116 -0
  379. package/dist/extensions/cavi/project-board/constants.d.ts +68 -0
  380. package/dist/extensions/cavi/project-board/constants.d.ts.map +1 -0
  381. package/dist/extensions/cavi/project-board/constants.js +9 -0
  382. package/dist/extensions/cavi/project-board/fallback.d.ts +3 -0
  383. package/dist/extensions/cavi/project-board/fallback.d.ts.map +1 -0
  384. package/dist/extensions/cavi/project-board/fallback.js +127 -0
  385. package/dist/extensions/cavi/project-board/live.d.ts +16 -0
  386. package/dist/extensions/cavi/project-board/live.d.ts.map +1 -0
  387. package/dist/extensions/cavi/project-board/live.js +86 -0
  388. package/dist/extensions/cavi/project-board/mutations.d.ts +43 -0
  389. package/dist/extensions/cavi/project-board/mutations.d.ts.map +1 -0
  390. package/dist/extensions/cavi/project-board/mutations.js +210 -0
  391. package/dist/extensions/cavi/project-board/normalize.d.ts +23 -0
  392. package/dist/extensions/cavi/project-board/normalize.d.ts.map +1 -0
  393. package/dist/extensions/cavi/project-board/normalize.js +410 -0
  394. package/dist/extensions/cavi/project-board/trace-id.d.ts +2 -0
  395. package/dist/extensions/cavi/project-board/trace-id.d.ts.map +1 -0
  396. package/dist/extensions/cavi/project-board/trace-id.js +7 -0
  397. package/dist/extensions/cavi/registry/canonical-team-registry.d.ts +41 -0
  398. package/dist/extensions/cavi/registry/canonical-team-registry.d.ts.map +1 -0
  399. package/dist/extensions/cavi/registry/canonical-team-registry.js +102 -0
  400. package/dist/extensions/cavi/registry/portal-library-registry.d.ts +6 -0
  401. package/dist/extensions/cavi/registry/portal-library-registry.d.ts.map +1 -0
  402. package/dist/extensions/cavi/registry/portal-library-registry.js +17 -0
  403. package/dist/extensions/cavi/registry/session-keys.d.ts +16 -0
  404. package/dist/extensions/cavi/registry/session-keys.d.ts.map +1 -0
  405. package/dist/extensions/cavi/registry/session-keys.js +68 -0
  406. package/dist/extensions/cavi/registry/team-registry-config.d.ts +6 -0
  407. package/dist/extensions/cavi/registry/team-registry-config.d.ts.map +1 -0
  408. package/dist/extensions/cavi/registry/team-registry-config.js +23 -0
  409. package/dist/extensions/cavi/registry/team-registry.d.ts +49 -0
  410. package/dist/extensions/cavi/registry/team-registry.d.ts.map +1 -0
  411. package/dist/extensions/cavi/registry/team-registry.js +290 -0
  412. package/dist/extensions/cavi/runtime/env-config.d.ts +35 -0
  413. package/dist/extensions/cavi/runtime/env-config.d.ts.map +1 -0
  414. package/dist/extensions/cavi/runtime/env-config.js +74 -0
  415. package/dist/extensions/cavi/runtime/paths.d.ts +11 -0
  416. package/dist/extensions/cavi/runtime/paths.d.ts.map +1 -0
  417. package/dist/extensions/cavi/runtime/paths.js +43 -0
  418. package/dist/extensions/cavi/runtime/standalone-mode.d.ts +3 -0
  419. package/dist/extensions/cavi/runtime/standalone-mode.d.ts.map +1 -0
  420. package/dist/extensions/cavi/runtime/standalone-mode.js +15 -0
  421. package/dist/index.d.ts +70 -0
  422. package/dist/index.d.ts.map +1 -0
  423. package/dist/index.js +75 -0
  424. package/dist/providers/hermes/agent-config.d.ts +36 -0
  425. package/dist/providers/hermes/agent-config.d.ts.map +1 -0
  426. package/dist/providers/hermes/agent-config.js +242 -0
  427. package/dist/providers/hermes/chat-run.d.ts +106 -0
  428. package/dist/providers/hermes/chat-run.d.ts.map +1 -0
  429. package/dist/providers/hermes/chat-run.js +221 -0
  430. package/dist/providers/hermes/client.d.ts +13 -0
  431. package/dist/providers/hermes/client.d.ts.map +1 -0
  432. package/dist/providers/hermes/client.js +6 -0
  433. package/dist/providers/hermes/env-config.d.ts +18 -0
  434. package/dist/providers/hermes/env-config.d.ts.map +1 -0
  435. package/dist/providers/hermes/env-config.js +38 -0
  436. package/dist/providers/hermes/index.d.ts +12 -0
  437. package/dist/providers/hermes/index.d.ts.map +1 -0
  438. package/dist/providers/hermes/index.js +11 -0
  439. package/dist/providers/hermes/media.d.ts +6 -0
  440. package/dist/providers/hermes/media.d.ts.map +1 -0
  441. package/dist/providers/hermes/media.js +10 -0
  442. package/dist/providers/hermes/provider-module.d.ts +3 -0
  443. package/dist/providers/hermes/provider-module.d.ts.map +1 -0
  444. package/dist/providers/hermes/provider-module.js +22 -0
  445. package/dist/providers/hermes/sse-run-event-provider.d.ts +24 -0
  446. package/dist/providers/hermes/sse-run-event-provider.d.ts.map +1 -0
  447. package/dist/providers/hermes/sse-run-event-provider.js +32 -0
  448. package/dist/providers/hermes/team-registry-config.d.ts +3 -0
  449. package/dist/providers/hermes/team-registry-config.d.ts.map +1 -0
  450. package/dist/providers/hermes/team-registry-config.js +1 -0
  451. package/dist/providers/hermes/team-registry.d.ts +3 -0
  452. package/dist/providers/hermes/team-registry.d.ts.map +1 -0
  453. package/dist/providers/hermes/team-registry.js +5 -0
  454. package/dist/providers/hermes/websocket.d.ts +6 -0
  455. package/dist/providers/hermes/websocket.d.ts.map +1 -0
  456. package/dist/providers/hermes/websocket.js +6 -0
  457. package/dist/providers/hermes/wiki.d.ts +6 -0
  458. package/dist/providers/hermes/wiki.d.ts.map +1 -0
  459. package/dist/providers/hermes/wiki.js +10 -0
  460. package/dist/providers/openclaw/agent-config.d.ts +6 -0
  461. package/dist/providers/openclaw/agent-config.d.ts.map +1 -0
  462. package/dist/providers/openclaw/agent-config.js +10 -0
  463. package/dist/providers/openclaw/client.d.ts +13 -0
  464. package/dist/providers/openclaw/client.d.ts.map +1 -0
  465. package/dist/providers/openclaw/client.js +6 -0
  466. package/dist/providers/openclaw/index.d.ts +10 -0
  467. package/dist/providers/openclaw/index.d.ts.map +1 -0
  468. package/dist/providers/openclaw/index.js +9 -0
  469. package/dist/providers/openclaw/media.d.ts +6 -0
  470. package/dist/providers/openclaw/media.d.ts.map +1 -0
  471. package/dist/providers/openclaw/media.js +10 -0
  472. package/dist/providers/openclaw/provider-module.d.ts +3 -0
  473. package/dist/providers/openclaw/provider-module.d.ts.map +1 -0
  474. package/dist/providers/openclaw/provider-module.js +16 -0
  475. package/dist/providers/openclaw/sse-run-event-provider.d.ts +6 -0
  476. package/dist/providers/openclaw/sse-run-event-provider.d.ts.map +1 -0
  477. package/dist/providers/openclaw/sse-run-event-provider.js +10 -0
  478. package/dist/providers/openclaw/team-registry-config.d.ts +3 -0
  479. package/dist/providers/openclaw/team-registry-config.d.ts.map +1 -0
  480. package/dist/providers/openclaw/team-registry-config.js +1 -0
  481. package/dist/providers/openclaw/team-registry.d.ts +3 -0
  482. package/dist/providers/openclaw/team-registry.d.ts.map +1 -0
  483. package/dist/providers/openclaw/team-registry.js +5 -0
  484. package/dist/providers/openclaw/websocket.d.ts +6 -0
  485. package/dist/providers/openclaw/websocket.d.ts.map +1 -0
  486. package/dist/providers/openclaw/websocket.js +28 -0
  487. package/dist/providers/openclaw/wiki.d.ts +6 -0
  488. package/dist/providers/openclaw/wiki.d.ts.map +1 -0
  489. package/dist/providers/openclaw/wiki.js +10 -0
  490. package/dist/react/gateway-provider.d.ts +142 -0
  491. package/dist/react/gateway-provider.d.ts.map +1 -0
  492. package/dist/react/gateway-provider.js +569 -0
  493. package/dist/react/index.d.ts +2 -0
  494. package/dist/react/index.d.ts.map +1 -0
  495. package/dist/react/index.js +1 -0
  496. package/docs/assets/api-client-hero.svg +73 -0
  497. package/docs/cavi-team-manifest.example.ts +219 -0
  498. package/docs/team-manifest.consumer.template.ts +248 -0
  499. package/docs/team-manifest.md +252 -0
  500. package/package.json +152 -0
  501. package/src/contracts/index.ts +4 -0
  502. package/src/contracts/paths.ts +126 -0
  503. package/src/contracts/resolve.ts +42 -0
  504. package/src/contracts/surfaces.ts +366 -0
  505. package/src/contracts/team-manifest.ts +1402 -0
  506. package/src/core/data/guards.ts +26 -0
  507. package/src/core/data/index.ts +1 -0
  508. package/src/core/env/config.ts +97 -0
  509. package/src/core/env/index.ts +2 -0
  510. package/src/core/env/repo-root.ts +59 -0
  511. package/src/core/gateway/README.md +35 -0
  512. package/src/core/gateway/agent/commands.ts +482 -0
  513. package/src/core/gateway/agent/config.ts +786 -0
  514. package/src/core/gateway/agent/index.ts +3 -0
  515. package/src/core/gateway/agent/voice-config.ts +91 -0
  516. package/src/core/gateway/client/capabilities.ts +385 -0
  517. package/src/core/gateway/client/client.ts +137 -0
  518. package/src/core/gateway/client/error-details.ts +74 -0
  519. package/src/core/gateway/client/fetch.ts +180 -0
  520. package/src/core/gateway/client/index.ts +5 -0
  521. package/src/core/gateway/client/runtime-targets.ts +132 -0
  522. package/src/core/gateway/envelope/envelope.ts +204 -0
  523. package/src/core/gateway/envelope/index.ts +2 -0
  524. package/src/core/gateway/envelope/types.ts +48 -0
  525. package/src/core/gateway/index.ts +10 -0
  526. package/src/core/gateway/jobs.ts +178 -0
  527. package/src/core/gateway/portal/config-patch.ts +136 -0
  528. package/src/core/gateway/portal/index.ts +1 -0
  529. package/src/core/gateway/providers/factory.ts +77 -0
  530. package/src/core/gateway/providers/index.ts +4 -0
  531. package/src/core/gateway/providers/normalize.ts +7 -0
  532. package/src/core/gateway/providers/registry.ts +96 -0
  533. package/src/core/gateway/providers/types.ts +73 -0
  534. package/src/core/gateway/resources/index.ts +2 -0
  535. package/src/core/gateway/resources/media.ts +474 -0
  536. package/src/core/gateway/resources/wiki.ts +301 -0
  537. package/src/core/gateway/rpc/client.ts +1067 -0
  538. package/src/core/gateway/rpc/device-crypto.ts +101 -0
  539. package/src/core/gateway/rpc/device-store.ts +147 -0
  540. package/src/core/gateway/rpc/error.ts +11 -0
  541. package/src/core/gateway/rpc/index.ts +5 -0
  542. package/src/core/gateway/rpc/preauth-handshake.ts +99 -0
  543. package/src/core/gateway/run/contracts.ts +155 -0
  544. package/src/core/gateway/run/event-stream.ts +373 -0
  545. package/src/core/gateway/run/index.ts +4 -0
  546. package/src/core/gateway/run/sse-run-event-provider.ts +513 -0
  547. package/src/core/gateway/run/stream-failure.ts +135 -0
  548. package/src/core/gateway/snapshots/cache.ts +22 -0
  549. package/src/core/gateway/snapshots/contracts.ts +293 -0
  550. package/src/core/gateway/snapshots/index.ts +6 -0
  551. package/src/core/gateway/snapshots/loaders.ts +738 -0
  552. package/src/core/gateway/snapshots/session-loaders.ts +534 -0
  553. package/src/core/gateway/snapshots/system-loaders.ts +93 -0
  554. package/src/core/gateway/snapshots/transforms.ts +508 -0
  555. package/src/core/http/client-id.ts +40 -0
  556. package/src/core/http/client.ts +271 -0
  557. package/src/core/http/contracts.ts +9 -0
  558. package/src/core/http/errors.ts +26 -0
  559. package/src/core/http/gateway-error.ts +38 -0
  560. package/src/core/http/index.ts +9 -0
  561. package/src/core/http/json-client.ts +90 -0
  562. package/src/core/http/raw-client.ts +57 -0
  563. package/src/core/http/redaction.ts +78 -0
  564. package/src/core/http/types.ts +59 -0
  565. package/src/core/runtime/index.ts +1 -0
  566. package/src/core/runtime/paths.ts +44 -0
  567. package/src/core/sse/index.ts +1 -0
  568. package/src/core/sse/stream.ts +118 -0
  569. package/src/core/ws/close.ts +51 -0
  570. package/src/core/ws/gateway-websocket.ts +8 -0
  571. package/src/core/ws/index.ts +3 -0
  572. package/src/core/ws/targets.ts +74 -0
  573. package/src/extensions/README.md +16 -0
  574. package/src/extensions/cavi/adapters/cavi-control-adapters/gateway-ws-loaders.ts +33 -0
  575. package/src/extensions/cavi/adapters/cavi-control-adapters/gateway-ws-snapshot-loaders.ts +152 -0
  576. package/src/extensions/cavi/adapters/cavi-control-adapters/library-live.ts +120 -0
  577. package/src/extensions/cavi/adapters/cavi-control-adapters/operator-control-live.ts +422 -0
  578. package/src/extensions/cavi/adapters/create-cavi-control-adapters.ts +350 -0
  579. package/src/extensions/cavi/client.ts +25 -0
  580. package/src/extensions/cavi/contracts/index.ts +5 -0
  581. package/src/extensions/cavi/contracts/mobile.ts +528 -0
  582. package/src/extensions/cavi/contracts/paths.ts +242 -0
  583. package/src/extensions/cavi/contracts/portals.ts +165 -0
  584. package/src/extensions/cavi/contracts/resolve.ts +6 -0
  585. package/src/extensions/cavi/contracts/surfaces.ts +567 -0
  586. package/src/extensions/cavi/discourse/contracts.ts +9 -0
  587. package/src/extensions/cavi/discourse/fallback.ts +387 -0
  588. package/src/extensions/cavi/discourse/live.ts +36 -0
  589. package/src/extensions/cavi/discourse/normalize-helpers.ts +202 -0
  590. package/src/extensions/cavi/discourse/normalize.ts +415 -0
  591. package/src/extensions/cavi/domain/discourse.ts +209 -0
  592. package/src/extensions/cavi/domain/index.ts +5 -0
  593. package/src/extensions/cavi/domain/library.ts +96 -0
  594. package/src/extensions/cavi/domain/observability.ts +36 -0
  595. package/src/extensions/cavi/domain/operator.ts +486 -0
  596. package/src/extensions/cavi/domain/project-board.ts +107 -0
  597. package/src/extensions/cavi/fallbacks/provider.ts +57 -0
  598. package/src/extensions/cavi/fallbacks/snapshots/agent-memory.ts +8 -0
  599. package/src/extensions/cavi/fallbacks/snapshots/cost-history.ts +101 -0
  600. package/src/extensions/cavi/fallbacks/snapshots/incidents.ts +56 -0
  601. package/src/extensions/cavi/fallbacks/snapshots/index.ts +9 -0
  602. package/src/extensions/cavi/fallbacks/snapshots/library.ts +112 -0
  603. package/src/extensions/cavi/fallbacks/snapshots/operator-control/defaults.ts +57 -0
  604. package/src/extensions/cavi/fallbacks/snapshots/operator-control/index.ts +3 -0
  605. package/src/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-memory.ts +65 -0
  606. package/src/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-registry-detail.ts +735 -0
  607. package/src/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-section-status.ts +41 -0
  608. package/src/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-status.ts +87 -0
  609. package/src/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-tasks.ts +113 -0
  610. package/src/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-worker-ready.ts +19 -0
  611. package/src/extensions/cavi/fallbacks/snapshots/operator-control/snapshot-worker-tasks.ts +46 -0
  612. package/src/extensions/cavi/fallbacks/snapshots/operator-control/snapshot.ts +18 -0
  613. package/src/extensions/cavi/fallbacks/snapshots/operator-control/transports.ts +81 -0
  614. package/src/extensions/cavi/fallbacks/snapshots/overview.ts +42 -0
  615. package/src/extensions/cavi/fallbacks/snapshots/routing.ts +38 -0
  616. package/src/extensions/cavi/fallbacks/snapshots/runs.ts +141 -0
  617. package/src/extensions/cavi/fallbacks/snapshots/shared.ts +1 -0
  618. package/src/extensions/cavi/index.ts +52 -0
  619. package/src/extensions/cavi/library/api.ts +120 -0
  620. package/src/extensions/cavi/library/client.ts +54 -0
  621. package/src/extensions/cavi/library/clip.ts +389 -0
  622. package/src/extensions/cavi/operator-control/constants.ts +3 -0
  623. package/src/extensions/cavi/operator-control/defaults.ts +254 -0
  624. package/src/extensions/cavi/operator-control/load-section.ts +92 -0
  625. package/src/extensions/cavi/portal/client.ts +63 -0
  626. package/src/extensions/cavi/portal/tts.ts +213 -0
  627. package/src/extensions/cavi/project-board/constants.ts +84 -0
  628. package/src/extensions/cavi/project-board/fallback.ts +129 -0
  629. package/src/extensions/cavi/project-board/live.ts +121 -0
  630. package/src/extensions/cavi/project-board/mutations.ts +306 -0
  631. package/src/extensions/cavi/project-board/normalize.ts +552 -0
  632. package/src/extensions/cavi/project-board/trace-id.ts +9 -0
  633. package/src/extensions/cavi/registry/canonical-team-registry.ts +193 -0
  634. package/src/extensions/cavi/registry/portal-library-registry.ts +24 -0
  635. package/src/extensions/cavi/registry/session-keys.ts +92 -0
  636. package/src/extensions/cavi/registry/team-registry-config.ts +36 -0
  637. package/src/extensions/cavi/registry/team-registry.ts +414 -0
  638. package/src/extensions/cavi/runtime/env-config.ts +114 -0
  639. package/src/extensions/cavi/runtime/paths.ts +82 -0
  640. package/src/extensions/cavi/runtime/standalone-mode.ts +28 -0
  641. package/src/index.ts +576 -0
  642. package/src/providers/hermes/agent-config.ts +322 -0
  643. package/src/providers/hermes/chat-run.ts +340 -0
  644. package/src/providers/hermes/client.ts +21 -0
  645. package/src/providers/hermes/env-config.ts +58 -0
  646. package/src/providers/hermes/index.ts +11 -0
  647. package/src/providers/hermes/media.ts +12 -0
  648. package/src/providers/hermes/provider-module.ts +26 -0
  649. package/src/providers/hermes/sse-run-event-provider.ts +47 -0
  650. package/src/providers/hermes/team-registry-config.ts +2 -0
  651. package/src/providers/hermes/team-registry.ts +12 -0
  652. package/src/providers/hermes/websocket.ts +16 -0
  653. package/src/providers/hermes/wiki.ts +12 -0
  654. package/src/providers/openclaw/agent-config.ts +12 -0
  655. package/src/providers/openclaw/client.ts +21 -0
  656. package/src/providers/openclaw/index.ts +9 -0
  657. package/src/providers/openclaw/media.ts +12 -0
  658. package/src/providers/openclaw/provider-module.ts +20 -0
  659. package/src/providers/openclaw/sse-run-event-provider.ts +16 -0
  660. package/src/providers/openclaw/team-registry-config.ts +2 -0
  661. package/src/providers/openclaw/team-registry.ts +12 -0
  662. package/src/providers/openclaw/websocket.ts +56 -0
  663. package/src/providers/openclaw/wiki.ts +12 -0
  664. package/src/react/gateway-provider.tsx +835 -0
  665. package/src/react/index.ts +1 -0
@@ -0,0 +1,951 @@
1
+ export const TEAM_MANIFEST_VERSION = 1;
2
+ export const DEFAULT_TEAM_ID = "default";
3
+ export const DEFAULT_TEAM_MEMBER_ID = "default-agent";
4
+ export const DEFAULT_TEAM_ROUTE_KEYS = ["kanban", "runs", "config", "workspace"];
5
+ export const TEAM_ACTION_INPUT_MODES = ["command", "json", "text"];
6
+ export const TEAM_ACTION_OUTPUT_MODES = [
7
+ "artifact",
8
+ "json",
9
+ "markdown",
10
+ "text",
11
+ ];
12
+ function nonEmpty(value) {
13
+ const trimmed = value?.trim();
14
+ return trimmed ? trimmed : null;
15
+ }
16
+ function requiredText(value, label) {
17
+ const trimmed = nonEmpty(value);
18
+ if (!trimmed) {
19
+ throw new Error(`team manifest: missing ${label}`);
20
+ }
21
+ return trimmed;
22
+ }
23
+ function decodePathSegment(segment) {
24
+ try {
25
+ return decodeURIComponent(segment);
26
+ }
27
+ catch {
28
+ return segment;
29
+ }
30
+ }
31
+ function uniqueStrings(values) {
32
+ const seen = new Set();
33
+ const result = [];
34
+ for (const value of values ?? []) {
35
+ const trimmed = nonEmpty(value);
36
+ if (!trimmed || seen.has(trimmed)) {
37
+ continue;
38
+ }
39
+ seen.add(trimmed);
40
+ result.push(trimmed);
41
+ }
42
+ return result;
43
+ }
44
+ function hasOwn(value, key) {
45
+ return Object.prototype.hasOwnProperty.call(value, key);
46
+ }
47
+ function normalizeActionInputMode(value) {
48
+ const mode = nonEmpty(value);
49
+ if (!mode) {
50
+ return null;
51
+ }
52
+ if (!TEAM_ACTION_INPUT_MODES.includes(mode)) {
53
+ throw new Error(`team manifest: invalid action input mode "${mode}"`);
54
+ }
55
+ return mode;
56
+ }
57
+ function normalizeActionOutputMode(value) {
58
+ const mode = nonEmpty(value);
59
+ if (!mode) {
60
+ return null;
61
+ }
62
+ if (!TEAM_ACTION_OUTPUT_MODES.includes(mode)) {
63
+ throw new Error(`team manifest: invalid action output mode "${mode}"`);
64
+ }
65
+ return mode;
66
+ }
67
+ function normalizeActionParamType(value) {
68
+ const type = nonEmpty(value);
69
+ if (!type) {
70
+ return null;
71
+ }
72
+ switch (type) {
73
+ case "boolean":
74
+ case "enum":
75
+ case "file":
76
+ case "json":
77
+ case "number":
78
+ case "string":
79
+ return type;
80
+ default:
81
+ throw new Error(`team manifest: invalid action param type "${type}"`);
82
+ }
83
+ }
84
+ function normalizeActionHttpMethod(value) {
85
+ const method = nonEmpty(value)?.toUpperCase();
86
+ if (!method) {
87
+ return null;
88
+ }
89
+ switch (method) {
90
+ case "DELETE":
91
+ case "GET":
92
+ case "PATCH":
93
+ case "POST":
94
+ case "PUT":
95
+ return method;
96
+ default:
97
+ throw new Error(`team manifest: invalid action route method "${method}"`);
98
+ }
99
+ }
100
+ function normalizeActionDefaults(defaults) {
101
+ if (!defaults) {
102
+ return null;
103
+ }
104
+ const normalized = {};
105
+ for (const [key, value] of Object.entries(defaults)) {
106
+ const normalizedKey = nonEmpty(key);
107
+ if (normalizedKey) {
108
+ normalized[normalizedKey] = value;
109
+ }
110
+ }
111
+ return Object.keys(normalized).length ? normalized : null;
112
+ }
113
+ function normalizeActionParamContract(param) {
114
+ return {
115
+ key: requiredText(param.key, "action param key"),
116
+ ...(normalizeActionParamType(param.type)
117
+ ? { type: normalizeActionParamType(param.type) }
118
+ : {}),
119
+ ...(param.required !== undefined && param.required !== null
120
+ ? { required: Boolean(param.required) }
121
+ : {}),
122
+ ...(hasOwn(param, "default") ? { default: param.default } : {}),
123
+ values: uniqueStrings(param.values),
124
+ aliases: uniqueStrings(param.aliases),
125
+ ...(nonEmpty(param.description)
126
+ ? { description: nonEmpty(param.description) }
127
+ : {}),
128
+ ...(param.metadata ? { metadata: param.metadata } : {}),
129
+ };
130
+ }
131
+ function normalizeActionParams(params) {
132
+ const seen = new Set();
133
+ const normalized = [];
134
+ for (const param of params ?? []) {
135
+ const entry = normalizeActionParamContract(param);
136
+ if (seen.has(entry.key)) {
137
+ throw new Error(`team manifest: duplicate action param "${entry.key}"`);
138
+ }
139
+ seen.add(entry.key);
140
+ normalized.push(entry);
141
+ }
142
+ return normalized;
143
+ }
144
+ function normalizeActionInputContract(input) {
145
+ if (!input) {
146
+ return null;
147
+ }
148
+ return {
149
+ ...(normalizeActionInputMode(input.mode)
150
+ ? { mode: normalizeActionInputMode(input.mode) }
151
+ : {}),
152
+ ...(nonEmpty(input.command) ? { command: nonEmpty(input.command) } : {}),
153
+ params: normalizeActionParams(input.params),
154
+ ...(input.schema ? { schema: input.schema } : {}),
155
+ examples: uniqueStrings(input.examples),
156
+ ...(input.metadata ? { metadata: input.metadata } : {}),
157
+ };
158
+ }
159
+ function normalizeActionArtifactContract(artifact) {
160
+ return {
161
+ key: requiredText(artifact.key, "action artifact key"),
162
+ ...(nonEmpty(artifact.contentType)
163
+ ? { contentType: nonEmpty(artifact.contentType) }
164
+ : {}),
165
+ ...(nonEmpty(artifact.path) ? { path: nonEmpty(artifact.path) } : {}),
166
+ ...(nonEmpty(artifact.description)
167
+ ? { description: nonEmpty(artifact.description) }
168
+ : {}),
169
+ ...(artifact.metadata ? { metadata: artifact.metadata } : {}),
170
+ };
171
+ }
172
+ function normalizeActionArtifacts(artifacts) {
173
+ const seen = new Set();
174
+ const normalized = [];
175
+ for (const artifact of artifacts ?? []) {
176
+ const entry = normalizeActionArtifactContract(artifact);
177
+ if (seen.has(entry.key)) {
178
+ throw new Error(`team manifest: duplicate action artifact "${entry.key}"`);
179
+ }
180
+ seen.add(entry.key);
181
+ normalized.push(entry);
182
+ }
183
+ return normalized;
184
+ }
185
+ function normalizeActionOutputContract(output) {
186
+ if (!output) {
187
+ return null;
188
+ }
189
+ return {
190
+ ...(normalizeActionOutputMode(output.mode)
191
+ ? { mode: normalizeActionOutputMode(output.mode) }
192
+ : {}),
193
+ ...(nonEmpty(output.contentType)
194
+ ? { contentType: nonEmpty(output.contentType) }
195
+ : {}),
196
+ ...(output.schema ? { schema: output.schema } : {}),
197
+ artifacts: normalizeActionArtifacts(output.artifacts),
198
+ ...(output.metadata ? { metadata: output.metadata } : {}),
199
+ };
200
+ }
201
+ function normalizeActionRouteContract(route) {
202
+ if (!route) {
203
+ return null;
204
+ }
205
+ const path = nonEmpty(route.path);
206
+ return {
207
+ ...(normalizeActionHttpMethod(route.method)
208
+ ? { method: normalizeActionHttpMethod(route.method) }
209
+ : {}),
210
+ ...(nonEmpty(route.surfaceKey) ? { surfaceKey: nonEmpty(route.surfaceKey) } : {}),
211
+ ...(path ? { path: normalizeAbsoluteApiPath(path, "action route path") } : {}),
212
+ ...(route.metadata ? { metadata: route.metadata } : {}),
213
+ };
214
+ }
215
+ function normalizeTeamActionContract(action) {
216
+ const defaults = normalizeActionDefaults(action.defaults);
217
+ return {
218
+ id: requiredText(action.id, "action id"),
219
+ ...(nonEmpty(action.title) ? { title: nonEmpty(action.title) } : {}),
220
+ ...(nonEmpty(action.description)
221
+ ? { description: nonEmpty(action.description) }
222
+ : {}),
223
+ ...(action.enabled !== undefined && action.enabled !== null
224
+ ? { enabled: Boolean(action.enabled) }
225
+ : {}),
226
+ ...(action.route ? { route: normalizeActionRouteContract(action.route) } : {}),
227
+ ...(action.input ? { input: normalizeActionInputContract(action.input) } : {}),
228
+ ...(action.output ? { output: normalizeActionOutputContract(action.output) } : {}),
229
+ ...(defaults ? { defaults } : {}),
230
+ capabilities: uniqueStrings(action.capabilities),
231
+ ...(action.metadata ? { metadata: action.metadata } : {}),
232
+ };
233
+ }
234
+ function normalizeTeamActionContracts(actions) {
235
+ const seen = new Set();
236
+ const normalized = [];
237
+ for (const action of actions ?? []) {
238
+ const entry = normalizeTeamActionContract(action);
239
+ if (seen.has(entry.id)) {
240
+ throw new Error(`team manifest: duplicate action "${entry.id}"`);
241
+ }
242
+ seen.add(entry.id);
243
+ normalized.push(entry);
244
+ }
245
+ return normalized;
246
+ }
247
+ function pathSegment(value, label) {
248
+ const segment = requiredText(value, label);
249
+ const decoded = decodePathSegment(segment);
250
+ if (segment === "." ||
251
+ segment === ".." ||
252
+ decoded === "." ||
253
+ decoded === ".." ||
254
+ /[/?#\\]/u.test(segment) ||
255
+ /[/?#\\]/u.test(decoded)) {
256
+ throw new Error(`team manifest: invalid ${label}: ${segment}`);
257
+ }
258
+ return encodeURIComponent(segment);
259
+ }
260
+ function normalizeRelativePath(value) {
261
+ const trimmed = nonEmpty(value);
262
+ if (!trimmed) {
263
+ throw new Error("team manifest: missing workspace path");
264
+ }
265
+ if (/^[a-z][a-z0-9+.-]*:/iu.test(trimmed) ||
266
+ trimmed.startsWith("/") ||
267
+ trimmed.includes("\\")) {
268
+ throw new Error(`team manifest: workspace path must be relative: ${trimmed}`);
269
+ }
270
+ const segments = trimmed
271
+ .split("/")
272
+ .map((segment) => segment.trim())
273
+ .filter(Boolean);
274
+ if (segments.length === 0 ||
275
+ segments.some((segment) => {
276
+ const decoded = decodePathSegment(segment);
277
+ return (segment === "." ||
278
+ segment === ".." ||
279
+ decoded === "." ||
280
+ decoded === ".." ||
281
+ decoded.includes("/") ||
282
+ decoded.includes("\\"));
283
+ })) {
284
+ throw new Error(`team manifest: invalid workspace path: ${trimmed}`);
285
+ }
286
+ return segments.join("/");
287
+ }
288
+ function normalizeAbsoluteApiPath(value, label) {
289
+ const trimmed = requiredText(value, label);
290
+ if (!trimmed.startsWith("/") ||
291
+ trimmed.startsWith("//") ||
292
+ /^[a-z][a-z0-9+.-]*:/iu.test(trimmed) ||
293
+ /[\\?#]/u.test(trimmed)) {
294
+ throw new Error(`team manifest: invalid ${label}: ${trimmed}`);
295
+ }
296
+ const segments = trimmed
297
+ .split("/")
298
+ .map((segment) => segment.trim())
299
+ .filter(Boolean);
300
+ if (segments.length === 0) {
301
+ throw new Error(`team manifest: invalid ${label}: ${trimmed}`);
302
+ }
303
+ for (const segment of segments) {
304
+ const decoded = decodePathSegment(segment);
305
+ if (segment === "." ||
306
+ segment === ".." ||
307
+ decoded === "." ||
308
+ decoded === ".." ||
309
+ decoded.includes("/") ||
310
+ decoded.includes("\\")) {
311
+ throw new Error(`team manifest: invalid ${label}: ${trimmed}`);
312
+ }
313
+ }
314
+ return `/${segments.join("/")}`;
315
+ }
316
+ function normalizeRootPath(value) {
317
+ const trimmed = nonEmpty(value);
318
+ if (!trimmed) {
319
+ throw new Error("team manifest: missing workspace rootPath");
320
+ }
321
+ return normalizeAbsoluteApiPath(trimmed, "workspace rootPath");
322
+ }
323
+ function joinUrlPath(segments) {
324
+ return `/${segments.map((segment) => pathSegment(segment, "path segment")).join("/")}`;
325
+ }
326
+ function workspacePathSegments(value) {
327
+ return normalizeRelativePath(requiredText(value, "workspace path")).split("/");
328
+ }
329
+ function joinWorkspacePath(rootPath, relativePath) {
330
+ return `${normalizeRootPath(rootPath)}/${normalizeRelativePath(relativePath)}`;
331
+ }
332
+ function normalizeWorkspacePathEntry(entry) {
333
+ if (typeof entry === "string") {
334
+ const path = normalizeRelativePath(entry);
335
+ return { key: path, path };
336
+ }
337
+ const key = nonEmpty(entry.key);
338
+ if (!key) {
339
+ throw new Error("team manifest: missing workspace path key");
340
+ }
341
+ return {
342
+ key,
343
+ path: normalizeRelativePath(entry.path ?? key),
344
+ };
345
+ }
346
+ function normalizeWorkspaceConfig(workspace) {
347
+ if (!workspace) {
348
+ return null;
349
+ }
350
+ return {
351
+ rootPath: normalizeRootPath(workspace.rootPath),
352
+ paths: (workspace.paths ?? []).map(normalizeWorkspacePathEntry),
353
+ };
354
+ }
355
+ function normalizeIdentity(identity) {
356
+ if (!identity) {
357
+ return null;
358
+ }
359
+ return {
360
+ ...(nonEmpty(identity.name) ? { name: nonEmpty(identity.name) } : {}),
361
+ ...(nonEmpty(identity.displayName)
362
+ ? { displayName: nonEmpty(identity.displayName) }
363
+ : {}),
364
+ ...(nonEmpty(identity.slug) ? { slug: nonEmpty(identity.slug) } : {}),
365
+ ...(nonEmpty(identity.code) ? { code: nonEmpty(identity.code) } : {}),
366
+ ...(nonEmpty(identity.sectorSlug)
367
+ ? { sectorSlug: nonEmpty(identity.sectorSlug) }
368
+ : {}),
369
+ ...(nonEmpty(identity.sectorCode)
370
+ ? { sectorCode: nonEmpty(identity.sectorCode) }
371
+ : {}),
372
+ ...(nonEmpty(identity.portalId) ? { portalId: nonEmpty(identity.portalId) } : {}),
373
+ aliases: uniqueStrings(identity.aliases),
374
+ };
375
+ }
376
+ function normalizeMember(member) {
377
+ return {
378
+ id: requiredText(member.id, "member id"),
379
+ ...(member.identity ? { identity: normalizeIdentity(member.identity) } : {}),
380
+ ...(member.workspace
381
+ ? { workspace: normalizeWorkspaceConfig(member.workspace) }
382
+ : {}),
383
+ actions: normalizeTeamActionContracts(member.actions),
384
+ capabilities: uniqueStrings(member.capabilities),
385
+ ...(member.metadata ? { metadata: member.metadata } : {}),
386
+ };
387
+ }
388
+ function normalizeMembers(members) {
389
+ const seen = new Set();
390
+ const normalized = [];
391
+ for (const member of members ?? []) {
392
+ const entry = normalizeMember(member);
393
+ if (seen.has(entry.id)) {
394
+ throw new Error(`team manifest: duplicate member "${entry.id}"`);
395
+ }
396
+ seen.add(entry.id);
397
+ normalized.push(entry);
398
+ }
399
+ return normalized;
400
+ }
401
+ function normalizeTeamRoutes(routes) {
402
+ const seen = new Set();
403
+ const normalized = [];
404
+ for (const route of routes ?? []) {
405
+ const key = requiredText(route.key, "route key");
406
+ const routePath = nonEmpty(route.path);
407
+ if (seen.has(key)) {
408
+ throw new Error(`team manifest: duplicate route "${key}"`);
409
+ }
410
+ seen.add(key);
411
+ normalized.push({
412
+ key,
413
+ ...(routePath
414
+ ? { path: normalizeAbsoluteApiPath(routePath, "route path") }
415
+ : {}),
416
+ });
417
+ }
418
+ return normalized;
419
+ }
420
+ function normalizeTeam(team) {
421
+ return {
422
+ id: requiredText(team.id, "team id"),
423
+ ...(team.identity ? { identity: normalizeIdentity(team.identity) } : {}),
424
+ members: normalizeMembers(team.members),
425
+ ...(team.workspace ? { workspace: normalizeWorkspaceConfig(team.workspace) } : {}),
426
+ actions: normalizeTeamActionContracts(team.actions),
427
+ capabilities: uniqueStrings(team.capabilities),
428
+ routes: normalizeTeamRoutes(team.routes),
429
+ ...(team.metadata ? { metadata: team.metadata } : {}),
430
+ };
431
+ }
432
+ function normalizeTeams(teams) {
433
+ const seen = new Set();
434
+ const normalized = [];
435
+ for (const team of teams ?? []) {
436
+ const entry = normalizeTeam(team);
437
+ if (seen.has(entry.id)) {
438
+ throw new Error(`team manifest: duplicate team "${entry.id}"`);
439
+ }
440
+ seen.add(entry.id);
441
+ normalized.push(entry);
442
+ }
443
+ return normalized;
444
+ }
445
+ function normalizeGatewayRouteBinding(binding) {
446
+ return {
447
+ id: requiredText(binding.id, "gateway route binding id"),
448
+ teamId: requiredText(binding.teamId, "gateway route binding teamId"),
449
+ ...(nonEmpty(binding.memberId) ? { memberId: nonEmpty(binding.memberId) } : {}),
450
+ ...(nonEmpty(binding.source) ? { source: nonEmpty(binding.source) } : {}),
451
+ ...(nonEmpty(binding.channel) ? { channel: nonEmpty(binding.channel) } : {}),
452
+ ...(nonEmpty(binding.actionId) ? { actionId: nonEmpty(binding.actionId) } : {}),
453
+ ...(nonEmpty(binding.routeKey)
454
+ ? { routeKey: nonEmpty(binding.routeKey) }
455
+ : {}),
456
+ ...(nonEmpty(binding.sessionKeyPattern)
457
+ ? { sessionKeyPattern: nonEmpty(binding.sessionKeyPattern) }
458
+ : {}),
459
+ ...(binding.metadata ? { metadata: binding.metadata } : {}),
460
+ };
461
+ }
462
+ function normalizeGatewayRouteBindings(bindings) {
463
+ const seen = new Set();
464
+ const normalized = [];
465
+ for (const binding of bindings ?? []) {
466
+ const entry = normalizeGatewayRouteBinding(binding);
467
+ if (seen.has(entry.id)) {
468
+ throw new Error(`team manifest: duplicate gateway route binding "${entry.id}"`);
469
+ }
470
+ seen.add(entry.id);
471
+ normalized.push(entry);
472
+ }
473
+ return normalized;
474
+ }
475
+ function findWorkspacePath(workspace, keyOrPath) {
476
+ const requested = normalizeRelativePath(keyOrPath);
477
+ for (const entry of workspace.paths ?? []) {
478
+ const normalized = normalizeWorkspacePathEntry(entry);
479
+ if (normalized.key === keyOrPath || normalized.path === requested) {
480
+ return normalized;
481
+ }
482
+ }
483
+ return null;
484
+ }
485
+ export function createDefaultTeamManifest(options = {}) {
486
+ const teamId = nonEmpty(options.teamId) ?? DEFAULT_TEAM_ID;
487
+ const memberId = nonEmpty(options.memberId) ?? DEFAULT_TEAM_MEMBER_ID;
488
+ const workspace = options.workspaceRootPath !== undefined && options.workspaceRootPath !== null
489
+ ? {
490
+ rootPath: options.workspaceRootPath,
491
+ paths: options.workspacePaths ?? [],
492
+ }
493
+ : null;
494
+ return normalizeTeamManifest({
495
+ version: TEAM_MANIFEST_VERSION,
496
+ teams: [
497
+ {
498
+ id: teamId,
499
+ identity: {
500
+ name: teamId,
501
+ displayName: teamId,
502
+ slug: teamId,
503
+ code: teamId,
504
+ },
505
+ members: [
506
+ {
507
+ id: memberId,
508
+ ...(workspace ? { workspace } : {}),
509
+ },
510
+ ],
511
+ ...(workspace ? { workspace } : {}),
512
+ },
513
+ ],
514
+ });
515
+ }
516
+ export function normalizeTeamManifest(manifest) {
517
+ if (!manifest?.teams?.length) {
518
+ return createDefaultTeamManifest();
519
+ }
520
+ return {
521
+ version: TEAM_MANIFEST_VERSION,
522
+ actions: normalizeTeamActionContracts(manifest.actions),
523
+ bindings: normalizeGatewayRouteBindings(manifest.bindings),
524
+ teams: normalizeTeams(manifest.teams),
525
+ };
526
+ }
527
+ export function findTeamManifestTeam(manifest, teamId) {
528
+ const normalized = nonEmpty(teamId);
529
+ if (!normalized) {
530
+ return null;
531
+ }
532
+ return manifest.teams.find((team) => team.id === normalized) ?? null;
533
+ }
534
+ export function findTeamManifestMember(team, memberId) {
535
+ const normalized = nonEmpty(memberId);
536
+ if (!normalized) {
537
+ return null;
538
+ }
539
+ return team.members?.find((member) => member.id === normalized) ?? null;
540
+ }
541
+ export function findTeamActionContract(actions, actionId) {
542
+ const normalized = nonEmpty(actionId);
543
+ if (!normalized) {
544
+ return null;
545
+ }
546
+ return actions?.find((action) => action.id === normalized) ?? null;
547
+ }
548
+ function mergeRecords(base, override) {
549
+ const merged = {};
550
+ Object.assign(merged, base ?? {}, override ?? {});
551
+ return Object.keys(merged).length ? merged : null;
552
+ }
553
+ function mergeActionParamContract(base, override) {
554
+ const metadata = mergeRecords(base.metadata, override.metadata);
555
+ const required = override.required !== undefined && override.required !== null
556
+ ? override.required
557
+ : base.required;
558
+ return {
559
+ key: base.key,
560
+ ...(override.type ?? base.type ? { type: override.type ?? base.type } : {}),
561
+ ...(required !== undefined && required !== null
562
+ ? { required }
563
+ : {}),
564
+ ...(hasOwn(override, "default")
565
+ ? { default: override.default }
566
+ : hasOwn(base, "default")
567
+ ? { default: base.default }
568
+ : {}),
569
+ values: uniqueStrings([...(base.values ?? []), ...(override.values ?? [])]),
570
+ aliases: uniqueStrings([...(base.aliases ?? []), ...(override.aliases ?? [])]),
571
+ ...(override.description ?? base.description
572
+ ? { description: override.description ?? base.description }
573
+ : {}),
574
+ ...(metadata ? { metadata } : {}),
575
+ };
576
+ }
577
+ function mergeActionParams(base, override) {
578
+ const merged = new Map();
579
+ for (const param of base ?? []) {
580
+ merged.set(param.key, param);
581
+ }
582
+ for (const param of override ?? []) {
583
+ const existing = merged.get(param.key);
584
+ merged.set(param.key, existing ? mergeActionParamContract(existing, param) : param);
585
+ }
586
+ return [...merged.values()];
587
+ }
588
+ function mergeActionInputContract(base, override) {
589
+ if (!base && !override) {
590
+ return null;
591
+ }
592
+ const metadata = mergeRecords(base?.metadata, override?.metadata);
593
+ return {
594
+ ...(override?.mode ?? base?.mode ? { mode: override?.mode ?? base?.mode } : {}),
595
+ ...(override?.command ?? base?.command
596
+ ? { command: override?.command ?? base?.command }
597
+ : {}),
598
+ params: mergeActionParams(base?.params, override?.params),
599
+ ...(override?.schema ?? base?.schema ? { schema: override?.schema ?? base?.schema } : {}),
600
+ examples: uniqueStrings([...(base?.examples ?? []), ...(override?.examples ?? [])]),
601
+ ...(metadata ? { metadata } : {}),
602
+ };
603
+ }
604
+ function mergeActionArtifactContract(base, override) {
605
+ const metadata = mergeRecords(base.metadata, override.metadata);
606
+ return {
607
+ key: base.key,
608
+ ...(override.contentType ?? base.contentType
609
+ ? { contentType: override.contentType ?? base.contentType }
610
+ : {}),
611
+ ...(override.path ?? base.path ? { path: override.path ?? base.path } : {}),
612
+ ...(override.description ?? base.description
613
+ ? { description: override.description ?? base.description }
614
+ : {}),
615
+ ...(metadata ? { metadata } : {}),
616
+ };
617
+ }
618
+ function mergeActionArtifacts(base, override) {
619
+ const merged = new Map();
620
+ for (const artifact of base ?? []) {
621
+ merged.set(artifact.key, artifact);
622
+ }
623
+ for (const artifact of override ?? []) {
624
+ const existing = merged.get(artifact.key);
625
+ merged.set(artifact.key, existing ? mergeActionArtifactContract(existing, artifact) : artifact);
626
+ }
627
+ return [...merged.values()];
628
+ }
629
+ function mergeActionOutputContract(base, override) {
630
+ if (!base && !override) {
631
+ return null;
632
+ }
633
+ const metadata = mergeRecords(base?.metadata, override?.metadata);
634
+ return {
635
+ ...(override?.mode ?? base?.mode ? { mode: override?.mode ?? base?.mode } : {}),
636
+ ...(override?.contentType ?? base?.contentType
637
+ ? { contentType: override?.contentType ?? base?.contentType }
638
+ : {}),
639
+ ...(override?.schema ?? base?.schema ? { schema: override?.schema ?? base?.schema } : {}),
640
+ artifacts: mergeActionArtifacts(base?.artifacts, override?.artifacts),
641
+ ...(metadata ? { metadata } : {}),
642
+ };
643
+ }
644
+ function mergeActionRouteContract(base, override) {
645
+ if (!base && !override) {
646
+ return null;
647
+ }
648
+ const metadata = mergeRecords(base?.metadata, override?.metadata);
649
+ return {
650
+ ...(override?.method ?? base?.method
651
+ ? { method: override?.method ?? base?.method }
652
+ : {}),
653
+ ...(override?.surfaceKey ?? base?.surfaceKey
654
+ ? { surfaceKey: override?.surfaceKey ?? base?.surfaceKey }
655
+ : {}),
656
+ ...(override?.path ?? base?.path ? { path: override?.path ?? base?.path } : {}),
657
+ ...(metadata ? { metadata } : {}),
658
+ };
659
+ }
660
+ function mergeTeamActionContracts(base, override) {
661
+ if (base.id !== override.id) {
662
+ throw new Error(`team manifest: cannot merge action "${override.id}" into "${base.id}"`);
663
+ }
664
+ const route = mergeActionRouteContract(base.route, override.route);
665
+ const input = mergeActionInputContract(base.input, override.input);
666
+ const output = mergeActionOutputContract(base.output, override.output);
667
+ const defaults = mergeRecords(base.defaults, override.defaults);
668
+ const metadata = mergeRecords(base.metadata, override.metadata);
669
+ const enabled = override.enabled !== undefined && override.enabled !== null
670
+ ? override.enabled
671
+ : base.enabled;
672
+ return {
673
+ id: base.id,
674
+ ...(override.title ?? base.title ? { title: override.title ?? base.title } : {}),
675
+ ...(override.description ?? base.description
676
+ ? { description: override.description ?? base.description }
677
+ : {}),
678
+ ...(enabled !== undefined && enabled !== null ? { enabled } : {}),
679
+ ...(route ? { route } : {}),
680
+ ...(input ? { input } : {}),
681
+ ...(output ? { output } : {}),
682
+ ...(defaults ? { defaults } : {}),
683
+ capabilities: uniqueStrings([
684
+ ...(base.capabilities ?? []),
685
+ ...(override.capabilities ?? []),
686
+ ]),
687
+ ...(metadata ? { metadata } : {}),
688
+ };
689
+ }
690
+ export function resolveTeamActionContract(manifest, teamId, actionId, options = {}) {
691
+ const normalizedTeamId = requiredText(teamId, "team id");
692
+ const normalizedActionId = requiredText(actionId, "action id");
693
+ const team = findTeamManifestTeam(manifest, normalizedTeamId);
694
+ if (!team) {
695
+ throw new Error(`team manifest: unknown team "${normalizedTeamId}"`);
696
+ }
697
+ const normalizedMemberId = nonEmpty(options.memberId);
698
+ const member = normalizedMemberId
699
+ ? findTeamManifestMember(team, normalizedMemberId)
700
+ : null;
701
+ if (normalizedMemberId && !member) {
702
+ throw new Error(`team manifest: unknown member "${normalizedMemberId}" for team "${team.id}"`);
703
+ }
704
+ const scopedActions = [
705
+ findTeamActionContract(manifest.actions, normalizedActionId),
706
+ findTeamActionContract(team.actions, normalizedActionId),
707
+ member ? findTeamActionContract(member.actions, normalizedActionId) : null,
708
+ ].filter((action) => Boolean(action));
709
+ if (!scopedActions.length) {
710
+ throw new Error(`team manifest: unknown action "${normalizedActionId}" for team "${team.id}"`);
711
+ }
712
+ return scopedActions.reduce((merged, action) => mergeTeamActionContracts(merged, action));
713
+ }
714
+ export function resolveTeamActionApiPath(manifest, teamId, actionId, options = {}) {
715
+ const action = resolveTeamActionContract(manifest, teamId, actionId, options);
716
+ if (action.enabled === false) {
717
+ throw new Error(`team manifest: action "${action.id}" is disabled`);
718
+ }
719
+ if (action.route?.path) {
720
+ return action.route.path;
721
+ }
722
+ const normalizedMemberId = nonEmpty(options.memberId);
723
+ if (normalizedMemberId) {
724
+ return resolveTeamRoutePath("agent.action", {
725
+ teamId: requiredText(teamId, "team id"),
726
+ agentId: normalizedMemberId,
727
+ actionId: action.id,
728
+ });
729
+ }
730
+ return resolveTeamRoutePath("action", {
731
+ teamId: requiredText(teamId, "team id"),
732
+ actionId: action.id,
733
+ });
734
+ }
735
+ export function resolveTeamRoutePath(routeKey, options) {
736
+ const teamId = requiredText(options.teamId, "team id");
737
+ switch (routeKey) {
738
+ case "action": {
739
+ const actionId = requiredText(options.actionId, "action id");
740
+ return joinUrlPath(["api", "teams", teamId, "actions", actionId]);
741
+ }
742
+ case "agent.action": {
743
+ const agentId = requiredText(options.agentId, "agent id");
744
+ const actionId = requiredText(options.actionId, "action id");
745
+ return joinUrlPath([
746
+ "api",
747
+ "teams",
748
+ teamId,
749
+ "agents",
750
+ agentId,
751
+ "actions",
752
+ actionId,
753
+ ]);
754
+ }
755
+ case "kanban":
756
+ case "runs":
757
+ case "config":
758
+ return joinUrlPath(["api", "teams", teamId, routeKey]);
759
+ case "workspace":
760
+ return joinUrlPath([
761
+ "api",
762
+ "teams",
763
+ teamId,
764
+ "workspace",
765
+ ...workspacePathSegments(options.workspacePath),
766
+ ]);
767
+ case "agent.config": {
768
+ const agentId = requiredText(options.agentId, "agent id");
769
+ return joinUrlPath([
770
+ "api",
771
+ "teams",
772
+ teamId,
773
+ "agents",
774
+ agentId,
775
+ "config",
776
+ ]);
777
+ }
778
+ case "agent.workspace": {
779
+ const agentId = requiredText(options.agentId, "agent id");
780
+ return joinUrlPath([
781
+ "api",
782
+ "teams",
783
+ teamId,
784
+ "agents",
785
+ agentId,
786
+ "workspace",
787
+ ...workspacePathSegments(options.workspacePath),
788
+ ]);
789
+ }
790
+ default:
791
+ throw new Error(`team manifest: unknown team route "${routeKey}"`);
792
+ }
793
+ }
794
+ function normalizeBindingMatchValue(value) {
795
+ const trimmed = nonEmpty(value);
796
+ return trimmed ? trimmed.toLowerCase() : null;
797
+ }
798
+ function escapeRegExp(value) {
799
+ return value.replace(/[\\^$.*+?()[\]{}|]/gu, "\\$&");
800
+ }
801
+ function expandSessionKeyPattern(pattern, binding) {
802
+ return pattern
803
+ .replace(/\{teamId\}/gu, binding.teamId)
804
+ .replace(/\{memberId\}/gu, binding.memberId ?? "")
805
+ .replace(/\{actionId\}/gu, binding.actionId ?? "");
806
+ }
807
+ function matchesSessionKeyPattern(binding, sessionKey) {
808
+ const pattern = nonEmpty(binding.sessionKeyPattern);
809
+ if (!pattern) {
810
+ return true;
811
+ }
812
+ const candidate = nonEmpty(sessionKey);
813
+ if (!candidate) {
814
+ return false;
815
+ }
816
+ const expanded = expandSessionKeyPattern(pattern, binding);
817
+ if (!expanded.includes("*")) {
818
+ return candidate === expanded;
819
+ }
820
+ const source = expanded.split("*").map(escapeRegExp).join(".*");
821
+ return new RegExp(`^${source}$`, "u").test(candidate);
822
+ }
823
+ function bindingMatchScore(binding, options) {
824
+ if (options.bindingId && binding.id !== options.bindingId.trim()) {
825
+ return -1;
826
+ }
827
+ const inputSource = normalizeBindingMatchValue(options.source);
828
+ const inputChannel = normalizeBindingMatchValue(options.channel);
829
+ const inputAgentId = normalizeBindingMatchValue(options.agentId);
830
+ const inputActionId = normalizeBindingMatchValue(options.actionId);
831
+ const bindingSource = normalizeBindingMatchValue(binding.source);
832
+ const bindingChannel = normalizeBindingMatchValue(binding.channel);
833
+ const bindingMemberId = normalizeBindingMatchValue(binding.memberId);
834
+ const bindingActionId = normalizeBindingMatchValue(binding.actionId);
835
+ if (bindingSource && bindingSource !== inputSource && bindingSource !== inputChannel) {
836
+ return -1;
837
+ }
838
+ if (bindingChannel && bindingChannel !== inputChannel && bindingChannel !== inputSource) {
839
+ return -1;
840
+ }
841
+ if (bindingMemberId && inputAgentId && bindingMemberId !== inputAgentId) {
842
+ return -1;
843
+ }
844
+ if (bindingActionId && inputActionId && bindingActionId !== inputActionId) {
845
+ return -1;
846
+ }
847
+ const sessionKey = nonEmpty(options.sessionKey) ?? nonEmpty(options.key);
848
+ if (!matchesSessionKeyPattern(binding, sessionKey)) {
849
+ return -1;
850
+ }
851
+ let score = 0;
852
+ if (options.bindingId)
853
+ score += 100;
854
+ if (binding.sessionKeyPattern)
855
+ score += 20;
856
+ if (bindingSource)
857
+ score += 10;
858
+ if (bindingChannel)
859
+ score += 10;
860
+ if (bindingMemberId)
861
+ score += 5;
862
+ if (bindingActionId)
863
+ score += 5;
864
+ return score;
865
+ }
866
+ function bindingRouteKey(binding) {
867
+ const explicit = nonEmpty(binding.routeKey);
868
+ if (explicit) {
869
+ return explicit;
870
+ }
871
+ if (nonEmpty(binding.actionId)) {
872
+ return nonEmpty(binding.memberId) ? "agent.action" : "action";
873
+ }
874
+ return "runs";
875
+ }
876
+ export function resolveGatewayRouteBinding(manifest, options) {
877
+ const bindings = normalizeGatewayRouteBindings(manifest.bindings);
878
+ let selected = null;
879
+ let selectedScore = -1;
880
+ for (const binding of bindings) {
881
+ const score = bindingMatchScore(binding, options);
882
+ if (score > selectedScore) {
883
+ selected = binding;
884
+ selectedScore = score;
885
+ }
886
+ }
887
+ if (!selected || selectedScore < 0) {
888
+ return null;
889
+ }
890
+ const team = findTeamManifestTeam(manifest, selected.teamId);
891
+ if (!team) {
892
+ throw new Error(`team manifest: binding "${selected.id}" references unknown team "${selected.teamId}"`);
893
+ }
894
+ const memberId = nonEmpty(selected.memberId);
895
+ if (memberId && !findTeamManifestMember(team, memberId)) {
896
+ throw new Error(`team manifest: binding "${selected.id}" references unknown member "${memberId}" for team "${team.id}"`);
897
+ }
898
+ const routeKey = bindingRouteKey(selected);
899
+ const actionId = nonEmpty(selected.actionId);
900
+ const path = resolveTeamRoutePath(routeKey, {
901
+ teamId: team.id,
902
+ agentId: memberId,
903
+ actionId,
904
+ });
905
+ return {
906
+ id: selected.id,
907
+ teamId: team.id,
908
+ memberId,
909
+ source: nonEmpty(selected.source),
910
+ channel: nonEmpty(selected.channel),
911
+ actionId,
912
+ routeKey,
913
+ path,
914
+ ...(selected.metadata ? { metadata: selected.metadata } : {}),
915
+ };
916
+ }
917
+ function resolveTeamWorkspaceEntry(team, keyOrPath, options = {}) {
918
+ const member = findTeamManifestMember(team, options.memberId);
919
+ const workspace = member?.workspace ?? team.workspace ?? null;
920
+ if (!workspace) {
921
+ throw new Error(`team manifest: team "${team.id}" has no workspace root`);
922
+ }
923
+ const entry = findWorkspacePath(workspace, keyOrPath);
924
+ if (!entry) {
925
+ throw new Error(`team manifest: workspace path "${keyOrPath}" is not whitelisted for team "${team.id}"`);
926
+ }
927
+ return entry;
928
+ }
929
+ export function resolveTeamWorkspacePath(team, keyOrPath, options = {}) {
930
+ const member = findTeamManifestMember(team, options.memberId);
931
+ const workspace = member?.workspace ?? team.workspace ?? null;
932
+ if (!workspace) {
933
+ throw new Error(`team manifest: team "${team.id}" has no workspace root`);
934
+ }
935
+ const entry = resolveTeamWorkspaceEntry(team, keyOrPath, options);
936
+ return joinWorkspacePath(workspace.rootPath, entry.path);
937
+ }
938
+ export function resolveTeamWorkspaceApiPath(team, keyOrPath, options = {}) {
939
+ const entry = resolveTeamWorkspaceEntry(team, keyOrPath, options);
940
+ if (options.memberId) {
941
+ return resolveTeamRoutePath("agent.workspace", {
942
+ teamId: team.id,
943
+ agentId: options.memberId,
944
+ workspacePath: entry.path,
945
+ });
946
+ }
947
+ return resolveTeamRoutePath("workspace", {
948
+ teamId: team.id,
949
+ workspacePath: entry.path,
950
+ });
951
+ }