@compozy/client 0.0.0-stage → 0.3.0-beta.36

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 (282) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +48 -2
  3. package/dist/cjs/browser-discovery.js +23 -0
  4. package/dist/cjs/browser-discovery.js.map +1 -0
  5. package/dist/cjs/client.js +51 -0
  6. package/dist/cjs/client.js.map +1 -0
  7. package/dist/cjs/connect.js +87 -0
  8. package/dist/cjs/connect.js.map +1 -0
  9. package/dist/cjs/errors.js +52 -0
  10. package/dist/cjs/errors.js.map +1 -0
  11. package/dist/cjs/events.js +173 -0
  12. package/dist/cjs/events.js.map +1 -0
  13. package/dist/cjs/generated/sdk/client/client.gen.js +221 -0
  14. package/dist/cjs/generated/sdk/client/client.gen.js.map +1 -0
  15. package/dist/cjs/generated/sdk/client/index.js +18 -0
  16. package/dist/cjs/generated/sdk/client/index.js.map +1 -0
  17. package/dist/cjs/generated/sdk/client/types.gen.js +4 -0
  18. package/dist/cjs/generated/sdk/client/types.gen.js.map +1 -0
  19. package/dist/cjs/generated/sdk/client/utils.gen.js +240 -0
  20. package/dist/cjs/generated/sdk/client/utils.gen.js.map +1 -0
  21. package/dist/cjs/generated/sdk/client.gen.js +7 -0
  22. package/dist/cjs/generated/sdk/client.gen.js.map +1 -0
  23. package/dist/cjs/generated/sdk/core/auth.gen.js +19 -0
  24. package/dist/cjs/generated/sdk/core/auth.gen.js.map +1 -0
  25. package/dist/cjs/generated/sdk/core/bodySerializer.gen.js +61 -0
  26. package/dist/cjs/generated/sdk/core/bodySerializer.gen.js.map +1 -0
  27. package/dist/cjs/generated/sdk/core/params.gen.js +113 -0
  28. package/dist/cjs/generated/sdk/core/params.gen.js.map +1 -0
  29. package/dist/cjs/generated/sdk/core/pathSerializer.gen.js +116 -0
  30. package/dist/cjs/generated/sdk/core/pathSerializer.gen.js.map +1 -0
  31. package/dist/cjs/generated/sdk/core/queryKeySerializer.gen.js +99 -0
  32. package/dist/cjs/generated/sdk/core/queryKeySerializer.gen.js.map +1 -0
  33. package/dist/cjs/generated/sdk/core/serverSentEvents.gen.js +137 -0
  34. package/dist/cjs/generated/sdk/core/serverSentEvents.gen.js.map +1 -0
  35. package/dist/cjs/generated/sdk/core/types.gen.js +4 -0
  36. package/dist/cjs/generated/sdk/core/types.gen.js.map +1 -0
  37. package/dist/cjs/generated/sdk/core/utils.gen.js +94 -0
  38. package/dist/cjs/generated/sdk/core/utils.gen.js.map +1 -0
  39. package/dist/cjs/generated/sdk/index.js +38 -0
  40. package/dist/cjs/generated/sdk/index.js.map +1 -0
  41. package/dist/cjs/generated/sdk/sdk.gen.js +5563 -0
  42. package/dist/cjs/generated/sdk/sdk.gen.js.map +1 -0
  43. package/dist/cjs/generated/sdk/types.gen.js +4 -0
  44. package/dist/cjs/generated/sdk/types.gen.js.map +1 -0
  45. package/dist/cjs/generated/sse/client/client.gen.js +221 -0
  46. package/dist/cjs/generated/sse/client/client.gen.js.map +1 -0
  47. package/dist/cjs/generated/sse/client/index.js +18 -0
  48. package/dist/cjs/generated/sse/client/index.js.map +1 -0
  49. package/dist/cjs/generated/sse/client/types.gen.js +4 -0
  50. package/dist/cjs/generated/sse/client/types.gen.js.map +1 -0
  51. package/dist/cjs/generated/sse/client/utils.gen.js +240 -0
  52. package/dist/cjs/generated/sse/client/utils.gen.js.map +1 -0
  53. package/dist/cjs/generated/sse/client.gen.js +7 -0
  54. package/dist/cjs/generated/sse/client.gen.js.map +1 -0
  55. package/dist/cjs/generated/sse/core/auth.gen.js +19 -0
  56. package/dist/cjs/generated/sse/core/auth.gen.js.map +1 -0
  57. package/dist/cjs/generated/sse/core/bodySerializer.gen.js +61 -0
  58. package/dist/cjs/generated/sse/core/bodySerializer.gen.js.map +1 -0
  59. package/dist/cjs/generated/sse/core/params.gen.js +113 -0
  60. package/dist/cjs/generated/sse/core/params.gen.js.map +1 -0
  61. package/dist/cjs/generated/sse/core/pathSerializer.gen.js +116 -0
  62. package/dist/cjs/generated/sse/core/pathSerializer.gen.js.map +1 -0
  63. package/dist/cjs/generated/sse/core/queryKeySerializer.gen.js +99 -0
  64. package/dist/cjs/generated/sse/core/queryKeySerializer.gen.js.map +1 -0
  65. package/dist/cjs/generated/sse/core/serverSentEvents.gen.js +137 -0
  66. package/dist/cjs/generated/sse/core/serverSentEvents.gen.js.map +1 -0
  67. package/dist/cjs/generated/sse/core/types.gen.js +4 -0
  68. package/dist/cjs/generated/sse/core/types.gen.js.map +1 -0
  69. package/dist/cjs/generated/sse/core/utils.gen.js +94 -0
  70. package/dist/cjs/generated/sse/core/utils.gen.js.map +1 -0
  71. package/dist/cjs/generated/sse/index.js +19 -0
  72. package/dist/cjs/generated/sse/index.js.map +1 -0
  73. package/dist/cjs/generated/sse/sdk.gen.js +123 -0
  74. package/dist/cjs/generated/sse/sdk.gen.js.map +1 -0
  75. package/dist/cjs/generated/sse/types.gen.js +4 -0
  76. package/dist/cjs/generated/sse/types.gen.js.map +1 -0
  77. package/dist/cjs/index-node.js +28 -0
  78. package/dist/cjs/index-node.js.map +1 -0
  79. package/dist/cjs/index.js +12 -0
  80. package/dist/cjs/index.js.map +1 -0
  81. package/dist/cjs/node-binary.js +53 -0
  82. package/dist/cjs/node-binary.js.map +1 -0
  83. package/dist/cjs/node-discovery.js +95 -0
  84. package/dist/cjs/node-discovery.js.map +1 -0
  85. package/dist/cjs/node-process.js +113 -0
  86. package/dist/cjs/node-process.js.map +1 -0
  87. package/dist/cjs/node.js +137 -0
  88. package/dist/cjs/node.js.map +1 -0
  89. package/dist/cjs/operation-types.js +3 -0
  90. package/dist/cjs/operation-types.js.map +1 -0
  91. package/dist/cjs/package.json +3 -0
  92. package/dist/cjs/prompt.js +183 -0
  93. package/dist/cjs/prompt.js.map +1 -0
  94. package/dist/cjs/version.js +6 -0
  95. package/dist/cjs/version.js.map +1 -0
  96. package/dist/esm/browser-discovery.js +20 -0
  97. package/dist/esm/browser-discovery.js.map +1 -0
  98. package/dist/esm/client.js +47 -0
  99. package/dist/esm/client.js.map +1 -0
  100. package/dist/esm/connect.js +83 -0
  101. package/dist/esm/connect.js.map +1 -0
  102. package/dist/esm/errors.js +43 -0
  103. package/dist/esm/errors.js.map +1 -0
  104. package/dist/esm/events.js +137 -0
  105. package/dist/esm/events.js.map +1 -0
  106. package/dist/esm/generated/sdk/client/client.gen.js +217 -0
  107. package/dist/esm/generated/sdk/client/client.gen.js.map +1 -0
  108. package/dist/esm/generated/sdk/client/index.js +7 -0
  109. package/dist/esm/generated/sdk/client/index.js.map +1 -0
  110. package/dist/esm/generated/sdk/client/types.gen.js +3 -0
  111. package/dist/esm/generated/sdk/client/types.gen.js.map +1 -0
  112. package/dist/esm/generated/sdk/client/utils.gen.js +229 -0
  113. package/dist/esm/generated/sdk/client/utils.gen.js.map +1 -0
  114. package/dist/esm/generated/sdk/client.gen.js +4 -0
  115. package/dist/esm/generated/sdk/client.gen.js.map +1 -0
  116. package/dist/esm/generated/sdk/core/auth.gen.js +15 -0
  117. package/dist/esm/generated/sdk/core/auth.gen.js.map +1 -0
  118. package/dist/esm/generated/sdk/core/bodySerializer.gen.js +58 -0
  119. package/dist/esm/generated/sdk/core/bodySerializer.gen.js.map +1 -0
  120. package/dist/esm/generated/sdk/core/params.gen.js +110 -0
  121. package/dist/esm/generated/sdk/core/params.gen.js.map +1 -0
  122. package/dist/esm/generated/sdk/core/pathSerializer.gen.js +107 -0
  123. package/dist/esm/generated/sdk/core/pathSerializer.gen.js.map +1 -0
  124. package/dist/esm/generated/sdk/core/queryKeySerializer.gen.js +93 -0
  125. package/dist/esm/generated/sdk/core/queryKeySerializer.gen.js.map +1 -0
  126. package/dist/esm/generated/sdk/core/serverSentEvents.gen.js +134 -0
  127. package/dist/esm/generated/sdk/core/serverSentEvents.gen.js.map +1 -0
  128. package/dist/esm/generated/sdk/core/types.gen.js +3 -0
  129. package/dist/esm/generated/sdk/core/types.gen.js.map +1 -0
  130. package/dist/esm/generated/sdk/core/utils.gen.js +88 -0
  131. package/dist/esm/generated/sdk/core/utils.gen.js.map +1 -0
  132. package/dist/esm/generated/sdk/index.js +3 -0
  133. package/dist/esm/generated/sdk/index.js.map +1 -0
  134. package/dist/esm/generated/sdk/sdk.gen.js +5528 -0
  135. package/dist/esm/generated/sdk/sdk.gen.js.map +1 -0
  136. package/dist/esm/generated/sdk/types.gen.js +3 -0
  137. package/dist/esm/generated/sdk/types.gen.js.map +1 -0
  138. package/dist/esm/generated/sse/client/client.gen.js +217 -0
  139. package/dist/esm/generated/sse/client/client.gen.js.map +1 -0
  140. package/dist/esm/generated/sse/client/index.js +7 -0
  141. package/dist/esm/generated/sse/client/index.js.map +1 -0
  142. package/dist/esm/generated/sse/client/types.gen.js +3 -0
  143. package/dist/esm/generated/sse/client/types.gen.js.map +1 -0
  144. package/dist/esm/generated/sse/client/utils.gen.js +229 -0
  145. package/dist/esm/generated/sse/client/utils.gen.js.map +1 -0
  146. package/dist/esm/generated/sse/client.gen.js +4 -0
  147. package/dist/esm/generated/sse/client.gen.js.map +1 -0
  148. package/dist/esm/generated/sse/core/auth.gen.js +15 -0
  149. package/dist/esm/generated/sse/core/auth.gen.js.map +1 -0
  150. package/dist/esm/generated/sse/core/bodySerializer.gen.js +58 -0
  151. package/dist/esm/generated/sse/core/bodySerializer.gen.js.map +1 -0
  152. package/dist/esm/generated/sse/core/params.gen.js +110 -0
  153. package/dist/esm/generated/sse/core/params.gen.js.map +1 -0
  154. package/dist/esm/generated/sse/core/pathSerializer.gen.js +107 -0
  155. package/dist/esm/generated/sse/core/pathSerializer.gen.js.map +1 -0
  156. package/dist/esm/generated/sse/core/queryKeySerializer.gen.js +93 -0
  157. package/dist/esm/generated/sse/core/queryKeySerializer.gen.js.map +1 -0
  158. package/dist/esm/generated/sse/core/serverSentEvents.gen.js +134 -0
  159. package/dist/esm/generated/sse/core/serverSentEvents.gen.js.map +1 -0
  160. package/dist/esm/generated/sse/core/types.gen.js +3 -0
  161. package/dist/esm/generated/sse/core/types.gen.js.map +1 -0
  162. package/dist/esm/generated/sse/core/utils.gen.js +88 -0
  163. package/dist/esm/generated/sse/core/utils.gen.js.map +1 -0
  164. package/dist/esm/generated/sse/index.js +3 -0
  165. package/dist/esm/generated/sse/index.js.map +1 -0
  166. package/dist/esm/generated/sse/sdk.gen.js +107 -0
  167. package/dist/esm/generated/sse/sdk.gen.js.map +1 -0
  168. package/dist/esm/generated/sse/types.gen.js +3 -0
  169. package/dist/esm/generated/sse/types.gen.js.map +1 -0
  170. package/dist/esm/index-node.js +10 -0
  171. package/dist/esm/index-node.js.map +1 -0
  172. package/dist/esm/index.js +3 -0
  173. package/dist/esm/index.js.map +1 -0
  174. package/dist/esm/node-binary.js +50 -0
  175. package/dist/esm/node-binary.js.map +1 -0
  176. package/dist/esm/node-discovery.js +89 -0
  177. package/dist/esm/node-discovery.js.map +1 -0
  178. package/dist/esm/node-process.js +106 -0
  179. package/dist/esm/node-process.js.map +1 -0
  180. package/dist/esm/node.js +119 -0
  181. package/dist/esm/node.js.map +1 -0
  182. package/dist/esm/operation-types.js +2 -0
  183. package/dist/esm/operation-types.js.map +1 -0
  184. package/dist/esm/package.json +3 -0
  185. package/dist/esm/prompt.js +178 -0
  186. package/dist/esm/prompt.js.map +1 -0
  187. package/dist/esm/version.js +3 -0
  188. package/dist/esm/version.js.map +1 -0
  189. package/dist/types/browser-discovery.d.ts +9 -0
  190. package/dist/types/browser-discovery.d.ts.map +1 -0
  191. package/dist/types/client.d.ts +19 -0
  192. package/dist/types/client.d.ts.map +1 -0
  193. package/dist/types/connect.d.ts +33 -0
  194. package/dist/types/connect.d.ts.map +1 -0
  195. package/dist/types/errors.d.ts +22 -0
  196. package/dist/types/errors.d.ts.map +1 -0
  197. package/dist/types/events.d.ts +11 -0
  198. package/dist/types/events.d.ts.map +1 -0
  199. package/dist/types/generated/openapi/compozy-openapi.d.ts +51499 -0
  200. package/dist/types/generated/sdk/client/client.gen.d.ts +3 -0
  201. package/dist/types/generated/sdk/client/client.gen.d.ts.map +1 -0
  202. package/dist/types/generated/sdk/client/index.d.ts +11 -0
  203. package/dist/types/generated/sdk/client/index.d.ts.map +1 -0
  204. package/dist/types/generated/sdk/client/types.gen.d.ts +121 -0
  205. package/dist/types/generated/sdk/client/types.gen.d.ts.map +1 -0
  206. package/dist/types/generated/sdk/client/utils.gen.d.ts +38 -0
  207. package/dist/types/generated/sdk/client/utils.gen.d.ts.map +1 -0
  208. package/dist/types/generated/sdk/client.gen.d.ts +13 -0
  209. package/dist/types/generated/sdk/client.gen.d.ts.map +1 -0
  210. package/dist/types/generated/sdk/core/auth.gen.d.ts +26 -0
  211. package/dist/types/generated/sdk/core/auth.gen.d.ts.map +1 -0
  212. package/dist/types/generated/sdk/core/bodySerializer.gen.d.ts +26 -0
  213. package/dist/types/generated/sdk/core/bodySerializer.gen.d.ts.map +1 -0
  214. package/dist/types/generated/sdk/core/params.gen.d.ts +44 -0
  215. package/dist/types/generated/sdk/core/params.gen.d.ts.map +1 -0
  216. package/dist/types/generated/sdk/core/pathSerializer.gen.d.ts +34 -0
  217. package/dist/types/generated/sdk/core/pathSerializer.gen.d.ts.map +1 -0
  218. package/dist/types/generated/sdk/core/queryKeySerializer.gen.d.ts +19 -0
  219. package/dist/types/generated/sdk/core/queryKeySerializer.gen.d.ts.map +1 -0
  220. package/dist/types/generated/sdk/core/serverSentEvents.gen.d.ts +72 -0
  221. package/dist/types/generated/sdk/core/serverSentEvents.gen.d.ts.map +1 -0
  222. package/dist/types/generated/sdk/core/types.gen.d.ts +84 -0
  223. package/dist/types/generated/sdk/core/types.gen.d.ts.map +1 -0
  224. package/dist/types/generated/sdk/core/utils.gen.d.ts +20 -0
  225. package/dist/types/generated/sdk/core/utils.gen.d.ts.map +1 -0
  226. package/dist/types/generated/sdk/index.d.ts +3 -0
  227. package/dist/types/generated/sdk/index.d.ts.map +1 -0
  228. package/dist/types/generated/sdk/sdk.gen.d.ts +1992 -0
  229. package/dist/types/generated/sdk/sdk.gen.d.ts.map +1 -0
  230. package/dist/types/generated/sdk/types.gen.d.ts +30514 -0
  231. package/dist/types/generated/sdk/types.gen.d.ts.map +1 -0
  232. package/dist/types/generated/sse/client/client.gen.d.ts +3 -0
  233. package/dist/types/generated/sse/client/client.gen.d.ts.map +1 -0
  234. package/dist/types/generated/sse/client/index.d.ts +11 -0
  235. package/dist/types/generated/sse/client/index.d.ts.map +1 -0
  236. package/dist/types/generated/sse/client/types.gen.d.ts +121 -0
  237. package/dist/types/generated/sse/client/types.gen.d.ts.map +1 -0
  238. package/dist/types/generated/sse/client/utils.gen.d.ts +38 -0
  239. package/dist/types/generated/sse/client/utils.gen.d.ts.map +1 -0
  240. package/dist/types/generated/sse/client.gen.d.ts +13 -0
  241. package/dist/types/generated/sse/client.gen.d.ts.map +1 -0
  242. package/dist/types/generated/sse/core/auth.gen.d.ts +26 -0
  243. package/dist/types/generated/sse/core/auth.gen.d.ts.map +1 -0
  244. package/dist/types/generated/sse/core/bodySerializer.gen.d.ts +26 -0
  245. package/dist/types/generated/sse/core/bodySerializer.gen.d.ts.map +1 -0
  246. package/dist/types/generated/sse/core/params.gen.d.ts +44 -0
  247. package/dist/types/generated/sse/core/params.gen.d.ts.map +1 -0
  248. package/dist/types/generated/sse/core/pathSerializer.gen.d.ts +34 -0
  249. package/dist/types/generated/sse/core/pathSerializer.gen.d.ts.map +1 -0
  250. package/dist/types/generated/sse/core/queryKeySerializer.gen.d.ts +19 -0
  251. package/dist/types/generated/sse/core/queryKeySerializer.gen.d.ts.map +1 -0
  252. package/dist/types/generated/sse/core/serverSentEvents.gen.d.ts +72 -0
  253. package/dist/types/generated/sse/core/serverSentEvents.gen.d.ts.map +1 -0
  254. package/dist/types/generated/sse/core/types.gen.d.ts +84 -0
  255. package/dist/types/generated/sse/core/types.gen.d.ts.map +1 -0
  256. package/dist/types/generated/sse/core/utils.gen.d.ts +20 -0
  257. package/dist/types/generated/sse/core/utils.gen.d.ts.map +1 -0
  258. package/dist/types/generated/sse/index.d.ts +3 -0
  259. package/dist/types/generated/sse/index.d.ts.map +1 -0
  260. package/dist/types/generated/sse/sdk.gen.d.ts +68 -0
  261. package/dist/types/generated/sse/sdk.gen.d.ts.map +1 -0
  262. package/dist/types/generated/sse/types.gen.d.ts +1414 -0
  263. package/dist/types/generated/sse/types.gen.d.ts.map +1 -0
  264. package/dist/types/index-node.d.ts +10 -0
  265. package/dist/types/index-node.d.ts.map +1 -0
  266. package/dist/types/index.d.ts +9 -0
  267. package/dist/types/index.d.ts.map +1 -0
  268. package/dist/types/node-binary.d.ts +2 -0
  269. package/dist/types/node-binary.d.ts.map +1 -0
  270. package/dist/types/node-discovery.d.ts +16 -0
  271. package/dist/types/node-discovery.d.ts.map +1 -0
  272. package/dist/types/node-process.d.ts +18 -0
  273. package/dist/types/node-process.d.ts.map +1 -0
  274. package/dist/types/node.d.ts +21 -0
  275. package/dist/types/node.d.ts.map +1 -0
  276. package/dist/types/operation-types.d.ts +48 -0
  277. package/dist/types/operation-types.d.ts.map +1 -0
  278. package/dist/types/prompt.d.ts +128 -0
  279. package/dist/types/prompt.d.ts.map +1 -0
  280. package/dist/types/version.d.ts +3 -0
  281. package/dist/types/version.d.ts.map +1 -0
  282. package/package.json +56 -4
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveHome = resolveHome;
4
+ exports.readDaemonInfo = readDaemonInfo;
5
+ exports.daemonBaseUrl = daemonBaseUrl;
6
+ exports.discover = discover;
7
+ const promises_1 = require("node:fs/promises");
8
+ const node_os_1 = require("node:os");
9
+ const node_path_1 = require("node:path");
10
+ const errors_js_1 = require("./errors.js");
11
+ function resolveHome(home) {
12
+ return (0, node_path_1.resolve)(home ?? (process.env.COMPOZY_HOME?.trim() || (0, node_path_1.join)((0, node_os_1.homedir)(), ".compozy")));
13
+ }
14
+ async function readDaemonInfo(home) {
15
+ const path = (0, node_path_1.join)(home, "daemon.json");
16
+ let content;
17
+ try {
18
+ content = await (0, promises_1.readFile)(path, "utf8");
19
+ }
20
+ catch (cause) {
21
+ if (cause.code === "ENOENT")
22
+ return undefined;
23
+ throw new errors_js_1.CompozyConfigError(`Cannot read daemon record ${path}.`, { cause });
24
+ }
25
+ let value;
26
+ try {
27
+ value = JSON.parse(content);
28
+ }
29
+ catch (cause) {
30
+ throw new errors_js_1.CompozyConfigError(`Invalid daemon record ${path}: expected JSON.`, { cause });
31
+ }
32
+ if (!value || typeof value !== "object") {
33
+ throw new errors_js_1.CompozyConfigError(`Invalid daemon record ${path}.`);
34
+ }
35
+ const record = value;
36
+ if (typeof record.pid !== "number" ||
37
+ !Number.isSafeInteger(record.pid) ||
38
+ record.pid <= 0 ||
39
+ typeof record.port !== "number" ||
40
+ !Number.isInteger(record.port) ||
41
+ record.port < 1 ||
42
+ record.port > 65535 ||
43
+ (record.http_host !== undefined && typeof record.http_host !== "string")) {
44
+ throw new errors_js_1.CompozyConfigError(`Invalid daemon record ${path}: expected a positive pid and HTTP port.`);
45
+ }
46
+ const info = { pid: record.pid, port: record.port };
47
+ if (typeof record.http_host === "string")
48
+ info.http_host = record.http_host;
49
+ // Validate the host before allowing it to become a request target.
50
+ daemonBaseUrl(info);
51
+ return info;
52
+ }
53
+ function daemonBaseUrl(info) {
54
+ const host = info.http_host?.trim() || "127.0.0.1";
55
+ const dialHost = host === "0.0.0.0" ? "127.0.0.1" : host === "::" || host === "[::]" ? "::1" : host;
56
+ const authority = dialHost.includes(":") && !dialHost.startsWith("[") ? `[${dialHost}]` : dialHost;
57
+ const candidate = `http://${authority}:${info.port}`;
58
+ const parsed = validUrl(candidate, "daemon.json http_host");
59
+ if (new URL(parsed).pathname !== "/") {
60
+ throw new errors_js_1.CompozyConfigError("Invalid daemon.json http_host: expected a hostname or IP address.");
61
+ }
62
+ return parsed;
63
+ }
64
+ async function discover(options = {}) {
65
+ let baseUrl;
66
+ if (options.baseUrl !== undefined) {
67
+ baseUrl = validUrl(options.baseUrl, "baseUrl");
68
+ }
69
+ else if (process.env.COMPOZY_URL) {
70
+ baseUrl = validUrl(process.env.COMPOZY_URL, "COMPOZY_URL");
71
+ }
72
+ else {
73
+ const info = await readDaemonInfo(resolveHome(options.home));
74
+ baseUrl = info ? daemonBaseUrl(info) : "http://127.0.0.1:2123";
75
+ }
76
+ const token = process.env.COMPOZY_APP_TOKEN;
77
+ return token ? { baseUrl, token } : { baseUrl };
78
+ }
79
+ function validUrl(value, source) {
80
+ try {
81
+ const url = new URL(value);
82
+ if ((url.protocol !== "http:" && url.protocol !== "https:") ||
83
+ url.username ||
84
+ url.password ||
85
+ url.search ||
86
+ url.hash) {
87
+ throw new Error("expected an HTTP(S) URL without credentials, query, or fragment");
88
+ }
89
+ return url.toString().replace(/\/$/, "");
90
+ }
91
+ catch (cause) {
92
+ throw new errors_js_1.CompozyConfigError(`Invalid ${source}: expected an HTTP(S) URL.`, { cause });
93
+ }
94
+ }
95
+ //# sourceMappingURL=node-discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-discovery.js","sourceRoot":"","sources":["../../src/node-discovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.launchDaemon = launchDaemon;
4
+ exports.launchError = launchError;
5
+ exports.terminateLaunch = terminateLaunch;
6
+ exports.waitForLaunchExit = waitForLaunchExit;
7
+ exports.stopDaemon = stopDaemon;
8
+ const node_child_process_1 = require("node:child_process");
9
+ const promises_1 = require("node:fs/promises");
10
+ const node_path_1 = require("node:path");
11
+ const errors_js_1 = require("./errors.js");
12
+ function environment(home) {
13
+ const env = { ...process.env, COMPOZY_HOME: home };
14
+ // Lifecycle commands are always scoped to their home, never a remote URL.
15
+ delete env.COMPOZY_URL;
16
+ return env;
17
+ }
18
+ async function launchDaemon(binary, home) {
19
+ const logPath = (0, node_path_1.join)(home, "logs", "daemon-stdio.log");
20
+ await (0, promises_1.mkdir)((0, node_path_1.join)(home, "logs"), { recursive: true, mode: 0o700 });
21
+ const log = await (0, promises_1.open)(logPath, "a", 0o600);
22
+ try {
23
+ const logOffset = (await log.stat()).size;
24
+ const child = (0, node_child_process_1.spawn)(binary, ["daemon", "start", "--foreground"], {
25
+ env: environment(home),
26
+ stdio: ["ignore", log.fd, log.fd],
27
+ detached: true,
28
+ windowsHide: true,
29
+ });
30
+ const launch = { child, logPath, logOffset };
31
+ child.once("error", error => {
32
+ launch.error = error;
33
+ });
34
+ child.once("exit", (code, signal) => {
35
+ launch.exited = { code, signal };
36
+ });
37
+ return launch;
38
+ }
39
+ finally {
40
+ await log.close();
41
+ }
42
+ }
43
+ async function launchError(launch, reason) {
44
+ let tail = "";
45
+ try {
46
+ const log = await (0, promises_1.open)(launch.logPath, "r");
47
+ try {
48
+ const size = (await log.stat()).size;
49
+ const start = Math.max(launch.logOffset, size - 8192);
50
+ const bytes = Buffer.alloc(Math.max(0, size - start));
51
+ const { bytesRead } = await log.read(bytes, 0, bytes.length, start);
52
+ tail = bytes.subarray(0, bytesRead).toString("utf8").trim();
53
+ }
54
+ finally {
55
+ await log.close();
56
+ }
57
+ }
58
+ catch {
59
+ // Preserve the startup error even when the daemon removed or rotated its log.
60
+ }
61
+ const failure = launch.error?.message;
62
+ return new errors_js_1.CompozyUnavailableError(`compozy daemon start ${reason}.${failure ? ` ${failure}` : ""}${tail ? `\n${tail}` : ""}`, launch.error ? { cause: launch.error } : undefined);
63
+ }
64
+ async function terminateLaunch(launch) {
65
+ const { child } = launch;
66
+ if (!child.pid || launch.exited)
67
+ return;
68
+ await new Promise((resolveExit, reject) => {
69
+ const timer = setTimeout(() => {
70
+ child.kill("SIGKILL");
71
+ }, 500);
72
+ child.once("exit", () => {
73
+ clearTimeout(timer);
74
+ resolveExit();
75
+ });
76
+ try {
77
+ child.kill("SIGTERM");
78
+ }
79
+ catch (cause) {
80
+ clearTimeout(timer);
81
+ reject(cause);
82
+ }
83
+ });
84
+ }
85
+ function waitForLaunchExit(launch, timeoutMs) {
86
+ if (launch.exited)
87
+ return Promise.resolve();
88
+ return new Promise((resolveExit, reject) => {
89
+ const onExit = () => {
90
+ clearTimeout(timer);
91
+ resolveExit();
92
+ };
93
+ const timer = setTimeout(() => {
94
+ launch.child.off("exit", onExit);
95
+ reject(new errors_js_1.CompozyUnavailableError("The owned daemon did not exit before the stop deadline."));
96
+ }, timeoutMs);
97
+ launch.child.once("exit", onExit);
98
+ });
99
+ }
100
+ async function stopDaemon(launch, timeoutMs) {
101
+ // Signal the retained child handle: a second CLI discovery could target a
102
+ // replacement daemon that acquired this home after the ownership check.
103
+ if (!launch.exited) {
104
+ try {
105
+ launch.child.kill("SIGTERM");
106
+ }
107
+ catch (cause) {
108
+ throw new errors_js_1.CompozyUnavailableError("Unable to signal the owned daemon.", { cause });
109
+ }
110
+ }
111
+ await waitForLaunchExit(launch, timeoutMs);
112
+ }
113
+ //# sourceMappingURL=node-process.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-process.js","sourceRoot":"","sources":["../../src/node-process.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.Compozy = void 0;
18
+ const promises_1 = require("node:fs/promises");
19
+ const errors_js_1 = require("./errors.js");
20
+ const index_node_js_1 = require("./index-node.js");
21
+ const node_binary_js_1 = require("./node-binary.js");
22
+ const node_discovery_js_1 = require("./node-discovery.js");
23
+ const node_process_js_1 = require("./node-process.js");
24
+ __exportStar(require("./index-node.js"), exports);
25
+ /** Node-only client that can start a daemon and stop the daemon it started. */
26
+ class Compozy extends index_node_js_1.Compozy {
27
+ ownedDaemon;
28
+ closing;
29
+ static async connect(options = {}) {
30
+ return new Compozy(await this.connection(options));
31
+ }
32
+ static async start(options = {}) {
33
+ const timeoutMs = options.timeoutMs ?? 30_000;
34
+ if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {
35
+ throw new errors_js_1.CompozyConfigError("start timeoutMs must be a positive number.");
36
+ }
37
+ if (options.home !== undefined && !options.home.trim()) {
38
+ throw new errors_js_1.CompozyConfigError("start home must be a non-empty directory path.");
39
+ }
40
+ const deadline = Date.now() + timeoutMs;
41
+ const home = await prepareHome((0, node_discovery_js_1.resolveHome)(options.home));
42
+ const existing = await this.connectHome(home, options, deadline);
43
+ if (existing)
44
+ return existing;
45
+ const binary = await (0, node_binary_js_1.resolveBinary)(options.binaryPath);
46
+ if (Date.now() >= deadline) {
47
+ throw new errors_js_1.CompozyUnavailableError(`compozy daemon start timed out after ${timeoutMs}ms.`);
48
+ }
49
+ // Foreground mode avoids a second, unowned fork. The SDK detaches this exact
50
+ // process after readiness, and can terminate it even before daemon.json exists.
51
+ const launch = await (0, node_process_js_1.launchDaemon)(binary, home);
52
+ try {
53
+ while (Date.now() < deadline) {
54
+ if (launch.error || launch.exited) {
55
+ throw await (0, node_process_js_1.launchError)(launch, "exited before readiness");
56
+ }
57
+ const client = await this.connectHome(home, options, deadline, launch.child.pid);
58
+ if (client && !launch.exited && !launch.error) {
59
+ client.ownedDaemon = { home, pid: client.daemon.pid, timeoutMs, launch };
60
+ launch.child.unref();
61
+ return client;
62
+ }
63
+ await new Promise(resolveDelay => setTimeout(resolveDelay, Math.min(50, Math.max(0, deadline - Date.now()))));
64
+ }
65
+ throw await (0, node_process_js_1.launchError)(launch, `timed out after ${timeoutMs}ms waiting for readiness`);
66
+ }
67
+ catch (cause) {
68
+ await (0, node_process_js_1.terminateLaunch)(launch);
69
+ throw cause;
70
+ }
71
+ }
72
+ /** stopDaemon is effective only while this home's record still names our daemon. */
73
+ async close(options = {}) {
74
+ if (!options.stopDaemon || !this.ownedDaemon)
75
+ return;
76
+ if (this.closing)
77
+ return this.closing;
78
+ this.closing = this.stopOwnedDaemon();
79
+ try {
80
+ await this.closing;
81
+ }
82
+ finally {
83
+ this.closing = undefined;
84
+ }
85
+ }
86
+ async stopOwnedDaemon() {
87
+ const owned = this.ownedDaemon;
88
+ if (!owned)
89
+ return;
90
+ const info = await (0, node_discovery_js_1.readDaemonInfo)(owned.home);
91
+ if (info && info.pid !== owned.pid) {
92
+ this.ownedDaemon = undefined;
93
+ return;
94
+ }
95
+ const deadline = Date.now() + owned.timeoutMs;
96
+ if (info)
97
+ await (0, node_process_js_1.stopDaemon)(owned.launch, owned.timeoutMs);
98
+ await (0, node_process_js_1.waitForLaunchExit)(owned.launch, Math.max(0, deadline - Date.now()));
99
+ this.ownedDaemon = undefined;
100
+ }
101
+ static async connectHome(home, options, deadline, expectedPid) {
102
+ const info = await (0, node_discovery_js_1.readDaemonInfo)(home);
103
+ if (!info || (expectedPid !== undefined && info.pid !== expectedPid))
104
+ return undefined;
105
+ try {
106
+ const client = new Compozy(await this.connection({
107
+ ...options,
108
+ home,
109
+ baseUrl: (0, node_discovery_js_1.daemonBaseUrl)(info),
110
+ timeoutMs: Math.max(1, Math.min(500, deadline - Date.now())),
111
+ }));
112
+ if (client.daemon.pid !== info.pid) {
113
+ throw new errors_js_1.CompozyConfigError("Daemon identity does not match the requested home's daemon.json pid.");
114
+ }
115
+ // Readiness and ownership must describe the same record, even during a restart.
116
+ if ((await (0, node_discovery_js_1.readDaemonInfo)(home))?.pid !== info.pid)
117
+ return undefined;
118
+ return client;
119
+ }
120
+ catch (error) {
121
+ if (error instanceof errors_js_1.CompozyUnavailableError)
122
+ return undefined;
123
+ throw error;
124
+ }
125
+ }
126
+ }
127
+ exports.Compozy = Compozy;
128
+ async function prepareHome(home) {
129
+ try {
130
+ await (0, promises_1.mkdir)(home, { recursive: true, mode: 0o700 });
131
+ return await (0, promises_1.realpath)(home);
132
+ }
133
+ catch (cause) {
134
+ throw new errors_js_1.CompozyConfigError(`Cannot use daemon home ${home}: expected an accessible directory.`, { cause });
135
+ }
136
+ }
137
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=operation-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operation-types.js","sourceRoot":"","sources":["../../src/operation-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -0,0 +1,183 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.promptResponse = promptResponse;
4
+ exports.prompt = prompt;
5
+ exports.createPromptId = createPromptId;
6
+ const errors_js_1 = require("./errors.js");
7
+ const serverSentEvents_gen_js_1 = require("./generated/sdk/core/serverSentEvents.gen.js");
8
+ async function promptResponse(state, input, createId = createPromptId) {
9
+ const response = await sendPrompt(state, input, createId);
10
+ if (!response.ok || isStream(response) || response.status === 202)
11
+ return response;
12
+ // Queued, steered, and goal-command results all use the accepted proxy shape.
13
+ return new Response(response.body, { status: 202, headers: response.headers });
14
+ }
15
+ async function prompt(state, input, createId = createPromptId) {
16
+ const response = await sendPrompt(state, input, createId);
17
+ if (!response.ok)
18
+ throw await (0, errors_js_1.responseError)(response);
19
+ if (!isStream(response)) {
20
+ const body = await response.json();
21
+ if (!body ||
22
+ typeof body !== "object" ||
23
+ !("prompt" in body) ||
24
+ !body.prompt ||
25
+ typeof body.prompt !== "object") {
26
+ throw new errors_js_1.CompozyStreamError("Prompt response is missing its accepted result.");
27
+ }
28
+ return { kind: "accepted", result: body.prompt };
29
+ }
30
+ const chunks = promptChunks(response, input.signal);
31
+ return { kind: "stream", chunks, toReadableStream: () => readable(chunks) };
32
+ }
33
+ function sendPrompt(state, input, createId) {
34
+ const key = input.idempotencyKey ?? createId();
35
+ // Reusing a caller's key must preserve the message identity as well as the receipt key.
36
+ const body = {
37
+ message: input.message,
38
+ message_id: key,
39
+ mode: input.mode,
40
+ idempotency_key: key,
41
+ expected_turn_id: input.expectedTurnId,
42
+ };
43
+ const headers = new Headers(state.headers);
44
+ headers.set("Content-Type", "application/json");
45
+ headers.set("Accept", "text/event-stream, application/json");
46
+ return state.fetch(`${state.baseUrl}/api/workspaces/${encodeURIComponent(input.workspaceId)}/sessions/${encodeURIComponent(input.sessionId)}/prompt`, {
47
+ method: "POST",
48
+ headers,
49
+ signal: input.signal,
50
+ body: JSON.stringify(body),
51
+ });
52
+ }
53
+ // Use the same UUID fallback as the Web client: getRandomValues also works on HTTP origins.
54
+ function createPromptId() {
55
+ const cryptoApi = globalThis.crypto;
56
+ if (typeof cryptoApi?.randomUUID === "function")
57
+ return cryptoApi.randomUUID();
58
+ if (typeof cryptoApi?.getRandomValues !== "function") {
59
+ throw new Error("Cryptography is required to create a prompt identifier.");
60
+ }
61
+ const bytes = cryptoApi.getRandomValues(new Uint8Array(16));
62
+ bytes[6] = (bytes[6] & 0x0f) | 0x40;
63
+ bytes[8] = (bytes[8] & 0x3f) | 0x80;
64
+ const hex = Array.from(bytes, byte => byte.toString(16).padStart(2, "0")).join("");
65
+ return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
66
+ }
67
+ function isStream(response) {
68
+ return response.headers.get("content-type")?.split(";", 1)[0]?.trim() === "text/event-stream";
69
+ }
70
+ async function* promptChunks(response, signal) {
71
+ const controller = new AbortController();
72
+ const abort = () => controller.abort();
73
+ signal?.addEventListener("abort", abort, { once: true });
74
+ if (signal?.aborted)
75
+ abort();
76
+ let failure;
77
+ let parsedJSON = false;
78
+ const source = response.body?.getReader();
79
+ if (!source)
80
+ throw new errors_js_1.CompozyStreamError("Prompt stream has no body.");
81
+ let tail = "";
82
+ const body = new ReadableStream({
83
+ async pull(destination) {
84
+ const next = await source.read();
85
+ if (next.done) {
86
+ // The generated parser owns framing. Its current runtime silently discards
87
+ // an unterminated tail, so guard only the final wire delimiter here.
88
+ if (tail && !tail.replace(/\r\n/g, "\n").replace(/\r/g, "\n").endsWith("\n\n")) {
89
+ destination.error(new errors_js_1.CompozyStreamError("Prompt stream ended mid-frame."));
90
+ }
91
+ else
92
+ destination.close();
93
+ }
94
+ else {
95
+ tail = (tail + String.fromCharCode(...next.value.subarray(-4))).slice(-4);
96
+ destination.enqueue(next.value);
97
+ }
98
+ },
99
+ async cancel() {
100
+ await source.cancel();
101
+ },
102
+ });
103
+ const { stream } = (0, serverSentEvents_gen_js_1.createSseClient)({
104
+ url: response.url || "http://localhost/prompt",
105
+ fetch: async () => new Response(body, { headers: response.headers }),
106
+ signal: controller.signal,
107
+ sseMaxRetryAttempts: 1,
108
+ responseValidator: () => {
109
+ parsedJSON = true;
110
+ return Promise.resolve();
111
+ },
112
+ onSseEvent: ({ data }) => {
113
+ if (data === undefined)
114
+ return;
115
+ if (data === "[DONE]")
116
+ return;
117
+ if (!parsedJSON ||
118
+ !data ||
119
+ typeof data !== "object" ||
120
+ !("type" in data) ||
121
+ typeof data.type !== "string") {
122
+ throw new errors_js_1.CompozyStreamError("Prompt stream contains a malformed UI message chunk.");
123
+ }
124
+ parsedJSON = false;
125
+ },
126
+ onSseError: error => {
127
+ failure = error;
128
+ controller.abort();
129
+ },
130
+ });
131
+ let terminated = false;
132
+ try {
133
+ for await (const data of stream) {
134
+ if (signal?.aborted)
135
+ throw new errors_js_1.CompozyStreamError("Prompt stream was interrupted; the daemon turn continues.");
136
+ if (data === "[DONE]") {
137
+ terminated = true;
138
+ break;
139
+ }
140
+ const chunk = data;
141
+ if (chunk.type === "finish" || chunk.type === "abort")
142
+ terminated = true;
143
+ yield chunk;
144
+ }
145
+ if (failure || signal?.aborted) {
146
+ throw failure instanceof errors_js_1.CompozyStreamError
147
+ ? failure
148
+ : new errors_js_1.CompozyStreamError("Prompt stream was interrupted; the daemon turn continues.", {
149
+ cause: failure,
150
+ });
151
+ }
152
+ if (!terminated)
153
+ throw new errors_js_1.CompozyStreamError("Prompt stream ended before its terminal marker.");
154
+ }
155
+ finally {
156
+ controller.abort();
157
+ signal?.removeEventListener("abort", abort);
158
+ await stream.return();
159
+ await source.cancel().catch(() => { });
160
+ source.releaseLock();
161
+ }
162
+ }
163
+ function readable(iterable) {
164
+ const iterator = iterable[Symbol.asyncIterator]();
165
+ return new ReadableStream({
166
+ async pull(controller) {
167
+ try {
168
+ const next = await iterator.next();
169
+ if (next.done)
170
+ controller.close();
171
+ else
172
+ controller.enqueue(next.value);
173
+ }
174
+ catch (error) {
175
+ controller.error(error);
176
+ }
177
+ },
178
+ async cancel() {
179
+ await iterator.return?.();
180
+ },
181
+ });
182
+ }
183
+ //# sourceMappingURL=prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/prompt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CLIENT_VERSION = void 0;
4
+ /** Replaced in the published build by the release pipeline. */
5
+ exports.CLIENT_VERSION = "0.3.0-beta.36";
6
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAA,+DAA+D;AAClD,QAAA,cAAc,GAAG,WAAW,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { CompozyConfigError } from "./errors.js";
2
+ /** Replaces Node discovery in browser bundles; this module never reads process or files. */
3
+ export async function discover(options) {
4
+ const value = options.baseUrl ?? "http://localhost:2123";
5
+ try {
6
+ const url = new URL(value);
7
+ if (!["http:", "https:"].includes(url.protocol) ||
8
+ url.username ||
9
+ url.password ||
10
+ url.search ||
11
+ url.hash) {
12
+ throw new Error("expected an HTTP(S) URL without credentials, query, or fragment");
13
+ }
14
+ return { baseUrl: url.href.replace(/\/$/, "") };
15
+ }
16
+ catch (cause) {
17
+ throw new CompozyConfigError("Invalid baseUrl: expected an absolute HTTP(S) URL", { cause });
18
+ }
19
+ }
20
+ //# sourceMappingURL=browser-discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-discovery.js","sourceRoot":"","sources":["../../src/browser-discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,4FAA4F;AAC5F,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAG9B;IACC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,IAAI,uBAAuB,CAAC;IACzD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,IACE,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC3C,GAAG,CAAC,QAAQ;YACZ,GAAG,CAAC,QAAQ;YACZ,GAAG,CAAC,MAAM;YACV,GAAG,CAAC,IAAI,EACR,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACrF,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,kBAAkB,CAAC,mDAAmD,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/F,CAAC;AACH,CAAC"}