@mono-agent/agent-app 0.19.0 → 0.20.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 (303) hide show
  1. package/README.md +304 -32
  2. package/dist/acp-bridge.d.ts.map +1 -1
  3. package/dist/acp-bridge.js +113 -54
  4. package/dist/acp-bridge.js.map +1 -1
  5. package/dist/acp-session-store.d.ts +12 -0
  6. package/dist/acp-session-store.d.ts.map +1 -0
  7. package/dist/acp-session-store.js +74 -0
  8. package/dist/acp-session-store.js.map +1 -0
  9. package/dist/agent-artifact-paths.d.ts +8 -0
  10. package/dist/agent-artifact-paths.d.ts.map +1 -0
  11. package/dist/agent-artifact-paths.js +11 -0
  12. package/dist/agent-artifact-paths.js.map +1 -0
  13. package/dist/agent-root-coordinator.d.ts +101 -0
  14. package/dist/agent-root-coordinator.d.ts.map +1 -0
  15. package/dist/agent-root-coordinator.js +470 -0
  16. package/dist/agent-root-coordinator.js.map +1 -0
  17. package/dist/app-controller-channels.d.ts +11 -1
  18. package/dist/app-controller-channels.d.ts.map +1 -1
  19. package/dist/app-controller-channels.js +145 -20
  20. package/dist/app-controller-channels.js.map +1 -1
  21. package/dist/app-controller-continuation.d.ts +2 -0
  22. package/dist/app-controller-continuation.d.ts.map +1 -1
  23. package/dist/app-controller-continuation.js.map +1 -1
  24. package/dist/app-controller-lifecycle.d.ts +5 -0
  25. package/dist/app-controller-lifecycle.d.ts.map +1 -1
  26. package/dist/app-controller-lifecycle.js +24 -5
  27. package/dist/app-controller-lifecycle.js.map +1 -1
  28. package/dist/app-controller-maintenance.d.ts +2 -0
  29. package/dist/app-controller-maintenance.d.ts.map +1 -1
  30. package/dist/app-controller-maintenance.js +32 -2
  31. package/dist/app-controller-maintenance.js.map +1 -1
  32. package/dist/app-controller-process-jobs.d.ts +46 -0
  33. package/dist/app-controller-process-jobs.d.ts.map +1 -0
  34. package/dist/app-controller-process-jobs.js +281 -0
  35. package/dist/app-controller-process-jobs.js.map +1 -0
  36. package/dist/app-controller-responder.d.ts +15 -0
  37. package/dist/app-controller-responder.d.ts.map +1 -1
  38. package/dist/app-controller-responder.js +146 -12
  39. package/dist/app-controller-responder.js.map +1 -1
  40. package/dist/app-controller-traceability.d.ts +6 -0
  41. package/dist/app-controller-traceability.d.ts.map +1 -1
  42. package/dist/app-controller-traceability.js +10 -0
  43. package/dist/app-controller-traceability.js.map +1 -1
  44. package/dist/app-controller-utils.d.ts +8 -0
  45. package/dist/app-controller-utils.d.ts.map +1 -1
  46. package/dist/app-controller-utils.js +24 -1
  47. package/dist/app-controller-utils.js.map +1 -1
  48. package/dist/app-controller.d.ts +40 -1
  49. package/dist/app-controller.d.ts.map +1 -1
  50. package/dist/app-controller.js +124 -39
  51. package/dist/app-controller.js.map +1 -1
  52. package/dist/background-log-maintenance.d.ts +85 -2
  53. package/dist/background-log-maintenance.d.ts.map +1 -1
  54. package/dist/background-log-maintenance.js +407 -136
  55. package/dist/background-log-maintenance.js.map +1 -1
  56. package/dist/background-runtime.d.ts.map +1 -1
  57. package/dist/background-runtime.js +22 -41
  58. package/dist/background-runtime.js.map +1 -1
  59. package/dist/background.d.ts +18 -26
  60. package/dist/background.d.ts.map +1 -1
  61. package/dist/background.js +83 -138
  62. package/dist/background.js.map +1 -1
  63. package/dist/channel-drivers/cron.d.ts +12 -1
  64. package/dist/channel-drivers/cron.d.ts.map +1 -1
  65. package/dist/channel-drivers/cron.js +121 -18
  66. package/dist/channel-drivers/cron.js.map +1 -1
  67. package/dist/channel-drivers/native-notify.d.ts +3 -0
  68. package/dist/channel-drivers/native-notify.d.ts.map +1 -1
  69. package/dist/channel-drivers/native-notify.js +2 -1
  70. package/dist/channel-drivers/native-notify.js.map +1 -1
  71. package/dist/channel-drivers/slack.d.ts.map +1 -1
  72. package/dist/channel-drivers/slack.js +41 -4
  73. package/dist/channel-drivers/slack.js.map +1 -1
  74. package/dist/channel-drivers/telegram.d.ts.map +1 -1
  75. package/dist/channel-drivers/telegram.js +46 -3
  76. package/dist/channel-drivers/telegram.js.map +1 -1
  77. package/dist/channel-drivers/tui.d.ts +13 -2
  78. package/dist/channel-drivers/tui.d.ts.map +1 -1
  79. package/dist/channel-drivers/tui.js +112 -3
  80. package/dist/channel-drivers/tui.js.map +1 -1
  81. package/dist/channels.d.ts +1 -1
  82. package/dist/channels.d.ts.map +1 -1
  83. package/dist/channels.js +4 -2
  84. package/dist/channels.js.map +1 -1
  85. package/dist/cli-args.d.ts +15 -1
  86. package/dist/cli-args.d.ts.map +1 -1
  87. package/dist/cli-args.js +82 -12
  88. package/dist/cli-args.js.map +1 -1
  89. package/dist/cli-background-command.d.ts +9 -2
  90. package/dist/cli-background-command.d.ts.map +1 -1
  91. package/dist/cli-background-command.js +174 -66
  92. package/dist/cli-background-command.js.map +1 -1
  93. package/dist/cli-commands.d.ts.map +1 -1
  94. package/dist/cli-commands.js +50 -12
  95. package/dist/cli-commands.js.map +1 -1
  96. package/dist/cli-help.d.ts.map +1 -1
  97. package/dist/cli-help.js +21 -1
  98. package/dist/cli-help.js.map +1 -1
  99. package/dist/config-reference.d.ts.map +1 -1
  100. package/dist/config-reference.js +99 -2
  101. package/dist/config-reference.js.map +1 -1
  102. package/dist/configured-agent.d.ts +44 -3
  103. package/dist/configured-agent.d.ts.map +1 -1
  104. package/dist/configured-agent.js +805 -156
  105. package/dist/configured-agent.js.map +1 -1
  106. package/dist/conversation-state-roots.d.ts +59 -0
  107. package/dist/conversation-state-roots.d.ts.map +1 -0
  108. package/dist/conversation-state-roots.js +248 -0
  109. package/dist/conversation-state-roots.js.map +1 -0
  110. package/dist/cron-control-store.d.ts +91 -0
  111. package/dist/cron-control-store.d.ts.map +1 -0
  112. package/dist/cron-control-store.js +1251 -0
  113. package/dist/cron-control-store.js.map +1 -0
  114. package/dist/cron-operator-service.d.ts +54 -0
  115. package/dist/cron-operator-service.d.ts.map +1 -0
  116. package/dist/cron-operator-service.js +352 -0
  117. package/dist/cron-operator-service.js.map +1 -0
  118. package/dist/doctor-session-history.d.ts +9 -0
  119. package/dist/doctor-session-history.d.ts.map +1 -0
  120. package/dist/doctor-session-history.js +313 -0
  121. package/dist/doctor-session-history.js.map +1 -0
  122. package/dist/doctor.d.ts +2 -1
  123. package/dist/doctor.d.ts.map +1 -1
  124. package/dist/doctor.js +320 -9
  125. package/dist/doctor.js.map +1 -1
  126. package/dist/index.d.ts +4 -0
  127. package/dist/index.d.ts.map +1 -1
  128. package/dist/index.js +2 -0
  129. package/dist/index.js.map +1 -1
  130. package/dist/interaction-bridge.d.ts +1 -0
  131. package/dist/interaction-bridge.d.ts.map +1 -1
  132. package/dist/interaction-bridge.js +54 -6
  133. package/dist/interaction-bridge.js.map +1 -1
  134. package/dist/jobs-command.d.ts +17 -0
  135. package/dist/jobs-command.d.ts.map +1 -0
  136. package/dist/jobs-command.js +207 -0
  137. package/dist/jobs-command.js.map +1 -0
  138. package/dist/launchd-lifecycle-lock.d.ts +36 -0
  139. package/dist/launchd-lifecycle-lock.d.ts.map +1 -0
  140. package/dist/launchd-lifecycle-lock.js +124 -0
  141. package/dist/launchd-lifecycle-lock.js.map +1 -0
  142. package/dist/launchd-log-monitor-status.d.ts +7 -0
  143. package/dist/launchd-log-monitor-status.d.ts.map +1 -0
  144. package/dist/launchd-log-monitor-status.js +224 -0
  145. package/dist/launchd-log-monitor-status.js.map +1 -0
  146. package/dist/launchd-logs.d.ts +9 -1
  147. package/dist/launchd-logs.d.ts.map +1 -1
  148. package/dist/launchd-logs.js +69 -16
  149. package/dist/launchd-logs.js.map +1 -1
  150. package/dist/launchd-maintenance-command.d.ts +10 -0
  151. package/dist/launchd-maintenance-command.d.ts.map +1 -0
  152. package/dist/launchd-maintenance-command.js +2 -0
  153. package/dist/launchd-maintenance-command.js.map +1 -0
  154. package/dist/launchd-maintenance-entry.d.ts +30 -0
  155. package/dist/launchd-maintenance-entry.d.ts.map +1 -0
  156. package/dist/launchd-maintenance-entry.js +206 -0
  157. package/dist/launchd-maintenance-entry.js.map +1 -0
  158. package/dist/launchd-maintenance-gate.d.ts +28 -0
  159. package/dist/launchd-maintenance-gate.d.ts.map +1 -0
  160. package/dist/launchd-maintenance-gate.js +80 -0
  161. package/dist/launchd-maintenance-gate.js.map +1 -0
  162. package/dist/launchd-private-files.d.ts +3 -0
  163. package/dist/launchd-private-files.d.ts.map +1 -0
  164. package/dist/launchd-private-files.js +58 -0
  165. package/dist/launchd-private-files.js.map +1 -0
  166. package/dist/launchd.d.ts +56 -2
  167. package/dist/launchd.d.ts.map +1 -1
  168. package/dist/launchd.js +210 -5
  169. package/dist/launchd.js.map +1 -1
  170. package/dist/local-configuration.d.ts.map +1 -1
  171. package/dist/local-configuration.js +33 -7
  172. package/dist/local-configuration.js.map +1 -1
  173. package/dist/managed-launchd-maintenance-environment.d.ts +3 -0
  174. package/dist/managed-launchd-maintenance-environment.d.ts.map +1 -0
  175. package/dist/managed-launchd-maintenance-environment.js +12 -0
  176. package/dist/managed-launchd-maintenance-environment.js.map +1 -0
  177. package/dist/managed-runtime-launch-proof.d.ts +11 -0
  178. package/dist/managed-runtime-launch-proof.d.ts.map +1 -0
  179. package/dist/managed-runtime-launch-proof.js +59 -0
  180. package/dist/managed-runtime-launch-proof.js.map +1 -0
  181. package/dist/managed-runtime-maintenance-entry.d.ts +10 -0
  182. package/dist/managed-runtime-maintenance-entry.d.ts.map +1 -0
  183. package/dist/managed-runtime-maintenance-entry.js +244 -0
  184. package/dist/managed-runtime-maintenance-entry.js.map +1 -0
  185. package/dist/managed-web-logs.d.ts +29 -11
  186. package/dist/managed-web-logs.d.ts.map +1 -1
  187. package/dist/managed-web-logs.js +244 -121
  188. package/dist/managed-web-logs.js.map +1 -1
  189. package/dist/managed-web-maintenance-environment.d.ts +6 -0
  190. package/dist/managed-web-maintenance-environment.d.ts.map +1 -0
  191. package/dist/managed-web-maintenance-environment.js +19 -0
  192. package/dist/managed-web-maintenance-environment.js.map +1 -0
  193. package/dist/mcp-apps.d.ts +37 -0
  194. package/dist/mcp-apps.d.ts.map +1 -0
  195. package/dist/mcp-apps.js +1753 -0
  196. package/dist/mcp-apps.js.map +1 -0
  197. package/dist/memory-command.d.ts +12 -0
  198. package/dist/memory-command.d.ts.map +1 -1
  199. package/dist/memory-command.js +510 -1
  200. package/dist/memory-command.js.map +1 -1
  201. package/dist/modules/known-tools.d.ts +1 -1
  202. package/dist/modules/known-tools.d.ts.map +1 -1
  203. package/dist/modules/known-tools.js +2 -0
  204. package/dist/modules/known-tools.js.map +1 -1
  205. package/dist/posted-reply-history.d.ts.map +1 -1
  206. package/dist/posted-reply-history.js +12 -0
  207. package/dist/posted-reply-history.js.map +1 -1
  208. package/dist/proactive-notify.d.ts +4 -1
  209. package/dist/proactive-notify.d.ts.map +1 -1
  210. package/dist/proactive-notify.js +43 -5
  211. package/dist/proactive-notify.js.map +1 -1
  212. package/dist/process-jobs-config.d.ts +82 -0
  213. package/dist/process-jobs-config.d.ts.map +1 -0
  214. package/dist/process-jobs-config.js +423 -0
  215. package/dist/process-jobs-config.js.map +1 -0
  216. package/dist/process-jobs-context.d.ts +24 -0
  217. package/dist/process-jobs-context.d.ts.map +1 -0
  218. package/dist/process-jobs-context.js +135 -0
  219. package/dist/process-jobs-context.js.map +1 -0
  220. package/dist/process-jobs-root-registry.d.ts +115 -0
  221. package/dist/process-jobs-root-registry.d.ts.map +1 -0
  222. package/dist/process-jobs-root-registry.js +978 -0
  223. package/dist/process-jobs-root-registry.js.map +1 -0
  224. package/dist/process-jobs-runtime.d.ts +35 -0
  225. package/dist/process-jobs-runtime.d.ts.map +1 -0
  226. package/dist/process-jobs-runtime.js +177 -0
  227. package/dist/process-jobs-runtime.js.map +1 -0
  228. package/dist/process-jobs-service.d.ts +70 -0
  229. package/dist/process-jobs-service.d.ts.map +1 -0
  230. package/dist/process-jobs-service.js +1989 -0
  231. package/dist/process-jobs-service.js.map +1 -0
  232. package/dist/process-jobs-store.d.ts +151 -0
  233. package/dist/process-jobs-store.d.ts.map +1 -0
  234. package/dist/process-jobs-store.js +1290 -0
  235. package/dist/process-jobs-store.js.map +1 -0
  236. package/dist/reply-artifacts.d.ts +65 -0
  237. package/dist/reply-artifacts.d.ts.map +1 -0
  238. package/dist/reply-artifacts.js +1147 -0
  239. package/dist/reply-artifacts.js.map +1 -0
  240. package/dist/reply-part-budget.d.ts +16 -0
  241. package/dist/reply-part-budget.d.ts.map +1 -0
  242. package/dist/reply-part-budget.js +57 -0
  243. package/dist/reply-part-budget.js.map +1 -0
  244. package/dist/request-model-override.d.ts +19 -0
  245. package/dist/request-model-override.d.ts.map +1 -1
  246. package/dist/request-model-override.js +54 -1
  247. package/dist/request-model-override.js.map +1 -1
  248. package/dist/request-scoped-mcp.d.ts +31 -0
  249. package/dist/request-scoped-mcp.d.ts.map +1 -0
  250. package/dist/request-scoped-mcp.js +197 -0
  251. package/dist/request-scoped-mcp.js.map +1 -0
  252. package/dist/run-history.d.ts.map +1 -1
  253. package/dist/run-history.js +50 -254
  254. package/dist/run-history.js.map +1 -1
  255. package/dist/runtime-option-extensions.d.ts +21 -0
  256. package/dist/runtime-option-extensions.d.ts.map +1 -1
  257. package/dist/runtime-option-extensions.js +53 -0
  258. package/dist/runtime-option-extensions.js.map +1 -1
  259. package/dist/secure-file-replace.d.ts +3 -0
  260. package/dist/secure-file-replace.d.ts.map +1 -1
  261. package/dist/secure-file-replace.js +31 -7
  262. package/dist/secure-file-replace.js.map +1 -1
  263. package/dist/session-history.d.ts +146 -0
  264. package/dist/session-history.d.ts.map +1 -0
  265. package/dist/session-history.js +347 -0
  266. package/dist/session-history.js.map +1 -0
  267. package/dist/sessions.d.ts +45 -2
  268. package/dist/sessions.d.ts.map +1 -1
  269. package/dist/sessions.js +849 -30
  270. package/dist/sessions.js.map +1 -1
  271. package/dist/web-command.d.ts +12 -11
  272. package/dist/web-command.d.ts.map +1 -1
  273. package/dist/web-command.js +554 -80
  274. package/dist/web-command.js.map +1 -1
  275. package/dist/web-log-maintenance-command.d.ts +7 -0
  276. package/dist/web-log-maintenance-command.d.ts.map +1 -0
  277. package/dist/web-log-maintenance-command.js +21 -0
  278. package/dist/web-log-maintenance-command.js.map +1 -0
  279. package/dist/web-log-maintenance-status.d.ts +26 -0
  280. package/dist/web-log-maintenance-status.d.ts.map +1 -0
  281. package/dist/web-log-maintenance-status.js +171 -0
  282. package/dist/web-log-maintenance-status.js.map +1 -0
  283. package/dist/web-log-maintenance.d.ts +32 -0
  284. package/dist/web-log-maintenance.d.ts.map +1 -0
  285. package/dist/web-log-maintenance.js +163 -0
  286. package/dist/web-log-maintenance.js.map +1 -0
  287. package/dist/web-maintenance-paths.d.ts +12 -0
  288. package/dist/web-maintenance-paths.d.ts.map +1 -0
  289. package/dist/web-maintenance-paths.js +24 -0
  290. package/dist/web-maintenance-paths.js.map +1 -0
  291. package/dist/wizard/prompts.d.ts.map +1 -1
  292. package/dist/wizard/prompts.js +1 -0
  293. package/dist/wizard/prompts.js.map +1 -1
  294. package/dist/wizard/run.js +1 -1
  295. package/dist/wizard/run.js.map +1 -1
  296. package/package.json +15 -15
  297. package/schema/mono-agent.config.schema.json +102 -1
  298. package/skills/mono-agent-composer/references/config-blueprint.md +26 -2
  299. package/skills/mono-agent-composer/references/discovery-questions.md +2 -2
  300. package/skills/mono-agent-composer/references/feature-coverage.md +6 -4
  301. package/skills/mono-agent-composer/references/package-map.md +19 -3
  302. package/skills/mono-agent-composer/references/playbooks.md +3 -3
  303. package/skills/mono-agent-composer/references/validation.md +4 -2
