@jungjaehoon/mama-os 0.77.0 → 0.79.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 (338) hide show
  1. package/CHANGELOG.md +446 -0
  2. package/README.md +59 -30
  3. package/db/migrations/002-model-runs-parent-index.sql +11 -0
  4. package/db/migrations/003-upkeep-settled.sql +15 -0
  5. package/dist/api/google-read-actions.d.ts +30 -0
  6. package/dist/api/google-read-actions.d.ts.map +1 -0
  7. package/dist/api/google-read-actions.js +256 -0
  8. package/dist/api/google-read-actions.js.map +1 -0
  9. package/dist/api/record-actions.d.ts.map +1 -1
  10. package/dist/api/record-actions.js +23 -5
  11. package/dist/api/record-actions.js.map +1 -1
  12. package/dist/api/report-handler.d.ts +0 -6
  13. package/dist/api/report-handler.d.ts.map +1 -1
  14. package/dist/api/report-handler.js +0 -54
  15. package/dist/api/report-handler.js.map +1 -1
  16. package/dist/api/security-events.d.ts +1 -1
  17. package/dist/api/security-events.d.ts.map +1 -1
  18. package/dist/api/security-events.js +10 -1
  19. package/dist/api/security-events.js.map +1 -1
  20. package/dist/api/source-actions.d.ts +9 -0
  21. package/dist/api/source-actions.d.ts.map +1 -1
  22. package/dist/api/source-actions.js +49 -0
  23. package/dist/api/source-actions.js.map +1 -1
  24. package/dist/api/viewer-request-security.d.ts +14 -1
  25. package/dist/api/viewer-request-security.d.ts.map +1 -1
  26. package/dist/api/viewer-request-security.js +26 -3
  27. package/dist/api/viewer-request-security.js.map +1 -1
  28. package/dist/api/viewer-server.d.ts +8 -0
  29. package/dist/api/viewer-server.d.ts.map +1 -1
  30. package/dist/api/viewer-server.js +66 -0
  31. package/dist/api/viewer-server.js.map +1 -1
  32. package/dist/api/work-actions.d.ts +19 -2
  33. package/dist/api/work-actions.d.ts.map +1 -1
  34. package/dist/api/work-actions.js +42 -2
  35. package/dist/api/work-actions.js.map +1 -1
  36. package/dist/cli/commands/backfill.d.ts.map +1 -1
  37. package/dist/cli/commands/backfill.js +1 -0
  38. package/dist/cli/commands/backfill.js.map +1 -1
  39. package/dist/cli/commands/backup.d.ts +14 -0
  40. package/dist/cli/commands/backup.d.ts.map +1 -0
  41. package/dist/cli/commands/backup.js +174 -0
  42. package/dist/cli/commands/backup.js.map +1 -0
  43. package/dist/cli/commands/control.d.ts +44 -0
  44. package/dist/cli/commands/control.d.ts.map +1 -0
  45. package/dist/cli/commands/control.js +354 -0
  46. package/dist/cli/commands/control.js.map +1 -0
  47. package/dist/cli/commands/daemon.d.ts +60 -3
  48. package/dist/cli/commands/daemon.d.ts.map +1 -1
  49. package/dist/cli/commands/daemon.js +454 -78
  50. package/dist/cli/commands/daemon.js.map +1 -1
  51. package/dist/cli/commands/doctor.d.ts +13 -0
  52. package/dist/cli/commands/doctor.d.ts.map +1 -0
  53. package/dist/cli/commands/doctor.js +216 -0
  54. package/dist/cli/commands/doctor.js.map +1 -0
  55. package/dist/cli/commands/init-questions.d.ts +98 -0
  56. package/dist/cli/commands/init-questions.d.ts.map +1 -0
  57. package/dist/cli/commands/init-questions.js +420 -0
  58. package/dist/cli/commands/init-questions.js.map +1 -0
  59. package/dist/cli/commands/init-section.d.ts +13 -0
  60. package/dist/cli/commands/init-section.d.ts.map +1 -0
  61. package/dist/cli/commands/init-section.js +375 -0
  62. package/dist/cli/commands/init-section.js.map +1 -0
  63. package/dist/cli/commands/init.d.ts +56 -2
  64. package/dist/cli/commands/init.d.ts.map +1 -1
  65. package/dist/cli/commands/init.js +562 -350
  66. package/dist/cli/commands/init.js.map +1 -1
  67. package/dist/cli/commands/logs.d.ts +9 -0
  68. package/dist/cli/commands/logs.d.ts.map +1 -0
  69. package/dist/cli/commands/logs.js +109 -0
  70. package/dist/cli/commands/logs.js.map +1 -0
  71. package/dist/cli/commands/node-move.d.ts +20 -0
  72. package/dist/cli/commands/node-move.d.ts.map +1 -0
  73. package/dist/cli/commands/node-move.js +289 -0
  74. package/dist/cli/commands/node-move.js.map +1 -0
  75. package/dist/cli/commands/register-owner.d.ts +3 -0
  76. package/dist/cli/commands/register-owner.d.ts.map +1 -1
  77. package/dist/cli/commands/register-owner.js +14 -0
  78. package/dist/cli/commands/register-owner.js.map +1 -1
  79. package/dist/cli/commands/restore.d.ts +16 -0
  80. package/dist/cli/commands/restore.d.ts.map +1 -0
  81. package/dist/cli/commands/restore.js +137 -0
  82. package/dist/cli/commands/restore.js.map +1 -0
  83. package/dist/cli/commands/service.d.ts +44 -0
  84. package/dist/cli/commands/service.d.ts.map +1 -0
  85. package/dist/cli/commands/service.js +306 -0
  86. package/dist/cli/commands/service.js.map +1 -0
  87. package/dist/cli/commands/tools.d.ts +1 -1
  88. package/dist/cli/commands/tools.d.ts.map +1 -1
  89. package/dist/cli/commands/tools.js +8 -3
  90. package/dist/cli/commands/tools.js.map +1 -1
  91. package/dist/cli/commands/uninstall.d.ts +7 -0
  92. package/dist/cli/commands/uninstall.d.ts.map +1 -0
  93. package/dist/cli/commands/uninstall.js +335 -0
  94. package/dist/cli/commands/uninstall.js.map +1 -0
  95. package/dist/cli/commands/update.d.ts +59 -0
  96. package/dist/cli/commands/update.d.ts.map +1 -0
  97. package/dist/cli/commands/update.js +948 -0
  98. package/dist/cli/commands/update.js.map +1 -0
  99. package/dist/cli/index.js +74 -23
  100. package/dist/cli/index.js.map +1 -1
  101. package/dist/cli/launch-files.d.ts +119 -0
  102. package/dist/cli/launch-files.d.ts.map +1 -1
  103. package/dist/cli/launch-files.js +324 -15
  104. package/dist/cli/launch-files.js.map +1 -1
  105. package/dist/cli/prompt.d.ts +2 -1
  106. package/dist/cli/prompt.d.ts.map +1 -1
  107. package/dist/cli/prompt.js +5 -2
  108. package/dist/cli/prompt.js.map +1 -1
  109. package/dist/cli/runtime/backend-probe.d.ts +34 -0
  110. package/dist/cli/runtime/backend-probe.d.ts.map +1 -0
  111. package/dist/cli/runtime/backend-probe.js +83 -0
  112. package/dist/cli/runtime/backend-probe.js.map +1 -0
  113. package/dist/cli/runtime/backup.d.ts +130 -0
  114. package/dist/cli/runtime/backup.d.ts.map +1 -0
  115. package/dist/cli/runtime/backup.js +592 -0
  116. package/dist/cli/runtime/backup.js.map +1 -0
  117. package/dist/cli/runtime/daemon-control.d.ts +169 -0
  118. package/dist/cli/runtime/daemon-control.d.ts.map +1 -0
  119. package/dist/cli/runtime/daemon-control.js +441 -0
  120. package/dist/cli/runtime/daemon-control.js.map +1 -0
  121. package/dist/cli/runtime/default-roots.d.ts +27 -0
  122. package/dist/cli/runtime/default-roots.d.ts.map +1 -0
  123. package/dist/cli/runtime/default-roots.js +61 -0
  124. package/dist/cli/runtime/default-roots.js.map +1 -0
  125. package/dist/cli/runtime/diagnostics.d.ts +68 -0
  126. package/dist/cli/runtime/diagnostics.d.ts.map +1 -0
  127. package/dist/cli/runtime/diagnostics.js +1139 -0
  128. package/dist/cli/runtime/diagnostics.js.map +1 -0
  129. package/dist/cli/runtime/init-state.d.ts +20 -0
  130. package/dist/cli/runtime/init-state.d.ts.map +1 -0
  131. package/dist/cli/runtime/init-state.js +51 -0
  132. package/dist/cli/runtime/init-state.js.map +1 -0
  133. package/dist/cli/runtime/install-kind.d.ts +54 -0
  134. package/dist/cli/runtime/install-kind.d.ts.map +1 -0
  135. package/dist/cli/runtime/install-kind.js +164 -0
  136. package/dist/cli/runtime/install-kind.js.map +1 -0
  137. package/dist/cli/runtime/node-move-journal.d.ts +44 -0
  138. package/dist/cli/runtime/node-move-journal.d.ts.map +1 -0
  139. package/dist/cli/runtime/node-move-journal.js +48 -0
  140. package/dist/cli/runtime/node-move-journal.js.map +1 -0
  141. package/dist/cli/runtime/release-check.d.ts +94 -0
  142. package/dist/cli/runtime/release-check.d.ts.map +1 -0
  143. package/dist/cli/runtime/release-check.js +316 -0
  144. package/dist/cli/runtime/release-check.js.map +1 -0
  145. package/dist/cli/runtime/restore.d.ts +98 -0
  146. package/dist/cli/runtime/restore.d.ts.map +1 -0
  147. package/dist/cli/runtime/restore.js +756 -0
  148. package/dist/cli/runtime/restore.js.map +1 -0
  149. package/dist/cli/runtime/setup-page.d.ts +57 -0
  150. package/dist/cli/runtime/setup-page.d.ts.map +1 -0
  151. package/dist/cli/runtime/setup-page.js +266 -0
  152. package/dist/cli/runtime/setup-page.js.map +1 -0
  153. package/dist/cli/runtime/source-tools.d.ts +60 -0
  154. package/dist/cli/runtime/source-tools.d.ts.map +1 -0
  155. package/dist/cli/runtime/source-tools.js +170 -0
  156. package/dist/cli/runtime/source-tools.js.map +1 -0
  157. package/dist/cli/runtime/systemd-service.d.ts +13 -0
  158. package/dist/cli/runtime/systemd-service.d.ts.map +1 -0
  159. package/dist/cli/runtime/systemd-service.js +32 -0
  160. package/dist/cli/runtime/systemd-service.js.map +1 -0
  161. package/dist/cli/runtime/telegram-pairing.d.ts +73 -0
  162. package/dist/cli/runtime/telegram-pairing.d.ts.map +1 -0
  163. package/dist/cli/runtime/telegram-pairing.js +184 -0
  164. package/dist/cli/runtime/telegram-pairing.js.map +1 -0
  165. package/dist/cli/runtime/update-journal.d.ts +135 -0
  166. package/dist/cli/runtime/update-journal.d.ts.map +1 -0
  167. package/dist/cli/runtime/update-journal.js +144 -0
  168. package/dist/cli/runtime/update-journal.js.map +1 -0
  169. package/dist/cli/runtime/update-progress.d.ts +95 -0
  170. package/dist/cli/runtime/update-progress.d.ts.map +1 -0
  171. package/dist/cli/runtime/update-progress.js +154 -0
  172. package/dist/cli/runtime/update-progress.js.map +1 -0
  173. package/dist/cli/runtime/update-request.d.ts +58 -0
  174. package/dist/cli/runtime/update-request.d.ts.map +1 -0
  175. package/dist/cli/runtime/update-request.js +172 -0
  176. package/dist/cli/runtime/update-request.js.map +1 -0
  177. package/dist/connectors/calendar/index.d.ts +5 -1
  178. package/dist/connectors/calendar/index.d.ts.map +1 -1
  179. package/dist/connectors/calendar/index.js +19 -28
  180. package/dist/connectors/calendar/index.js.map +1 -1
  181. package/dist/connectors/chatwork/index.d.ts.map +1 -1
  182. package/dist/connectors/chatwork/index.js +7 -3
  183. package/dist/connectors/chatwork/index.js.map +1 -1
  184. package/dist/connectors/config-loader.d.ts +7 -1
  185. package/dist/connectors/config-loader.d.ts.map +1 -1
  186. package/dist/connectors/config-loader.js +11 -2
  187. package/dist/connectors/config-loader.js.map +1 -1
  188. package/dist/connectors/discord/index.d.ts.map +1 -1
  189. package/dist/connectors/discord/index.js +4 -3
  190. package/dist/connectors/discord/index.js.map +1 -1
  191. package/dist/connectors/drive/index.d.ts.map +1 -1
  192. package/dist/connectors/drive/index.js +15 -13
  193. package/dist/connectors/drive/index.js.map +1 -1
  194. package/dist/connectors/framework/gws-utils.d.ts +62 -0
  195. package/dist/connectors/framework/gws-utils.d.ts.map +1 -1
  196. package/dist/connectors/framework/gws-utils.js +133 -3
  197. package/dist/connectors/framework/gws-utils.js.map +1 -1
  198. package/dist/connectors/framework/polling-scheduler.d.ts.map +1 -1
  199. package/dist/connectors/framework/polling-scheduler.js +12 -11
  200. package/dist/connectors/framework/polling-scheduler.js.map +1 -1
  201. package/dist/connectors/framework/types.d.ts +24 -0
  202. package/dist/connectors/framework/types.d.ts.map +1 -1
  203. package/dist/connectors/framework/types.js +9 -0
  204. package/dist/connectors/framework/types.js.map +1 -1
  205. package/dist/connectors/gmail/index.d.ts.map +1 -1
  206. package/dist/connectors/gmail/index.js +14 -13
  207. package/dist/connectors/gmail/index.js.map +1 -1
  208. package/dist/connectors/imessage/index.d.ts.map +1 -1
  209. package/dist/connectors/imessage/index.js +2 -1
  210. package/dist/connectors/imessage/index.js.map +1 -1
  211. package/dist/connectors/index.d.ts +4 -4
  212. package/dist/connectors/index.d.ts.map +1 -1
  213. package/dist/connectors/index.js +4 -10
  214. package/dist/connectors/index.js.map +1 -1
  215. package/dist/connectors/notion/index.d.ts.map +1 -1
  216. package/dist/connectors/notion/index.js +5 -3
  217. package/dist/connectors/notion/index.js.map +1 -1
  218. package/dist/connectors/sheets/index.d.ts.map +1 -1
  219. package/dist/connectors/sheets/index.js +17 -12
  220. package/dist/connectors/sheets/index.js.map +1 -1
  221. package/dist/connectors/slack/index.d.ts.map +1 -1
  222. package/dist/connectors/slack/index.js +9 -3
  223. package/dist/connectors/slack/index.js.map +1 -1
  224. package/dist/connectors/telegram/index.d.ts.map +1 -1
  225. package/dist/connectors/telegram/index.js +4 -3
  226. package/dist/connectors/telegram/index.js.map +1 -1
  227. package/dist/connectors/trello/index.d.ts +1 -1
  228. package/dist/connectors/trello/index.d.ts.map +1 -1
  229. package/dist/connectors/trello/index.js +10 -5
  230. package/dist/connectors/trello/index.js.map +1 -1
  231. package/dist/gateways/discord.d.ts +6 -0
  232. package/dist/gateways/discord.d.ts.map +1 -1
  233. package/dist/gateways/discord.js +38 -27
  234. package/dist/gateways/discord.js.map +1 -1
  235. package/dist/gateways/slack.d.ts +6 -0
  236. package/dist/gateways/slack.d.ts.map +1 -1
  237. package/dist/gateways/slack.js +38 -27
  238. package/dist/gateways/slack.js.map +1 -1
  239. package/dist/gateways/telegram-commands.d.ts +124 -0
  240. package/dist/gateways/telegram-commands.d.ts.map +1 -0
  241. package/dist/gateways/telegram-commands.js +131 -0
  242. package/dist/gateways/telegram-commands.js.map +1 -0
  243. package/dist/gateways/telegram.d.ts +20 -0
  244. package/dist/gateways/telegram.d.ts.map +1 -1
  245. package/dist/gateways/telegram.js +138 -34
  246. package/dist/gateways/telegram.js.map +1 -1
  247. package/dist/gateways/turn-contract.d.ts +11 -0
  248. package/dist/gateways/turn-contract.d.ts.map +1 -1
  249. package/dist/runtime/action-surface.d.ts +1 -1
  250. package/dist/runtime/action-surface.d.ts.map +1 -1
  251. package/dist/runtime/action-surface.js +10 -0
  252. package/dist/runtime/action-surface.js.map +1 -1
  253. package/dist/runtime/backend-security.d.ts +26 -2
  254. package/dist/runtime/backend-security.d.ts.map +1 -1
  255. package/dist/runtime/backend-security.js +63 -10
  256. package/dist/runtime/backend-security.js.map +1 -1
  257. package/dist/runtime/config.d.ts +3 -0
  258. package/dist/runtime/config.d.ts.map +1 -1
  259. package/dist/runtime/config.js +4 -4
  260. package/dist/runtime/config.js.map +1 -1
  261. package/dist/runtime/connectors.d.ts +21 -1
  262. package/dist/runtime/connectors.d.ts.map +1 -1
  263. package/dist/runtime/connectors.js +28 -17
  264. package/dist/runtime/connectors.js.map +1 -1
  265. package/dist/runtime/core-db.d.ts.map +1 -1
  266. package/dist/runtime/core-db.js +2 -0
  267. package/dist/runtime/core-db.js.map +1 -1
  268. package/dist/runtime/member-paths.d.ts +15 -7
  269. package/dist/runtime/member-paths.d.ts.map +1 -1
  270. package/dist/runtime/member-paths.js +64 -12
  271. package/dist/runtime/member-paths.js.map +1 -1
  272. package/dist/runtime/member-session.d.ts +4 -0
  273. package/dist/runtime/member-session.d.ts.map +1 -1
  274. package/dist/runtime/member-session.js +23 -2
  275. package/dist/runtime/member-session.js.map +1 -1
  276. package/dist/runtime/native-session.d.ts +2 -0
  277. package/dist/runtime/native-session.d.ts.map +1 -1
  278. package/dist/runtime/native-session.js +1 -0
  279. package/dist/runtime/native-session.js.map +1 -1
  280. package/dist/runtime/owner-runtime.d.ts +63 -1
  281. package/dist/runtime/owner-runtime.d.ts.map +1 -1
  282. package/dist/runtime/owner-runtime.js +180 -3
  283. package/dist/runtime/owner-runtime.js.map +1 -1
  284. package/dist/runtime/owner-system-prompt.d.ts.map +1 -1
  285. package/dist/runtime/owner-system-prompt.js +6 -5
  286. package/dist/runtime/owner-system-prompt.js.map +1 -1
  287. package/dist/runtime/principal-access.d.ts +2 -0
  288. package/dist/runtime/principal-access.d.ts.map +1 -1
  289. package/dist/runtime/principal-access.js +7 -0
  290. package/dist/runtime/principal-access.js.map +1 -1
  291. package/dist/runtime/principal-sessions.d.ts.map +1 -1
  292. package/dist/runtime/principal-sessions.js +8 -1
  293. package/dist/runtime/principal-sessions.js.map +1 -1
  294. package/dist/runtime/record-orders.d.ts.map +1 -1
  295. package/dist/runtime/record-orders.js +3 -29
  296. package/dist/runtime/record-orders.js.map +1 -1
  297. package/dist/runtime/report-scheduler.d.ts +9 -2
  298. package/dist/runtime/report-scheduler.d.ts.map +1 -1
  299. package/dist/runtime/report-scheduler.js +37 -10
  300. package/dist/runtime/report-scheduler.js.map +1 -1
  301. package/dist/runtime/rotating-log.d.ts +44 -0
  302. package/dist/runtime/rotating-log.d.ts.map +1 -0
  303. package/dist/runtime/rotating-log.js +124 -0
  304. package/dist/runtime/rotating-log.js.map +1 -0
  305. package/dist/runtime/stimulus-delivery.d.ts +3 -0
  306. package/dist/runtime/stimulus-delivery.d.ts.map +1 -1
  307. package/dist/runtime/stimulus-delivery.js +19 -3
  308. package/dist/runtime/stimulus-delivery.js.map +1 -1
  309. package/dist/runtime/tools-paths.d.ts +7 -0
  310. package/dist/runtime/tools-paths.d.ts.map +1 -1
  311. package/dist/runtime/tools-paths.js +11 -5
  312. package/dist/runtime/tools-paths.js.map +1 -1
  313. package/dist/runtime/upkeep-close.d.ts +17 -0
  314. package/dist/runtime/upkeep-close.d.ts.map +1 -0
  315. package/dist/runtime/upkeep-close.js +127 -0
  316. package/dist/runtime/upkeep-close.js.map +1 -0
  317. package/dist/runtime/upkeep-orders.d.ts +124 -0
  318. package/dist/runtime/upkeep-orders.d.ts.map +1 -0
  319. package/dist/runtime/upkeep-orders.js +310 -0
  320. package/dist/runtime/upkeep-orders.js.map +1 -0
  321. package/dist/runtime/upkeep-reconcile.d.ts +25 -0
  322. package/dist/runtime/upkeep-reconcile.d.ts.map +1 -0
  323. package/dist/runtime/upkeep-reconcile.js +231 -0
  324. package/dist/runtime/upkeep-reconcile.js.map +1 -0
  325. package/dist/runtime/upkeep-writeback.d.ts +22 -0
  326. package/dist/runtime/upkeep-writeback.d.ts.map +1 -0
  327. package/dist/runtime/upkeep-writeback.js +203 -0
  328. package/dist/runtime/upkeep-writeback.js.map +1 -0
  329. package/dist/tools/document-toolkit.d.ts +2 -0
  330. package/dist/tools/document-toolkit.d.ts.map +1 -1
  331. package/dist/tools/document-toolkit.js +2 -0
  332. package/dist/tools/document-toolkit.js.map +1 -1
  333. package/dist/utils/untrusted-content.d.ts.map +1 -1
  334. package/dist/utils/untrusted-content.js +8 -1
  335. package/dist/utils/untrusted-content.js.map +1 -1
  336. package/install/install.sh +457 -0
  337. package/install/node.json +9 -0
  338. package/package.json +5 -5
