@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
package/README.md CHANGED
@@ -36,16 +36,43 @@ Turn a folder's `mono-agent.config.json` into a running agent host:
36
36
  - Expose the request-scoped read-only `RunHistory` tool for safe normalized
37
37
  search and paged evidence from completed prior runs in the logical
38
38
  conversation, independent of daily rollover buckets.
39
+ - Expose the sibling request-scoped read-only `SessionHistory` tool over the
40
+ harness's canonical retained managed-tool lifecycle sidecar.
41
+ - Opt in to Pi-native Exec/Bash process jobs through `processJobs.*`: keep the
42
+ owner-private queue/store/process-group lifecycle, exact Slack/Telegram/web
43
+ wake with age-bounded busy deferrals, bounded pending/store materialization,
44
+ stable secret-free safety errors, native same-message lifecycle surfaces,
45
+ fail-closed live store health, a bounded monotonic registry that seals every
46
+ retained state root even after disable or reconfiguration, bounded locked
47
+ recovery through a fixed-name owner-private sibling directory while request
48
+ loading stays read-only and fail-closed, cooperative
49
+ official-process ownership, true-settlement generation barriers, provider-zero
50
+ for configured routes and direct memory LLM/embedding calls, plus the explicit
51
+ JSON-only `unsafeAllowUnprotectedState` trusted-host posture that suppresses
52
+ ProcessJobs and clear-sessions SRT only under explicit sandbox-off and all-Pi
53
+ routing while retaining registry/lease/private-root invariants, restart interruption,
54
+ all-root separation from every clear-sessions purge, doctor section, operator
55
+ routes, and `mono-agent jobs` CLI at the app boundary. This
56
+ local contract does not resist a hostile same-UID provider; use OS privilege
57
+ separation when that is in the threat model.
39
58
  - Drive each channel through a uniform driver contract with per-channel
40
59
  `disabled` / `waiting_for_config` / `running` / `degraded` / `failed` status.
41
60
  `degraded` means a temporarily unavailable transport owns its recovery while
42
61
  the responder remains alive; `failed` is terminal until the host restarts or
43
62
  reloads that channel.
63
+ - Own cron control truth in owner-private `.mono-agent/cron-control-v1/`:
64
+ durable per-job admission order, bounded run/event history, runtime enable
65
+ overrides, idempotency receipts, and audit. An absent store is initialized;
66
+ a present corrupt, insecure, or lease-conflicted store arms no cron jobs and
67
+ surfaces a degraded lifecycle/discovery reason plus an error log. Operator
68
+ actions are config-opt-in, API-key-protected, and explicitly confirmed; they
69
+ never rewrite config, environment, or Markdown job sources.
44
70
  - Register the host as a traceability source. Config edits are made directly in
45
71
  `mono-agent.config.json`, or proposed through the OS-owner-managed macOS
46
72
  configuration TUI; direct edits take effect on the next `mono-agent restart`.
47
- - Reconcile installed macOS LaunchAgents at login and every five minutes, and
48
- make `status` require agreement between the cached trace and launchd's live PID.
73
+ - Check managed launchd logs with bounded metadata reads every five minutes,
74
+ reconcile installed macOS LaunchAgents at login and hourly, and make `status`
75
+ require agreement between the cached trace and launchd's live PID.
49
76
  - Resolve and surface any configured `observability.exporters` (the Phoenix
50
77
  preset): `start`/`status` report the configured endpoint and a note that JSONL
51
78
  artifacts remain local; `validate` performs the live reachability probe. Export
@@ -61,12 +88,15 @@ Turn a folder's `mono-agent.config.json` into a running agent host:
61
88
  lifecycle.
62
89
  - Operate the machine-wide `@mono-agent/web` assistant-ui console through
63
90
  `mono-agent web`, including persisted curated host themes and hostname
