@mono-agent/agent-app 0.19.1 → 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 +1 @@
1
- {"version":3,"file":"background.d.ts","sourceRoot":"","sources":["../src/background.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"background.d.ts","sourceRoot":"","sources":["../src/background.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { spawn } from "node:child_process";
2
2
  import { createHash, randomUUID } from "node:crypto";
3
3
  import { constants as fsConstants } from "node:fs";
4
- import { lstat, mkdir, open, realpath, rename, rm, writeFile } from "node:fs/promises";
4
+ import { lstat, open, realpath, rename, rm, writeFile } from "node:fs/promises";
5
5
  import { basename, dirname, join, resolve } from "node:path";
6
6
  import process from "node:process";
7
7
  import { listRecordedRuns, listTraceSources } from "@mono-agent/observability";
@@ -9,19 +9,24 @@ import { describeSensitiveDataExportWarning, phoenixAppBaseUrl, resolveAppTraceR
9
9
  import { formatChannelFactValue } from "./channel-fact-format.js";
10
10
  import { formatHumanChannelSections } from "./channel-status-display.js";
11
11
  import { hasCompletedManagedStartup } from "./managed-startup.js";
12
- import { bootout, bootstrap, buildLaunchdMaintenancePlistXml, buildPlistXml, defaultPathEnv, deriveLaunchdLabel, deriveLaunchdMaintenanceLabel, isLoaded, launchdManagedWorkerInfo, launchdServiceInfo, launchdPathsFor, MANAGED_LAUNCHD_LOG_MAINTENANCE_ENV, makeLaunchctlRunner, } from "./launchd.js";
12
+ import { bootout, bootstrap, buildLaunchdMaintenancePlistXml, buildPlistXml, defaultPathEnv, deriveLaunchdLabel, deriveLaunchdMaintenanceLabel, isLoaded, launchdManagedWorkerInfo, launchdMaintenanceEntrypointPathForCli, launchdServiceInfo, launchdPathsFor, launchdMaintenanceCalendarMinute, MANAGED_LAUNCHD_LOG_MAINTENANCE_ENV, makeLaunchctlRunner, } from "./launchd.js";
13
13
  import { selectBackgroundOperationalEnvironment } from "./background-environment.js";
14
- import { beginLaunchdLogMaintenanceIntent, clearLaunchdLogMaintenanceIntent, inspectLaunchdLogs, LAUNCHD_LOG_MAINTENANCE_INTERVAL_SECONDS, markLaunchdLogMaintenanceRestoring, markLaunchdLogMaintenanceStopped, markLaunchdLogMaintenanceStopping, readLaunchdLogMaintenanceIntent, rotateStoppedLaunchdLogs, } from "./launchd-logs.js";
14
+ import { beginLaunchdLogMaintenanceIntent, clearLaunchdLogMaintenanceIntent, inspectLaunchdLogs, markLaunchdLogMaintenanceRestoring, markLaunchdLogMaintenanceStopped, markLaunchdLogMaintenanceStopping, readLaunchdLogMaintenanceIntent, rotateStoppedLaunchdLogs, } from "./launchd-logs.js";
15
15
  import { ensureManagedBackgroundRuntime, inspectManagedRuntimeSourceIdentity, MANAGED_BACKGROUND_WORKER_ENV, verifyManagedRuntimeLaunch, } from "./background-runtime.js";
16
16
  import { backgroundSnapshotFromMetadata, captureBackgroundSnapshot, encodeBackgroundSnapshot, sameBackgroundSnapshot, } from "./background-snapshot.js";
17
17
  import { resolveConfiguredManagedRuntimePackages } from "./managed-runtime-packages.js";
18
+ import { removeLaunchdLogMonitorStatus } from "./launchd-log-monitor-status.js";
18
19
  import { acquireManagedRuntimePublicationBarrier } from "./managed-runtime-publication.js";
19
- import { processIncarnationFromJson, } from "./process-incarnation.js";
20
- import { acquireOwnerPrivateLock, validateOwnerPrivateLockInputs } from "./owner-private-lock.js";
20
+ import { ensureOwnerPrivateLaunchdDirectory } from "./launchd-private-files.js";
21
+ import { acquireFilesystemLifecycleLock, acquireSharedLaunchdLogLock, } from "./launchd-lifecycle-lock.js";
22
+ import { assertLaunchdMaintenanceLifecycleLease, withLaunchdMaintenanceControllerLock, } from "./launchd-maintenance-gate.js";
21
23
  import { buildRunsHealthDisplay, RUNS_HEALTH_MAX_RUNS } from "./runs-health.js";
22
24
  import { lifecycleFailure, maintenanceErrorMessage, pollUntil, uniquePids, unloadLaunchdService, } from "./background-lifecycle-utils.js";
23
- import { maintainLaunchdLogsOperation, reportMaintenanceFailure, } from "./background-log-maintenance.js";
25
+ import { maintainLaunchdLogsOperation, maintainLaunchdLogsWithLifecycleLockOperation, reportMaintenanceFailure, } from "./background-log-maintenance.js";
24
26
  import * as ui from "./ui.js";
27
+ export { acquireFilesystemLifecycleLock, acquireSharedLaunchdLogLock, sharedLaunchdLogLockTarget, SHARED_LAUNCHD_LOG_LOCK_POLL_MS, SHARED_LAUNCHD_LOG_LOCK_WAIT_MS, } from "./launchd-lifecycle-lock.js";
28
+ export { withLaunchdMaintenanceControllerLock } from "./launchd-maintenance-gate.js";
29
+ export { ensureOwnerPrivateLaunchdDirectory } from "./launchd-private-files.js";
25
30
  export { acquireBackgroundWorkerLease, backgroundWorkerLeasePath, } from "./background-worker-lease.js";
26
31
  export { LAUNCHD_LOG_MAX_BYTES, LAUNCHD_LOG_ROTATION_COUNT, } from "./launchd-logs.js";
27
32
  /** Exact non-secret environment materialised into a managed LaunchAgent. */
@@ -34,7 +39,7 @@ export function managedBackgroundEnvironment(env) {
34
39
  [MANAGED_BACKGROUND_WORKER_ENV]: "1",
35
40
  };
36
41
  }
37
- /** Exact non-secret environment for the scheduled one-shot log maintainer. */
42
+ /** Exact non-secret environment for the scheduled recovery/rotation controller. */
38
43
  export function managedLaunchdLogMaintenanceEnvironment(env) {
39
44
  return {
40
45
  ...selectBackgroundOperationalEnvironment(env),
@@ -135,6 +140,7 @@ export function defaultBackgroundDeps() {
135
140
  clearLaunchdLogMaintenanceIntent: async (paths, expected) => {
136
141
  await clearLaunchdLogMaintenanceIntent(paths, expected);
137
142
  },
143
+ removeLaunchdLogMonitorStatus,
138
144
  verifyLaunchdPlist: inspectOwnerPrivateLaunchdPlist,
139
145
  isAlive: (pid) => {
140
146
  try {
@@ -186,21 +192,16 @@ export async function restartBackground(target, deps, poll) {
186
192
  * drifted. A healthy worker remains serving while a replacement runtime is
187
193
  * materialized.
188
194
  */
189
- export async function maintainLaunchdController(target, deps, options) {
190
- const helper = maintenancePathsForTarget(target);
191
- const uid = deps.getuid();
192
- const helperService = await launchdServiceInfo(deps.runner, helper.label, uid);
193
- const helperPid = deps.currentPid();
194
- if (!helperService.loaded || helperService.pid !== helperPid || !deps.isAlive(helperPid)) {
195
- reportMaintenanceFailure(target, deps, "authenticate the launchd-owned recovery controller", new Error(`launchd does not own this helper pid ${helperPid}`));
196
- return 1;
197
- }
198
- const release = await deps.acquireLifecycleLock(target);
199
- if (release === undefined) {
200
- // A manual lifecycle command owns the label. The helper exits cleanly so
201
- // that command can boot it out; StartInterval supplies the next retry.
202
- return 0;
195
+ export async function maintainLaunchdController(target, deps, options, lifecycleLease) {
196
+ if (lifecycleLease !== undefined) {
197
+ assertLaunchdMaintenanceLifecycleLease(lifecycleLease, target);
198
+ return await maintainLaunchdControllerWithLifecycleLease(target, deps, options);
203
199
  }
200
+ return await withLaunchdMaintenanceControllerLock(target, deps, async (ownership) => await maintainLaunchdController(target, deps, options, ownership));
201
+ }
202
+ /** Reconcile while the authenticated helper owns only this agent's lifecycle. */
203
+ async function maintainLaunchdControllerWithLifecycleLease(target, deps, options) {
204
+ const uid = deps.getuid();
204
205
  let maintainLogsOnly = false;
205
206
  let resultCode = 1;
206
207
  try {
@@ -246,24 +247,26 @@ export async function maintainLaunchdController(target, deps, options) {
246
247
  resultCode = 0;
247
248
  }
248
249
  else {
250
+ const preflightCode = await options.recoveryPreflight?.() ?? 0;
251
+ if (preflightCode !== 0)
252
+ return preflightCode;
249
253
  if (!options.sourceAvailable) {
250
254
  deps.stderr(ui.style.dim(`The original controller CLI is unavailable; recovering ${target.label} from the helper's private closure without claiming an upgrade.`) + "\n");
251
255
  }
252
- const recovered = await ensureBackgroundReadyUnlocked(target, deps, options.controlPoll ?? DEFAULT_CONTROL_POLL, options.readinessPoll ?? DEFAULT_READINESS_POLL, { preserveMaintenanceService: true, preserveDefinitionsOnFailure: true });
253
- resultCode = recovered.ok ? 0 : 1;
256
+ const recovered = await ensureBackgroundReadyUnlocked(target, deps, options.controlPoll ?? DEFAULT_CONTROL_POLL, options.readinessPoll ?? DEFAULT_READINESS_POLL, {
257
+ preserveMaintenanceService: true,
258
+ preserveDefinitionsOnFailure: true,
259
+ sharedLockMode: "automatic",
260
+ });
261
+ resultCode = recovered.ok || recovered.reason === "shared-contention" ? 0 : 1;
254
262
  }
255
263
  }
256
264
  catch (error) {
257
265
  reportMaintenanceFailure(target, deps, "reconcile the managed worker", error);
258
266
  resultCode = 1;
259
267
  }
260
- finally {
261
- await release().catch((error) => {
262
- deps.stderr(ui.errorLine(`Could not release lifecycle lock for ${target.label}: ${error instanceof Error ? error.message : String(error)}`));
263
- });
264
- }
265
268
  return maintainLogsOnly
266
- ? await maintainLaunchdLogs(target, deps, options.controlPoll ?? DEFAULT_CONTROL_POLL)
269
+ ? await maintainLaunchdLogsWithLifecycleLockOperation(target, deps, options.controlPoll ?? DEFAULT_CONTROL_POLL, async () => await acquireSharedLaunchdLogLock(target, deps, "automatic"))
267
270
  : resultCode;
268
271
  }
269
272
  function managedWorkerDefinitionMatchesTarget(definition, target) {
@@ -323,7 +326,7 @@ export async function forceRestartBackground(target, deps, whileStopped, poll) {
323
326
  * its own durable lifecycle intent after a prior maintainer died post-bootout.
324
327
  */
325
328
  export async function maintainLaunchdLogs(target, deps, poll = DEFAULT_CONTROL_POLL) {
326
- return await maintainLaunchdLogsOperation(target, deps, poll);
329
+ return await maintainLaunchdLogsOperation(target, deps, poll, async () => await acquireSharedLaunchdLogLock(target, deps, "automatic"));
327
330
  }
328
331
  /**
329
332
  * Ensure the canonical per-config LaunchAgent is running and return the fresh
@@ -437,18 +440,26 @@ async function ensureBackgroundReadyAfterPublicationBarrier(target, deps, contro
437
440
  reportLifecycleException(launchTarget, deps, "verify the existing background worker ownership", error);
438
441
  return { ok: false, action: "start", reason: "ownership" };
439
442
  }
440
- let sinceMs = deps.now();
443
+ let releaseSharedLogLock;
441
444
  try {
442
- await prepareLaunchdDirectories(launchTarget, deps);
445
+ releaseSharedLogLock = await acquireSharedLaunchdLogLock(launchTarget, deps, options.sharedLockMode ?? "interactive");
443
446
  }
444
447
  catch (error) {
445
- reportLifecycleException(launchTarget, deps, "prepare the LaunchAgent directories", error);
446
- return { ok: false, action: "start", reason: "preparation" };
448
+ reportLifecycleException(launchTarget, deps, "acquire the shared launchd-log mutation lock", error);
449
+ return { ok: false, action: "start", reason: "ownership" };
450
+ }
451
+ if (releaseSharedLogLock === undefined) {
452
+ if (options.sharedLockMode !== "automatic") {
453
+ deps.stderr(ui.errorLine("Shared launchd-log maintenance is already active for another agent on this account."));
454
+ }
455
+ return { ok: false, action: "start", reason: "shared-contention" };
447
456
  }
457
+ let sinceMs = deps.now();
448
458
  let outcome;
449
459
  let prepared = false;
450
460
  deps.stdout(ui.hint("Replacing the managed worker…"));
451
461
  try {
462
+ await prepareLaunchdDirectories(launchTarget, deps);
452
463
  let interruptedMaintenance = await deps.readLaunchdLogMaintenanceIntent(launchTarget.paths);
453
464
  if (interruptedMaintenance?.phase === "stopping" || interruptedMaintenance?.phase === "restoring") {
454
465
  const current = await launchdServiceInfo(deps.runner, launchTarget.label, uid);
@@ -486,6 +497,11 @@ async function ensureBackgroundReadyAfterPublicationBarrier(target, deps, contro
486
497
  reportLifecycleException(launchTarget, deps, prepared ? "start the LaunchAgent" : "prepare the stopped LaunchAgent", error);
487
498
  return { ok: false, action: "start", reason: prepared ? "launchctl" : "preparation" };
488
499
  }
500
+ finally {
501
+ await releaseSharedLogLock?.().catch((error) => {
502
+ deps.stderr(ui.errorLine(`Could not release the shared launchd-log mutation lock for ${launchTarget.label}: ${error instanceof Error ? error.message : String(error)}`));
503
+ });
504
+ }
489
505
  const action = outcome.restarted ? "restart" : "start";
490
506
  if (!outcome.ok) {
491
507
  reportLaunchFailure(launchTarget, deps, action, outcome.failure);
@@ -574,60 +590,23 @@ async function writePlists(target, deps) {
574
590
  const maintenanceXml = buildLaunchdMaintenancePlistXml({
575
591
  label: maintenance.label,
576
592
  nodePath: target.nodePath,
577
- cliPath: target.cliPath,
593
+ cliPath: launchdMaintenanceEntrypointPathForCli(target.cliPath),
578
594
  configPath: target.configPath,
579
595
  controllerCliPath: target.controllerCliPath ?? target.cliPath,
580
596
  agentCwd: target.cwd,
581
597
  agentPath,
598
+ expectedManagedRuntimeLaunch: target.managedRuntimeLaunchProof,
582
599
  ...(target.envFile === undefined ? {} : { envFile: target.envFile }),
583
600
  // The agent folder may be renamed or removed while its already-running
584
601
  // worker still owns log descriptors. Keep the scheduler's cwd in the
585
602
  // durable account state tree; its config argument is already absolute.
586
603
  cwd: dirname(target.paths.logDir),
587
604
  environment: managedLaunchdLogMaintenanceEnvironment(target.environment),
588
- intervalSeconds: LAUNCHD_LOG_MAINTENANCE_INTERVAL_SECONDS,
605
+ calendarMinute: launchdMaintenanceCalendarMinute(target.label),
589
606
  });
590
607
  await deps.writeFile(target.paths.plistPath, mainXml);
591
608
  await deps.writeFile(maintenance.plistPath, maintenanceXml);
592
609
  }
593
- export async function ensureOwnerPrivateLaunchdDirectory(path) {
594
- const parent = dirname(path);
595
- const parentDetails = await lstat(parent);
596
- assertOwnerDirectory(parentDetails, parent, "LaunchAgent parent");
597
- try {
598
- await mkdir(path, { mode: 0o700 });
599
- }
600
- catch (error) {
601
- if (!isErrno(error, "EEXIST"))
602
- throw error;
603
- }
604
- const parentAfter = await lstat(parent);
605
- assertOwnerDirectory(parentAfter, parent, "LaunchAgent parent");
606
- if (!sameFilesystemIdentity(parentDetails, parentAfter)) {
607
- throw new Error(`LaunchAgent parent ${parent} changed while ${path} was created.`);
608
- }
609
- const handle = await open(path, fsConstants.O_RDONLY | fsConstants.O_DIRECTORY | fsConstants.O_NOFOLLOW);
610
- try {
611
- const before = await handle.stat();
612
- assertOwnerDirectory(before, path, "LaunchAgent directory");
613
- await handle.chmod(0o700);
614
- const secured = await handle.stat();
615
- if (!sameFilesystemIdentity(before, secured)) {
616
- throw new Error(`LaunchAgent directory ${path} changed while it was secured.`);
617
- }
618
- assertOwnerDirectory(secured, path, "LaunchAgent directory");
619
- if ((secured.mode & 0o077) !== 0) {
620
- throw new Error(`LaunchAgent directory ${path} must be owner-only.`);
621
- }
622
- const current = await lstat(path);
623
- if (!sameFilesystemIdentity(secured, current)) {
624
- throw new Error(`LaunchAgent directory ${path} changed while it was secured.`);
625
- }
626
- }
627
- finally {
628
- await handle.close();
629
- }
630
- }
631
610
  export async function writeOwnerPrivateLaunchdFile(path, data) {
632
611
  let existing;
633
612
  try {
@@ -675,7 +654,10 @@ export async function writeOwnerPrivateLaunchdFile(path, data) {
675
654
  await rm(temporaryPath, { force: true }).catch(() => undefined);
676
655
  }
677
656
  }
678
- async function inspectOwnerPrivateLaunchdPlist(path) {
657
+ export async function inspectOwnerPrivateLaunchdPlist(path) {
658
+ return (await readOwnerPrivateLaunchdPlist(path)).identity;
659
+ }
660
+ export async function readOwnerPrivateLaunchdPlist(path) {
679
661
  const handle = await open(path, fsConstants.O_RDONLY | fsConstants.O_NOFOLLOW | fsConstants.O_NONBLOCK);
680
662
  try {
681
663
  const before = await handle.stat();
@@ -699,12 +681,13 @@ async function inspectOwnerPrivateLaunchdPlist(path) {
699
681
  if ((current.mode & 0o777) !== 0o600 || !sameFileSnapshot(after, current)) {
700
682
  throw new Error(`LaunchAgent plist ${path} changed while it was inspected.`);
701
683
  }
702
- return [
684
+ const identity = [
703
685
  String(after.dev),
704
686
  String(after.ino),
705
687
  String(after.size),
706
688
  createHash("sha256").update(contents).digest("hex"),
707
689
  ].join(":");
690
+ return { identity, contents: contents.toString("utf8") };
708
691
  }
709
692
  finally {
710
693
  await handle.close();
@@ -883,6 +866,28 @@ export async function stopBackground(target, deps, poll = DEFAULT_CONTROL_POLL)
883
866
  }
884
867
  }
885
868
  async function stopBackgroundUnlocked(target, deps, poll) {
869
+ let releaseSharedLogLock;
870
+ try {
871
+ releaseSharedLogLock = await acquireSharedLaunchdLogLock(target, deps, "interactive");
872
+ }
873
+ catch (error) {
874
+ reportLifecycleException(target, deps, "acquire the shared launchd-log mutation lock", error);
875
+ return 1;
876
+ }
877
+ if (releaseSharedLogLock === undefined) {
878
+ deps.stderr(ui.errorLine("Shared launchd-log maintenance is still active for another agent on this account."));
879
+ return 1;
880
+ }
881
+ try {
882
+ return await stopBackgroundWithSharedLogLock(target, deps, poll);
883
+ }
884
+ finally {
885
+ await releaseSharedLogLock().catch((error) => {
886
+ deps.stderr(ui.errorLine(`Could not release the shared launchd-log mutation lock for ${target.label}: ${error instanceof Error ? error.message : String(error)}`));
887
+ });
888
+ }
889
+ }
890
+ async function stopBackgroundWithSharedLogLock(target, deps, poll) {
886
891
  const uid = deps.getuid();
887
892
  const maintenance = maintenancePathsForTarget(target);
888
893
  const existing = await findInstances(target, deps);
@@ -949,9 +954,10 @@ async function stopBackgroundUnlocked(target, deps, poll) {
949
954
  maintenanceIntent = await deps.markLaunchdLogMaintenanceStopped(target.paths, maintenanceIntent);
950
955
  }
951
956
  await deps.clearLaunchdLogMaintenanceIntent(target.paths, maintenanceIntent);
957
+ await deps.removeLaunchdLogMonitorStatus?.(target);
952
958
  }
953
959
  catch (error) {
954
- deps.stderr(ui.errorLine(`Failed to clear pending launchd-log maintenance for ${target.label}.`));
960
+ deps.stderr(ui.errorLine(`Failed to clear pending launchd-log state for ${target.label}.`));
955
961
  deps.stderr(ui.style.dim(error instanceof Error ? error.message : String(error)) + "\n");
956
962
  deps.stderr(ui.hint("Both LaunchAgent plists were preserved; retry stop after the owner-private marker is inspectable."));
957
963
  return 1;
@@ -1516,67 +1522,6 @@ function commandFlags(target) {
1516
1522
  function shellCommandArgument(value) {
1517
1523
  return /^[a-zA-Z0-9_./:@%+=,-]+$/u.test(value) ? value : `'${value.replaceAll("'", `'"'"'`)}'`;
1518
1524
  }
1519
- export async function acquireFilesystemLifecycleLock(target, options = {}) {
1520
- const pid = options.pid ?? process.pid;
1521
- const now = options.now ?? (() => Date.now());
1522
- const isProcessAlive = options.isProcessAlive ?? processIsAlive;
1523
- const ownerlessGraceMs = options.ownerlessGraceMs ?? 5 * 60_000;
1524
- const randomToken = options.randomToken ?? randomUUID;
1525
- validateOwnerPrivateLockInputs("Lifecycle lock", pid, ownerlessGraceMs);
1526
- const managedRoot = dirname(target.paths.logDir);
1527
- const locksDir = resolve(managedRoot, "locks");
1528
- for (const path of [managedRoot, locksDir]) {
1529
- await ensureOwnerPrivateLaunchdDirectory(path);
1530
- }
1531
- const lockDir = resolve(locksDir, `${target.label}.lock`);
1532
- const held = await acquireOwnerPrivateLock({
1533
- path: lockDir,
1534
- label: "Lifecycle lock",
1535
- schemaTag: "mono-agent.filesystem-lifecycle-lock.v1",
1536
- ownerlessGraceMs,
1537
- maxAcquireAttempts: 4,
1538
- pid,
1539
- now,
1540
- randomToken,
1541
- ...(options.processIncarnation === undefined ? {} : { processIncarnation: options.processIncarnation }),
1542
- ...(options.isSameProcessIncarnation === undefined
1543
- ? {}
1544
- : { isSameProcessIncarnation: options.isSameProcessIncarnation }),
1545
- parseLegacyOwner: (record) => {
1546
- if (typeof record.pid !== "number" || !Number.isSafeInteger(record.pid) || record.pid <= 0)
1547
- return undefined;
1548
- const incarnation = processIncarnationFromJson(record.incarnation);
1549
- return {
1550
- pid: record.pid,
1551
- ...(incarnation === undefined ? {} : { incarnation }),
1552
- };
1553
- },
1554
- // Permanent pre-v0.9.0 compatibility: a skipped-version upgrade can
1555
- // encounter crash debris without incarnation identity indefinitely.
1556
- // All owner records written since v0.9.0 use the stronger shared schema.
1557
- allowCurrentUserLegacyOwnerMode: true,
1558
- isLegacyProcessAlive: isProcessAlive,
1559
- invalidOwner: "ownerless",
1560
- livenessError: () => "assume-live",
1561
- ...(options.beforeStaleLockRename === undefined
1562
- ? {}
1563
- : { beforeStaleRename: options.beforeStaleLockRename }),
1564
- staleRace: "return",
1565
- stalePath: ({ now: staleAt, pid: stalePid, token }) => resolve(locksDir, `${target.label}.stale-${staleAt}-${stalePid}-${token}`),
1566
- releasedPath: ({ now: releasedAt, pid: ownerPid, token }) => resolve(locksDir, `${target.label}.released-${releasedAt}-${ownerPid}-${token}`),
1567
- abandonedPath: ({ now: abandonedAt, pid: ownerPid, token }) => resolve(locksDir, `${target.label}.abandoned-${abandonedAt}-${ownerPid}-${token}`),
1568
- });
1569
- return held === undefined ? undefined : () => held.release();
1570
- }
1571
- function processIsAlive(pid) {
1572
- try {
1573
- process.kill(pid, 0);
1574
- return true;
1575
- }
1576
- catch (error) {
1577
- return isErrno(error, "EPERM");
1578
- }
1579
- }
1580
1525
  async function probeTuiEndpoint(source) {
1581
1526
  const baseUrl = tuiEndpoint(source);
1582
1527
  if (baseUrl === undefined)