@intentic/machine 1.331.0 → 1.333.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 (257) hide show
  1. package/README.md +67 -8
  2. package/dist/app.d.ts.map +1 -1
  3. package/dist/app.js +1 -1
  4. package/dist/app.js.map +1 -1
  5. package/dist/autostart/autostart.js +1 -1
  6. package/dist/autostart/autostart.js.map +1 -1
  7. package/dist/cli-ui.d.ts +10 -0
  8. package/dist/cli-ui.d.ts.map +1 -0
  9. package/dist/cli-ui.js +62 -0
  10. package/dist/cli-ui.js.map +1 -0
  11. package/dist/commands.d.ts.map +1 -1
  12. package/dist/commands.js +61 -26
  13. package/dist/commands.js.map +1 -1
  14. package/dist/daemon-base.d.ts +1 -0
  15. package/dist/daemon-base.d.ts.map +1 -1
  16. package/dist/daemon-base.js +21 -18
  17. package/dist/daemon-base.js.map +1 -1
  18. package/dist/device/audit.d.ts.map +1 -1
  19. package/dist/device/audit.js.map +1 -1
  20. package/dist/device/commands.d.ts +8 -6
  21. package/dist/device/commands.d.ts.map +1 -1
  22. package/dist/device/commands.js +64 -42
  23. package/dist/device/commands.js.map +1 -1
  24. package/dist/device/connection.d.ts.map +1 -1
  25. package/dist/device/connection.js +2 -3
  26. package/dist/device/connection.js.map +1 -1
  27. package/dist/device/grant.d.ts +7 -0
  28. package/dist/device/grant.d.ts.map +1 -1
  29. package/dist/device/loopback-catch.d.ts.map +1 -1
  30. package/dist/device/loopback-catch.js +1 -1
  31. package/dist/device/loopback-catch.js.map +1 -1
  32. package/dist/device/mcp.d.ts.map +1 -1
  33. package/dist/device/mcp.js +19 -0
  34. package/dist/device/mcp.js.map +1 -1
  35. package/dist/device/policy.d.ts.map +1 -1
  36. package/dist/device/policy.js +3 -5
  37. package/dist/device/policy.js.map +1 -1
  38. package/dist/device/router.d.ts +7 -0
  39. package/dist/device/router.d.ts.map +1 -1
  40. package/dist/device/router.js +17 -5
  41. package/dist/device/router.js.map +1 -1
  42. package/dist/device/sandbox-cli.d.ts +12 -1
  43. package/dist/device/sandbox-cli.d.ts.map +1 -1
  44. package/dist/device/sandbox-cli.js +90 -18
  45. package/dist/device/sandbox-cli.js.map +1 -1
  46. package/dist/device/sandbox-rounds/ic-swaps.d.ts +11 -0
  47. package/dist/device/sandbox-rounds/ic-swaps.d.ts.map +1 -0
  48. package/dist/device/sandbox-rounds/ic-swaps.js +40 -0
  49. package/dist/device/sandbox-rounds/ic-swaps.js.map +1 -0
  50. package/dist/device/sandbox-rounds/keeper.d.ts +26 -1
  51. package/dist/device/sandbox-rounds/keeper.d.ts.map +1 -1
  52. package/dist/device/sandbox-rounds/keeper.js +118 -20
  53. package/dist/device/sandbox-rounds/keeper.js.map +1 -1
  54. package/dist/device/sandbox-rounds/probation-watch.d.ts +1 -1
  55. package/dist/device/sandbox-rounds/probation-watch.d.ts.map +1 -1
  56. package/dist/device/sandbox-rounds/probation-watch.js +2 -2
  57. package/dist/device/sandbox-rounds/probation-watch.js.map +1 -1
  58. package/dist/device/sandbox-rounds/sleep.d.ts +52 -0
  59. package/dist/device/sandbox-rounds/sleep.d.ts.map +1 -0
  60. package/dist/device/sandbox-rounds/sleep.js +115 -0
  61. package/dist/device/sandbox-rounds/sleep.js.map +1 -0
  62. package/dist/device/sandbox-rounds/swap-records.d.ts +1 -5
  63. package/dist/device/sandbox-rounds/swap-records.d.ts.map +1 -1
  64. package/dist/device/sandbox-rounds/swap-records.js +2 -33
  65. package/dist/device/sandbox-rounds/swap-records.js.map +1 -1
  66. package/dist/device/sandbox-rounds/swaps-fallback.d.ts +7 -0
  67. package/dist/device/sandbox-rounds/swaps-fallback.d.ts.map +1 -0
  68. package/dist/device/sandbox-rounds/swaps-fallback.js +44 -0
  69. package/dist/device/sandbox-rounds/swaps-fallback.js.map +1 -0
  70. package/dist/device/tools/agent.js +3 -3
  71. package/dist/device/tools/agent.js.map +1 -1
  72. package/dist/device/tools/android.d.ts.map +1 -1
  73. package/dist/device/tools/android.js +7 -62
  74. package/dist/device/tools/android.js.map +1 -1
  75. package/dist/device/tools/apps.d.ts.map +1 -1
  76. package/dist/device/tools/apps.js +7 -1
  77. package/dist/device/tools/apps.js.map +1 -1
  78. package/dist/device/tools/describe.d.ts +6 -0
  79. package/dist/device/tools/describe.d.ts.map +1 -1
  80. package/dist/device/tools/describe.js +30 -9
  81. package/dist/device/tools/describe.js.map +1 -1
  82. package/dist/device/tools/device.d.ts.map +1 -1
  83. package/dist/device/tools/device.js +2 -1
  84. package/dist/device/tools/device.js.map +1 -1
  85. package/dist/device/tools/ic-binary.d.ts +7 -0
  86. package/dist/device/tools/ic-binary.d.ts.map +1 -1
  87. package/dist/device/tools/ic-binary.js +16 -8
  88. package/dist/device/tools/ic-binary.js.map +1 -1
  89. package/dist/device/tools/logs/logs.d.ts +30 -0
  90. package/dist/device/tools/logs/logs.d.ts.map +1 -0
  91. package/dist/device/tools/logs/logs.js +147 -0
  92. package/dist/device/tools/logs/logs.js.map +1 -0
  93. package/dist/device/tools/programs/artifacts.d.ts.map +1 -1
  94. package/dist/device/tools/programs/artifacts.js +5 -10
  95. package/dist/device/tools/programs/artifacts.js.map +1 -1
  96. package/dist/device/tools/programs/{tunnel.d.ts → device-tunnel.d.ts} +1 -1
  97. package/dist/device/tools/programs/device-tunnel.d.ts.map +1 -0
  98. package/dist/device/tools/programs/{tunnel.js → device-tunnel.js} +1 -1
  99. package/dist/device/tools/programs/device-tunnel.js.map +1 -0
  100. package/dist/device/tools/programs/isolated.d.ts +0 -1
  101. package/dist/device/tools/programs/isolated.d.ts.map +1 -1
  102. package/dist/device/tools/programs/isolated.js +8 -10
  103. package/dist/device/tools/programs/isolated.js.map +1 -1
  104. package/dist/device/tools/programs/programs.d.ts +1 -1
  105. package/dist/device/tools/programs/programs.d.ts.map +1 -1
  106. package/dist/device/tools/programs/programs.js +89 -35
  107. package/dist/device/tools/programs/programs.js.map +1 -1
  108. package/dist/device/tools/sandboxes.d.ts.map +1 -1
  109. package/dist/device/tools/sandboxes.js +11 -10
  110. package/dist/device/tools/sandboxes.js.map +1 -1
  111. package/dist/device/tools/shell.d.ts +6 -5
  112. package/dist/device/tools/shell.d.ts.map +1 -1
  113. package/dist/device/tools/shell.js +37 -86
  114. package/dist/device/tools/shell.js.map +1 -1
  115. package/dist/engine-env.d.ts +15 -0
  116. package/dist/engine-env.d.ts.map +1 -0
  117. package/dist/engine-env.js +80 -0
  118. package/dist/engine-env.js.map +1 -0
  119. package/dist/environments/auto-upgrade.d.ts +2 -2
  120. package/dist/environments/auto-upgrade.d.ts.map +1 -1
  121. package/dist/environments/auto-upgrade.js +3 -5
  122. package/dist/environments/auto-upgrade.js.map +1 -1
  123. package/dist/environments/commands.d.ts +7 -1
  124. package/dist/environments/commands.d.ts.map +1 -1
  125. package/dist/environments/commands.js +37 -31
  126. package/dist/environments/commands.js.map +1 -1
  127. package/dist/environments/machine-upgrade.d.ts +8 -1
  128. package/dist/environments/machine-upgrade.d.ts.map +1 -1
  129. package/dist/environments/machine-upgrade.js +35 -26
  130. package/dist/environments/machine-upgrade.js.map +1 -1
  131. package/dist/environments/machine.d.ts +5 -4
  132. package/dist/environments/machine.d.ts.map +1 -1
  133. package/dist/environments/machine.js +13 -16
  134. package/dist/environments/machine.js.map +1 -1
  135. package/dist/environments/wsl.d.ts.map +1 -1
  136. package/dist/environments/wsl.js +4 -7
  137. package/dist/environments/wsl.js.map +1 -1
  138. package/dist/install.d.ts.map +1 -1
  139. package/dist/install.js +28 -30
  140. package/dist/install.js.map +1 -1
  141. package/dist/resident/last-exit.d.ts +40 -0
  142. package/dist/resident/last-exit.d.ts.map +1 -0
  143. package/dist/resident/last-exit.js +147 -0
  144. package/dist/resident/last-exit.js.map +1 -0
  145. package/dist/resident/log-roll.d.ts +8 -0
  146. package/dist/resident/log-roll.d.ts.map +1 -0
  147. package/dist/resident/log-roll.js +30 -0
  148. package/dist/resident/log-roll.js.map +1 -0
  149. package/dist/{resident.d.ts → resident/resident.d.ts} +1 -1
  150. package/dist/resident/resident.d.ts.map +1 -0
  151. package/dist/{resident.js → resident/resident.js} +52 -27
  152. package/dist/resident/resident.js.map +1 -0
  153. package/dist/{supervision.d.ts → resident/supervision.d.ts} +7 -3
  154. package/dist/resident/supervision.d.ts.map +1 -0
  155. package/dist/{supervision.js → resident/supervision.js} +20 -16
  156. package/dist/resident/supervision.js.map +1 -0
  157. package/dist/resident/watchdog.d.ts +24 -0
  158. package/dist/resident/watchdog.d.ts.map +1 -0
  159. package/dist/resident/watchdog.js +69 -0
  160. package/dist/resident/watchdog.js.map +1 -0
  161. package/dist/status.d.ts +14 -8
  162. package/dist/status.d.ts.map +1 -1
  163. package/dist/status.js +141 -107
  164. package/dist/status.js.map +1 -1
  165. package/dist/sync/attach-commands.d.ts +1 -1
  166. package/dist/sync/attach-commands.d.ts.map +1 -1
  167. package/dist/sync/attach-commands.js +19 -12
  168. package/dist/sync/attach-commands.js.map +1 -1
  169. package/dist/sync/commands.d.ts +6 -3
  170. package/dist/sync/commands.d.ts.map +1 -1
  171. package/dist/sync/commands.js +149 -113
  172. package/dist/sync/commands.js.map +1 -1
  173. package/dist/sync/exec.d.ts +9 -0
  174. package/dist/sync/exec.d.ts.map +1 -1
  175. package/dist/sync/exec.js +21 -22
  176. package/dist/sync/exec.js.map +1 -1
  177. package/dist/sync/folders.d.ts.map +1 -1
  178. package/dist/sync/folders.js +3 -14
  179. package/dist/sync/folders.js.map +1 -1
  180. package/dist/sync/forget-command.d.ts +1 -1
  181. package/dist/sync/forget-command.d.ts.map +1 -1
  182. package/dist/sync/forget-command.js +10 -7
  183. package/dist/sync/forget-command.js.map +1 -1
  184. package/dist/sync/git-bridge.d.ts.map +1 -1
  185. package/dist/sync/git-bridge.js +4 -2
  186. package/dist/sync/git-bridge.js.map +1 -1
  187. package/dist/sync/local-sandboxes.d.ts.map +1 -1
  188. package/dist/sync/local-sandboxes.js +2 -4
  189. package/dist/sync/local-sandboxes.js.map +1 -1
  190. package/dist/sync/mirror.d.ts.map +1 -1
  191. package/dist/sync/mirror.js +9 -18
  192. package/dist/sync/mirror.js.map +1 -1
  193. package/dist/sync/mutagen.d.ts.map +1 -1
  194. package/dist/sync/mutagen.js +33 -37
  195. package/dist/sync/mutagen.js.map +1 -1
  196. package/dist/sync/project/project-commands.d.ts +7 -2
  197. package/dist/sync/project/project-commands.d.ts.map +1 -1
  198. package/dist/sync/project/project-commands.js +110 -46
  199. package/dist/sync/project/project-commands.js.map +1 -1
  200. package/dist/sync/project/project-files.d.ts +4 -6
  201. package/dist/sync/project/project-files.d.ts.map +1 -1
  202. package/dist/sync/project/project-files.js +4 -6
  203. package/dist/sync/project/project-files.js.map +1 -1
  204. package/dist/sync/project/project-local.d.ts.map +1 -1
  205. package/dist/sync/project/project-local.js +3 -19
  206. package/dist/sync/project/project-local.js.map +1 -1
  207. package/dist/sync/project/project-remote.js +4 -4
  208. package/dist/sync/project/project-transfer.d.ts +13 -30
  209. package/dist/sync/project/project-transfer.d.ts.map +1 -1
  210. package/dist/sync/project/project-transfer.js +1 -1
  211. package/dist/sync/project/project-transfer.js.map +1 -1
  212. package/dist/sync/retire.d.ts.map +1 -1
  213. package/dist/sync/retire.js +3 -3
  214. package/dist/sync/retire.js.map +1 -1
  215. package/dist/sync/siblings.d.ts.map +1 -1
  216. package/dist/sync/siblings.js +3 -6
  217. package/dist/sync/siblings.js.map +1 -1
  218. package/dist/sync/ssh.d.ts +1 -1
  219. package/dist/sync/ssh.d.ts.map +1 -1
  220. package/dist/sync/ssh.js +8 -7
  221. package/dist/sync/ssh.js.map +1 -1
  222. package/dist/sync/swap-pause.d.ts.map +1 -1
  223. package/dist/sync/swap-pause.js +2 -2
  224. package/dist/sync/swap-pause.js.map +1 -1
  225. package/dist/upgrade.d.ts +7 -0
  226. package/dist/upgrade.d.ts.map +1 -1
  227. package/dist/upgrade.js +24 -13
  228. package/dist/upgrade.js.map +1 -1
  229. package/dist/upkeep/doctor.d.ts +4 -2
  230. package/dist/upkeep/doctor.d.ts.map +1 -1
  231. package/dist/upkeep/doctor.js +40 -26
  232. package/dist/upkeep/doctor.js.map +1 -1
  233. package/dist/upkeep/login.js +1 -1
  234. package/dist/upkeep/login.js.map +1 -1
  235. package/dist/upkeep/retention.d.ts +6 -0
  236. package/dist/upkeep/retention.d.ts.map +1 -1
  237. package/dist/upkeep/retention.js +55 -3
  238. package/dist/upkeep/retention.js.map +1 -1
  239. package/dist/upkeep/retired.js +1 -1
  240. package/dist/upkeep/retired.js.map +1 -1
  241. package/dist/upkeep/second-ic.d.ts.map +1 -1
  242. package/dist/upkeep/second-ic.js +4 -6
  243. package/dist/upkeep/second-ic.js.map +1 -1
  244. package/dist/upkeep/trash.d.ts.map +1 -1
  245. package/dist/upkeep/trash.js +5 -6
  246. package/dist/upkeep/trash.js.map +1 -1
  247. package/package.json +9 -9
  248. package/dist/device/tools/programs/tunnel.d.ts.map +0 -1
  249. package/dist/device/tools/programs/tunnel.js.map +0 -1
  250. package/dist/resident.d.ts.map +0 -1
  251. package/dist/resident.js.map +0 -1
  252. package/dist/supervision.d.ts.map +0 -1
  253. package/dist/supervision.js.map +0 -1
  254. package/dist/watchdog.d.ts +0 -13
  255. package/dist/watchdog.d.ts.map +0 -1
  256. package/dist/watchdog.js +0 -38
  257. package/dist/watchdog.js.map +0 -1