64
- identity; publish a bounded, refreshable skill registry through each running
65
- operator endpoint so the web composer can discover valid `$skill-name`
66
- references; use `mono-agent tui` for bounded recorded-run replay.
67
- - Discover and expose one exact running agent through the Worklab-oriented ACP
68
- core-session profile with `mono-agent bridge acp` while preserving agent-owned
69
- configuration, workspace, sandbox, tools, MCP servers, and credentials.
91
+ identity; on macOS pair its worker with one helper-only, stopped-writer log
92
+ controller while the worker remains wake-only; publish a bounded, refreshable
93
+ skill registry through each running operator endpoint so the web composer can
94
+ discover valid `$skill-name` references; use `mono-agent tui` for bounded
95
+ recorded-run replay.
96
+ - Discover and expose one exact running agent through the ACP core-session
97
+ profile with `mono-agent bridge acp`, including durable session resume, while
98
+ preserving agent-owned configuration, workspace, sandbox, tools, MCP servers,
99
+ and credentials.
70
100
 
71
101
  ## Install / Usage
72
102
 
@@ -264,15 +294,45 @@ preflight (`liveness: false`) skips both probes without changing structural
264
294
  validation.
265
295
 
266
296
  Managed launchd stdout/stderr use a fixed automatic policy: each active file
267
- and each of three retained generations is capped at 5 MiB. A separate one-shot
268
- LaunchAgent runs at login and every five minutes with no `KeepAlive` and
269
- `/dev/null` output. It first authenticates its exact launchd-owned PID,
270
- reconstructs the durable worker environment, validates config, and captures a
271
- fresh snapshot. It compares the strictly parsed loaded main definition and its
272
- verified runtime proof with the original controller CLI's inert version/digest;
273
- it never executes mutable source bytes. If the source disappeared, it can repair
274
- an inactive or snapshot-drifted worker from its private helper closure without
275
- claiming an upgrade or downgrading a healthy worker.
297
+ and each of three retained generations is capped at 5 MiB. Once ready, the
298
+ managed worker performs one overlap-guarded, read-only inventory immediately and
299
+ every five minutes. The healthy below-threshold path ends there: it does not
300
+ reconstruct the durable environment, validate config, capture a snapshot, or
301
+ start another Node process. The immediate pass is observational: helper wakeups
302
+ have a five-minute startup floor. A worker may wake only for a safely inspected
303
+ per-agent active/retained log above 5 MiB or a safe owner-matching regular log
304
+ whose permissions need repair. Shared-directory repair and pending lifecycle,
305
+ journal, or preparation artifacts never wake the fleet; the scheduled helper
306
+ owns those recovery cases.
307
+
308
+ The separate controller keeps `RunAtLoad` for login recovery and runs once per
309
+ hour at a stable minute: the unsigned big-endian first four bytes of SHA-256 of
310
+ the canonical main LaunchAgent label, modulo 60. Login therefore deliberately
311
+ retains N/N `RunAtLoad` recovery coverage, while recurring runs are staggered.
312
+ The lightweight entries may start together, but each waits SHA-256(canonical
313
+ main label)[0..3] unsigned-big-endian modulo 120 seconds before PID
314
+ authentication, locking, or heavy import. This disperses the login heavy-work
315
+ boundary without an account-wide admission lock or stale-owner state; a
316
+ worker-requested wake can likewise wait at most 119 seconds. It has no `KeepAlive`
317
+ and sends output to `/dev/null`. It then authenticates its exact launchd-owned
318
+ PID and takes the per-config lifecycle lock without waiting,
319
+ before attestation or importing the controller graph. A same-agent loser exits
320
+ without expensive work. The helper plist enters through the managed closure's
321
+ attested `dist/launchd-maintenance-entry.js`; the per-agent lock winner verifies
322
+ that sibling entry against the shared path-free runtime proof and dynamically
323
+ imports the heavy controller graph. It reconstructs the durable environment, captures a fresh snapshot,
324
+ and compares the strictly parsed loaded main definition and its existing path-free
325
+ managed-runtime launch proof with the original controller CLI's inert version/digest;
326
+ it never executes mutable source bytes. A healthy pass does not run full structural
327
+ validation or traverse the immutable closure. Full validation and managed-runtime
328
+ installation/verification run only after those fast proofs identify drift, while
329
+ the per-agent lock remains held. After runtime installation and all read-only
330
+ rechecks, the helper takes the per-account shared-chain lock without waiting only
331
+ for stopped-writer/shared-directory mutation; contention defers cleanly. Healthy
332
+ log-only maintenance takes that shared lock separately. If the source
333
+ disappeared, it can repair an inactive or snapshot-drifted worker from its
334
+ private helper closure without claiming an upgrade or downgrading a healthy
335
+ worker.
276
336
 