@@ -1,183 +1,454 @@
1
- import { bootstrap, launchdServiceInfo } from "./launchd.js";
1
+ import { bootstrap, deriveLaunchdMaintenanceLabel, kickstart, launchdServiceInfo, } from "./launchd.js";
2
+ import { LAUNCHD_LOG_MONITOR_INTERVAL_SECONDS } from "./launchd-logs.js";
2
3
  import { lifecycleFailure, maintenanceErrorMessage, pollUntil, uniquePids, unloadLaunchdService, } from "./background-lifecycle-utils.js";
3
4
  import * as ui from "./ui.js";
5
+ const WAKE_COOLDOWN_MS = [5, 10, 20, 40, 60].map((minutes) => minutes * 60_000);
6
+ export function createManagedLaunchdLogWakeState(monotonicNow = defaultMonotonicNow) {
7
+ return {
8
+ cooldownIndex: 0,
9
+ cooldownDeadlineMonotonicMs: monotonicNow() + WAKE_COOLDOWN_MS[0],
10
+ wakeCount: 0,
11
+ lastOutcome: "idle",
12
+ lastReportedOutcome: undefined,
13
+ };
14
+ }
15
+ /**
16
+ * Run the managed worker's bounded metadata fast path. The dependency surface
17
+ * intentionally excludes config validation, snapshots, and runtime recovery:
18
+ * only a concrete safe maintenance inventory may wake the authenticated helper.
19
+ */
20
+ export async function requestLaunchdLogMaintenanceIfNeeded(target, deps, state = createManagedLaunchdLogWakeState(deps.monotonicNow)) {
21
+ const monotonicNow = deps.monotonicNow ?? defaultMonotonicNow;
22
+ const stopped = deps.isStopped ?? (() => false);
23
+ // Classify each pass independently. A prior kickstart failure must not make
24
+ // a later unsafe inventory look like the same deduplicated request failure.
25
+ setOutcome(state, "inspection-failed");
26
+ const inspection = await deps.inspectLaunchdLogs(target.paths);
27
+ if (stopped())
28
+ return setOutcome(state, "stopped");
29
+ if (!inspection.canMaintain) {
30
+ const detail = inspection.issues.length === 0
31
+ ? "the bounded inventory is unsafe"
32
+ : inspection.issues.join("; ");
33
+ throw new Error(`LaunchAgent log maintenance refused unsafe inventory: ${detail}`);
34
+ }
35
+ const pendingArtifact = inspection.pendingMaintenance
36
+ || inspection.pendingTransaction
37
+ || inspection.pendingPreparation;
38
+ if (pendingArtifact) {
39
+ // A replacement worker can inherit stale intent or transaction artifacts.
40
+ // Preserve the current backoff and leave recovery to the scheduled helper.
41
+ return setOutcome(state, "pending-artifact");
42
+ }
43
+ if (inspection.perAgentFileReasons.length === 0) {
44
+ resetWakeCooldown(state, monotonicNow());
45
+ return setOutcome(state, inspection.sharedDirectoryNeedsMaintenance ? "shared-only" : "idle");
46
+ }
47
+ if (monotonicNow() < state.cooldownDeadlineMonotonicMs) {
48
+ return setOutcome(state, "cooldown");
49
+ }
50
+ const helperLabel = deriveLaunchdMaintenanceLabel(target.label);
51
+ const helper = await launchdServiceInfo(deps.runner, helperLabel, deps.getuid());
52
+ if (stopped())
53
+ return setOutcome(state, "stopped");
54
+ if (!helper.loaded) {
55
+ advanceWakeCooldown(state, monotonicNow());
56
+ return setOutcome(state, "helper-unloaded");
57
+ }
58
+ if (helper.pid !== undefined) {
59
+ advanceWakeCooldown(state, monotonicNow());
60
+ return setOutcome(state, "helper-running");
61
+ }
62
+ // Final latch closes the stop/inspect/print/kickstart resurrection window.
63
+ if (stopped())
64
+ return setOutcome(state, "stopped");
65
+ setOutcome(state, "request-failed");
66
+ const requested = await kickstart(deps.runner, helperLabel, deps.getuid());
67
+ advanceWakeCooldown(state, monotonicNow());
68
+ if (requested.code !== 0) {
69
+ const detail = (requested.stderr || requested.stdout).trim();
70
+ setOutcome(state, "request-failed");
71
+ throw new Error(`launchctl kickstart exited ${requested.code}${detail.length === 0 ? "" : `: ${detail}`}`);
72
+ }
73
+ state.wakeCount += 1;
74
+ return setOutcome(state, "requested");
75
+ }
76
+ /**
77
+ * Inspect active logs in the already-running worker every five minutes. One
78
+ * inspection may be in flight at a time, so a slow filesystem cannot build an
79
+ * overlapping timer queue. Consecutive failures are reported only once.
80
+ */
81
+ export function startManagedLaunchdLogMonitor(target, deps) {
82
+ let stopped = false;
83
+ let checking = false;
84
+ const monotonicNow = deps.monotonicNow ?? defaultMonotonicNow;
85
+ const wallClockNow = deps.wallClockNow ?? Date.now;
86
+ const state = createManagedLaunchdLogWakeState(monotonicNow);
87
+ const monitoredDeps = {
88
+ ...deps,
89
+ monotonicNow,
90
+ wallClockNow,
91
+ isStopped: () => stopped || deps.isStopped?.() === true,
92
+ };
93
+ const inspect = async () => {
94
+ if (stopped || checking)
95
+ return;
96
+ checking = true;
97
+ try {
98
+ const outcome = await requestLaunchdLogMaintenanceIfNeeded(target, monitoredDeps, state);
99
+ if (!stopped && shouldReportOutcome(state, outcome)) {
100
+ safeReport(deps, `Managed log monitor for ${target.label}: ${outcome}.`);
101
+ }
102
+ }
103
+ catch (error) {
104
+ const failureOutcome = state.lastOutcome === "request-failed"
105
+ ? "request-failed"
106
+ : "inspection-failed";
107
+ setOutcome(state, failureOutcome);
108
+ if (!stopped && shouldReportOutcome(state, failureOutcome)) {
109
+ safeReport(deps, `Managed log inspection could not request maintenance for ${target.label}: ${safeReporterDetail(error)}`, true);
110
+ }
111
+ }
112
+ finally {
113
+ if (!stopped)
114
+ safeRecordStatus(deps, monitorStatus(state, monotonicNow(), wallClockNow()));
115
+ checking = false;
116
+ }
117
+ };
118
+ const guardInspect = () => {
119
+ void inspect().catch((error) => {
120
+ if (!stopped)
121
+ safeReport(deps, `Managed log monitor failed: ${safeReporterDetail(error)}`, true);
122
+ });
123
+ };
124
+ const interval = setInterval(guardInspect, LAUNCHD_LOG_MONITOR_INTERVAL_SECONDS * 1_000);
125
+ interval.unref();
126
+ guardInspect();
127
+ return {
128
+ stop: () => {
129
+ if (stopped)
130
+ return;
131
+ stopped = true;
132
+ clearInterval(interval);
133
+ },
134
+ };
135
+ }
136
+ function defaultMonotonicNow() {
137
+ return performance.now();
138
+ }
139
+ function resetWakeCooldown(state, now) {
140
+ state.cooldownIndex = 0;
141
+ state.cooldownDeadlineMonotonicMs = now + WAKE_COOLDOWN_MS[0];
142
+ }
143
+ function advanceWakeCooldown(state, now) {
144
+ state.cooldownIndex = Math.min(state.cooldownIndex + 1, WAKE_COOLDOWN_MS.length - 1);
145
+ state.cooldownDeadlineMonotonicMs = now + WAKE_COOLDOWN_MS[state.cooldownIndex];
146
+ }
147
+ function setOutcome(state, outcome) {
148
+ state.lastOutcome = outcome;
149
+ return outcome;
150
+ }
151
+ function shouldReportOutcome(state, outcome) {
152
+ if (outcome === "idle" || outcome === "shared-only" || outcome === "cooldown" || outcome === "stopped") {
153
+ state.lastReportedOutcome = undefined;
154
+ return false;
155
+ }
156
+ if (state.lastReportedOutcome === outcome)
157
+ return false;
158
+ state.lastReportedOutcome = outcome;
159
+ return true;
160
+ }
161
+ function monitorStatus(state, monotonicNow, wallClockNow) {
162
+ const remaining = Math.max(0, state.cooldownDeadlineMonotonicMs - monotonicNow);
163
+ return {
164
+ version: 1,
165
+ lastInspectionAt: new Date(wallClockNow).toISOString(),
166
+ wakeCount: state.wakeCount,
167
+ lastOutcome: state.lastOutcome,
168
+ cooldownDeadline: new Date(wallClockNow + remaining).toISOString(),
169
+ };
170
+ }
171
+ function safeRecordStatus(deps, status) {
172
+ try {
173
+ const recorded = deps.recordStatus?.(status);
174
+ if (recorded !== undefined)
175
+ void Promise.resolve(recorded).catch(() => undefined);
176
+ }
177
+ catch {
178
+ // Observability must never alter worker lifecycle or become unhandled.
179
+ }
180
+ }
181
+ function safeReport(deps, message, error = false) {
182
+ const safeMessage = safeReporterText(message);
183
+ const rendered = error ? ui.errorLine(safeMessage) : ui.style.dim(`${safeMessage}\n`);
184
+ try {
185
+ const reported = deps.stderr(rendered);
186
+ if (reported !== undefined)
187
+ void Promise.resolve(reported).catch(() => undefined);
188
+ }
189
+ catch {
190
+ // Reporter failures are explicitly non-fatal and never escape.
191
+ }
192
+ }
193
+ function safeReporterDetail(error) {
194
+ const raw = error instanceof Error ? error.message : String(error);
195
+ return safeReporterText(raw);
196
+ }
197
+ function safeReporterText(raw) {
198
+ return raw
199
+ .replace(/[\u0000-\u001f\u007f]+/gu, " ")
200
+ .replace(/\b(token|secret|password|api[-_]?key|authorization)\s*[=:]\s*\S+/giu, "$1=<redacted>")
201
+ .replace(/\bBearer\s+\S+/giu, "Bearer <redacted>")
202
+ .replace(/(?:\/[A-Za-z0-9._~!$&'()+,;=:@%-]+){2,}/gu, "<path>")
203
+ .replace(/\s+/gu, " ")
204
+ .trim()
205
+ .slice(0, 512);
206
+ }
4
207
  /** Run one authenticated, crash-recoverable stopped-writer log rotation pass. */
5
- export async function maintainLaunchdLogsOperation(target, deps, poll) {
208
+ export async function maintainLaunchdLogsOperation(target, deps, poll, acquireSharedLogLock) {
6
209
  const release = await deps.acquireLifecycleLock(target);
7
210
  if (release === undefined)
8
211
  return 0;
9
212
  try {
10
- const uid = deps.getuid();
11
- const service = await launchdServiceInfo(deps.runner, target.label, uid);
12
- let inspection;
213
+ return await maintainLaunchdLogsWithLifecycleLockOperation(target, deps, poll, acquireSharedLogLock);
214
+ }
215
+ finally {
216
+ await release().catch((error) => {
217
+ deps.stderr(ui.errorLine(`Could not release lifecycle lock for ${target.label}: ${error instanceof Error ? error.message : String(error)}`));
218
+ });
219
+ }
220
+ }
221
+ /** Acquire the shared lease after the caller already owns this agent's lifecycle. */
222
+ export async function maintainLaunchdLogsWithLifecycleLockOperation(target, deps, poll, acquireSharedLogLock) {
223
+ let releaseSharedLogLock;
224
+ try {
13
225
  try {
14
- inspection = await deps.inspectLaunchdLogs(target.paths);
226
+ releaseSharedLogLock = await acquireSharedLogLock();
15
227
  }
16
228
  catch (error) {
17
- reportMaintenanceFailure(target, deps, "inspect launchd logs", error);
229
+ reportMaintenanceFailure(target, deps, "acquire the shared launchd-log mutation lock", error);
18
230
  return 1;
19
231
  }
20
- let maintenanceIntent;
232
+ // Scheduled work defers cleanly. Staggering controls recurring cadence;
233
+ // this lease protects only the mutation, never expensive helper work.
234
+ if (releaseSharedLogLock === undefined)
235
+ return 0;
236
+ return await maintainLaunchdLogsWithSharedLockOperation(target, deps, poll);
237
+ }
238
+ finally {
239
+ await releaseSharedLogLock?.().catch((error) => {
240
+ deps.stderr(ui.errorLine(`Could not release the shared launchd-log mutation lock for ${target.label}: ${error instanceof Error ? error.message : String(error)}`));
241
+ });
242
+ }
243
+ }
244
+ /** Execute log maintenance only while the caller owns per-agent then shared leases. */
245
+ export async function maintainLaunchdLogsWithSharedLockOperation(target, deps, poll) {
246
+ await deps.recordMaintenancePhase?.("inspecting");
247
+ const uid = deps.getuid();
248
+ const service = await launchdServiceInfo(deps.runner, target.label, uid);
249
+ let inspection;
250
+ try {
251
+ inspection = await deps.inspectLaunchdLogs(target.paths);
252
+ }
253
+ catch (error) {
254
+ reportMaintenanceFailure(target, deps, "inspect launchd logs", error);
255
+ return 1;
256
+ }
257
+ let additionalInspection = {
258
+ needsMaintenance: false,
259
+ canMaintain: true,
260
+ issues: [],
261
+ };
262
+ try {
263
+ additionalInspection = await deps.inspectAdditionalLaunchdLogArtifacts?.(target.paths)
264
+ ?? additionalInspection;
265
+ }
266
+ catch (error) {
267
+ reportMaintenanceFailure(target, deps, "inspect bounded legacy log artifacts", error);
268
+ return 1;
269
+ }
270
+ let additionalRefused = !additionalInspection.canMaintain;
271
+ if (additionalRefused) {
21
272
  try {
22
- maintenanceIntent = await deps.readLaunchdLogMaintenanceIntent(target.paths);
273
+ await deps.recordAdditionalLaunchdLogRefusals?.(additionalInspection.issues);
23
274
  }
24
275
  catch (error) {
25
- reportMaintenanceFailure(target, deps, "read durable launchd-log maintenance intent", error);
276
+ reportMaintenanceFailure(target, deps, "record bounded legacy log refusals", error);
26
277
  return 1;
27
278
  }
28
- if (inspection.pendingMaintenance && maintenanceIntent === undefined) {
29
- reportMaintenanceFailure(target, deps, "read durable launchd-log maintenance intent", new Error("The maintenance marker disappeared after inventory."));
279
+ }
280
+ let maintenanceIntent;
281
+ try {
282
+ maintenanceIntent = await deps.readLaunchdLogMaintenanceIntent(target.paths);
283
+ }
284
+ catch (error) {
285
+ reportMaintenanceFailure(target, deps, "read durable launchd-log maintenance intent", error);
286
+ return 1;
287
+ }
288
+ if (inspection.pendingMaintenance && maintenanceIntent === undefined) {
289
+ reportMaintenanceFailure(target, deps, "read durable launchd-log maintenance intent", new Error("The maintenance marker disappeared after inventory."));
290
+ return 1;
291
+ }
292
+ if (!service.loaded && maintenanceIntent === undefined)
293
+ return additionalRefused ? 1 : 0;
294
+ let originalPlistIdentity;
295
+ try {
296
+ originalPlistIdentity = await deps.verifyLaunchdPlist(target.paths.plistPath);
297
+ }
298
+ catch (error) {
299
+ reportMaintenanceFailure(target, deps, "verify the existing main LaunchAgent", error);
300
+ return 1;
301
+ }
302
+ if (maintenanceIntent !== undefined
303
+ && (maintenanceIntent.label !== target.label
304
+ || maintenanceIntent.plistFingerprint !== originalPlistIdentity)) {
305
+ reportMaintenanceFailure(target, deps, "authenticate durable launchd-log maintenance intent", new Error("The pending intent does not match the exact main LaunchAgent definition."));
306
+ return 1;
307
+ }
308
+ if (maintenanceIntent?.phase === "stopping" && !service.loaded) {
309
+ reportMaintenanceFailure(target, deps, "recover interrupted launchd-log maintenance", new Error("The prior maintainer did not durably prove every old writer PID dead; refusing rotation."));
310
+ return 1;
311
+ }
312
+ if (maintenanceIntent?.phase === "restoring") {
313
+ const replacement = await launchdServiceInfo(deps.runner, target.label, uid);
314
+ if (!replacement.loaded || replacement.pid === undefined || !deps.isAlive(replacement.pid)) {
315
+ reportMaintenanceFailure(target, deps, "recover interrupted launchd-log restoration", new Error("The replacement writer identity was lost before live-worker proof; refusing stale rotation authority."));
30
316
  return 1;
31
317
  }
32
- if (!service.loaded && maintenanceIntent === undefined)
33
- return 0;
34
- let originalPlistIdentity;
35
318
  try {
36
- originalPlistIdentity = await deps.verifyLaunchdPlist(target.paths.plistPath);
319
+ await deps.clearLaunchdLogMaintenanceIntent(target.paths, maintenanceIntent);
37
320
  }
38
321
  catch (error) {
39
- reportMaintenanceFailure(target, deps, "verify the existing main LaunchAgent", error);
40
- return 1;
41
- }
42
- if (maintenanceIntent !== undefined
43
- && (maintenanceIntent.label !== target.label
44
- || maintenanceIntent.plistFingerprint !== originalPlistIdentity)) {
45
- reportMaintenanceFailure(target, deps, "authenticate durable launchd-log maintenance intent", new Error("The pending intent does not match the exact main LaunchAgent definition."));
46
- return 1;
47
- }
48
- if (maintenanceIntent?.phase === "stopping" && !service.loaded) {
49
- reportMaintenanceFailure(target, deps, "recover interrupted launchd-log maintenance", new Error("The prior maintainer did not durably prove every old writer PID dead; refusing rotation."));
322
+ reportMaintenanceFailure(target, deps, "clear recovered launchd-log restoration intent", error);
50
323
  return 1;
51
324
  }
52
- if (maintenanceIntent?.phase === "restoring") {
53
- const replacement = await launchdServiceInfo(deps.runner, target.label, uid);
54
- if (!replacement.loaded || replacement.pid === undefined || !deps.isAlive(replacement.pid)) {
55
- reportMaintenanceFailure(target, deps, "recover interrupted launchd-log restoration", new Error("The replacement writer identity was lost before live-worker proof; refusing stale rotation authority."));
56
- return 1;
57
- }
58
- try {
59
- await deps.clearLaunchdLogMaintenanceIntent(target.paths, maintenanceIntent);
60
- }
61
- catch (error) {
62
- reportMaintenanceFailure(target, deps, "clear recovered launchd-log restoration intent", error);
63
- return 1;
64
- }
65
- return 0;
325
+ return 0;
326
+ }
327
+ if (maintenanceIntent?.phase === "stopped" && service.loaded) {
328
+ reportMaintenanceFailure(target, deps, "recover interrupted launchd-log maintenance", new Error("launchd reports a writer loaded after durable stopped-writer proof; refusing rotation."));
329
+ return 1;
330
+ }
331
+ if (!inspection.canMaintain) {
332
+ deps.stderr(ui.errorLine(`Scheduled log maintenance refused unsafe paths for ${target.label}.`));
333
+ for (const issue of inspection.issues)
334
+ deps.stderr(ui.style.dim(issue) + "\n");
335
+ return 1;
336
+ }
337
+ if (!inspection.needsMaintenance
338
+ && !additionalInspection.needsMaintenance
339
+ && maintenanceIntent === undefined)
340
+ return additionalRefused ? 1 : 0;
341
+ if (maintenanceIntent === undefined) {
342
+ maintenanceIntent = {
343
+ version: 1,
344
+ phase: "stopping",
345
+ label: target.label,
346
+ plistFingerprint: originalPlistIdentity,
347
+ };
348
+ try {
349
+ await deps.recordMaintenancePhase?.("stopping");
350
+ await deps.beginLaunchdLogMaintenanceIntent(target.paths, maintenanceIntent);
66
351
  }
67
- if (maintenanceIntent?.phase === "stopped" && service.loaded) {
68
- reportMaintenanceFailure(target, deps, "recover interrupted launchd-log maintenance", new Error("launchd reports a writer loaded after durable stopped-writer proof; refusing rotation."));
352
+ catch (error) {
353
+ reportMaintenanceFailure(target, deps, "publish durable launchd-log maintenance intent", error);
69
354
  return 1;
70
355
  }
71
- if (!inspection.canMaintain) {
72
- deps.stderr(ui.errorLine(`Scheduled log maintenance refused unsafe paths for ${target.label}.`));
73
- for (const issue of inspection.issues)
74
- deps.stderr(ui.style.dim(issue) + "\n");
356
+ }
357
+ if (maintenanceIntent.phase === "stopping") {
358
+ const stopped = await unloadLaunchdService(target.label, service, uniquePids([service.pid]), deps, uid, poll);
359
+ if (!stopped.ok) {
360
+ reportMaintenanceFailure(target, deps, "prove the launchd log writer stopped", stopped.failure);
75
361
  return 1;
76
362
  }
77
- if (!inspection.needsMaintenance && maintenanceIntent === undefined)
78
- return 0;
79
- if (maintenanceIntent === undefined) {
80
- maintenanceIntent = {
81
- version: 1,
82
- phase: "stopping",
83
- label: target.label,
84
- plistFingerprint: originalPlistIdentity,
85
- };
86
- try {
87
- await deps.beginLaunchdLogMaintenanceIntent(target.paths, maintenanceIntent);
88
- }
89
- catch (error) {
90
- reportMaintenanceFailure(target, deps, "publish durable launchd-log maintenance intent", error);
91
- return 1;
92
- }
93
- }
94
- if (maintenanceIntent.phase === "stopping") {
95
- const stopped = await unloadLaunchdService(target.label, service, uniquePids([service.pid]), deps, uid, poll);
96
- if (!stopped.ok) {
97
- reportMaintenanceFailure(target, deps, "prove the launchd log writer stopped", stopped.failure);
98
- return 1;
99
- }
100
- try {
101
- maintenanceIntent = await deps.markLaunchdLogMaintenanceStopped(target.paths, maintenanceIntent);
102
- }
103
- catch (error) {
104
- reportMaintenanceFailure(target, deps, "record durable stopped-writer proof", error);
105
- return 1;
106
- }
107
- }
108
- else {
109
- const current = await launchdServiceInfo(deps.runner, target.label, uid);
110
- if (current.loaded || (current.pid !== undefined && deps.isAlive(current.pid))) {
111
- reportMaintenanceFailure(target, deps, "recheck durable stopped-writer proof", new Error("launchd exposed a live writer before recovered rotation."));
112
- return 1;
113
- }
114
- }
115
363
  try {
116
- await deps.rotateStoppedLaunchdLogs(target.paths);
117
- const currentPlistIdentity = await deps.verifyLaunchdPlist(target.paths.plistPath);
118
- if (currentPlistIdentity !== originalPlistIdentity) {
119
- throw new Error("The main LaunchAgent plist changed during stopped-writer maintenance.");
120
- }
364
+ maintenanceIntent = await deps.markLaunchdLogMaintenanceStopped(target.paths, maintenanceIntent);
365
+ await deps.recordMaintenancePhase?.("stopped");
121
366
  }
122
367
  catch (error) {
123
- reportMaintenanceFailure(target, deps, "commit bounded stopped-writer logs", error);
368
+ reportMaintenanceFailure(target, deps, "record durable stopped-writer proof", error);
124
369
  return 1;
125
370
  }
126
- try {
127
- maintenanceIntent = await deps.markLaunchdLogMaintenanceRestoring(target.paths, maintenanceIntent);
128
- }
129
- catch (error) {
130
- reportMaintenanceFailure(target, deps, "invalidate stopped-writer proof before restoration", error);
371
+ }
372
+ else {
373
+ const current = await launchdServiceInfo(deps.runner, target.label, uid);
374
+ if (current.loaded || (current.pid !== undefined && deps.isAlive(current.pid))) {
375
+ reportMaintenanceFailure(target, deps, "recheck durable stopped-writer proof", new Error("launchd exposed a live writer before recovered rotation."));
131
376
  return 1;
132
377
  }
133
- const booted = await bootstrap(deps.runner, target.paths.plistPath, uid);
134
- const observedRestorePids = new Set();
135
- const running = await pollUntil(deps, poll, async () => {
136
- const current = await launchdServiceInfo(deps.runner, target.label, uid);
137
- if (current.pid !== undefined)
138
- observedRestorePids.add(current.pid);
139
- return current.loaded && current.pid !== undefined && deps.isAlive(current.pid);
140
- });
141
- if (!running) {
142
- const current = await launchdServiceInfo(deps.runner, target.label, uid);
143
- if (current.pid !== undefined)
144
- observedRestorePids.add(current.pid);
145
- const cleanedUp = await unloadLaunchdService(target.label, current, [...observedRestorePids], deps, uid, poll);
146
- reportMaintenanceFailure(target, deps, "restore the exact main LaunchAgent after rotation", lifecycleFailure(booted, "launchd did not expose a live replacement worker"));
147
- if (!cleanedUp.ok) {
148
- reportMaintenanceFailure(target, deps, "remove the failed replacement worker", cleanedUp.failure);
378
+ }
379
+ try {
380
+ await deps.recordMaintenancePhase?.("rotating");
381
+ if (additionalInspection.canMaintain && additionalInspection.needsMaintenance) {
382
+ const result = await deps.maintainAdditionalLaunchdLogArtifacts?.(target.paths);
383
+ if (result === undefined) {
384
+ throw new Error("The bounded legacy inspection had no matching stopped-writer maintainer.");
149
385
  }
150
- return 1;
151
- }
152
- try {
153
- const restoredPlistIdentity = await deps.verifyLaunchdPlist(target.paths.plistPath);
154
- if (restoredPlistIdentity !== originalPlistIdentity) {
155
- throw new Error("The main LaunchAgent plist changed while launchd restored the worker.");
386
+ if (result.refusals.length > 0) {
387
+ additionalRefused = true;
388
+ await deps.recordAdditionalLaunchdLogRefusals?.(result.refusals);
156
389
  }
157
390
  }
158
- catch (error) {
159
- const restoredService = await launchdServiceInfo(deps.runner, target.label, uid);
160
- const stoppedAgain = await unloadLaunchdService(target.label, restoredService, uniquePids([restoredService.pid, ...observedRestorePids]), deps, uid, poll);
161
- reportMaintenanceFailure(target, deps, "prove the restored main LaunchAgent definition", error);
162
- if (!stoppedAgain.ok) {
163
- reportMaintenanceFailure(target, deps, "stop the worker after its definition changed", stoppedAgain.failure);
164
- }
165
- return 1;
391
+ await deps.rotateStoppedLaunchdLogs(target.paths);
392
+ const currentPlistIdentity = await deps.verifyLaunchdPlist(target.paths.plistPath);
393
+ if (currentPlistIdentity !== originalPlistIdentity) {
394
+ throw new Error("The main LaunchAgent plist changed during stopped-writer maintenance.");
166
395
  }
167
- try {
168
- await deps.clearLaunchdLogMaintenanceIntent(target.paths, maintenanceIntent);
396
+ }
397
+ catch (error) {
398
+ reportMaintenanceFailure(target, deps, "commit bounded stopped-writer logs", error);
399
+ return 1;
400
+ }
401
+ try {
402
+ maintenanceIntent = await deps.markLaunchdLogMaintenanceRestoring(target.paths, maintenanceIntent);
403
+ await deps.recordMaintenancePhase?.("restoring");
404
+ }
405
+ catch (error) {
406
+ reportMaintenanceFailure(target, deps, "invalidate stopped-writer proof before restoration", error);
407
+ return 1;
408
+ }
409
+ const booted = await bootstrap(deps.runner, target.paths.plistPath, uid);
410
+ const observedRestorePids = new Set();
411
+ const running = await pollUntil(deps, poll, async () => {
412
+ const current = await launchdServiceInfo(deps.runner, target.label, uid);
413
+ if (current.pid !== undefined)
414
+ observedRestorePids.add(current.pid);
415
+ return current.loaded && current.pid !== undefined && deps.isAlive(current.pid);
416
+ });
417
+ if (!running) {
418
+ const current = await launchdServiceInfo(deps.runner, target.label, uid);
419
+ if (current.pid !== undefined)
420
+ observedRestorePids.add(current.pid);
421
+ const cleanedUp = await unloadLaunchdService(target.label, current, [...observedRestorePids], deps, uid, poll);
422
+ reportMaintenanceFailure(target, deps, "restore the exact main LaunchAgent after rotation", lifecycleFailure(booted, "launchd did not expose a live replacement worker"));
423
+ if (!cleanedUp.ok) {
424
+ reportMaintenanceFailure(target, deps, "remove the failed replacement worker", cleanedUp.failure);
169
425
  }
170
- catch (error) {
171
- reportMaintenanceFailure(target, deps, "clear durable launchd-log maintenance intent", error);
172
- return 1;
426
+ return 1;
427
+ }
428
+ try {
429
+ const restoredPlistIdentity = await deps.verifyLaunchdPlist(target.paths.plistPath);
430
+ if (restoredPlistIdentity !== originalPlistIdentity) {
431
+ throw new Error("The main LaunchAgent plist changed while launchd restored the worker.");
173
432
  }
174
- return 0;
175
433
  }
176
- finally {
177
- await release().catch((error) => {
178
- deps.stderr(ui.errorLine(`Could not release lifecycle lock for ${target.label}: ${error instanceof Error ? error.message : String(error)}`));
179
- });
434
+ catch (error) {
435
+ const restoredService = await launchdServiceInfo(deps.runner, target.label, uid);
436
+ const stoppedAgain = await unloadLaunchdService(target.label, restoredService, uniquePids([restoredService.pid, ...observedRestorePids]), deps, uid, poll);
437
+ reportMaintenanceFailure(target, deps, "prove the restored main LaunchAgent definition", error);
438
+ if (!stoppedAgain.ok) {
439
+ reportMaintenanceFailure(target, deps, "stop the worker after its definition changed", stoppedAgain.failure);
440
+ }
441
+ return 1;
442
+ }
443
+ try {
444
+ await deps.clearLaunchdLogMaintenanceIntent(target.paths, maintenanceIntent);
445
+ await deps.recordMaintenancePhase?.("complete");
446
+ }
447
+ catch (error) {
448
+ reportMaintenanceFailure(target, deps, "clear durable launchd-log maintenance intent", error);
449
+ return 1;
180
450
  }
451
+ return additionalRefused ? 1 : 0;
181
452
  }
182
453
  export function reportMaintenanceFailure(target, deps, action, error) {
183
454
  deps.stderr(ui.errorLine(`Scheduled log maintenance could not ${action} for ${target.label}: ${maintenanceErrorMessage(error)}`));
@@ -1 +1 @@
1
- {"version":3,"file":"background-log-maintenance.js","sourceRoot":"","sources":["../src/background-log-maintenance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAE7D,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,SAAS,EACT,UAAU,EACV,oBAAoB,GACrB,MAAM,iCAAiC,CAAC;AAGzC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,iFAAiF;AACjF,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,MAAiC,EACjC,IAAoB,EACpB,IAAiB;IAEjB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACxD,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAEzE,IAAI,UAAgC,CAAC;QACrC,IAAI,CAAC;YACH,UAAU,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,wBAAwB,CAAC,MAAM,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,CAAC,CAAC;YACtE,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,iBAA0D,CAAC;QAC/D,IAAI,CAAC;YACH,iBAAiB,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,wBAAwB,CAAC,MAAM,EAAE,IAAI,EAAE,6CAA6C,EAAE,KAAK,CAAC,CAAC;YAC7F,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,UAAU,CAAC,kBAAkB,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;YACrE,wBAAwB,CACtB,MAAM,EACN,IAAI,EACJ,6CAA6C,EAC7C,IAAI,KAAK,CAAC,qDAAqD,CAAC,CACjE,CAAC;YACF,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,iBAAiB,KAAK,SAAS;YAAE,OAAO,CAAC,CAAC;QAEjE,IAAI,qBAA6B,CAAC;QAClC,IAAI,CAAC;YACH,qBAAqB,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAChF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,wBAAwB,CAAC,MAAM,EAAE,IAAI,EAAE,sCAAsC,EAAE,KAAK,CAAC,CAAC;YACtF,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,iBAAiB,KAAK,SAAS;eAC9B,CAAC,iBAAiB,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK;mBACvC,iBAAiB,CAAC,gBAAgB,KAAK,qBAAqB,CAAC,EAAE,CAAC;YACrE,wBAAwB,CACtB,MAAM,EACN,IAAI,EACJ,qDAAqD,EACrD,IAAI,KAAK,CAAC,0EAA0E,CAAC,CACtF,CAAC;YACF,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,iBAAiB,EAAE,KAAK,KAAK,UAAU,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC/D,wBAAwB,CACtB,MAAM,EACN,IAAI,EACJ,6CAA6C,EAC7C,IAAI,KAAK,CAAC,0FAA0F,CAAC,CACtG,CAAC;YACF,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,iBAAiB,EAAE,KAAK,KAAK,WAAW,EAAE,CAAC;YAC7C,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC7E,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3F,wBAAwB,CACtB,MAAM,EACN,IAAI,EACJ,6CAA6C,EAC7C,IAAI,KAAK,CAAC,uGAAuG,CAAC,CACnH,CAAC;gBACF,OAAO,CAAC,CAAC;YACX,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,gCAAgC,CAAC,MAAM,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;YAC/E,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,wBAAwB,CAAC,MAAM,EAAE,IAAI,EAAE,gDAAgD,EAAE,KAAK,CAAC,CAAC;gBAChG,OAAO,CAAC,CAAC;YACX,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,iBAAiB,EAAE,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YAC7D,wBAAwB,CACtB,MAAM,EACN,IAAI,EACJ,6CAA6C,EAC7C,IAAI,KAAK,CAAC,wFAAwF,CAAC,CACpG,CAAC;YACF,OAAO,CAAC,CAAC;QACX,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,sDAAsD,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACjG,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,MAAM;gBAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;YAC/E,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,gBAAgB,IAAI,iBAAiB,KAAK,SAAS;YAAE,OAAO,CAAC,CAAC;QAE9E,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;YACpC,iBAAiB,GAAG;gBAClB,OAAO,EAAE,CAAC;gBACV,KAAK,EAAE,UAAU;gBACjB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,gBAAgB,EAAE,qBAAqB;aACxC,CAAC;YACF,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,gCAAgC,CAAC,MAAM,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;YAC/E,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,wBAAwB,CAAC,MAAM,EAAE,IAAI,EAAE,gDAAgD,EAAE,KAAK,CAAC,CAAC;gBAChG,OAAO,CAAC,CAAC;YACX,CAAC;QACH,CAAC;QAED,IAAI,iBAAiB,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YAC3C,MAAM,OAAO,GAAG,MAAM,oBAAoB,CACxC,MAAM,CAAC,KAAK,EACZ,OAAO,EACP,UAAU,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EACzB,IAAI,EACJ,GAAG,EACH,IAAI,CACL,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;gBAChB,wBAAwB,CAAC,MAAM,EAAE,IAAI,EAAE,sCAAsC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;gBAChG,OAAO,CAAC,CAAC;YACX,CAAC;YACD,IAAI,CAAC;gBACH,iBAAiB,GAAG,MAAM,IAAI,CAAC,gCAAgC,CAAC,MAAM,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;YACnG,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,wBAAwB,CAAC,MAAM,EAAE,IAAI,EAAE,qCAAqC,EAAE,KAAK,CAAC,CAAC;gBACrF,OAAO,CAAC,CAAC;YACX,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACzE,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC/E,wBAAwB,CACtB,MAAM,EACN,IAAI,EACJ,sCAAsC,EACtC,IAAI,KAAK,CAAC,0DAA0D,CAAC,CACtE,CAAC;gBACF,OAAO,CAAC,CAAC;YACX,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAClD,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACnF,IAAI,oBAAoB,KAAK,qBAAqB,EAAE,CAAC;gBACnD,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;YAC3F,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,wBAAwB,CAAC,MAAM,EAAE,IAAI,EAAE,oCAAoC,EAAE,KAAK,CAAC,CAAC;YACpF,OAAO,CAAC,CAAC;QACX,CAAC;QAED,IAAI,CAAC;YACH,iBAAiB,GAAG,MAAM,IAAI,CAAC,kCAAkC,CAAC,MAAM,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;QACrG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,wBAAwB,CAAC,MAAM,EAAE,IAAI,EAAE,oDAAoD,EAAE,KAAK,CAAC,CAAC;YACpG,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACzE,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;QAC9C,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE;YACrD,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACzE,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS;gBAAE,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACpE,OAAO,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACzE,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS;gBAAE,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACpE,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAC1C,MAAM,CAAC,KAAK,EACZ,OAAO,EACP,CAAC,GAAG,mBAAmB,CAAC,EACxB,IAAI,EACJ,GAAG,EACH,IAAI,CACL,CAAC;YACF,wBAAwB,CACtB,MAAM,EACN,IAAI,EACJ,mDAAmD,EACnD,gBAAgB,CAAC,MAAM,EAAE,kDAAkD,CAAC,CAC7E,CAAC;YACF,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;gBAClB,wBAAwB,CAAC,MAAM,EAAE,IAAI,EAAE,sCAAsC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;YACpG,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,CAAC;YACH,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACpF,IAAI,qBAAqB,KAAK,qBAAqB,EAAE,CAAC;gBACpD,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;YAC3F,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACjF,MAAM,YAAY,GAAG,MAAM,oBAAoB,CAC7C,MAAM,CAAC,KAAK,EACZ,eAAe,EACf,UAAU,CAAC,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,mBAAmB,CAAC,CAAC,EACzD,IAAI,EACJ,GAAG,EACH,IAAI,CACL,CAAC;YACF,wBAAwB,CAAC,MAAM,EAAE,IAAI,EAAE,gDAAgD,EAAE,KAAK,CAAC,CAAC;YAChG,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;gBACrB,wBAAwB,CAAC,MAAM,EAAE,IAAI,EAAE,8CAA8C,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;YAC/G,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,gCAAgC,CAAC,MAAM,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;QAC/E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,wBAAwB,CAAC,MAAM,EAAE,IAAI,EAAE,8CAA8C,EAAE,KAAK,CAAC,CAAC;YAC9F,OAAO,CAAC,CAAC;QACX,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACvC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CACtB,wCAAwC,MAAM,CAAC,KAAK,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAClH,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,MAAiC,EACjC,IAAoB,EACpB,MAAc,EACd,KAAc;IAEd,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CACtB,uCAAuC,MAAM,QAAQ,MAAM,CAAC,KAAK,KAAK,uBAAuB,CAAC,KAAK,CAAC,EAAE,CACvG,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"background-log-maintenance.js","sourceRoot":"","sources":["../src/background-log-maintenance.ts"],"names":[],"mappings":"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"}