@@ -0,0 +1,24 @@
1
+ import type { ExitRecord } from "./last-exit.js";
2
+ export declare const WATCHDOG_PING_MS = 5000;
3
+ export declare const WATCHDOG_STALL_MS: number;
4
+ export declare const stalledFor: (lastPing: number, now: number, limitMs: number) => number | undefined;
5
+ export declare const pausedAcross: (previousCheck: number, now: number, checkMs: number, limitMs: number) => boolean;
6
+ export declare const wallJump: (previousCheck: number, now: number, previousWall: number, wall: number) => number;
7
+ export declare const WALL_JUMP_MS = 10000;
8
+ export declare const AFTER_SLEEP_MS: number;
9
+ export declare const sleepLine: (seconds: number, at: Date) => string;
10
+ export declare const stallLine: (seconds: number, at: Date, sinceSleepSeconds?: number) => string;
11
+ export interface WatchdogRecord {
12
+ readonly path: string;
13
+ readonly base: ExitRecord;
14
+ }
15
+ export interface Watchdog {
16
+ readonly stop: () => void;
17
+ readonly record: (record: WatchdogRecord) => void;
18
+ }
19
+ export declare const startWatchdog: ({ pingMs, limitMs, jumpMs, }?: {
20
+ readonly pingMs?: number;
21
+ readonly limitMs?: number;
22
+ readonly jumpMs?: number;
23
+ }) => Watchdog;
24
+ //# sourceMappingURL=watchdog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watchdog.d.ts","sourceRoot":"","sources":["../../src/resident/watchdog.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAsBjD,eAAO,MAAM,gBAAgB,OAAQ,CAAC;AACtC,eAAO,MAAM,iBAAiB,QAAa,CAAC;AAK5C,eAAO,MAAM,UAAU,aAAc,MAAM,OAAO,MAAM,WAAW,MAAM,KAAG,MAAM,GAAG,SACN,CAAC;AAQhF,eAAO,MAAM,YAAY,kBAAmB,MAAM,OAAO,MAAM,WAAW,MAAM,WAAW,MAAM,KAAG,OACvB,CAAC;AAO9E,eAAO,MAAM,QAAQ,kBAAmB,MAAM,OAAO,MAAM,gBAAgB,MAAM,QAAQ,MAAM,KAAG,MAAqD,CAAC;AAIxJ,eAAO,MAAM,YAAY,QAAS,CAAC;AAGnC,eAAO,MAAM,cAAc,QAAc,CAAC;AAG1C,eAAO,MAAM,SAAS,YAAa,MAAM,MAAM,IAAI,KAAG,MACmH,CAAC;AAI1K,eAAO,MAAM,SAAS,YAAa,MAAM,MAAM,IAAI,sBAAsB,MAAM,KAAG,MACiI,CAAC;AAmDpN,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC7B;AAED,MAAM,WAAW,QAAQ;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC;IAE1B,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;CACrD;AAID,eAAO,MAAM,aAAa,kCAIvB;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,KAAQ,QAiB3F,CAAC"}
@@ -0,0 +1,69 @@
1
+ import { Worker } from "node:worker_threads";
2
+ export const WATCHDOG_PING_MS = 5_000;
3
+ export const WATCHDOG_STALL_MS = 3 * 60_000;
4
+ export const stalledFor = (lastPing, now, limitMs) => now - lastPing >= limitMs ? Math.round((now - lastPing) / 1000) : undefined;
5
+ export const pausedAcross = (previousCheck, now, checkMs, limitMs) => now - previousCheck >= Math.min(Math.max(checkMs * 3, 3000), limitMs / 2);
6
+ export const wallJump = (previousCheck, now, previousWall, wall) => wall - previousWall - (now - previousCheck);
7
+ export const WALL_JUMP_MS = 10_000;
8
+ export const AFTER_SLEEP_MS = 10 * 60_000;
9
+ export const sleepLine = (seconds, at) => `[${at.toISOString()}] watchdog: the agent was paused for ${seconds} s (suspected sleep/resume, or the clock was set forward); not a stall, the count starts again\n`;
10
+ export const stallLine = (seconds, at, sinceSleepSeconds) => `[${at.toISOString()}] event loop stalled for ${seconds} s${sinceSleepSeconds === undefined ? "" : ` (${sinceSleepSeconds} s after a suspected sleep/resume)`}; exiting so the supervisor restarts the agent\n`;
11
+ const WORKER_SOURCE = `
12
+ const { parentPort, workerData } = require("node:worker_threads");
13
+ const { writeSync, writeFileSync } = require("node:fs");
14
+ const stalledFor = ${stalledFor.toString()};
15
+ const stallLine = ${stallLine.toString()};
16
+ const sleepLine = ${sleepLine.toString()};
17
+ const pausedAcross = ${pausedAcross.toString()};
18
+ const wallJump = ${wallJump.toString()};
19
+ const say = (line) => { try { writeSync(2, line); } catch { /* allow(silent-catch): a log that will not take the line must not keep a hung agent alive */ } };
20
+ let last = performance.now();
21
+ let checked = last;
22
+ let checkedWall = Date.now();
23
+ let sleptAt;
24
+ let record;
25
+ parentPort.on("message", (message) => {
26
+ last = performance.now();
27
+ if (typeof message === "object" && message !== null) record = message;
28
+ });
29
+ setInterval(() => {
30
+ const now = performance.now();
31
+ const wall = Date.now();
32
+ const jump = wallJump(checked, now, checkedWall, wall);
33
+ if (pausedAcross(checked, now, workerData.checkMs, workerData.limitMs) || jump >= workerData.jumpMs) {
34
+ last = now;
35
+ sleptAt = now;
36
+ say(sleepLine(Math.round(Math.max(wall - checkedWall, now - checked) / 1000), new Date()));
37
+ }
38
+ checked = now;
39
+ checkedWall = wall;
40
+ const seconds = stalledFor(last, now, workerData.limitMs);
41
+ if (seconds === undefined) return;
42
+ const sinceSleep = sleptAt !== undefined && now - sleptAt <= workerData.afterSleepMs ? Math.round((now - sleptAt) / 1000) : undefined;
43
+ const line = stallLine(seconds, new Date(), sinceSleep);
44
+ say(line);
45
+ if (record !== undefined) {
46
+ try {
47
+ writeFileSync(record.path, JSON.stringify({ ...record.base, reason: "watchdog", at: new Date().toISOString(), detail: line.slice(line.indexOf("]") + 2).trim() }) + "\\n");
48
+ } catch { /* allow(silent-catch): an unwritten record must not keep a hung agent alive; the line above says it */ }
49
+ }
50
+ process.kill(process.pid, "SIGKILL");
51
+ }, workerData.checkMs);
52
+ `;
53
+ export const startWatchdog = ({ pingMs = WATCHDOG_PING_MS, limitMs = WATCHDOG_STALL_MS, jumpMs = WALL_JUMP_MS, } = {}) => {
54
+ const worker = new Worker(WORKER_SOURCE, {
55
+ eval: true,
56
+ workerData: { limitMs, checkMs: Math.min(pingMs, limitMs), jumpMs, afterSleepMs: AFTER_SLEEP_MS },
57
+ });
58
+ worker.unref();
59
+ const ping = setInterval(() => worker.postMessage(0), pingMs);
60
+ ping.unref();
61
+ return {
62
+ stop: () => {
63
+ clearInterval(ping);
64
+ void worker.terminate();
65
+ },
66
+ record: (record) => worker.postMessage(record),
67
+ };
68
+ };
69
+ //# sourceMappingURL=watchdog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watchdog.js","sourceRoot":"","sources":["../../src/resident/watchdog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAuB7C,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AACtC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAG,MAAM,CAAC;AAK5C,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,QAAgB,EAAE,GAAW,EAAE,OAAe,EAAsB,EAAE,CAC7F,GAAG,GAAG,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAQhF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,aAAqB,EAAE,GAAW,EAAE,OAAe,EAAE,OAAe,EAAW,EAAE,CAC1G,GAAG,GAAG,aAAa,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;AAO9E,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,aAAqB,EAAE,GAAW,EAAE,YAAoB,EAAE,IAAY,EAAU,EAAE,CAAC,IAAI,GAAG,YAAY,GAAG,CAAC,GAAG,GAAG,aAAa,CAAC,CAAC;AAIxJ,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC;AAGnC,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,GAAG,MAAM,CAAC;AAG1C,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAe,EAAE,EAAQ,EAAU,EAAE,CAC3D,IAAI,EAAE,CAAC,WAAW,EAAE,wCAAwC,OAAO,kGAAkG,CAAC;AAI1K,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAe,EAAE,EAAQ,EAAE,iBAA0B,EAAU,EAAE,CACvF,IAAI,EAAE,CAAC,WAAW,EAAE,4BAA4B,OAAO,KAAK,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,iBAAiB,oCAAoC,kDAAkD,CAAC;AAOpN,MAAM,aAAa,GAAG;;;qBAGD,UAAU,CAAC,QAAQ,EAAE;oBACtB,SAAS,CAAC,QAAQ,EAAE;oBACpB,SAAS,CAAC,QAAQ,EAAE;uBACjB,YAAY,CAAC,QAAQ,EAAE;mBAC3B,QAAQ,CAAC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkCrC,CAAC;AAgBF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC1B,MAAM,GAAG,gBAAgB,EACzB,OAAO,GAAG,iBAAiB,EAC3B,MAAM,GAAG,YAAY,GACxB,GAAsF,EAAE,EAAY,EAAE;IACnG,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,aAAa,EAAE;QACrC,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE;KACpG,CAAC,CAAC;IACH,MAAM,CAAC,KAAK,EAAE,CAAC;IAEf,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC9D,IAAI,CAAC,KAAK,EAAE,CAAC;IACb,OAAO;QACH,IAAI,EAAE,GAAG,EAAE;YACP,aAAa,CAAC,IAAI,CAAC,CAAC;YACpB,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;QAC5B,CAAC;QAED,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;KACjD,CAAC;AACN,CAAC,CAAC"}
package/dist/status.d.ts CHANGED
@@ -1,6 +1,7 @@
1
- import type { DeviceScopes, DeviceReport } from "@intentic/sandbox-contract";
1
+ import type { Item } from "@intentic/local-agent";
2
+ import type { DeviceScopes, DevicePort, DeviceReport } from "@intentic/sandbox-contract";
2
3
  import type { PeerLinkState } from "@intentic/sandbox-contract/peer-dial";