277
337
  The helper executes with a closed system `PATH` while carrying the worker's
278
338
  non-secret durable `PATH` as a private argument. Recovery therefore preserves
@@ -280,9 +340,11 @@ the worker's toolchain lookup without letting it shadow the helper's own system
280
340
  commands.
281
341
 
282
342
  When reconciliation is needed, the existing worker stays loaded through runtime
283
- installation. The helper then stops only the main job, refreshes both plists,
284
- bootstraps the main job, and waits for the normal 60-second readiness proof. A
285
- failure preserves the helper and both definitions for the next scheduled retry;
343
+ installation. Under the shared mutation lock the helper then stops only the main
344
+ job, repairs the shared log chain, refreshes both plists, and bootstraps the main
345
+ job. It releases the shared lock before waiting for the normal 60-second readiness
346
+ proof, while retaining the per-agent lifecycle lock. A
347
+ failure preserves the helper and both definitions for the next hourly retry;
286
348
  explicit stop unloads the helper and removes both definitions after PID-death
287
349
  proof, so it cannot resurrect a stopped service. When log maintenance is needed,
288
350
  the helper takes the
@@ -296,13 +358,55 @@ removed only after the exact plist is rechecked and its worker is live. An
296
358
  interrupted pre-proof pass whose launchd PID is gone fails closed; durable
297
359
  `stopped` rotation can resume without authorizing another agent or an intentionally
298
360
  stopped service.
361
+ Recurring drift recovery and shared-only repair therefore have a worst-case
362
+ 60-minute latency between logins; explicit start/restart remain synchronous.
363
+ Worker requests use a process-local monotonic 5/10/20/40/60-minute cooldown,
364
+ skip an unloaded or already-running helper, and recheck the shutdown latch
365
+ immediately before `launchctl kickstart`. A pathological worker crash loop can
366
+ still request about once per five minutes per agent after each new process.
367
+ For an 11-agent pathological simultaneous crash loop, that residual bound is
368
+ 11 requests per five minutes.
369
+ Every shared log-chain mutation takes one PID/incarnation-aware owner-private
370
+ per-account lock after the per-agent lifecycle lock. Helpers defer immediately;
371
+ interactive start/restart/stop wait up to 18 seconds, then fail visibly with
372
+ the holder identity.
299
373
  Start and restart perform
300
374
  the same stopped-writer maintenance before loading helper then worker; stop
301
375
  unloads the helper first and removes both definitions. Unsafe paths or a changed
302
376
  plist fail closed without following links or resurrecting a stopped service.
303
377
  `mono-agent validate` / `doctor` only inspect metadata and report exact active,
304
378
  retained, and total bytes for safely inspected files; unsafe or unreadable byte
305
- inventory is unavailable. They never rotate or chmod logs.
379
+ inventory is unavailable. They also render the owner-private monitor's last
380
+ inspection, cumulative wake count, last outcome, and wall-clock rendering of
381
+ the monotonic cooldown deadline. They never rotate or chmod logs.
382
+
383
+ The loaded launchd definition, not the plist bytes on disk, is authoritative
384
+ for migration. Existing agents retain their previously loaded interval until
385
+ each agent is explicitly restarted after upgrade; a fleet restart is not
386
+ performed automatically.
387
+
388
+ The machine-wide web console uses the same rotation transaction over its exact
389
+ `~/.mono-agent/web/logs/web.{out,err}.log` paths but a deliberately separate
390
+ control domain. `com.mono-agent-web-maintenance` is a no-`KeepAlive`, `/dev/null`
391
+ one-shot helper with `RunAtLoad`, a deterministic hourly minute, and the same
392
+ 0–119-second pre-import dispersion. The managed worker's five-minute monitor is
393
+ wake-only and never stops or rotates the writer. The helper authenticates its
394
+ launchd PID, cached private definition, attested runtime entry, exact helper
395
+ bytes, and the main plist's composite `dev:ino:size:sha256` identity before and
396
+ after taking the web lifecycle lock. Because web logs are outside the shared
397
+ agent log directory chain, it never takes the agents' shared mutation lock.
398
+
399
+ Every main-plist publication or restoration regenerates the helper from the
400
+ fresh composite identity before either definition can be bootstrapped. Start
401
+ and restart unload helper before worker, perform proven stopped-window
402
+ maintenance, then bootstrap helper before worker. Stop unloads helper first and
403
+ removes both plists only after death proof; reset requires both jobs stopped,
404
+ both plists absent, and the same lifecycle lock. The fixed policy remains one
405
+ active file plus three 5 MiB retained generations per stream. Refused legacy
406
+ rollover artifacts are preserved while core rotation proceeds, and bounded
407
+ owner-private monitor/maintenance status lets `mono-agent web status`
408
+ distinguish active maintenance, routine `due`, durable failure, and abandoned
409
+ recovery. `mono-agent web logs` tails only active names with `tail -F`.
306
410
 