@@ -0,0 +1,316 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultNpmRun = void 0;
4
+ exports.releaseCheckPath = releaseCheckPath;
5
+ exports.readReleaseCheck = readReleaseCheck;
6
+ exports.npmErrorCode = npmErrorCode;
7
+ exports.compareReleases = compareReleases;
8
+ exports.nodeSatisfies = nodeSatisfies;
9
+ exports.createReleaseCheck = createReleaseCheck;
10
+ exports.npmBesideNode = npmBesideNode;
11
+ exports.releaseReport = releaseReport;
12
+ const node_child_process_1 = require("node:child_process");
13
+ const node_fs_1 = require("node:fs");
14
+ const node_path_1 = require("node:path");
15
+ const node_util_1 = require("node:util");
16
+ const backend_security_js_1 = require("../../runtime/backend-security.js");
17
+ const launch_files_js_1 = require("../launch-files.js");
18
+ const install_kind_js_1 = require("./install-kind.js");
19
+ /** Under runtime/, which the agents' native reads deny with the rest of the credential paths. */
20
+ function releaseCheckPath(mamaRoot) {
21
+ return (0, node_path_1.join)(mamaRoot, 'runtime', 'release-check.json');
22
+ }
23
+ /** The file as the daemon wrote it, or null when no check has run yet. */
24
+ function readReleaseCheck(path) {
25
+ if (!(0, node_fs_1.existsSync)(path))
26
+ return null;
27
+ const value = JSON.parse((0, node_fs_1.readFileSync)(path, 'utf8'));
28
+ const text = (name, nullable) => typeof value[name] === 'string' || (nullable && value[name] === null);
29
+ if (value === null ||
30
+ typeof value !== 'object' ||
31
+ !text('checkedAt', false) ||
32
+ Number.isNaN(Date.parse(value.checkedAt)) ||
33
+ !text('current', false) ||
34
+ !text('latest', true) ||
35
+ !text('error', true)) {
36
+ throw new Error(`${path} is not a release check the daemon wrote`);
37
+ }
38
+ return value;
39
+ }
40
+ const NPM_TIMEOUT_MS = 60_000;
41
+ const defaultNpmRun = async (command, args, env, signal) => (await (0, node_util_1.promisify)(node_child_process_1.execFile)(command, args, {
42
+ env,
43
+ signal,
44
+ timeout: NPM_TIMEOUT_MS,
45
+ encoding: 'utf8',
46
+ })).stdout;
47
+ exports.defaultNpmRun = defaultNpmRun;
48
+ /**
49
+ * A failed npm call reduced to a code. npm's own (`npm error code E404`) comes first; then a
50
+ * spawn error's (ENOENT), a timeout, the exit status. Only a code's characters pass: PR 4 sends
51
+ * it to a chat a group reads, and stderr is npm's text.
52
+ */
53
+ function npmErrorCode(error) {
54
+ const failure = (error ?? {});
55
+ const npm = /^npm (?:error|ERR!) code (\S+)/m.exec(String(failure.stderr ?? ''))?.[1];
56
+ const code = npm ??
57
+ (typeof failure.code === 'string'
58
+ ? failure.code
59
+ : failure.killed === true
60
+ ? 'ETIMEDOUT'
61
+ : typeof failure.code === 'number'
62
+ ? `EXIT_${failure.code}`
63
+ : typeof failure.signal === 'string'
64
+ ? failure.signal
65
+ : 'UNKNOWN');
66
+ return /^[A-Za-z0-9_]{1,64}$/.test(code) ? code : 'UNKNOWN';
67
+ }
68
+ const SEMVER = /^(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/;
69
+ /**
70
+ * Two releases in semver precedence (semver.org, rule 11): major, minor, patch, then a version
71
+ * without a prerelease above one with it, then the prerelease's identifiers one by one (numbers
72
+ * numerically and below words, words in ASCII order, a longer list above its prefix). Build
73
+ * metadata does not count. A version that is not semver throws: there is no order to guess.
74
+ */
75
+ function compareReleases(left, right) {
76
+ const parse = (version) => {
77
+ const match = SEMVER.exec(version);
78
+ if (!match)
79
+ throw new Error(`${version} is not a semver version`);
80
+ return {
81
+ core: [match[1], match[2], match[3]].map(Number),
82
+ pre: match[4] === undefined ? null : match[4].split('.'),
83
+ };
84
+ };
85
+ const a = parse(left);
86
+ const b = parse(right);
87
+ for (let index = 0; index < 3; index += 1) {
88
+ if (a.core[index] !== b.core[index])
89
+ return a.core[index] - b.core[index];
90
+ }
91
+ if (a.pre === null || b.pre === null)
92
+ return a.pre === b.pre ? 0 : a.pre === null ? 1 : -1;
93
+ for (let index = 0; index < Math.min(a.pre.length, b.pre.length); index += 1) {
94
+ const [x, y] = [a.pre[index], b.pre[index]];
95
+ if (x === y)
96
+ continue;
97
+ const [xNumber, yNumber] = [/^\d+$/.test(x), /^\d+$/.test(y)];
98
+ if (xNumber && yNumber)
99
+ return Number(x) - Number(y);
100
+ if (xNumber !== yNumber)
101
+ return xNumber ? -1 : 1;
102
+ return x < y ? -1 : 1;
103
+ }
104
+ return a.pre.length - b.pre.length;
105
+ }
106
+ /**
107
+ * Whether a Node version (no `v`) is inside a package's `engines.node` range: comparators
108
+ * (`>=`, `>`, `<=`, `<`, `=`, bare), `^` and `~` on full or partial versions, `*` and `x`, joined
109
+ * by spaces (all hold) and `||` (any holds). Any other form throws with the range, so a target
110
+ * whose range cannot be read is refused rather than passed.
111
+ */
112
+ function nodeSatisfies(range, version) {
113
+ const cannot = () => {
114
+ throw new Error(`cannot read the engines range ${JSON.stringify(range)}`);
115
+ };
116
+ const at = (core) => core.join('.');
117
+ const compare = (op, core) => {
118
+ const order = compareReleases(version, at(core));
119
+ return op === '>='
120
+ ? order >= 0
121
+ : op === '>'
122
+ ? order > 0
123
+ : op === '<='
124
+ ? order <= 0
125
+ : op === '<'
126
+ ? order < 0
127
+ : order === 0;
128
+ };
129
+ /** Whether `version` meets one comparator. */
130
+ const holds = (token) => {
131
+ if (token === '*' || token === 'x' || token === 'X')
132
+ return true;
133
+ const match = /^(>=|<=|>|<|=|\^|~)?v?(\d+|[xX*])(?:\.(\d+|[xX*]))?(?:\.(\d+|[xX*]))?$/.exec(token);
134
+ if (!match)
135
+ return cannot();
136
+ const [, op = '', ...raw] = match;
137
+ const parts = raw.filter((part) => part !== undefined && !/^[xX*]$/.test(part)).map(Number);
138
+ // A wildcard is the end of the version: 22.x.5 is not a range.
139
+ const given = raw.findIndex((part) => part === undefined || /^[xX*]$/.test(part));
140
+ if (given !== -1 && raw.slice(given).some((part) => part !== undefined && /^\d+$/.test(part)))
141
+ return cannot();
142
+ const full = [...parts, 0, 0, 0].slice(0, 3);
143
+ const bump = (index) => full.map((part, at) => (at < index ? part : at === index ? part + 1 : 0));
144
+ if (op === '^') {
145
+ if (parts.length === 0)
146
+ return true;
147
+ // The first part given that is not 0 may not change; with none, the last part given.
148
+ const first = parts.findIndex((part) => part !== 0);
149
+ return compare('>=', full) && compare('<', bump(first === -1 ? parts.length - 1 : first));
150
+ }
151
+ if (op === '~') {
152
+ if (parts.length === 0)
153
+ return true;
154
+ return compare('>=', full) && compare('<', bump(parts.length === 1 ? 0 : 1));
155
+ }
156
+ if (parts.length === 3)
157
+ return compare(op === '' ? '=' : op, full);
158
+ // A partial version: bare and = mean any version under it; the others compare its bounds.
159
+ if (parts.length === 0)
160
+ return op === '' || op === '=' || op === '>=' || op === '<=';
161
+ const next = bump(parts.length - 1);
162
+ if (op === '' || op === '=')
163
+ return compare('>=', full) && compare('<', next);
164
+ if (op === '>=')
165
+ return compare('>=', full);
166
+ if (op === '<')
167
+ return compare('<', full);
168
+ if (op === '>')
169
+ return compare('>=', next);
170
+ return compare('<', next);
171
+ };
172
+ const alternatives = range.split('||').map((part) => part.trim());
173
+ if (alternatives.some((part) => part === ''))
174
+ return cannot();
175
+ // Every comparator is read, so a form this cannot read refuses even beside one that fails.
176
+ return alternatives
177
+ .map((part) => part
178
+ // `>= 22.13.0` is one comparator.
179
+ .replace(/(>=|<=|>|<|=|\^|~)\s+/g, '$1')
180
+ .split(/\s+/)
181
+ .map((token) => holds(token))
182
+ .every(Boolean))
183
+ .some(Boolean);
184
+ }
185
+ function day(at, timeZone) {
186
+ return new Intl.DateTimeFormat('en-CA', {
187
+ timeZone,
188
+ year: 'numeric',
189
+ month: '2-digit',
190
+ day: '2-digit',
191
+ }).format(at);
192
+ }
193
+ /**
194
+ * Once a day, ask the registry for MAMA OS's `latest` tag and write what it said. The day is the
195
+ * configured time zone's, read from the file, so a restart the same day makes no call; a daemon
196
+ * on a version other than the file's checks again, since the file then describes an older one.
197
+ * A failed check counts as the day's check: its code is shown until the next day's.
198
+ */
199
+ function createReleaseCheck(options) {
200
+ const run = options.run ?? exports.defaultNpmRun;
201
+ const env = (0, backend_security_js_1.backendEnvironment)(options.env ?? process.env);
202
+ const prefix = options.packageKind.kind === 'npm' ? ['--prefix', options.packageKind.prefix] : [];
203
+ const stopping = new AbortController();
204
+ const timers = [];
205
+ const tick = async () => {
206
+ const now = options.now?.() ?? new Date();
207
+ const zone = options.timeZone.get();
208
+ const previous = readReleaseCheck(options.statePath);
209
+ if (previous !== null &&
210
+ previous.current === options.current &&
211
+ day(new Date(previous.checkedAt), zone) === day(now, zone)) {
212
+ return;
213
+ }
214
+ let latest = null;
215
+ let error = null;
216
+ try {
217
+ const registry = (await run(options.npmPath, ['config', 'get', 'registry', '--no-update-notifier', ...prefix], env, stopping.signal)).trim();
218
+ const answer = (await run(options.npmPath, [
219
+ 'view',
220
+ install_kind_js_1.PACKAGE_NAME,
221
+ 'dist-tags.latest',
222
+ '--registry',
223
+ registry,
224
+ // npm's own update notice asks the registry again and writes ~/.npm, TTY or not.
225
+ '--no-update-notifier',
226
+ ...prefix,
227
+ ], env, stopping.signal)).trim();
228
+ if (!/^\d+\.\d+\.\d+\S*$/.test(answer)) {
229
+ throw Object.assign(new Error('npm view printed no version'), { code: 'ENOVERSION' });
230
+ }
231
+ latest = answer;
232
+ }
233
+ catch (failure) {
234
+ // A stop cut the call off; that is not what the registry said.
235
+ if (stopping.signal.aborted)
236
+ return;
237
+ error = npmErrorCode(failure);
238
+ }
239
+ const state = {
240
+ checkedAt: now.toISOString(),
241
+ current: options.current,
242
+ latest,
243
+ error,
244
+ };
245
+ const staged = `${options.statePath}.${process.pid}.tmp`;
246
+ (0, node_fs_1.writeFileSync)(staged, `${JSON.stringify(state, null, 2)}\n`, { mode: 0o600 });
247
+ (0, node_fs_1.renameSync)(staged, options.statePath);
248
+ options.log(error === null
249
+ ? `release check: latest=${latest} running=${options.current}`
250
+ : `release check: failed code=${error} running=${options.current}`);
251
+ };
252
+ const tickReported = () => {
253
+ tick().catch(options.onError);
254
+ };
255
+ return {
256
+ tick,
257
+ start: () => {
258
+ const first = setTimeout(tickReported, options.firstTickDelayMs ?? 60_000);
259
+ // Hourly: the first tick of a new day checks again.
260
+ const every = setInterval(tickReported, 60 * 60_000);
261
+ first.unref();
262
+ every.unref();
263
+ timers.push(() => clearTimeout(first), () => clearInterval(every));
264
+ },
265
+ stop: () => {
266
+ for (const cancel of timers.splice(0))
267
+ cancel();
268
+ stopping.abort();
269
+ },
270
+ };
271
+ }
272
+ /**
273
+ * The npm beside the Node start.sh pins (stableNodePath): Homebrew's running Node is its Cellar
274
+ * folder, which `brew upgrade node` removes while the daemon runs; the opt link stays.
275
+ */
276
+ function npmBesideNode(execPath = process.execPath, exists = node_fs_1.existsSync) {
277
+ return (0, node_path_1.join)((0, node_path_1.dirname)((0, launch_files_js_1.stableNodePath)(execPath, exists)), 'npm');
278
+ }
279
+ function localTime(iso) {
280
+ return new Date(Date.parse(iso)).toLocaleString('sv-SE');
281
+ }
282
+ /**
283
+ * What `mama status` and the doctor check `release` say, from the file alone; null when no check
284
+ * has run. A newer release names the update path of the kind the service runs.
285
+ */
286
+ function releaseReport(mamaRoot, home) {
287
+ let state;
288
+ try {
289
+ state = readReleaseCheck(releaseCheckPath(mamaRoot));
290
+ }
291
+ catch (error) {
292
+ return {
293
+ status: 'warn',
294
+ detail: 'the last release check cannot be read',
295
+ context: error instanceof Error ? error.message : String(error),
296
+ fix: 'remove runtime/release-check.json; the daemon checks again within the hour',
297
+ state: null,
298
+ };
299
+ }
300
+ if (state === null)
301
+ return null;
302
+ const at = localTime(state.checkedAt);
303
+ if (state.latest === null) {
304
+ return { status: 'warn', detail: `last check failed at ${at}: ${state.error}`, state };
305
+ }
306
+ if (compareReleases(state.latest, state.current) > 0) {
307
+ return {
308
+ status: 'warn',
309
+ detail: `newer release ${state.latest} (checked ${at}); the daemon runs ${state.current}`,
310
+ steps: (0, install_kind_js_1.updateSteps)((0, install_kind_js_1.installKind)(mamaRoot, home)),
311
+ state,
312
+ };
313
+ }
314
+ return { status: 'ok', detail: `${state.current} is current (checked ${at})`, state };
315
+ }
316
+ //# sourceMappingURL=release-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-check.js","sourceRoot":"","sources":["../../../src/cli/runtime/release-check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ import type { W1Config } from '../../runtime/config.js';
2
+ import { type BackupEntry, type BackupManifest, type ConfiguredPath } from './backup.js';
3
+ /**
4
+ * Stored paths MAMA reads back to open a file: attachments in mailbox payloads (turn orders) and
5
+ * in the connector event index (deferred deliveries). The raw stores' content hash covers their
6
+ * metadata, so they, observation versions (evidence) and tool traces (history) keep the paths
7
+ * they recorded.
8
+ */
9
+ export declare const PATH_COLUMNS: [string, string][];
10
+ export type TargetPaths = Record<string, string | null>;
11
+ /** Where an install keeps each configured path. */
12
+ export declare function targetPaths(config: W1Config, configPath: string, home: string): TargetPaths;
13
+ /** The archive reads its first entry as the manifest and checks it as untrusted. */
14
+ export declare function readManifest(archive: string): Promise<BackupManifest>;
15
+ /**
16
+ * Hold a manifest to what `mama backup` writes. Anyone who can write the backups folder can
17
+ * replace an archive, and an archive can come from elsewhere, so the rules are structural:
18
+ * known prefixes and safe relative paths, only the root names a backup keeps, nothing beneath a
19
+ * link (a backup never walks through one), credentials only in a backup that says it has them.
20
+ */
21
+ export declare function validateManifest(manifest: BackupManifest): void;
22
+ /**
23
+ * Extract the listed files and folders into a fresh folder and hold each to the manifest; links
24
+ * are made afterwards from the manifest itself (tar refuses absolute link targets, which a
25
+ * workspace can hold, and making them last means nothing is ever written through one).
26
+ */
27
+ export declare function extractVerified(archive: string, manifest: BackupManifest, staging: string): Promise<void>;
28
+ /** Set every entry's recorded mode: files first, then folders from the deepest up. */
29
+ export declare function applyModes(staging: string, entries: readonly BackupEntry[]): void;
30
+ /**
31
+ * The backup's config with this install's places: every path key takes the value this install's
32
+ * config gives it, or is removed so this install's default applies. Comments do not survive.
33
+ */
34
+ export declare function restoredConfigText(backupText: string, targetText: string): string;
35
+ /** Old folder roots (both recorded forms) and their new places, longest first. */
36
+ export declare function pathPairs(configured: Record<string, ConfiguredPath | null>, target: TargetPaths): [string, string][];
37
+ /** Replace, in one pass, each JSON string that starts with an old root by the new root. */
38
+ export declare function rewritePaths(text: string, pairs: readonly [string, string][]): string;
39
+ /**
40
+ * Rewrite stored attachment paths in a staged database. Update triggers on these tables would
41
+ * treat a changed row as a new event (connector_event_index renumbers its ingest sequence), so
42
+ * they are dropped and recreated from their own text around the update, in one transaction.
43
+ */
44
+ export declare function rewriteDatabase(path: string, columns: readonly [string, string][], pairs: readonly [string, string][]): number;
45
+ /** Host jobs in flight hold absolute paths and inode snapshots that cannot survive a move. */
46
+ export declare function hostJobsInFlight(path: string): number;
47
+ /** Remove a tree whose folders may be sealed read-only, without following links. */
48
+ export declare function removeTree(path: string): void;
49
+ /** One path to replace: the staged copy goes where the destination is. */
50
+ export interface SwitchUnit {
51
+ readonly staged: string;
52
+ readonly destination: string;
53
+ /** Files that belong with the destination and move with it (a database's -wal). */
54
+ readonly companions?: string[];
55
+ }
56
+ type StepState = 'planned' | 'moving-aside' | 'switching' | 'switched' | 'rolled-back';
57
+ interface JournalStep {
58
+ destination: string;
59
+ sibling: string;
60
+ aside: string;
61
+ companionEnds: string[];
62
+ existed: boolean;
63
+ state: StepState;
64
+ }
65
+ export interface RestoreJournal {
66
+ readonly id: string;
67
+ committed: boolean;
68
+ readonly steps: JournalStep[];
69
+ }
70
+ export declare function journalPath(root: string): string;
71
+ /**
72
+ * Put every staged copy in place. For each unit the copy moves beside its destination, the
73
+ * destination goes aside, and the copy takes its name. The journal records each step before it
74
+ * happens; a failure, or a later `mama restore --rollback`, puts every destination back from what
75
+ * is on disk. Nothing set aside is deleted until the journal says the whole switch held.
76
+ */
77
+ export declare function switchUnits(root: string, units: readonly SwitchUnit[], id: string, rename?: (from: string, to: string) => void): void;
78
+ /**
79
+ * Undo an uncommitted switch from what is on disk, then drop the journal. A committed switch
80
+ * held: its leftovers are cleared instead. Returns how many destinations were put back, or null
81
+ * when the switch had committed.
82
+ */
83
+ export declare function rollBack(root: string, rename?: (from: string, to: string) => void): number | null;
84
+ /** After a committed switch: drop what went aside, then the journal. */
85
+ export declare function finishSwitch(root: string): void;
86
+ /** Each archive prefix's destination, from the restored install's configuration by key. */
87
+ export declare function destinationOf(prefix: string, target: TargetPaths): string;
88
+ /** The archive prefixes present, in the manifest's order. */
89
+ export declare function prefixesIn(manifest: BackupManifest): string[];
90
+ /** The workspace's folder name when the backup kept it inside the MAMA root. */
91
+ export declare function workspaceInRoot(manifest: BackupManifest): string | null;
92
+ /** The units a prefix switches: a folder's children one by one, never the folder itself. */
93
+ export declare function unitsFor(prefix: string, staging: string, destination: string, manifest: BackupManifest, workspace?: string): SwitchUnit[];
94
+ /** The owner's Codex threads belong to the state before the restore; they start over. */
95
+ export declare function clearOwnerThreads(root: string): number;
96
+ export declare function newRestoreId(): string;
97
+ export {};
98
+ //# sourceMappingURL=restore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restore.d.ts","sourceRoot":"","sources":["../../../src/cli/runtime/restore.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAKL,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,aAAa,CAAC;AAoBrB;;;;;GAKG;AACH,eAAO,MAAM,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAG1C,CAAC;AAqBF,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;AAExD,mDAAmD;AACnD,wBAAgB,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAmB3F;AAqBD,oFAAoF;AACpF,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAwB3E;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAgF/D;AAYD;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CA4Cf;AAED,sFAAsF;AACtF,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,WAAW,EAAE,GAAG,IAAI,CAOjF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CA0BjF;AAED,kFAAkF;AAClF,wBAAgB,SAAS,CACvB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC,EACjD,MAAM,EAAE,WAAW,GAClB,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAWpB;AAED,2FAA2F;AAC3F,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,MAAM,CAMrF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EACpC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GACjC,MAAM,CAuCR;AAED,8FAA8F;AAC9F,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAsBrD;AAED,oFAAoF;AACpF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAU7C;AAED,0EAA0E;AAC1E,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,mFAAmF;IACnF,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC;AAED,KAAK,SAAS,GAAG,SAAS,GAAG,cAAc,GAAG,WAAW,GAAG,UAAU,GAAG,aAAa,CAAC;AAEvF,UAAU,WAAW;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC;CAC/B;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhD;AA6CD;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,SAAS,UAAU,EAAE,EAC5B,EAAE,EAAE,MAAM,EACV,MAAM,GAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,IAAiB,GACtD,IAAI,CAqDN;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CACtB,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,IAAiB,GACtD,MAAM,GAAG,IAAI,CAuCf;AAED,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAiB/C;AAED,2FAA2F;AAC3F,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,MAAM,CAYzE;AAED,6DAA6D;AAC7D,wBAAgB,UAAU,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,EAAE,CAO7D;AAED,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI,CAIvE;AAED,4FAA4F;AAC5F,wBAAgB,QAAQ,CACtB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,cAAc,EACxB,SAAS,CAAC,EAAE,MAAM,GACjB,UAAU,EAAE,CA0Cd;AAED,yFAAyF;AACzF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAYtD;AAED,wBAAgB,YAAY,IAAI,MAAM,CAErC"}