3
- import { type CommandContext } from "@stricli/core";
4
+ import type { CommandContext } from "@stricli/core";
4
5
  export interface DeviceStatus {
5
6
  readonly version: string;
6
7
  readonly running?: number;
@@ -19,11 +20,16 @@ export interface StatusLink {
19
20
  }
20
21
  export declare const statusSummary: (running: number | undefined, links: number, sync: DeviceReport, now: number, connected?: number) => string;
21
22
  export declare const deviceStatus: (mutagen: string | undefined) => Promise<DeviceStatus>;
22
- export declare const conflictLines: (pairing: DeviceReport["pairings"][number]) => string[];
23
- export declare const pairingLine: (pairing: DeviceReport["pairings"][number]) => string;
24
- export declare const agentLine: (agent: DeviceReport["agent"], now: number) => string;
25
- export declare const buildSkewLine: (report: DeviceReport) => string | undefined;
26
- export declare const machineLine: (distro: string | undefined, supervisor: string | undefined, children: readonly string[]) => string | undefined;
27
- export declare const linkLine: (link: StatusLink) => string;
23
+ export declare const portItem: (port: DevicePort) => Item;
24
+ export declare const CONFLICTS_SAID = "Both ends changed these since they last agreed, so neither copy was overwritten and they have stopped syncing.";
25
+ export declare const CONFLICTS_SETTLED = "Resolve one by making both copies the same, or both gone; the session picks it up on its next pass.";
26
+ export declare const conflictItems: (pairing: DeviceReport["pairings"][number]) => Item[];
27
+ export declare const pairingItem: (pairing: DeviceReport["pairings"][number]) => Item;
28
+ export declare const agentItem: (agent: DeviceReport["agent"], now: number) => Item;
29
+ export declare const agentNote: (agent: DeviceReport["agent"], now: number) => string | undefined;
30
+ export declare const buildSkewItem: (report: DeviceReport) => Item | undefined;
31
+ export declare const placeLine: (distro: string | undefined, supervisor: string | undefined, children: readonly string[]) => string | undefined;
32
+ export declare const linkItem: (link: StatusLink) => Item;
33
+ export declare const grantLine: (link: StatusLink) => string;
28
34
  export declare const status: import("@stricli/core").Command<CommandContext>;
29
35
  //# sourceMappingURL=status.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAmE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC9I,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAkBlE,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAG1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE;QACb,QAAQ,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;QAEtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;CAC/B;AAKD,MAAM,WAAW,UAAU;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;CAClC;AAeD,eAAO,MAAM,aAAa,YAAa,MAAM,GAAG,SAAS,SAAS,MAAM,QAAQ,YAAY,OAAO,MAAM,cAAc,MAAM,KAAG,MA2B/H,CAAC;AAEF,eAAO,MAAM,YAAY,YAAmB,MAAM,GAAG,SAAS,KAAG,OAAO,CAAC,YAAY,CAyBpF,CAAC;AAkEF,eAAO,MAAM,aAAa,YAAa,YAAY,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAG,MAAM,EAe/E,CAAC;AAEF,eAAO,MAAM,WAAW,YAAa,YAAY,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAG,MAgBvE,CAAC;AAMF,eAAO,MAAM,SAAS,UAAW,YAAY,CAAC,OAAO,CAAC,OAAO,MAAM,KAAG,MAarE,CAAC;AAKF,eAAO,MAAM,aAAa,WAAY,YAAY,KAAG,MAAM,GAAG,SAY7D,CAAC;AAGF,eAAO,MAAM,WAAW,WAAY,MAAM,GAAG,SAAS,cAAc,MAAM,GAAG,SAAS,YAAY,SAAS,MAAM,EAAE,KAAG,MAAM,GAAG,SAO9H,CAAC;AAGF,eAAO,MAAM,QAAQ,SAAU,UAAU,KAAG,MAW3C,CAAC;AA4FF,eAAO,MAAM,MAAM,iDAmDjB,CAAC"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAY,IAAI,EAAY,MAAM,uBAAuB,CAAC;AAEtE,OAAO,KAAK,EAAE,YAAY,EAAuD,UAAU,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC9I,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAmBpD,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAG1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE;QACb,QAAQ,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;QAEtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;CAC/B;AAKD,MAAM,WAAW,UAAU;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;CAClC;AAeD,eAAO,MAAM,aAAa,YAAa,MAAM,GAAG,SAAS,SAAS,MAAM,QAAQ,YAAY,OAAO,MAAM,cAAc,MAAM,KAAG,MA2B/H,CAAC;AAEF,eAAO,MAAM,YAAY,YAAmB,MAAM,GAAG,SAAS,KAAG,OAAO,CAAC,YAAY,CAyBpF,CAAC;AAIF,eAAO,MAAM,QAAQ,SAAU,UAAU,KAAG,IAO3C,CAAC;AA8BF,eAAO,MAAM,cAAc,mHAAmH,CAAC;AAC/I,eAAO,MAAM,iBAAiB,wGAAwG,CAAC;AA0BvI,eAAO,MAAM,aAAa,YAAa,YAAY,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAG,IAAI,EAU7E,CAAC;AAMF,eAAO,MAAM,WAAW,YAAa,YAAY,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAG,IAqBvE,CAAC;AAMF,eAAO,MAAM,SAAS,UAAW,YAAY,CAAC,OAAO,CAAC,OAAO,MAAM,KAAG,IAiBrE,CAAC;AAGF,eAAO,MAAM,SAAS,UAAW,YAAY,CAAC,OAAO,CAAC,OAAO,MAAM,KAAG,MAAM,GAAG,SAU9E,CAAC;AAKF,eAAO,MAAM,aAAa,WAAY,YAAY,KAAG,IAAI,GAAG,SAY3D,CAAC;AAGF,eAAO,MAAM,SAAS,WAAY,MAAM,GAAG,SAAS,cAAc,MAAM,GAAG,SAAS,YAAY,SAAS,MAAM,EAAE,KAAG,MAAM,GAAG,SAO5H,CAAC;AAIF,eAAO,MAAM,QAAQ,SAAU,UAAU,KAAG,IAW3C,CAAC;AAEF,eAAO,MAAM,SAAS,SAAU,UAAU,KAAG,MACmI,CAAC;AA+EjL,eAAO,MAAM,MAAM,iDAmEjB,CAAC"}
package/dist/status.js CHANGED
@@ -1,13 +1,13 @@
1
1
  import { plural } from "@intentic/base/format";
2
2
  import { WORKSPACE_ROOT } from "@intentic/constants";
3
- import { buildCommand } from "@stricli/core";
3
+ import { buildCommand, machineUi } from "./cli-ui.js";
4
4
  import { agentBuildSkew, agentStalled } from "@intentic/sandbox-contract";
5
5
  import { auditPath, readLinks, readLinkStates } from "./device/config.js";
6
6
  import { PAUSE_HOTKEY, readPausedAt } from "./device/indicator.js";
7
7
  import { runLogPath } from "./config.js";
8
8
  import { heldDistros } from "./environments/machine.js";
9
- import { readResidentPid } from "./resident.js";
10
- import { readResident } from "./supervision.js";
9
+ import { readResidentPid } from "./resident/resident.js";
10
+ import { readResident } from "./resident/supervision.js";
11
11
  import { registeredDistro } from "./environments/wsl.js";
12
12
  import { pairingKey, readState } from "./sync/config.js";
13
13
  import { existingSyncSessions, runMutagen, syncSessionNames } from "./sync/mutagen.js";
@@ -64,23 +64,27 @@ export const deviceStatus = async (mutagen) => {
64
64
  sync,
65
65
  };
66
66
  };