307
411
  Guided readiness uses a worker-reproducible environment rather than the launching
308
412
  shell: durable `.env` values, entered selected secrets, the resolved Pi auth path,
@@ -368,22 +472,105 @@ projected values first pass through the shared observability redactor:
368
472
  non-numeric values under sensitive-looking object keys
369
473
  are redacted; numeric values under matched keys are retained; free text is not
370
474
  content-scanned or scrubbed. `RunHistory` then applies an additional projection
371
- sanitizer. In that second pass, numeric values under `credential`, `private_key`,
475
+ sanitizer to object keys as well as string values, with deterministic
476
+ collision-safe key disambiguation. In that second pass, numeric values under `credential`, `private_key`,
372
477
  and `bearer` can remain visible; numeric values under `apiKey`, `token`,
373
478
  `client_secret`, `password`, `authorization`, and `cookie` are redacted.
374
479
  Assignment-shaped password or secret prose is content-scanned and replaced with
375
480
  the diagnostic or tool-result omission sentinel. An optionally quoted assignment
376
481
  value is exempt only when its complete value is exactly `[redacted]`; any prefix
377
- or suffix is omitted. Results exclude the current/running run, unrelated
482
+ or suffix is omitted. Ordinary filesystem spans are sanitized in place to
483
+ `[host-path]` plus a bounded non-sensitive suffix, so surrounding commands,
484
+ tool results, and assistant diagnostics remain visible; credentials and private
485
+ run-artifact content are still omitted, and absolute roots or private run paths
486
+ never survive. Results exclude the current/running run, unrelated
378
487
  conversations or threads, system prompts, reasoning, recalled memory,
379
488
  turn-context payloads, and raw artifact paths; historical text is marked
380
489
  untrusted.
381
490
 
