@mono-agent/agent-app 0.19.1 → 0.20.1

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 (317) hide show
  1. package/README.md +307 -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 +13 -1
  18. package/dist/app-controller-channels.d.ts.map +1 -1
  19. package/dist/app-controller-channels.js +152 -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 +4 -0
  29. package/dist/app-controller-maintenance.d.ts.map +1 -1
  30. package/dist/app-controller-maintenance.js +34 -2
  31. package/dist/app-controller-maintenance.js.map +1 -1
  32. package/dist/app-controller-memory.d.ts +2 -0
  33. package/dist/app-controller-memory.d.ts.map +1 -1
  34. package/dist/app-controller-memory.js +6 -3
  35. package/dist/app-controller-memory.js.map +1 -1
  36. package/dist/app-controller-process-jobs.d.ts +49 -0
  37. package/dist/app-controller-process-jobs.d.ts.map +1 -0
  38. package/dist/app-controller-process-jobs.js +294 -0
  39. package/dist/app-controller-process-jobs.js.map +1 -0
  40. package/dist/app-controller-responder.d.ts +17 -0
  41. package/dist/app-controller-responder.d.ts.map +1 -1
  42. package/dist/app-controller-responder.js +164 -13
  43. package/dist/app-controller-responder.js.map +1 -1
  44. package/dist/app-controller-traceability.d.ts +8 -0
  45. package/dist/app-controller-traceability.d.ts.map +1 -1
  46. package/dist/app-controller-traceability.js +22 -1
  47. package/dist/app-controller-traceability.js.map +1 -1
  48. package/dist/app-controller-types.d.ts +1 -1
  49. package/dist/app-controller-types.d.ts.map +1 -1
  50. package/dist/app-controller-utils.d.ts +8 -0
  51. package/dist/app-controller-utils.d.ts.map +1 -1
  52. package/dist/app-controller-utils.js +24 -1
  53. package/dist/app-controller-utils.js.map +1 -1
  54. package/dist/app-controller.d.ts +45 -1
  55. package/dist/app-controller.d.ts.map +1 -1
  56. package/dist/app-controller.js +135 -39
  57. package/dist/app-controller.js.map +1 -1
  58. package/dist/background-log-maintenance.d.ts +85 -2
  59. package/dist/background-log-maintenance.d.ts.map +1 -1
  60. package/dist/background-log-maintenance.js +407 -136
  61. package/dist/background-log-maintenance.js.map +1 -1
  62. package/dist/background-runtime.d.ts.map +1 -1
  63. package/dist/background-runtime.js +22 -41
  64. package/dist/background-runtime.js.map +1 -1
  65. package/dist/background.d.ts +18 -26
  66. package/dist/background.d.ts.map +1 -1
  67. package/dist/background.js +105 -138
  68. package/dist/background.js.map +1 -1
  69. package/dist/channel-drivers/cron.d.ts +12 -1
  70. package/dist/channel-drivers/cron.d.ts.map +1 -1
  71. package/dist/channel-drivers/cron.js +121 -18
  72. package/dist/channel-drivers/cron.js.map +1 -1
  73. package/dist/channel-drivers/native-notify.d.ts +3 -0
  74. package/dist/channel-drivers/native-notify.d.ts.map +1 -1
  75. package/dist/channel-drivers/native-notify.js +2 -1
  76. package/dist/channel-drivers/native-notify.js.map +1 -1
  77. package/dist/channel-drivers/slack.d.ts.map +1 -1
  78. package/dist/channel-drivers/slack.js +41 -4
  79. package/dist/channel-drivers/slack.js.map +1 -1
  80. package/dist/channel-drivers/telegram.d.ts.map +1 -1
  81. package/dist/channel-drivers/telegram.js +46 -3
  82. package/dist/channel-drivers/telegram.js.map +1 -1
  83. package/dist/channel-drivers/tui.d.ts +13 -2
  84. package/dist/channel-drivers/tui.d.ts.map +1 -1
  85. package/dist/channel-drivers/tui.js +112 -3
  86. package/dist/channel-drivers/tui.js.map +1 -1
  87. package/dist/channels.d.ts +1 -1
  88. package/dist/channels.d.ts.map +1 -1
  89. package/dist/channels.js +4 -2
  90. package/dist/channels.js.map +1 -1
  91. package/dist/cli-args.d.ts +15 -1
  92. package/dist/cli-args.d.ts.map +1 -1
  93. package/dist/cli-args.js +82 -12
  94. package/dist/cli-args.js.map +1 -1
  95. package/dist/cli-background-command.d.ts +9 -2
  96. package/dist/cli-background-command.d.ts.map +1 -1
  97. package/dist/cli-background-command.js +179 -66
  98. package/dist/cli-background-command.js.map +1 -1
  99. package/dist/cli-commands.d.ts.map +1 -1
  100. package/dist/cli-commands.js +50 -12
  101. package/dist/cli-commands.js.map +1 -1
  102. package/dist/cli-help.d.ts.map +1 -1
  103. package/dist/cli-help.js +21 -1
  104. package/dist/cli-help.js.map +1 -1
  105. package/dist/config-reference.d.ts.map +1 -1
  106. package/dist/config-reference.js +105 -2
  107. package/dist/config-reference.js.map +1 -1
  108. package/dist/configured-agent.d.ts +64 -21
  109. package/dist/configured-agent.d.ts.map +1 -1
  110. package/dist/configured-agent.js +840 -156
  111. package/dist/configured-agent.js.map +1 -1
  112. package/dist/conversation-state-roots.d.ts +59 -0
  113. package/dist/conversation-state-roots.d.ts.map +1 -0
  114. package/dist/conversation-state-roots.js +248 -0
  115. package/dist/conversation-state-roots.js.map +1 -0
  116. package/dist/cron-control-store.d.ts +91 -0
  117. package/dist/cron-control-store.d.ts.map +1 -0
  118. package/dist/cron-control-store.js +1251 -0
  119. package/dist/cron-control-store.js.map +1 -0
  120. package/dist/cron-operator-service.d.ts +54 -0
  121. package/dist/cron-operator-service.d.ts.map +1 -0
  122. package/dist/cron-operator-service.js +352 -0
  123. package/dist/cron-operator-service.js.map +1 -0
  124. package/dist/doctor-session-history.d.ts +9 -0
  125. package/dist/doctor-session-history.d.ts.map +1 -0
  126. package/dist/doctor-session-history.js +313 -0
  127. package/dist/doctor-session-history.js.map +1 -0
  128. package/dist/doctor.d.ts +2 -1
  129. package/dist/doctor.d.ts.map +1 -1
  130. package/dist/doctor.js +356 -9
  131. package/dist/doctor.js.map +1 -1
  132. package/dist/index.d.ts +4 -0
  133. package/dist/index.d.ts.map +1 -1
  134. package/dist/index.js +2 -0
  135. package/dist/index.js.map +1 -1
  136. package/dist/interaction-bridge.d.ts +1 -0
  137. package/dist/interaction-bridge.d.ts.map +1 -1
  138. package/dist/interaction-bridge.js +54 -6
  139. package/dist/interaction-bridge.js.map +1 -1
  140. package/dist/jobs-command.d.ts +17 -0
  141. package/dist/jobs-command.d.ts.map +1 -0
  142. package/dist/jobs-command.js +207 -0
  143. package/dist/jobs-command.js.map +1 -0
  144. package/dist/launchd-lifecycle-lock.d.ts +36 -0
  145. package/dist/launchd-lifecycle-lock.d.ts.map +1 -0
  146. package/dist/launchd-lifecycle-lock.js +124 -0
  147. package/dist/launchd-lifecycle-lock.js.map +1 -0
  148. package/dist/launchd-log-monitor-status.d.ts +7 -0
  149. package/dist/launchd-log-monitor-status.d.ts.map +1 -0
  150. package/dist/launchd-log-monitor-status.js +224 -0
  151. package/dist/launchd-log-monitor-status.js.map +1 -0
  152. package/dist/launchd-logs.d.ts +9 -1
  153. package/dist/launchd-logs.d.ts.map +1 -1
  154. package/dist/launchd-logs.js +69 -16
  155. package/dist/launchd-logs.js.map +1 -1
  156. package/dist/launchd-maintenance-command.d.ts +10 -0
  157. package/dist/launchd-maintenance-command.d.ts.map +1 -0
  158. package/dist/launchd-maintenance-command.js +2 -0
  159. package/dist/launchd-maintenance-command.js.map +1 -0
  160. package/dist/launchd-maintenance-entry.d.ts +30 -0
  161. package/dist/launchd-maintenance-entry.d.ts.map +1 -0
  162. package/dist/launchd-maintenance-entry.js +206 -0
  163. package/dist/launchd-maintenance-entry.js.map +1 -0
  164. package/dist/launchd-maintenance-gate.d.ts +28 -0
  165. package/dist/launchd-maintenance-gate.d.ts.map +1 -0
  166. package/dist/launchd-maintenance-gate.js +80 -0
  167. package/dist/launchd-maintenance-gate.js.map +1 -0
  168. package/dist/launchd-private-files.d.ts +3 -0
  169. package/dist/launchd-private-files.d.ts.map +1 -0
  170. package/dist/launchd-private-files.js +58 -0
  171. package/dist/launchd-private-files.js.map +1 -0
  172. package/dist/launchd.d.ts +56 -2
  173. package/dist/launchd.d.ts.map +1 -1
  174. package/dist/launchd.js +210 -5
  175. package/dist/launchd.js.map +1 -1
  176. package/dist/local-configuration.d.ts.map +1 -1
  177. package/dist/local-configuration.js +34 -7
  178. package/dist/local-configuration.js.map +1 -1
  179. package/dist/managed-launchd-maintenance-environment.d.ts +3 -0
  180. package/dist/managed-launchd-maintenance-environment.d.ts.map +1 -0
  181. package/dist/managed-launchd-maintenance-environment.js +12 -0
  182. package/dist/managed-launchd-maintenance-environment.js.map +1 -0
  183. package/dist/managed-runtime-launch-proof.d.ts +11 -0
  184. package/dist/managed-runtime-launch-proof.d.ts.map +1 -0
  185. package/dist/managed-runtime-launch-proof.js +59 -0
  186. package/dist/managed-runtime-launch-proof.js.map +1 -0
  187. package/dist/managed-runtime-maintenance-entry.d.ts +10 -0
  188. package/dist/managed-runtime-maintenance-entry.d.ts.map +1 -0
  189. package/dist/managed-runtime-maintenance-entry.js +244 -0
  190. package/dist/managed-runtime-maintenance-entry.js.map +1 -0
  191. package/dist/managed-web-logs.d.ts +29 -11
  192. package/dist/managed-web-logs.d.ts.map +1 -1
  193. package/dist/managed-web-logs.js +244 -121
  194. package/dist/managed-web-logs.js.map +1 -1
  195. package/dist/managed-web-maintenance-environment.d.ts +6 -0
  196. package/dist/managed-web-maintenance-environment.d.ts.map +1 -0
  197. package/dist/managed-web-maintenance-environment.js +19 -0
  198. package/dist/managed-web-maintenance-environment.js.map +1 -0
  199. package/dist/mcp-apps.d.ts +37 -0
  200. package/dist/mcp-apps.d.ts.map +1 -0
  201. package/dist/mcp-apps.js +1753 -0
  202. package/dist/mcp-apps.js.map +1 -0
  203. package/dist/memory-command.d.ts +12 -0
  204. package/dist/memory-command.d.ts.map +1 -1
  205. package/dist/memory-command.js +510 -1
  206. package/dist/memory-command.js.map +1 -1
  207. package/dist/modules/known-tools.d.ts +1 -1
  208. package/dist/modules/known-tools.d.ts.map +1 -1
  209. package/dist/modules/known-tools.js +2 -0
  210. package/dist/modules/known-tools.js.map +1 -1
  211. package/dist/posted-reply-history.d.ts.map +1 -1
  212. package/dist/posted-reply-history.js +12 -0
  213. package/dist/posted-reply-history.js.map +1 -1
  214. package/dist/proactive-notify.d.ts +4 -1
  215. package/dist/proactive-notify.d.ts.map +1 -1
  216. package/dist/proactive-notify.js +43 -5
  217. package/dist/proactive-notify.js.map +1 -1
  218. package/dist/process-jobs-config.d.ts +84 -0
  219. package/dist/process-jobs-config.d.ts.map +1 -0
  220. package/dist/process-jobs-config.js +427 -0
  221. package/dist/process-jobs-config.js.map +1 -0
  222. package/dist/process-jobs-context.d.ts +24 -0
  223. package/dist/process-jobs-context.d.ts.map +1 -0
  224. package/dist/process-jobs-context.js +135 -0
  225. package/dist/process-jobs-context.js.map +1 -0
  226. package/dist/process-jobs-protection.d.ts +33 -0
  227. package/dist/process-jobs-protection.d.ts.map +1 -0
  228. package/dist/process-jobs-protection.js +74 -0
  229. package/dist/process-jobs-protection.js.map +1 -0
  230. package/dist/process-jobs-root-registry.d.ts +115 -0
  231. package/dist/process-jobs-root-registry.d.ts.map +1 -0
  232. package/dist/process-jobs-root-registry.js +978 -0
  233. package/dist/process-jobs-root-registry.js.map +1 -0
  234. package/dist/process-jobs-runtime.d.ts +38 -0
  235. package/dist/process-jobs-runtime.d.ts.map +1 -0
  236. package/dist/process-jobs-runtime.js +178 -0
  237. package/dist/process-jobs-runtime.js.map +1 -0
  238. package/dist/process-jobs-service.d.ts +70 -0
  239. package/dist/process-jobs-service.d.ts.map +1 -0
  240. package/dist/process-jobs-service.js +1989 -0
  241. package/dist/process-jobs-service.js.map +1 -0
  242. package/dist/process-jobs-store.d.ts +151 -0
  243. package/dist/process-jobs-store.d.ts.map +1 -0
  244. package/dist/process-jobs-store.js +1290 -0
  245. package/dist/process-jobs-store.js.map +1 -0
  246. package/dist/reply-artifacts.d.ts +65 -0
  247. package/dist/reply-artifacts.d.ts.map +1 -0
  248. package/dist/reply-artifacts.js +1147 -0
  249. package/dist/reply-artifacts.js.map +1 -0
  250. package/dist/reply-part-budget.d.ts +16 -0
  251. package/dist/reply-part-budget.d.ts.map +1 -0
  252. package/dist/reply-part-budget.js +57 -0
  253. package/dist/reply-part-budget.js.map +1 -0
  254. package/dist/request-model-override.d.ts +19 -0
  255. package/dist/request-model-override.d.ts.map +1 -1
  256. package/dist/request-model-override.js +54 -1
  257. package/dist/request-model-override.js.map +1 -1
  258. package/dist/request-scoped-mcp.d.ts +31 -0
  259. package/dist/request-scoped-mcp.d.ts.map +1 -0
  260. package/dist/request-scoped-mcp.js +197 -0
  261. package/dist/request-scoped-mcp.js.map +1 -0
  262. package/dist/run-history.d.ts.map +1 -1
  263. package/dist/run-history.js +50 -254
  264. package/dist/run-history.js.map +1 -1
  265. package/dist/runtime-option-extensions.d.ts +23 -0
  266. package/dist/runtime-option-extensions.d.ts.map +1 -1
  267. package/dist/runtime-option-extensions.js +55 -0
  268. package/dist/runtime-option-extensions.js.map +1 -1
  269. package/dist/runtime-routes.d.ts +7 -1
  270. package/dist/runtime-routes.d.ts.map +1 -1
  271. package/dist/runtime-routes.js +25 -0
  272. package/dist/runtime-routes.js.map +1 -1
  273. package/dist/secure-file-replace.d.ts +3 -0
  274. package/dist/secure-file-replace.d.ts.map +1 -1
  275. package/dist/secure-file-replace.js +31 -7
  276. package/dist/secure-file-replace.js.map +1 -1
  277. package/dist/session-history.d.ts +146 -0
  278. package/dist/session-history.d.ts.map +1 -0
  279. package/dist/session-history.js +347 -0
  280. package/dist/session-history.js.map +1 -0
  281. package/dist/sessions.d.ts +45 -2
  282. package/dist/sessions.d.ts.map +1 -1
  283. package/dist/sessions.js +849 -30
  284. package/dist/sessions.js.map +1 -1
  285. package/dist/web-command.d.ts +12 -11
  286. package/dist/web-command.d.ts.map +1 -1
  287. package/dist/web-command.js +554 -80
  288. package/dist/web-command.js.map +1 -1
  289. package/dist/web-log-maintenance-command.d.ts +7 -0
  290. package/dist/web-log-maintenance-command.d.ts.map +1 -0
  291. package/dist/web-log-maintenance-command.js +21 -0
  292. package/dist/web-log-maintenance-command.js.map +1 -0
  293. package/dist/web-log-maintenance-status.d.ts +26 -0
  294. package/dist/web-log-maintenance-status.d.ts.map +1 -0
  295. package/dist/web-log-maintenance-status.js +171 -0
  296. package/dist/web-log-maintenance-status.js.map +1 -0
  297. package/dist/web-log-maintenance.d.ts +32 -0
  298. package/dist/web-log-maintenance.d.ts.map +1 -0
  299. package/dist/web-log-maintenance.js +163 -0
  300. package/dist/web-log-maintenance.js.map +1 -0
  301. package/dist/web-maintenance-paths.d.ts +12 -0
  302. package/dist/web-maintenance-paths.d.ts.map +1 -0
  303. package/dist/web-maintenance-paths.js +24 -0
  304. package/dist/web-maintenance-paths.js.map +1 -0
  305. package/dist/wizard/prompts.d.ts.map +1 -1
  306. package/dist/wizard/prompts.js +1 -0
  307. package/dist/wizard/prompts.js.map +1 -1
  308. package/dist/wizard/run.js +1 -1
  309. package/dist/wizard/run.js.map +1 -1
  310. package/package.json +15 -15
  311. package/schema/mono-agent.config.schema.json +106 -1
  312. package/skills/mono-agent-composer/references/config-blueprint.md +27 -2
  313. package/skills/mono-agent-composer/references/discovery-questions.md +2 -2
  314. package/skills/mono-agent-composer/references/feature-coverage.md +6 -4
  315. package/skills/mono-agent-composer/references/package-map.md +19 -3
  316. package/skills/mono-agent-composer/references/playbooks.md +3 -3
  317. 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;
