@mono-agent/agent-app 0.19.0 → 0.20.0

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