491
+ ### Session tool history
492
+
493
+ `SessionHistory` requires no config key. It is available under allow-all on
494
+ request-scoped MCP-capable routes; a restrictive `tools.allowedTools` must name
495
+ `SessionHistory` (`session_history` is also accepted by policy), and deny policy
496
+ can remove it. Each request constructs a fresh stateless MCP server and transport
497
+ on a host-bound loopback capability path. Direct OpenCode and ACP routes have no
498
+ compatible host-tool seam for `SessionHistory`, so they still persist and
499
+ cold-project tool records but suppress that new tool; `validate` reports
500
+ `unsupported_route` rather than pretending coverage exists. Issue #626 does not
501
+ change `RunHistory`'s pre-existing direct-ACP route wiring.
502
+
503
+ The canonical data is not run JSONL, Pi JSONL, web SQLite, or message-history
504
+ JSON. The harness incrementally writes every managed-tool start and terminal
505
+ result to `history/tool-history/tool-lifecycles.sqlite`, independently of
506
+ successful-turn commit. A lifecycle record may therefore exist without a
507
+ canonical message-history entry. Stable conversation/run/tool-call keys and
508
+ writer-assigned per-run start/end sequences make retries idempotent; process
509
+ recovery closes dangling starts as `interrupted` without rerunning a tool.
510
+ Arguments/results are securely pre-bounded, redacted, and byte-bounded, with truncation metadata and
511
+ opaque artifact ids. Filesystem-shaped spans in object keys and string values use an opaque host-root token plus
512
+ at most two non-sensitive trailing components, so commands and results remain
513
+ inspectable without exposing an absolute root, account/home prefix, artifact
514
+ root, or private run path. Only regular files beneath the configured run-specific
515
+ `tool-output` root are accepted or checked for availability; provider-supplied
516
+ outside or symlinked paths are dropped. Isolated/proactive
517
+ runs persist but search excludes them unless explicitly requested.
518
+
519
+ `{ "action": "search" }` returns at most 10 bounded previews with text,
520
+ tool/state/run/time filters and a query-bound opaque cursor.
521
+ `{ "action": "get", "recordId": "..." }` (or `toolCallId`) returns bounded
522
+ chunks up to 8 KiB, with tombstones when retention removed known records.
523
+ Only the exact physical `(conversationId, runId)` for the active turn is
524
+ unavailable; an older rollover bucket that reused the same opaque run id remains
525
+ readable. Unrelated-conversation records stay unavailable, daily rollover
526
+ buckets remain one logical scope, nested history-tool result
527
+ bodies are omitted, and every response is labelled untrusted. Cold context
528
+ reseed receives the newest fitting chronological suffix in a neutralized UTF-8
529
+ projection capped at 64 KiB including its truncation marker; warm provider resume
530
+ continues natively and receives no replay. A zero-byte fresh sidecar is absent
531
+ for automatic projection; another corrupt/unsafe projection emits a structured
532
+ warning and continues the turn, while explicit SessionHistory reads fail closed.
533
+ Lazy writer acquisition keeps one at-most-10-second restart-handoff attempt.
534
+ After failure, writes from every already-created turn reuse that rejection and
535
+ new turns fail immediately during an initial 30-second backoff. Each failed
536
+ probe doubles that window up to five minutes, preventing ordinary consecutive
537
+ turns during a sustained outage from repeatedly paying the full acquisition
538
+ ceiling. The first later probe re-arms one full acquisition, while serialized
539
+ explicit reset may bypass only the cooldown. A cached handle is retired after
540
+ worker closure/death, one turn never reacquires mid-turn, and the recovered
541
+ handle is shared; recovery resets the backoff. The outage emits one warning plus
542
+ one later recovery warning.
543
+
544
+ Telegram `/new` clears message records and tool records across the same logical
545
+ session, including prior daily rollover buckets that canonical replay,
546
+ SessionHistory, and cold projection can expose. A custom history store used with
547
+ daily rollover must implement logical-session reset or the reset fails closed.
548
+ The durable store holds one cross-process logical-session fence across discovery
549
+ and every bucket reset, and appends take that same fence before their physical
550
+ bucket lock.
551
+ `restart --clear-sessions` purges all provider transcripts, message history, and
552
+ tool history while reporting message/tool counts and bytes separately. Doctor
553
+ audits schema, ownership, journal/integrity state, recovery, quota, and distinct
554
+ unresolved fail-soft incidents. Repeating the same failed lifecycle retry does
555
+ not inflate the count, and unrelated writes or run finalization cannot hide lost
556
+ evidence; only the matching tool phase, its durable synthetic terminal closure,
557
+ or canonical run-binding retry clears its incident while it remains retryable.
558
+ Reset and retention clear only incidents whose exact run/call/record identity
559
+ they make unretryable. A crash-stale zero-byte content database is reported as
560
+ pristine and recoverable even when its protected DELETE journal remains; a live
561
+ initialization and stale next-writer recovery are reported distinctly. A
562
+ zero-byte owner database is also a recoverable initialization window, not a
563
+ missing-table corruption report. A delayed real result supersedes that synthetic
564
+ terminal record in place. A newer tool-history schema hard-fails downgrade until
565
+ persisted conversation state is purged; an older compatible version is reported
566
+ as upgrade-pending for the next writer.
567
+
382
568
  ### Channel interactions and conversation history
383
569
 
384
570
  For missing context, the agent should use active conversation history first,
385
- `MemoryRecall` for intentionally captured durable facts, and `RunHistory` for
386
- exact prior-run/tool evidence. Answered or expired blocking `AskUser` exchanges
571
+ `MemoryRecall` for intentionally captured durable facts, `RunHistory` for exact
572
+ prior-run evidence, and `SessionHistory` for retained managed-tool calls and
573
+ results. Answered or expired blocking `AskUser` exchanges
387
574
  are written into the assistant history copy before the final response;
388
575
  cancelled asks are not journaled. The copy is explicitly labelled as untrusted
389
576
  historical data and bounded by newest whole interactions. If the newest valid