@@ -1051,6 +1057,7 @@ function inactiveStatusSource(source) {
1051
1057
  async function assembleInstanceStatus(source, target, deps) {
1052
1058
  const metadata = source.metadata ?? {};
1053
1059
  const observability = metadata.observability;
1060
+ const processJobs = metadata.processJobs;
1054
1061
  const sandbox = metadata.sandbox;
1055
1062
  const session = metadata.session;
1056
1063
  const channels = metadata.channels;
@@ -1068,6 +1075,7 @@ async function assembleInstanceStatus(source, target, deps) {
1068
1075
  ...(source.transports === undefined ? {} : { transports: source.transports }),
1069
1076
  logs: { stdout: target.paths.stdoutPath, stderr: target.paths.stderrPath },
1070
1077
  ...(isPlainRecord(observability) ? { observability } : {}),
1078
+ ...(isPlainRecord(processJobs) ? { processJobs } : {}),
1071
1079
  ...(isPlainRecord(sandbox) ? { sandbox } : {}),
1072
1080
  ...(isPlainRecord(session) ? { session } : {}),
1073
1081
  ...(isPlainRecord(channels) ? { channels } : {}),
@@ -1267,6 +1275,13 @@ function writeInstanceDetail(source, target, deps) {
1267
1275
  deps.stdout(ui.rule("observability"));
1268
1276
  deps.stdout(` ${observability}\n`);
1269
1277
  }
1278
+ const processJobsProtectionLines = describeProcessJobsProtectionMetadata(source);
1279
+ if (processJobsProtectionLines.length > 0) {
1280
+ deps.stdout(ui.rule("process jobs protection"));
1281
+ for (const line of processJobsProtectionLines) {
1282
+ deps.stdout(` ${line}\n`);
1283
+ }
1284
+ }
1270
1285
  const sandboxLines = describeSandboxMetadata(source);
1271
1286
  if (sandboxLines.length > 0) {
1272
1287
  deps.stdout(ui.rule("sandbox"));
@@ -1423,6 +1438,19 @@ function describeSandboxMetadata(source) {
1423
1438
  ...stringFieldAsList(record, "warning").map((warning) => ui.style.yellow(warning)),
1424
1439
  ];
1425
1440
  }
1441
+ function describeProcessJobsProtectionMetadata(source) {
1442
+ const processJobs = source.metadata?.processJobs;
1443
+ if (!isPlainRecord(processJobs) || !isPlainRecord(processJobs.protection))
1444
+ return [];
1445
+ const protection = processJobs.protection;
1446
+ const mode = stringField(protection, "protection");
1447
+ if (mode === undefined)
1448
+ return [];
1449
+ return [
1450
+ `protection: ${mode}; retained roots: ${protection.retainedRoots === true ? "yes" : "no"}`,
1451
+ ...stringFieldAsList(protection, "warning").map((warning) => ui.style.yellow(warning)),
1452
+ ];
1453
+ }
1426
1454
  function describeSessionMetadata(source, nowMs) {
1427
1455
  const session = source.metadata?.session;
1428
1456
  if (session === null || typeof session !== "object") {
@@ -1516,67 +1544,6 @@ function commandFlags(target) {
1516
1544
  function shellCommandArgument(value) {
1517
1545
  return /^[a-zA-Z0-9_./:@%+=,-]+$/u.test(value) ? value : `'${value.replaceAll("'", `'"'"'`)}'`;
1518
1546
  }
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
1547
  async function probeTuiEndpoint(source) {
1581
1548
  const baseUrl = tuiEndpoint(source);
1582
1549
  if (baseUrl === undefined)