67
- const portLine = (port) => {
67
+ export const portItem = (port) => {
68
68
  const what = port.command ?? "unknown process";
69
69
  if (port.state === "mirrored") {
70
- return ` localhost:${port.port} ← ${port.sandboxId} (${what})`;
70
+ return { tone: "ok", name: `localhost:${port.port} ← ${port.sandboxId}`, meta: what };
71
71
  }
72
- const reason = port.heldBy === undefined ? "something else on this machine has the port" : `${port.heldBy} has it`;
73
- return ` localhost:${port.port}, NOT mirrored from ${port.sandboxId}: ${reason} (${what})`;
72
+ const reason = port.heldBy === undefined ? "something else on this device has the port" : `${port.heldBy} has it`;
73
+ return { tone: "warn", name: `localhost:${port.port}`, meta: `not mirrored from ${port.sandboxId}: ${reason} (${what})` };
74
74
  };
75
75
  const reportedKind = (pairing) => pairing.remoteDir === undefined || pairing.remoteDir === WORKSPACE_ROOT ? { sandboxId: pairing.sandboxId } : { sandboxId: pairing.sandboxId, project: true };
76
76
  const fileSyncState = (pairing) => [
77
- pairing.paused === true ? "paused" : (pairing.mutagenStatus ?? "NO FILE-SYNC SESSION, this folder is not syncing"),
78
- pairing.conflicts === undefined || pairing.conflicts === 0 ? undefined : plural(pairing.conflicts, "conflict"),
77
+ pairing.paused === true ? ["warn", "paused"] : pairing.mutagenStatus === undefined ? ["fail", "no file-sync session, this folder is not syncing"] : ["ok", pairing.mutagenStatus],
78
+ pairing.conflicts === undefined || pairing.conflicts === 0 ? undefined : ["fail", plural(pairing.conflicts, "conflict")],
79
79
  pairing.paused === true || reportedKind(pairing).project === true
80
80
  ? undefined
81
- : `backup ${pairing.backupStatus ?? "NOT RUNNING, this sandbox's own state is not being copied here"}`,
81
+ : pairing.backupStatus === undefined
82
+ ? ["fail", "backup not running, this sandbox's own state is not being copied here"]
83
+ : ["ok", `backup ${pairing.backupStatus}`],
82
84
  ];
83
85
  const CONFLICT_LINES_MAX = 8;
86
+ export const CONFLICTS_SAID = "Both ends changed these since they last agreed, so neither copy was overwritten and they have stopped syncing.";
87
+ export const CONFLICTS_SETTLED = "Resolve one by making both copies the same, or both gone; the session picks it up on its next pass.";
84
88
  const HERE = {
85
89
  created: "created here",
86
90
  modified: "changed here",
@@ -93,182 +97,212 @@ const IN_SANDBOX = {
93
97
  deleted: "deleted in the sandbox",
94
98
  untracked: "build output left in the sandbox",
95
99
  };
96
- const conflictLine = (conflict) => {
97
- const what = conflict.path === "" ? "(the folder itself)" : conflict.path;
100
+ const conflictItem = (conflict) => {
98
101
  const sides = [
99
102
  conflict.local === undefined ? undefined : HERE[conflict.local],
100
103
  conflict.sandbox === undefined ? undefined : IN_SANDBOX[conflict.sandbox],
101
104
  ].filter((side) => side !== undefined);
102
- return ` ${what}${sides.length === 0 ? "" : ` (${sides.join(", ")})`}`;
105
+ return { tone: "fail", name: conflict.path === "" ? "the folder itself" : conflict.path, meta: sides.join(", ") };
103
106
  };
104
- export const conflictLines = (pairing) => {
107
+ export const conflictItems = (pairing) => {
105
108
  const conflicts = pairing.conflictedPaths ?? [];
106
109
  if (conflicts.length === 0) {
107
110
  return [];
108
111
  }
109
112
  const shown = conflicts.slice(0, CONFLICT_LINES_MAX);
110
113
  const rest = (pairing.conflicts ?? conflicts.length) - shown.length;
111
- return [
112
- " Both ends changed these since they last agreed, so neither copy was overwritten and they have stopped syncing:",
113
- ...shown.map(conflictLine),
114
- ...(rest > 0 ? [` … and ${rest} more`] : []),
115
- " Resolve one by making both copies the same (or both gone); the session picks it up on its next pass.",
116
- ];
114
+ return [...shown.map(conflictItem), ...(rest > 0 ? [{ tone: "skip", name: `… and ${rest} more` }] : [])];
117
115
  };
118
- export const pairingLine = (pairing) => {
116
+ const WORST = ["fail", "warn", "ok"];
117
+ export const pairingItem = (pairing) => {
119
118
  if (pairing.projectsHost === true) {
120
- return ` ${pairing.sandboxId} (this computer's sandbox: folders attach to it)${pairing.mirroring === "off" ? " [port mirroring OFF]" : ""}`;
119
+ return {
120
+ tone: pairing.mirroring === "off" ? "warn" : "ok",
121
+ name: pairing.sandboxId,
122
+ meta: `this device's sandbox: folders attach to it${pairing.mirroring === "off" ? " · port mirroring off" : ""}`,
123
+ };
121
124
  }
122
- const folder = pairing.localDir ?? "(no folder)";
123
- const where = pairing.mode === "sync" ? (reportedKind(pairing).project === true ? `${folder} ↔ ${pairing.remoteDir}` : folder) : "(ports only)";
125
+ const folder = pairing.localDir ?? "no folder";
126
+ const where = pairing.mode === "sync" ? (reportedKind(pairing).project === true ? `${folder} ↔ ${pairing.remoteDir}` : folder) : "ports only";
124
127
  const state = [
125
- pairing.mirroring === "off" ? "port mirroring OFF" : undefined,
128
+ pairing.mirroring === "off" ? ["warn", "port mirroring off"] : undefined,
126
129
  ...(pairing.mode === "sync" ? fileSyncState(pairing) : []),
127
- pairing.deliver === "auto" ? "landed work delivered here" : undefined,
130
+ pairing.deliver === "auto" ? ["ok", "landed work delivered here"] : undefined,
128
131
  ].filter((part) => part !== undefined);
129
- return ` ${pairing.sandboxId} ${where}${state.length === 0 ? "" : ` [${state.join(", ")}]`}`;
132
+ const tone = WORST.find((worst) => state.some(([said]) => said === worst)) ?? "ok";
133
+ return { tone, name: pairing.sandboxId, meta: [where, ...state.map(([, text]) => text)].join(" · ") };
130
134
  };
131
- export const agentLine = (agent, now) => {
135
+ export const agentItem = (agent, now) => {
132
136
  if (!agent.running) {
133
- return "Agent: NOT running, file syncing and port mirroring are both stopped. Run `intentic-machine run` to restart it.";
137
+ return { tone: "fail", name: "agent", meta: "not running: file sync and port mirroring are stopped" };
134
138
  }
135
139
  const since = agent.lastTickAt === undefined ? undefined : now - agent.lastTickAt;
136
140
  if (agentStalled(agent, now) && since !== undefined) {
137
- return `Agent: sync STALLED (pid ${agent.pid}), the process is alive but its last full pass finished ${plural(Math.round(since / 60_000), "minute")} ago, so port mirroring, the git bridge and any file sync it has not created are stopped. Restart it with \`intentic-machine run --stop\` then \`intentic-machine run\`, and check ${runLogPath}.`;
141
+ return {
142
+ tone: "fail",
143
+ name: "agent",
144
+ meta: `sync stalled (pid ${agent.pid}): its last full pass was ${plural(Math.round(since / 60_000), "minute")} ago`,
145
+ };
138
146
  }
139
147
  return since === undefined
140
- ? `Agent: running (pid ${agent.pid}), no completed sync pass reported yet (a pass finishes within seconds of startup; an agent older than this one never reports them).`
141
- : `Agent: running (pid ${agent.pid}), last sync pass ${Math.round(since / 1000)}s ago`;
148
+ ? { tone: "ok", name: "agent", meta: `running (pid ${agent.pid}), no sync pass reported yet` }
149
+ : { tone: "ok", name: "agent", meta: `running (pid ${agent.pid}), last sync pass ${Math.round(since / 1000)}s ago` };
142
150
  };
143
- export const buildSkewLine = (report) => {
151
+ export const agentNote = (agent, now) => {
152
+ if (!agent.running) {
153
+ return undefined;
154
+ }
155
+ if (agent.lastTickAt === undefined) {
156
+ return "A pass finishes within seconds of startup; an agent older than this one never reports them.";
157
+ }
158
+ return agentStalled(agent, now)
159
+ ? "The process is alive, but port mirroring, the git bridge and any file sync it has not created yet are stopped."
160
+ : undefined;
161
+ };
162
+ export const buildSkewItem = (report) => {
144
163
  const skew = agentBuildSkew(report.agent);
145
164
  if (skew === undefined) {
146
165
  return undefined;
147
166
  }
148
167
  const which = skew.running === undefined
149
- ? `Agent: running a build older than the ${skew.installed} installed on this machine (too old to report its own version)`
150
- : `Agent: running ${skew.running}, but ${skew.installed} is installed on this machine`;
151
- return `${which} — the agent keeps the build it started with. Restart it with \`intentic-machine run --stop\` then \`intentic-machine run\`.`;
168
+ ? `running a build older than the ${skew.installed} installed on this device, too old to report its own version`
169
+ : `running ${skew.running}, but ${skew.installed} is installed on this device`;
170
+ return { tone: "warn", name: "agent build", meta: which };
152
171
  };
153
- export const machineLine = (distro, supervisor, children) => {
172
+ export const placeLine = (distro, supervisor, children) => {
154
173
  if (distro !== undefined) {
155
174
  return supervisor === "windows"
156
- ? `Machine: the WSL distro ${distro}, kept running and upgraded together with this PC's Windows side.`
157
- : `Machine: the WSL distro ${distro}, running on its own: no agent on this PC's Windows side keeps it up.`;
175
+ ? `the WSL distro ${distro}, kept running and updated together with this device's Windows side`
176
+ : `the WSL distro ${distro}, running on its own: no agent on this device's Windows side keeps it up`;
158
177
  }
159
- return children.length === 0 ? undefined : `Machine: this PC's Windows side, keeping ${children.join(", ")} running and upgraded to the same release.`;
178
+ return children.length === 0 ? undefined : `this device's Windows side, keeping ${children.join(", ")} running and updated to the same release`;
160
179
  };
161
- export const linkLine = (link) => {
180
+ export const linkItem = (link) => {
162
181
  switch (link.state) {
163
182
  case "open":
164
- return ` ${link.sandboxUrl} connected as ${link.id}`;
183
+ return { tone: "ok", name: link.sandboxUrl, meta: `connected as ${link.id}` };
165
184
  case "connecting":
166
- return ` ${link.sandboxUrl} NOT connected (retrying) as ${link.id}`;
185
+ return { tone: "warn", name: link.sandboxUrl, meta: `not connected (retrying) as ${link.id}` };
167
186
  case "closed":
168
- return ` ${link.sandboxUrl} NOT connected as ${link.id}`;
187
+ return { tone: "fail", name: link.sandboxUrl, meta: `not connected as ${link.id}` };
169
188
  default:
170
- return ` ${link.sandboxUrl} linked as ${link.id} (this machine's agent doesn't report whether the link is up)`;
189
+ return { tone: "skip", name: link.sandboxUrl, meta: `linked as ${link.id}, not known whether the link is up` };
171
190
  }
172
191
  };
173
- const printReport = (report, out) => {
192
+ export const grantLine = (link) => `Last granted by the sandbox: commands ${link.scopes.shell}, writes ${link.scopes.write}, screen ${link.scopes.screen}; folders ${link.scopes.roots ?? "your home folder"}.`;
193
+ const RESTART = ["restart the agent", "intentic-machine run"];
194
+ const drawSync = (ui, report) => {
195
+ const later = [];
174
196
  if (report.pairings.length > 0) {
175
- out("");
176
- out(`Paired sandboxes (${report.pairings.length}):`);
197
+ ui.section(`paired sandboxes (${report.pairings.length})`);
198
+ ui.items(report.pairings.map(pairingItem));
177
199
  for (const pairing of report.pairings) {
178
- out(pairingLine(pairing));
179
- for (const line of conflictLines(pairing)) {
180
- out(line);
200
+ const stuck = conflictItems(pairing);
201
+ if (stuck.length > 0) {
202
+ ui.section(`${plural(pairing.conflicts ?? stuck.length, "conflict")} in ${pairing.localDir ?? pairing.sandboxId}`);
203
+ ui.note(CONFLICTS_SAID);
204
+ ui.items(stuck);
205
+ ui.note(CONFLICTS_SETTLED);
181
206
  }
182
207
  }
183
208
  }
184
209
  if (report.ports.length > 0) {
185
- out("");
186
- out(`Ports (${report.ports.length}):`);
187
- for (const port of report.ports) {
188
- out(portLine(port));
189
- }
210
+ ui.section(`ports (${report.ports.length})`);
211
+ ui.items(report.ports.map(portItem));
190
212
  }
191
213
  for (const sandboxId of new Set(report.pairings.filter((held) => held.mirroring === "off").map((held) => held.sandboxId))) {
192
- out(` ${sandboxId}: port mirroring is OFF here. Put its ports back with \`intentic-machine sync mirror on --sandbox ${sandboxId}\`.`);
214
+ later.push([`mirror ${sandboxId} again`, `intentic-machine sync mirror on --sandbox ${sandboxId}`]);
193
215
  }
216
+ return later;
194
217
  };
195
- const printLinks = (links, out) => {
196
- if (links.length === 0) {
197
- return;
218
+ const drawSessions = async (ui, mutagen, verbose) => {
219
+ const syncing = (await readState()).pairings.filter((pairing) => pairing.mode === "sync" && pairing.projectsHost !== true);
220
+ const wanted = syncing.flatMap((pairing) => syncSessionNames(pairing));
221
+ const live = new Set(syncing.length === 0 ? [] : existingSyncSessions(mutagen, wanted));
222
+ const missing = syncing.filter((held) => !syncSessionNames(held).every((name) => live.has(name)));
223
+ if (missing.length > 0) {
224
+ ui.section("file sync");
225
+ ui.items(missing.map((pairing) => ({
226
+ tone: "fail",
227
+ name: pairingKey(pairing),
228
+ meta: `${pairing.localDir ?? "its folder"} is not syncing: no file-sync session exists on this device`,
229
+ })));
230
+ ui.note("The agent retries every few minutes. If it stays this way the sandbox is unreachable, and the agent's log says why.");
198
231
  }
199
- out("");
200
- out(`Linked sandboxes (${links.length}):`);
201
- for (const link of links) {
202
- out(linkLine(link));
203
- out(` permissions (last pushed by the sandbox): commands ${link.scopes.shell}, writes ${link.scopes.write}, screen ${link.scopes.screen}; folders ${link.scopes.roots ?? "(your home folder)"}`);
232
+ if (!verbose) {
233
+ return;
204
234
  }
205
- };
206
- const printMutagen = async (mutagen, out) => {
207
- const syncing = (await readState()).pairings.filter((pairing) => pairing.mode === "sync" && pairing.projectsHost !== true);
208
- if (syncing.length > 0) {
209
- out("");
210
- out("File sync:");
211
- const wanted = syncing.flatMap((pairing) => syncSessionNames(pairing));
212
- const live = new Set(existingSyncSessions(mutagen, wanted));
235
+ ui.section("mutagen");
236
+ ui.suspend();
237
+ try {
213
238
  if (live.size > 0) {
214
239
  runMutagen(mutagen, ["sync", "list", ...wanted.filter((name) => live.has(name))]);
215
240
  }
216
- for (const pairing of syncing.filter((held) => !syncSessionNames(held).every((name) => live.has(name)))) {
217
- out(` ${pairingKey(pairing)}: no file-sync session exists on this machine, ${pairing.localDir ?? "its folder"} is NOT syncing. The agent retries every few minutes; if it stays this way the sandbox is unreachable (check ${runLogPath}).`);
218
- }
241
+ runMutagen(mutagen, ["forward", "list"]);
242
+ }
243
+ finally {
244
+ ui.resume();
219
245
  }
220
- out("");
221
- out("Port mirroring:");
222
- runMutagen(mutagen, ["forward", "list"]);
223
246
  };
224
- const NOTHING_CONNECTED = [
225
- "Nothing is connected: this machine is not linked to a sandbox and syncs no folder.",
226
- "Connect it from a sandbox's chat — the Connect-this-device card, or the Desktop sync card.",
227
- ];
228
247
  export const status = buildCommand({
229
- docs: { brief: "Show what this machine's agent is connected to, syncing, and mirroring, and whether it is alive" },
248
+ docs: { brief: "Show what this device's agent is connected to, syncing, and mirroring, and whether it is alive" },
230
249
  parameters: {
231
250
  flags: {
232
- json: { kind: "boolean", brief: "Emit the machine status as JSON (what the desktop app's tray and screen read)" },
251
+ json: { kind: "boolean", brief: "Emit the device status as JSON (what the desktop app's tray and screen read)" },
252
+ verbose: { kind: "boolean", brief: "Also print Mutagen's own session and forward listings", default: false },
233
253
  },
234
254
  },
235
255
  async func(flags) {
236
- const out = (message) => void this.process.stdout.write(`${message}\n`);
237
256
  const mutagen = await pairedMutagen();
238
257
  const report = await deviceStatus(mutagen);
239
258
  if (flags.json) {
240
- out(JSON.stringify(report));
259
+ this.process.stdout.write(`${JSON.stringify(report)}\n`);
241
260
  return;
242
261
  }
262
+ const ui = machineUi(this.process);
263
+ ui.report("intentic · this device", report.summary === "nothing connected" ? undefined : report.summary.toLowerCase());
243
264
  if (report.device.links.length === 0 && report.sync.pairings.length === 0) {
244
- for (const line of NOTHING_CONNECTED) {
245
- out(line);
246
- }
265
+ ui.quiet("Nothing is connected. Connect this device from a card in a sandbox's chat.");
247
266
  return;
248
267
  }
249
- out(report.summary);
250
- out("");
251
- out(`intentic-machine v${report.version}`);
252
- out(agentLine(report.sync.agent, Date.now()));
253
- const [distro, held, children] = await Promise.all([registeredDistro(), readResident(), heldDistros().catch(() => [])]);
254
- const where = machineLine(distro, held?.supervisor, children);
255
- if (where !== undefined) {
256
- out(where);
268
+ ui.plain(report.summary);
269
+ ui.plain(`intentic-machine ${report.version}`);
270
+ const later = [];
271
+ const agent = agentItem(report.sync.agent, Date.now());
272
+ const skew = buildSkewItem(report.sync);
273
+ ui.items(skew === undefined ? [agent] : [agent, skew]);
274
+ const why = agentNote(report.sync.agent, Date.now());
275
+ if (why !== undefined) {
276
+ ui.note(why);
257
277
  }
258
- const skew = buildSkewLine(report.sync);
259
278
  if (skew !== undefined) {
260
- out(skew);
279
+ ui.note("The agent keeps the build it started with until it restarts.");
280
+ }
281
+ if (agent.tone === "fail" || skew !== undefined) {
282
+ later.push(RESTART);
261
283
  }
262
- out(`Logs: ${runLogPath}`);
263
- out(`Audit: ${auditPath}`);
264
- if (report.device.pausedAt !== undefined) {
265
- out(`Mouse and keyboard: PAUSED by the person at this computer since ${report.device.pausedAt}. Agents are refused until ${PAUSE_HOTKEY} is pressed while their notice is on screen.`);
284
+ const [distro, held, children] = await Promise.all([registeredDistro(), readResident(), heldDistros().catch(() => [])]);
285
+ const place = placeLine(distro, held?.supervisor, children);
286
+ ui.fields([
287
+ ...(place === undefined ? [] : [["device", place]]),
288
+ ["logs", runLogPath],
289
+ ["audit", auditPath],
290
+ ...(report.device.pausedAt === undefined
291
+ ? []
292
+ : [["mouse and keyboard", `paused since ${report.device.pausedAt}, until ${PAUSE_HOTKEY} is pressed while an agent's notice is on screen`]]),
293
+ ]);
294
+ if (report.device.links.length > 0) {
295
+ ui.section(`linked sandboxes (${report.device.links.length})`);
296
+ for (const link of report.device.links) {
297
+ ui.items([linkItem(link)]);
298
+ ui.note(grantLine(link));
299
+ }
266
300
  }
267
- printLinks(report.device.links, out);
268
- printReport(report.sync, out);
301
+ later.push(...drawSync(ui, report.sync));
269
302
  if (mutagen !== undefined) {
270
- await printMutagen(mutagen, out);
303
+ await drawSessions(ui, mutagen, flags.verbose);
271
304
  }
305
+ ui.later(later);
272
306
  },
273
307
  });
274
308
  //# sourceMappingURL=status.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAE,YAAY,EAAuB,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAkC/C,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,SAA6B,EAAsB,EAAE;IACnF,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QACd,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,SAAS,GAAG,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACtD,OAAO,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,OAAO,KAAK,IAAI,SAAS,YAAY,CAAC;AAClJ,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAA2B,EAAE,KAAa,EAAE,IAAkB,EAAE,GAAW,EAAE,SAAkB,EAAU,EAAE;IACrI,MAAM,OAAO,GAAG,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IACtD,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IAClF,MAAM,MAAM,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,SAAS,WAAW,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CACtJ,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAC/B,CAAC;IACF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,iBAAiB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;IACjD,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;QAC5D,OAAO,aAAa,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;IAC7C,CAAC;IAID,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAGrB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,SAAS,YAAY,CAAC;QAC1H,OAAO,sBAAsB,KAAK,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;IAClE,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,OAA2B,EAAyB,EAAE;IACrF,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC5D,eAAe,EAAE;QACjB,SAAS,EAAE;QACX,YAAY,CAAC,OAAO,CAAC;QACrB,cAAc,EAAE;QAChB,YAAY,EAAE;KACjB,CAAC,CAAC;IAEH,MAAM,MAAM,GAA2C,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/I,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/H,OAAO;QACH,OAAO,EAAE,eAAe;QACxB,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;QAE9C,OAAO,EAAE,GAAG,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,8BAA8B,EAAE;QAC1I,MAAM,EAAE;YACJ,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE;gBAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;gBACzB,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YACxH,CAAC,CAAC;YACF,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;SAC1E;QACD,IAAI;KACP,CAAC;AACN,CAAC,CAAC;AAIF,MAAM,QAAQ,GAAG,CAAC,IAAgB,EAAU,EAAE;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,IAAI,iBAAiB,CAAC;IAC/C,IAAI,IAAI,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAC5B,OAAO,eAAe,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,SAAS,KAAK,IAAI,GAAG,CAAC;IACpE,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,SAAS,CAAC;IACnH,OAAO,eAAe,IAAI,CAAC,IAAI,uBAAuB,IAAI,CAAC,SAAS,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC;AAChG,CAAC,CAAC;AAIF,MAAM,YAAY,GAAG,CAAC,OAAsB,EAA2D,EAAE,CACrG,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,CAAC,SAAS,KAAK,cAAc,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAOjK,MAAM,aAAa,GAAG,CAAC,OAAyC,EAA0B,EAAE,CAAC;IAGzF,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,IAAI,kDAAkD,CAAC;IAClH,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC;IAI9G,OAAO,CAAC,MAAM,KAAK,IAAI,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,IAAI;QAC7D,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,UAAU,OAAO,CAAC,YAAY,IAAI,gEAAgE,EAAE;CAC7G,CAAC;AAKF,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAI7B,MAAM,IAAI,GAAyC;IAC/C,OAAO,EAAE,cAAc;IACvB,QAAQ,EAAE,cAAc;IACxB,OAAO,EAAE,cAAc;IACvB,SAAS,EAAE,wBAAwB;CACtC,CAAC;AACF,MAAM,UAAU,GAAyC;IACrD,OAAO,EAAE,wBAAwB;IACjC,QAAQ,EAAE,wBAAwB;IAClC,OAAO,EAAE,wBAAwB;IACjC,SAAS,EAAE,kCAAkC;CAChD,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,QAAwB,EAAU,EAAE;IAEtD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC1E,MAAM,KAAK,GAAG;QACV,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC/D,QAAQ,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC;KAC5E,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IACvC,OAAO,OAAO,IAAI,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAC/E,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAyC,EAAY,EAAE;IACjF,MAAM,SAAS,GAAG,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC;IAChD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;IAGrD,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IACpE,OAAO;QACH,oHAAoH;QACpH,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;QAC1B,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,0GAA0G;KAC7G,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAyC,EAAU,EAAE;IAE7E,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;QAChC,OAAO,KAAK,OAAO,CAAC,SAAS,oDAAoD,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACnJ,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,IAAI,aAAa,CAAC;IACjD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;IAChJ,MAAM,KAAK,GAAG;QAGV,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS;QAC9D,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAE1D,OAAO,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,SAAS;KACxE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IACvC,OAAO,KAAK,OAAO,CAAC,SAAS,KAAK,KAAK,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACpG,CAAC,CAAC;AAMF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAA4B,EAAE,GAAW,EAAU,EAAE;IAC3E,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,iHAAiH,CAAC;IAC7H,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC;IAClF,IAAI,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAClD,OAAO,4BAA4B,KAAK,CAAC,GAAG,2DAA2D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,EAAE,QAAQ,CAAC,sLAAsL,UAAU,GAAG,CAAC;IAC3V,CAAC;IAGD,OAAO,KAAK,KAAK,SAAS;QACtB,CAAC,CAAC,uBAAuB,KAAK,CAAC,GAAG,sIAAsI;QACxK,CAAC,CAAC,uBAAuB,KAAK,CAAC,GAAG,qBAAqB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;AAC/F,CAAC,CAAC;AAKF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAoB,EAAsB,EAAE;IACtE,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACrB,OAAO,SAAS,CAAC;IACrB,CAAC;IAGD,MAAM,KAAK,GACP,IAAI,CAAC,OAAO,KAAK,SAAS;QACtB,CAAC,CAAC,yCAAyC,IAAI,CAAC,SAAS,gEAAgE;QACzH,CAAC,CAAC,kBAAkB,IAAI,CAAC,OAAO,SAAS,IAAI,CAAC,SAAS,+BAA+B,CAAC;IAC/F,OAAO,GAAG,KAAK,8HAA8H,CAAC;AAClJ,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAA0B,EAAE,UAA8B,EAAE,QAA2B,EAAsB,EAAE;IACvI,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,UAAU,KAAK,SAAS;YAC3B,CAAC,CAAC,2BAA2B,MAAM,mEAAmE;YACtG,CAAC,CAAC,2BAA2B,MAAM,uEAAuE,CAAC;IACnH,CAAC;IACD,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,4CAA4C,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,4CAA4C,CAAC;AAC3J,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAgB,EAAU,EAAE;IACjD,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;QACjB,KAAK,MAAM;YACP,OAAO,KAAK,IAAI,CAAC,UAAU,kBAAkB,IAAI,CAAC,EAAE,EAAE,CAAC;QAC3D,KAAK,YAAY;YACb,OAAO,KAAK,IAAI,CAAC,UAAU,iCAAiC,IAAI,CAAC,EAAE,EAAE,CAAC;QAC1E,KAAK,QAAQ;YACT,OAAO,KAAK,IAAI,CAAC,UAAU,sBAAsB,IAAI,CAAC,EAAE,EAAE,CAAC;QAC/D;YACI,OAAO,KAAK,IAAI,CAAC,UAAU,eAAe,IAAI,CAAC,EAAE,+DAA+D,CAAC;IACzH,CAAC;AACL,CAAC,CAAC;AAKF,MAAM,WAAW,GAAG,CAAC,MAAoB,EAAE,GAA8B,EAAQ,EAAE;IAC/E,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,GAAG,CAAC,EAAE,CAAC,CAAC;QACR,GAAG,CAAC,qBAAqB,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;QACrD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;YAG1B,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxC,GAAG,CAAC,IAAI,CAAC,CAAC;YACd,CAAC;QACL,CAAC;IACL,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,GAAG,CAAC,EAAE,CAAC,CAAC;QACR,GAAG,CAAC,UAAU,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;QACvC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAC9B,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QACxB,CAAC;IACL,CAAC;IAGD,KAAK,MAAM,SAAS,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QACxH,GAAG,CAAC,KAAK,SAAS,qGAAqG,SAAS,KAAK,CAAC,CAAC;IAC3I,CAAC;AACL,CAAC,CAAC;AAQF,MAAM,UAAU,GAAG,CAAC,KAA4B,EAAE,GAA8B,EAAQ,EAAE;IACtF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO;IACX,CAAC;IACD,GAAG,CAAC,EAAE,CAAC,CAAC;IACR,GAAG,CAAC,qBAAqB,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;IAC3C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAGpB,GAAG,CACC,0DAA0D,IAAI,CAAC,MAAM,CAAC,KAAK,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,YAAY,IAAI,CAAC,MAAM,CAAC,MAAM,aAAa,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,oBAAoB,EAAE,CACjM,CAAC;IACN,CAAC;AACL,CAAC,CAAC;AAMF,MAAM,YAAY,GAAG,KAAK,EAAE,OAAe,EAAE,GAA8B,EAAiB,EAAE;IAC1F,MAAM,OAAO,GAAG,CAAC,MAAM,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC;IAC3H,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,GAAG,CAAC,EAAE,CAAC,CAAC;QACR,GAAG,CAAC,YAAY,CAAC,CAAC;QAGlB,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;QACvE,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QAC5D,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAChB,UAAU,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACtF,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACtG,GAAG,CACC,KAAK,UAAU,CAAC,OAAO,CAAC,kDAAkD,OAAO,CAAC,QAAQ,IAAI,YAAY,gHAAgH,UAAU,IAAI,CAC3O,CAAC;QACN,CAAC;IACL,CAAC;IACD,GAAG,CAAC,EAAE,CAAC,CAAC;IACR,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACvB,UAAU,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC;AAIF,MAAM,iBAAiB,GAAG;IACtB,oFAAoF;IACpF,4FAA4F;CAC/F,CAAC;AAMF,MAAM,CAAC,MAAM,MAAM,GAAG,YAAY,CAAc;IAC5C,IAAI,EAAE,EAAE,KAAK,EAAE,iGAAiG,EAAE;IAClH,UAAU,EAAE;QACR,KAAK,EAAE;YACH,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,+EAA+E,EAAE;SACpH;KACJ;IACD,KAAK,CAAC,IAAI,CAAuB,KAAkB;QAC/C,MAAM,GAAG,GAAG,CAAC,OAAe,EAAQ,EAAE,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;QACtF,MAAM,OAAO,GAAG,MAAM,aAAa,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YAC5B,OAAO;QACX,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAGxE,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;gBACnC,GAAG,CAAC,IAAI,CAAC,CAAC;YACd,CAAC;YACD,OAAO;QACX,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpB,GAAG,CAAC,EAAE,CAAC,CAAC;QACR,GAAG,CAAC,qBAAqB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAG3C,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,gBAAgB,EAAE,EAAE,YAAY,EAAE,EAAE,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxH,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC9D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,GAAG,CAAC,KAAK,CAAC,CAAC;QACf,CAAC;QACD,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,GAAG,CAAC,IAAI,CAAC,CAAC;QACd,CAAC;QACD,GAAG,CAAC,UAAU,UAAU,EAAE,CAAC,CAAC;QAC5B,GAAG,CAAC,UAAU,SAAS,EAAE,CAAC,CAAC;QAC3B,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACvC,GAAG,CACC,mEAAmE,MAAM,CAAC,MAAM,CAAC,QAAQ,8BAA8B,YAAY,8CAA8C,CACpL,CAAC;QACN,CAAC;QACD,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACrC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC9B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;IACL,CAAC;CACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { type Log } from "@intentic/local-agent";
2
- import { type CommandContext } from "@stricli/core";
2
+ import type { CommandContext } from "@stricli/core";
3
3
  import { type Pairing } from "./config.js";
4
4
  import { type Siblings } from "./siblings.js";
5
5
  export interface AttachAsk {
@@ -1 +1 @@
1
- {"version":3,"file":"attach-commands.d.ts","sourceRoot":"","sources":["../../src/sync/attach-commands.ts"],"names":[],"mappings":"AAGA,OAAO,EAAW,KAAK,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAGlE,OAAO,EAAkC,KAAK,OAAO,EAAyE,MAAM,aAAa,CAAC;AAMlJ,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAW9D,MAAM,WAAW,SAAS;IACtB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAElB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CAC3B;AAGD,MAAM,WAAW,WAAW;IAExB,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAEtE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC/C;AAMD,eAAO,MAAM,eAAe,aAAc,SAAS,OAAO,EAAE,cAAc,MAAM,KAAG,OAAO,GAAG,SAG5F,CAAC;AAkCF,eAAO,MAAM,UAAU,aAAoB,SAAS,OAAO,EAAE,OAAO,SAAS,UAAS,WAAW,KAAQ,OAAO,CAAC,OAAO,CAyDvH,CAAC;AAKF,eAAO,MAAM,YAAY,QAChB,SAAS,OACT,GAAG,UACD,WAAW,GAAG;IAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,KAC5E,OAAO,CAAC,YAAY,CAQtB,CAAC;AAGF,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACpE;AAcD,eAAO,MAAM,YAAY,QAAe,MAAM,GAAG,SAAS,YAAY,MAAM,UAAS,WAAW,KAAQ,OAAO,CAAC,YAAY,CAe3H,CAAC;AA4DF,eAAO,MAAM,cAAc;;;CAAqB,CAAC"}
1
+ {"version":3,"file":"attach-commands.d.ts","sourceRoot":"","sources":["../../src/sync/attach-commands.ts"],"names":[],"mappings":"AAEA,OAAO,EAAW,KAAK,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAIpD,OAAO,EAAkC,KAAK,OAAO,EAAyE,MAAM,aAAa,CAAC;AAOlJ,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAW9D,MAAM,WAAW,SAAS;IACtB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAElB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CAC3B;AAGD,MAAM,WAAW,WAAW;IAExB,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAEtE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC/C;AAMD,eAAO,MAAM,eAAe,aAAc,SAAS,OAAO,EAAE,cAAc,MAAM,KAAG,OAAO,GAAG,SAG5F,CAAC;AAkCF,eAAO,MAAM,UAAU,aAAoB,SAAS,OAAO,EAAE,OAAO,SAAS,UAAS,WAAW,KAAQ,OAAO,CAAC,OAAO,CAuDvH,CAAC;AAKF,eAAO,MAAM,YAAY,QAChB,SAAS,OACT,GAAG,UACD,WAAW,GAAG;IAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,KAC5E,OAAO,CAAC,YAAY,CAQtB,CAAC;AAGF,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACpE;AAeD,eAAO,MAAM,YAAY,QAAe,MAAM,GAAG,SAAS,YAAY,MAAM,UAAS,WAAW,KAAQ,OAAO,CAAC,YAAY,CAe3H,CAAC;AAwEF,eAAO,MAAM,cAAc;;;CAAqB,CAAC"}