@@ -394,7 +581,7 @@ questions, each with two or three described options and an optional multi-select
394
581
  mode. Slack and Telegram present the questions sequentially with native buttons
395
582
  plus a typed custom reply; the web console renders the whole question set as one
396
583
  form. The built-in Telegram `/new` command uses the configured responder's
397
- host-owned reset surface to clear only that conversation and force
584
+ host-owned reset surface to clear only that logical conversation and force
398
585
  skill/startup-context reload on its next turn.
399
586
 
400
587
  ### Memory health and maintenance
@@ -482,6 +669,71 @@ console.log(app.channelStatuses());
482
669
  await app.stop();
483
670
  ```
484
671
 
672
+ ### Reply files and MCP Apps
673
+
674
+ The configured responder adds a request-scoped `PublishReplyFile` MCP tool when
675
+ the tool policy and runtime route can carry it. The tool copies one generated
676
+ ordinary-workspace file or one file from the exact current run's outbound root
677
+ into owner-private artifact storage, hashes it, and returns only an opaque
678
+ reference. The app composition explicitly treats its configured artifact root,
679
+ the artifact-dir-derived durable conversation-history/session store,
680
+ continuation state, memory, trace registry, provider sessions/auth, config,
681
+ identity, skill, and MCP roots as private. Only the exact current run's outbound
682
+ directory is admitted as a narrow artifact-root exception. Hidden path
683
+ components, mono-agent/MCP/auth/credential/secret/token
684
+ files, npmrc, private keys, certificates, key stores, state databases, and
685
+ Unicode-disguised variants are rejected at every depth, including under the
686
+ run-output exception. Publication rejects traversal, symlinks, multiply linked
687
+ inodes, directory swaps, and source changes detected through the pinned file
688
+ descriptor. Display names are NFC-normalized, stripped of Unicode bidi
689
+ controls, and bounded at UTF-8/code-point boundaries; errors expose neither
690
+ source paths nor bytes.
691
+
692
+ Files are limited to 20 MiB, and files plus MCP Apps share one 20-part run
693
+ budget. Their durable payloads and MCP audit files stay within a fixed 256 MiB
694
+ aggregate file-byte ceiling: configured composition reserves 1 MiB for
695
+ independently admitted audit files, leaving 255 MiB to the model-fillable shared
696
+ budget.
697
+ Admission is serialized, re-inventories both payload namespaces after restart,
698
+ and fails only the new part explicitly when full; it does not evict active
699
+ staging, current-run, or authorized in-flight content. Retried identities are
700
+ deduplicated. A manifest
701
+ that cannot accept its delivery-conversation binding becomes one bounded failed
702
+ part while answer text and other valid parts survive. Terminal failure,
703
+ cancellation, or missing run metadata removes uncommitted state. The sealed
704
+ local self-configuration override excludes this publisher.
705
+
706
+ Audit storage performs one root inventory for a process/root lifecycle, then
707
+ maintains exact owner byte counts under a global append gate. Reclamation uses
708
+ rotated history first, then inactive and unprotected owners' active files as a
709
+ last resort; a live or protected owner's active `audit.jsonl` is never a
710
+ candidate. Foreign read failures receive bounded conservative accounting and
711
+ remain quarantined for the process lifetime; recovery requires a process
712
+ restart and fresh root inventory. Every append, rotation,
713
+ cleanup, and quota-reclamation mutation revalidates the audit root, owner
714
+ directory, and singly linked file identities after the operation hook and before
715
+ using the child path. Admission that cannot safely create room fails closed
716
+ without changing unrelated or out-of-root history. Unsafe target files,
717
+ symlinks, hard links, and directories fail that owner closed, while oversized
718
+ target rotations receive the same safe bounded cleanup as foreign history.
719
+ Audit records contain host identity, method,
720
+ timestamp, and phase only—not model-filled tool names, arguments, resource URIs,
721
+ URLs, or results. Tool confirmation reserves both its confirmation and bounded
722
+ completion record before execution. A failed pre-execution admission returns
723
+ `app_audit_failed` and refuses the tool call; a real completion write failure
724
+ after a successful tool call remains `app_audit_incomplete` through operator
725
+ and web transport because the side effect may have occurred and must not be
726
+ retried automatically.
727
+
728
+ Pi-native routes can retain MCP App resources negotiated at either supported
729
+ ext-apps revision. The whole primary/fallback route must support the bridge;
730
+ otherwise neither the runtime extension nor operator capability is exposed.
731
+ Stored resources follow `artifacts.retention.maxAgeDays` within that aggregate
732
+ ceiling; live connections are separately bounded by an eight-entry LRU and
733
+ ten-minute idle timeout. See
734
+ [Reply files and MCP Apps](https://mono-agent-docs.vercel.app/tools/rich-replies/)
735
+ for native channel behavior, fallbacks, browser security, and limits.
736
+
485
737
  ## Architecture
486
738
 
487
739
  ### Data flow
@@ -496,13 +748,21 @@ path:
496
748
  recorder, and request-scoped extensions.
497
749
  3. Start every driver in parallel. Each driver normalizes transport input into
498
750
  the shared request/stream contract and returns a `RunningChannel` handle. The
499
- TUI driver primes its skill registry before binding and refreshes changed
500
- `SKILL.md` metadata in memory while it runs.
501
- 4. Publish traceability, exporter, sandbox, continuation, and memory-health
751
+ cron driver registers configured and disabled jobs but arms only their
752
+ effective runtime-enabled subset; its operator service feeds the TUI/web
753
+ capability lane. Process-job operator authority bypasses the generic channel
754
+ input and enters only the exact app-owned TUI driver through a private
755
+ composition hook. The TUI driver primes its skill registry before binding
756
+ and refreshes changed `SKILL.md` metadata in memory while it runs.
757
+ 4. Publish traceability, exporter, sandbox, process-job, continuation, and memory-health
502
758
  state while the controller tracks channel states as `disabled`,
503
759
  `waiting_for_config`, `running`, `degraded`, or `failed`.
504
760
  5. On stop or reload, stop the transport first, then dispose its responder so
505
761
  queued turns and warm provider sessions cannot outlive the config snapshot.
762
+ 6. For the managed macOS web console, publish the main and helper LaunchAgent
763
+ definitions as one composite-identity pair. The worker only wakes the helper;
764
+ the helper alone rotates after stopped-writer proof under the web lifecycle
765
+ lock and persists bounded recovery status.
506
766
 
507
767
  ### Package structure
508
768
 
@@ -512,8 +772,8 @@ path:
512
772
  | Configured agent | `configured-agent.ts`, `app-controller-responder.ts` | Runtime, harness, memory, history, tools, and recorder composition. |
513
773
  | Channel integration | `channels.ts`, `channel-drivers/` | Built-in drivers plus config-loaded plugin resolution. |
514
774
  | Interaction and send tools | `interaction-bridge.ts`, `adapter-send-tools*.ts` | Structured `AskUser` state, channel sinks, progress, adapter-send tools, and bounded interaction-history projection. |
515
- | Operator CLI | `cli*.ts`, `init.ts`, `doctor.ts`, `doctor-observability.ts`, `background*.ts`, `managed-web-logs.ts` | Setup, focused validation sections, managed service/log lifecycle, and diagnostics. |
516
- | Host services | `run-history.ts`, `continuation*.ts`, `memory-*.ts` | Bounded prior-run evidence, durable continuations, and memory operations. |
775
+ | Operator CLI | `cli*.ts`, `jobs-command.ts`, `init.ts`, `doctor.ts`, `doctor-observability.ts`, `background*.ts`, `launchd*.ts`, `managed-web-logs.ts`, `web-*.ts` | Setup, focused validation sections, paired managed service/log lifecycle, process-job operation, and diagnostics. |
776
+ | Host services | `run-history.ts`, `session-history.ts`, `request-scoped-mcp.ts`, `process-jobs*.ts`, `continuation*.ts`, `memory-*.ts` | Shared request-scoped guards, bounded prior-run/tool-lifecycle evidence, local process-job ownership/wake/recovery, durable continuations, and memory operations. |
517
777
 
518
778
  ## Public API
519
779
 
@@ -526,7 +786,12 @@ path:
526
786
  | Embed selected built-in channels | `defaultChannelDrivers`, `resolveChannelDrivers`, `createTelegramChannelDriver`, `createSlackChannelDriver`, `createWebhookChannelDriver`, `createOpenAIApiChannelDriver`, `createCronChannelDriver` |
527
787
  | Scaffold or validate an agent folder | `initMonoAgentFolder`, `validateMonoAgentFolder` |
528
788
  | Add bounded prior-run inspection | `createRunHistoryRuntimeExtension`, `isRunHistoryToolAllowed` |
529
- | Operate the CLI programmatically | `runCli`, `parseCliArgs`, `renderHelp` |
789
+ | Add bounded retained-tool inspection | `createSessionHistoryRuntimeExtension`, `isSessionHistoryToolAllowed` |
790
+ | Operate the CLI programmatically, including process jobs and the managed web lifecycle | `runCli`, `runJobsCommand`, `parseCliArgs`, `renderHelp` |
791
+
792
+ The web maintenance controller and publication helpers remain private CLI
793
+ implementation details; this change adds no new package-level public API for
794
+ that lifecycle.
530
795
 
531
796
  <!-- public-api-inventory:start -->
532
797
  <!-- Generated by scripts/generate-public-api-docs.mjs. Do not edit by hand. -->
@@ -616,8 +881,11 @@ RunContinuationCommandOptions
616
881
  RunHistoryBinding
617
882
  RunHistoryRuntimeExtension
618
883
  RunHistoryRuntimeExtensionOptions
884
+ RunJobsCommandOptions
619
885
  RunningChannel
620
886
  RunningRituals
887
+ SESSION_HISTORY_MCP_SERVER_NAME
888
+ SESSION_HISTORY_TOOL_NAME
621
889
  SandboxCheckResult
622
890
  SandboxCommandDependencies
623
891
  SandboxFunctionalCheck
@@ -626,6 +894,8 @@ SandboxRuntimeStatus
626
894
  SecretEnvRefusalCode
627
895
  SecretPersistenceOutcome
628
896
  SecretPersistenceStatus
897
+ SessionHistoryBinding
898
+ SessionHistoryRuntimeExtensionOptions
629
899
  SlackChannelOverrides
630
900
  StartMemoryRitualsInput
631
901
  TERMINAL_CONTINUATION_STATES
@@ -655,6 +925,8 @@ createCronChannelDriver
655
925
  createOpenAIApiChannelDriver
656
926
  createRunHistoryRuntimeExtension
657
927
  createRunHistoryServer
928
+ createSessionHistoryRuntimeExtension
929
+ createSessionHistoryServer
658
930
  createSlackChannelDriver
659
931
  createTelegramChannelDriver
660
932
  createWebhookChannelDriver
@@ -669,6 +941,7 @@ isColorEnabled
669
941
  isContinuationMode
670
942
  isContinuationState
671
943
  isRunHistoryToolAllowed
944
+ isSessionHistoryToolAllowed
672
945
  keyValue
673
946
  loadAppCoreConfig
674
947
  loadCliEnvFile
@@ -690,6 +963,7 @@ resolveChannelDrivers
690
963
  rule
691
964
  runCli
692
965
  runContinuationCommand
966
+ runJobsCommand
693
967
  runSandboxCommand
694
968
  runtimeUsesFallbackRouter
695
969
  sandboxRuntimeStatus
@@ -728,6 +1002,7 @@ compose communication adapters; adapters never depend on it.
728
1002
  - [Programmatic composition](https://mono-agent-docs.vercel.app/programmatic/composition/)
729
1003
  - [Channels](https://mono-agent-docs.vercel.app/channels/)
730
1004
  - [Local-first web research](https://mono-agent-docs.vercel.app/tools/web-research/)
1005
+ - [Reply files and MCP Apps](https://mono-agent-docs.vercel.app/tools/rich-replies/)
731
1006
  - [Package source and generated API inventory](https://github.com/robertsreberski/mono-agent/tree/main/packages/agent-app)
732
1007
 
733
1008
  ## Verification
@@ -1 +1 @@
1
- {"version":3,"file":"acp-bridge.d.ts","sourceRoot":"","sources":["../src/acp-bridge.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AA0DjD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAC1C,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAC5D,0DAA0D;IAC1D,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;CAC3C;AAaD,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CA4FhF"}
1
+ {"version":3,"file":"acp-bridge.d.ts","sourceRoot":"","sources":["../src/acp-bridge.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAiEjD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAC1C,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAC5D,0DAA0D;IAC1D,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;CAC3C;AAeD,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CA+GhF"}