@mono-agent/agent-app 0.20.11 → 0.21.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 (369) hide show
  1. package/README.md +260 -98
  2. package/dist/adapter-send-tools.d.ts +3 -2
  3. package/dist/adapter-send-tools.d.ts.map +1 -1
  4. package/dist/adapter-send-tools.js +15 -5
  5. package/dist/adapter-send-tools.js.map +1 -1
  6. package/dist/app-controller-channels.d.ts +6 -0
  7. package/dist/app-controller-channels.d.ts.map +1 -1
  8. package/dist/app-controller-channels.js +29 -2
  9. package/dist/app-controller-channels.js.map +1 -1
  10. package/dist/app-controller-continuation.d.ts.map +1 -1
  11. package/dist/app-controller-continuation.js +2 -3
  12. package/dist/app-controller-continuation.js.map +1 -1
  13. package/dist/app-controller-lifecycle.d.ts +4 -0
  14. package/dist/app-controller-lifecycle.d.ts.map +1 -1
  15. package/dist/app-controller-lifecycle.js +7 -0
  16. package/dist/app-controller-lifecycle.js.map +1 -1
  17. package/dist/app-controller-maintenance.d.ts +3 -1
  18. package/dist/app-controller-maintenance.d.ts.map +1 -1
  19. package/dist/app-controller-maintenance.js +3 -0
  20. package/dist/app-controller-maintenance.js.map +1 -1
  21. package/dist/app-controller-monitors.d.ts +26 -0
  22. package/dist/app-controller-monitors.d.ts.map +1 -0
  23. package/dist/app-controller-monitors.js +127 -0
  24. package/dist/app-controller-monitors.js.map +1 -0
  25. package/dist/app-controller-responder.d.ts +9 -17
  26. package/dist/app-controller-responder.d.ts.map +1 -1
  27. package/dist/app-controller-responder.js +54 -86
  28. package/dist/app-controller-responder.js.map +1 -1
  29. package/dist/app-controller-traceability.d.ts.map +1 -1
  30. package/dist/app-controller-traceability.js +3 -0
  31. package/dist/app-controller-traceability.js.map +1 -1
  32. package/dist/app-controller-types.d.ts +1 -0
  33. package/dist/app-controller-types.d.ts.map +1 -1
  34. package/dist/app-controller-utils.d.ts +1 -5
  35. package/dist/app-controller-utils.d.ts.map +1 -1
  36. package/dist/app-controller-utils.js +4 -21
  37. package/dist/app-controller-utils.js.map +1 -1
  38. package/dist/app-controller.d.ts +26 -10
  39. package/dist/app-controller.d.ts.map +1 -1
  40. package/dist/app-controller.js +39 -1
  41. package/dist/app-controller.js.map +1 -1
  42. package/dist/artifact-retention.js +11 -0
  43. package/dist/artifact-retention.js.map +1 -1
  44. package/dist/background.d.ts +0 -6
  45. package/dist/background.d.ts.map +1 -1
  46. package/dist/background.js +5 -58
  47. package/dist/background.js.map +1 -1
  48. package/dist/channel-drivers/slack.d.ts.map +1 -1
  49. package/dist/channel-drivers/slack.js +18 -0
  50. package/dist/channel-drivers/slack.js.map +1 -1
  51. package/dist/channel-drivers/telegram.d.ts.map +1 -1
  52. package/dist/channel-drivers/telegram.js +26 -0
  53. package/dist/channel-drivers/telegram.js.map +1 -1
  54. package/dist/channel-drivers/tui.d.ts +68 -8
  55. package/dist/channel-drivers/tui.d.ts.map +1 -1
  56. package/dist/channel-drivers/tui.js +407 -89
  57. package/dist/channel-drivers/tui.js.map +1 -1
  58. package/dist/channel-runtime-controls.d.ts +2 -1
  59. package/dist/channel-runtime-controls.d.ts.map +1 -1
  60. package/dist/channel-runtime-controls.js +79 -22
  61. package/dist/channel-runtime-controls.js.map +1 -1
  62. package/dist/cli-args.d.ts +5 -8
  63. package/dist/cli-args.d.ts.map +1 -1
  64. package/dist/cli-args.js +33 -52
  65. package/dist/cli-args.js.map +1 -1
  66. package/dist/cli-background-command.d.ts.map +1 -1
  67. package/dist/cli-background-command.js +4 -0
  68. package/dist/cli-background-command.js.map +1 -1
  69. package/dist/cli-commands.d.ts.map +1 -1
  70. package/dist/cli-commands.js +24 -2
  71. package/dist/cli-commands.js.map +1 -1
  72. package/dist/cli-help.d.ts +26 -0
  73. package/dist/cli-help.d.ts.map +1 -1
  74. package/dist/cli-help.js +58 -53
  75. package/dist/cli-help.js.map +1 -1
  76. package/dist/cli-init-command.d.ts +1 -2
  77. package/dist/cli-init-command.d.ts.map +1 -1
  78. package/dist/cli-init-command.js +31 -71
  79. package/dist/cli-init-command.js.map +1 -1
  80. package/dist/cli-install-skill-command.d.ts.map +1 -1
  81. package/dist/cli-install-skill-command.js +12 -3
  82. package/dist/cli-install-skill-command.js.map +1 -1
  83. package/dist/config-reference.d.ts +1 -0
  84. package/dist/config-reference.d.ts.map +1 -1
  85. package/dist/config-reference.js +217 -60
  86. package/dist/config-reference.js.map +1 -1
  87. package/dist/configured-agent.d.ts +27 -4
  88. package/dist/configured-agent.d.ts.map +1 -1
  89. package/dist/configured-agent.js +159 -112
  90. package/dist/configured-agent.js.map +1 -1
  91. package/dist/conversation-title.d.ts.map +1 -1
  92. package/dist/conversation-title.js +9 -2
  93. package/dist/conversation-title.js.map +1 -1
  94. package/dist/cron-control-store.d.ts.map +1 -1
  95. package/dist/cron-control-store.js +4 -2
  96. package/dist/cron-control-store.js.map +1 -1
  97. package/dist/doctor.d.ts +7 -13
  98. package/dist/doctor.d.ts.map +1 -1
  99. package/dist/doctor.js +406 -770
  100. package/dist/doctor.js.map +1 -1
  101. package/dist/first-run-readiness.d.ts.map +1 -1
  102. package/dist/first-run-readiness.js +0 -6
  103. package/dist/first-run-readiness.js.map +1 -1
  104. package/dist/index.d.ts +2 -0
  105. package/dist/index.d.ts.map +1 -1
  106. package/dist/index.js +1 -0
  107. package/dist/index.js.map +1 -1
  108. package/dist/interaction-bridge.d.ts +3 -3
  109. package/dist/interaction-bridge.d.ts.map +1 -1
  110. package/dist/interaction-bridge.js +27 -10
  111. package/dist/interaction-bridge.js.map +1 -1
  112. package/dist/launchd.d.ts +2 -0
  113. package/dist/launchd.d.ts.map +1 -1
  114. package/dist/launchd.js +3 -0
  115. package/dist/launchd.js.map +1 -1
  116. package/dist/local-tui-session.d.ts +14 -0
  117. package/dist/local-tui-session.d.ts.map +1 -0
  118. package/dist/local-tui-session.js +100 -0
  119. package/dist/local-tui-session.js.map +1 -0
  120. package/dist/mcp-apps.d.ts.map +1 -1
  121. package/dist/mcp-apps.js +3 -0
  122. package/dist/mcp-apps.js.map +1 -1
  123. package/dist/memory-journal.d.ts +53 -0
  124. package/dist/memory-journal.d.ts.map +1 -0
  125. package/dist/memory-journal.js +586 -0
  126. package/dist/memory-journal.js.map +1 -0
  127. package/dist/memory-recall.d.ts.map +1 -1
  128. package/dist/memory-recall.js +16 -2
  129. package/dist/memory-recall.js.map +1 -1
  130. package/dist/memory-remember.d.ts +49 -0
  131. package/dist/memory-remember.d.ts.map +1 -0
  132. package/dist/memory-remember.js +190 -0
  133. package/dist/memory-remember.js.map +1 -0
  134. package/dist/memory-retrieval.d.ts +33 -0
  135. package/dist/memory-retrieval.d.ts.map +1 -1
  136. package/dist/memory-retrieval.js +43 -0
  137. package/dist/memory-retrieval.js.map +1 -1
  138. package/dist/model-effort-capabilities.d.ts +8 -9
  139. package/dist/model-effort-capabilities.d.ts.map +1 -1
  140. package/dist/model-effort-capabilities.js +17 -35
  141. package/dist/model-effort-capabilities.js.map +1 -1
  142. package/dist/modules/base.d.ts +3 -4
  143. package/dist/modules/base.d.ts.map +1 -1
  144. package/dist/modules/base.js +4 -6
  145. package/dist/modules/base.js.map +1 -1
  146. package/dist/modules/catalog.d.ts.map +1 -1
  147. package/dist/modules/catalog.js +11 -9
  148. package/dist/modules/catalog.js.map +1 -1
  149. package/dist/modules/known-tools.d.ts +2 -2
  150. package/dist/modules/known-tools.d.ts.map +1 -1
  151. package/dist/modules/known-tools.js +7 -0
  152. package/dist/modules/known-tools.js.map +1 -1
  153. package/dist/monitor-channel-routing.d.ts +20 -0
  154. package/dist/monitor-channel-routing.d.ts.map +1 -0
  155. package/dist/monitor-channel-routing.js +73 -0
  156. package/dist/monitor-channel-routing.js.map +1 -0
  157. package/dist/monitors-command.d.ts +23 -0
  158. package/dist/monitors-command.d.ts.map +1 -0
  159. package/dist/monitors-command.js +217 -0
  160. package/dist/monitors-command.js.map +1 -0
  161. package/dist/monitors-config.d.ts +77 -0
  162. package/dist/monitors-config.d.ts.map +1 -0
  163. package/dist/monitors-config.js +150 -0
  164. package/dist/monitors-config.js.map +1 -0
  165. package/dist/monitors-context.d.ts +58 -0
  166. package/dist/monitors-context.d.ts.map +1 -0
  167. package/dist/monitors-context.js +194 -0
  168. package/dist/monitors-context.js.map +1 -0
  169. package/dist/monitors-runtime.d.ts +36 -0
  170. package/dist/monitors-runtime.d.ts.map +1 -0
  171. package/dist/monitors-runtime.js +103 -0
  172. package/dist/monitors-runtime.js.map +1 -0
  173. package/dist/monitors-service.d.ts +71 -0
  174. package/dist/monitors-service.d.ts.map +1 -0
  175. package/dist/monitors-service.js +1796 -0
  176. package/dist/monitors-service.js.map +1 -0
  177. package/dist/monitors-store.d.ts +93 -0
  178. package/dist/monitors-store.d.ts.map +1 -0
  179. package/dist/monitors-store.js +313 -0
  180. package/dist/monitors-store.js.map +1 -0
  181. package/dist/notify-destinations.d.ts +3 -2
  182. package/dist/notify-destinations.d.ts.map +1 -1
  183. package/dist/notify-destinations.js +6 -7
  184. package/dist/notify-destinations.js.map +1 -1
  185. package/dist/posted-reply-history.d.ts.map +1 -1
  186. package/dist/posted-reply-history.js +40 -3
  187. package/dist/posted-reply-history.js.map +1 -1
  188. package/dist/proactive-notify.d.ts +20 -1
  189. package/dist/proactive-notify.d.ts.map +1 -1
  190. package/dist/proactive-notify.js +56 -3
  191. package/dist/proactive-notify.js.map +1 -1
  192. package/dist/process-job-channel-routing.js +2 -1
  193. package/dist/process-job-channel-routing.js.map +1 -1
  194. package/dist/process-job-output-tail.d.ts +53 -0
  195. package/dist/process-job-output-tail.d.ts.map +1 -0
  196. package/dist/process-job-output-tail.js +257 -0
  197. package/dist/process-job-output-tail.js.map +1 -0
  198. package/dist/process-jobs-config.d.ts +1 -1
  199. package/dist/process-jobs-config.js +1 -1
  200. package/dist/process-jobs-config.js.map +1 -1
  201. package/dist/process-jobs-context.d.ts +11 -1
  202. package/dist/process-jobs-context.d.ts.map +1 -1
  203. package/dist/process-jobs-context.js +55 -11
  204. package/dist/process-jobs-context.js.map +1 -1
  205. package/dist/process-jobs-protection.js +1 -1
  206. package/dist/process-jobs-protection.js.map +1 -1
  207. package/dist/process-jobs-runtime.d.ts.map +1 -1
  208. package/dist/process-jobs-runtime.js +15 -12
  209. package/dist/process-jobs-runtime.js.map +1 -1
  210. package/dist/process-jobs-service.d.ts.map +1 -1
  211. package/dist/process-jobs-service.js +118 -172
  212. package/dist/process-jobs-service.js.map +1 -1
  213. package/dist/process-jobs-store.d.ts +3 -1
  214. package/dist/process-jobs-store.d.ts.map +1 -1
  215. package/dist/process-jobs-store.js +4 -1
  216. package/dist/process-jobs-store.js.map +1 -1
  217. package/dist/process-output-redaction.d.ts +58 -0
  218. package/dist/process-output-redaction.d.ts.map +1 -0
  219. package/dist/process-output-redaction.js +311 -0
  220. package/dist/process-output-redaction.js.map +1 -0
  221. package/dist/project-skills.d.ts +11 -5
  222. package/dist/project-skills.d.ts.map +1 -1
  223. package/dist/project-skills.js +88 -39
  224. package/dist/project-skills.js.map +1 -1
  225. package/dist/provider-auth-checks.d.ts +27 -0
  226. package/dist/provider-auth-checks.d.ts.map +1 -0
  227. package/dist/provider-auth-checks.js +349 -0
  228. package/dist/provider-auth-checks.js.map +1 -0
  229. package/dist/provider-auth-observations.d.ts +22 -0
  230. package/dist/provider-auth-observations.d.ts.map +1 -0
  231. package/dist/provider-auth-observations.js +139 -0
  232. package/dist/provider-auth-observations.js.map +1 -0
  233. package/dist/provider-auth-operator.d.ts +19 -0
  234. package/dist/provider-auth-operator.d.ts.map +1 -0
  235. package/dist/provider-auth-operator.js +560 -0
  236. package/dist/provider-auth-operator.js.map +1 -0
  237. package/dist/provider-auth-status.d.ts +20 -0
  238. package/dist/provider-auth-status.d.ts.map +1 -0
  239. package/dist/provider-auth-status.js +235 -0
  240. package/dist/provider-auth-status.js.map +1 -0
  241. package/dist/provider-model-catalog.d.ts +95 -0
  242. package/dist/provider-model-catalog.d.ts.map +1 -0
  243. package/dist/provider-model-catalog.js +550 -0
  244. package/dist/provider-model-catalog.js.map +1 -0
  245. package/dist/provider-setup.d.ts +26 -13
  246. package/dist/provider-setup.d.ts.map +1 -1
  247. package/dist/provider-setup.js +106 -130
  248. package/dist/provider-setup.js.map +1 -1
  249. package/dist/readiness-probe-worker.d.ts +1 -2
  250. package/dist/readiness-probe-worker.d.ts.map +1 -1
  251. package/dist/readiness-probe-worker.js +3 -8
  252. package/dist/readiness-probe-worker.js.map +1 -1
  253. package/dist/readiness-probe.d.ts +1 -1
  254. package/dist/readiness-probe.d.ts.map +1 -1
  255. package/dist/readiness-probe.js +3 -33
  256. package/dist/readiness-probe.js.map +1 -1
  257. package/dist/reply-artifacts.d.ts +3 -1
  258. package/dist/reply-artifacts.d.ts.map +1 -1
  259. package/dist/reply-artifacts.js +45 -10
  260. package/dist/reply-artifacts.js.map +1 -1
  261. package/dist/request-model-override.d.ts +14 -37
  262. package/dist/request-model-override.d.ts.map +1 -1
  263. package/dist/request-model-override.js +105 -143
  264. package/dist/request-model-override.js.map +1 -1
  265. package/dist/request-scoped-mcp.d.ts +3 -0
  266. package/dist/request-scoped-mcp.d.ts.map +1 -1
  267. package/dist/request-scoped-mcp.js +1 -1
  268. package/dist/request-scoped-mcp.js.map +1 -1
  269. package/dist/run-history.d.ts.map +1 -1
  270. package/dist/run-history.js +56 -13
  271. package/dist/run-history.js.map +1 -1
  272. package/dist/runtime-option-extensions.d.ts +2 -4
  273. package/dist/runtime-option-extensions.d.ts.map +1 -1
  274. package/dist/runtime-option-extensions.js +4 -8
  275. package/dist/runtime-option-extensions.js.map +1 -1
  276. package/dist/runtime-routes.d.ts +5 -5
  277. package/dist/runtime-routes.d.ts.map +1 -1
  278. package/dist/runtime-routes.js +29 -18
  279. package/dist/runtime-routes.js.map +1 -1
  280. package/dist/sandbox-settings-cleanup.d.ts +15 -0
  281. package/dist/sandbox-settings-cleanup.d.ts.map +1 -0
  282. package/dist/sandbox-settings-cleanup.js +88 -0
  283. package/dist/sandbox-settings-cleanup.js.map +1 -0
  284. package/dist/seen-conversations.d.ts +4 -3
  285. package/dist/seen-conversations.d.ts.map +1 -1
  286. package/dist/seen-conversations.js +6 -5
  287. package/dist/seen-conversations.js.map +1 -1
  288. package/dist/session-history.d.ts +14 -0
  289. package/dist/session-history.d.ts.map +1 -1
  290. package/dist/session-history.js +120 -5
  291. package/dist/session-history.js.map +1 -1
  292. package/dist/systemd-command.d.ts +8 -0
  293. package/dist/systemd-command.d.ts.map +1 -0
  294. package/dist/systemd-command.js +206 -0
  295. package/dist/systemd-command.js.map +1 -0
  296. package/dist/systemd.d.ts +51 -0
  297. package/dist/systemd.d.ts.map +1 -0
  298. package/dist/systemd.js +299 -0
  299. package/dist/systemd.js.map +1 -0
  300. package/dist/tool-output-artifacts.d.ts +4 -0
  301. package/dist/tool-output-artifacts.d.ts.map +1 -0
  302. package/dist/tool-output-artifacts.js +17 -0
  303. package/dist/tool-output-artifacts.js.map +1 -0
  304. package/dist/trigger-overrides.d.ts +6 -0
  305. package/dist/trigger-overrides.d.ts.map +1 -1
  306. package/dist/trigger-overrides.js +36 -4
  307. package/dist/trigger-overrides.js.map +1 -1
  308. package/dist/tui-command.d.ts +0 -45
  309. package/dist/tui-command.d.ts.map +1 -1
  310. package/dist/tui-command.js +27 -264
  311. package/dist/tui-command.js.map +1 -1
  312. package/dist/untrusted-text.d.ts +36 -0
  313. package/dist/untrusted-text.d.ts.map +1 -0
  314. package/dist/untrusted-text.js +150 -0
  315. package/dist/untrusted-text.js.map +1 -0
  316. package/dist/web-command.d.ts +3 -0
  317. package/dist/web-command.d.ts.map +1 -1
  318. package/dist/web-command.js +112 -7
  319. package/dist/web-command.js.map +1 -1
  320. package/dist/web-request-coordinator.d.ts +19 -0
  321. package/dist/web-request-coordinator.d.ts.map +1 -0
  322. package/dist/web-request-coordinator.js +242 -0
  323. package/dist/web-request-coordinator.js.map +1 -0
  324. package/dist/wizard/answers.d.ts +3 -9
  325. package/dist/wizard/answers.d.ts.map +1 -1
  326. package/dist/wizard/answers.js +11 -36
  327. package/dist/wizard/answers.js.map +1 -1
  328. package/dist/wizard/from-flags.d.ts +1 -2
  329. package/dist/wizard/from-flags.d.ts.map +1 -1
  330. package/dist/wizard/from-flags.js +8 -3
  331. package/dist/wizard/from-flags.js.map +1 -1
  332. package/dist/wizard/model-discovery.d.ts +7 -8
  333. package/dist/wizard/model-discovery.d.ts.map +1 -1
  334. package/dist/wizard/model-discovery.js +58 -431
  335. package/dist/wizard/model-discovery.js.map +1 -1
  336. package/dist/wizard/presets.js +2 -2
  337. package/dist/wizard/presets.js.map +1 -1
  338. package/dist/wizard/prompts.d.ts +13 -12
  339. package/dist/wizard/prompts.d.ts.map +1 -1
  340. package/dist/wizard/prompts.js +25 -45
  341. package/dist/wizard/prompts.js.map +1 -1
  342. package/dist/wizard/run.d.ts.map +1 -1
  343. package/dist/wizard/run.js +30 -153
  344. package/dist/wizard/run.js.map +1 -1
  345. package/package.json +18 -18
  346. package/schema/mono-agent.config.schema.json +301 -53
  347. package/skills/mono-agent-composer/SKILL.md +5 -5
  348. package/skills/mono-agent-composer/references/config-blueprint.md +61 -47
  349. package/skills/mono-agent-composer/references/discovery-questions.md +18 -18
  350. package/skills/mono-agent-composer/references/feature-coverage.md +39 -21
  351. package/skills/mono-agent-composer/references/package-map.md +26 -17
  352. package/skills/mono-agent-composer/references/playbooks.md +39 -28
  353. package/skills/mono-agent-composer/references/validation.md +4 -3
  354. package/dist/codex-model-catalog.d.ts +0 -15
  355. package/dist/codex-model-catalog.d.ts.map +0 -1
  356. package/dist/codex-model-catalog.js +0 -220
  357. package/dist/codex-model-catalog.js.map +0 -1
  358. package/dist/configuration-proposal-main.d.ts +0 -3
  359. package/dist/configuration-proposal-main.d.ts.map +0 -1
  360. package/dist/configuration-proposal-main.js +0 -13
  361. package/dist/configuration-proposal-main.js.map +0 -1
  362. package/dist/configuration-proposal-tool.d.ts +0 -33
  363. package/dist/configuration-proposal-tool.d.ts.map +0 -1
  364. package/dist/configuration-proposal-tool.js +0 -188
  365. package/dist/configuration-proposal-tool.js.map +0 -1
  366. package/dist/local-configuration.d.ts +0 -99
  367. package/dist/local-configuration.d.ts.map +0 -1
  368. package/dist/local-configuration.js +0 -1330
  369. package/dist/local-configuration.js.map +0 -1
@@ -22,7 +22,7 @@ Every real host needs these concepts:
22
22
  | --- | --- | --- | --- |
23
23
  | Shared request/response shape | `@mono-agent/agent-contracts` | `AgentResponder`, request, response, stream, cancellation contracts | Prompt building, runtime execution, transport |
24
24
  | Core config | `@mono-agent/config` | Runtime, context, memory, tools, artifact, traceability settings | Adapter credentials, chat allowlists |
25
- | Runtime facade | `@mono-agent/runtime-adapter` | Model refs, execution-mode validation, local provider runtime options | Prompts, adapters, memory |
25
+ | Runtime facade | `@mono-agent/runtime-adapter` | Canonical `<provider>:<model>` refs, the Pi backend descriptor, sandbox policy, local provider runtime options | Prompts, adapters, memory |
26
26
  | Configured responder | `@mono-agent/agent-app` | Turns `MonoAgentConfig` into runtime, memory, harness, and responder | Polling chats, serving APIs, adapter settings |
27
27
 
28
28
  Minimal local host:
@@ -50,11 +50,12 @@ Use this path when the agent needs identity, selected skills, history, and optio
50
50
  | Selected skill bodies | `@mono-agent/agent-harness` | Load only configured skills from `<skillsRoot>/<name>/SKILL.md` |
51
51
  | Live operator skill registry | `@mono-agent/agent-app` + `@mono-agent/operator-adapter` | Classify installed skills as inlined, on-demand, or unavailable and expose a bounded memory-only snapshot for console discovery |
52
52
  | Memory substrate (schema, migrations, FTS+vector db, RRF) | `@mono-agent/memory/store` | SQLite storage, BM25 FTS, optional vector index, hybrid recall; re-exports `MemoryStore`/`MemoryBlock`/`MemoryWriteResult` from `@mono-agent/agent-contracts` |
53
- | Memory engine (all tiers: lite/journal/bujo) | `@mono-agent/memory/bujo` | `BujoMemoryStore` — tier-aware: FTS recall (lite), hybrid recall + static salience (journal), LLM capture/reconcile + entity graph + projection-only scheduled consolidation (bujo) |
53
+ | Memory engine (all tiers: lite/journal/bujo) | `@mono-agent/memory/bujo` | `BujoMemoryStore` — tier-aware: FTS recall (lite), hybrid recall + static salience (journal), LLM capture/reconcile + entity graph + projection-only scheduled consolidation (bujo); all tiers affirm bounded canonical chronological browse |
54
54
  | Embedding providers | `@mono-agent/memory/search` | Exclusive Ollama/LM Studio/OpenAI embedding providers used by the store subpath for vector recall; `agent-app` owns guided typed discovery and the real readiness probe |
55
55
  | Composer documentation search + guided reading | `@mono-agent/docs-mcp` (optional plugin) | Exact-version offline hybrid semantic/BM25 `mono_agent_docs` search plus anchored reads, cross-link resolution, and continuation windows over canonical docs and composer references; paired by `mono-agent install-skill`, outside the composed agent's own `mcp.json` |
56
56
  | External Supermemory backend | `@mono-agent/memory-supermemory` (optional plugin) | Explicitly installed lockstep package selected by `memory.backend: "supermemory"`; proxies the shared `MemoryStore` / `MemoryRecall` contracts to local or hosted Supermemory for server-side extraction, consolidation, and hybrid recall |
57
57
  | Recall tool surface | `@mono-agent/agent-app` (bundled) | Auto-provisions read-only `MemoryRecall` for every configured tier and direct configured responder; automatic/tool recall share the same store and per-turn query cache |
58
+ | Chronological journal tool surface | `@mono-agent/agent-app` (bundled) | Auto-provisions policy-gated `MemoryJournal` only for affirmative local Lite/Journal/BuJo capability; strict explicit dates/zone, frozen request snapshots, safe provenance, no Supermemory/search fallback |
58
59
 
59
60
  Mono-agent selected skills are not auto-selected by description. The host chooses `context.selectedSkills`, and the harness loads those exact bodies.
60
61
 
@@ -82,23 +83,26 @@ companion, not an MCP server injected into every composed agent. Add project
82
83
  MCP servers to the agent's own `mcp.json`; do not copy the documentation server
83
84
  there unless the resulting agent itself must answer mono-agent framework questions.
84
85
 
85
- `RunHistory`, `SessionHistory`, and `SetConversationTitle` are app-owned
86
+ `RunHistory`, `SessionHistory`, `MemoryJournal`, and `SetConversationTitle` are app-owned
86
87
  request-scoped tools, not entries for `mcp.json`. `SessionHistory` searches the
87
88
  current logical session's retained managed-tool calls/results and needs no config
88
89
  key. `SetConversationTitle` appears only for writable interactive web threads;
89
90
  it keeps automatic semantic titles current, while a user rename permanently
90
- wins. Allow-all exposes eligible tools on compatible routes; a specific
91
- allowlist must name each one. Direct OpenCode suppresses all three; direct ACP
92
- retains and cold-projects lifecycle evidence but cannot expose `SessionHistory`.
91
+ wins. Allow-all exposes eligible tools; a specific allowlist must name each one.
92
+ `MemoryJournal` also requires `memory.recallTool.enabled` and an affirmative local
93
+ browse capability; Supermemory never acquires it through policy alone. Every route is
94
+ Pi-native, so no route family suppresses any of these tools; the
95
+ surface conditions above (writable interactive web thread, retained managed-tool
96
+ calls) are the only gates.
93
97
  `@mono-agent/agent-app` also owns rich reply composition. `PublishReplyFile`
94
98
  copies a confined generated file into owner-private integrity storage and is
95
99
  available under allow-all (or by exact name in a restrictive policy). Supported
96
100
  Pi-native MCP tool results can register their declared MCP App UI resource for
97
- the web console. An all-Pi route chain is required for Apps; direct or fallback
98
- routes that cannot carry the bridge do not advertise it. Adapters consume the
99
- shared reply-part contract: Slack and Telegram confirm native uploads, the web
100
- serves authorized downloads and sandboxed Apps, and machine/verbatim adapters
101
- preserve answer text when they cannot represent a part.
101
+ the web console, and because every route is Pi-native the whole fallback chain
102
+ carries that bridge. Adapters consume the shared reply-part contract: Slack and
103
+ Telegram confirm native uploads, the web serves authorized downloads and
104
+ sandboxed Apps, and machine/verbatim adapters preserve answer text when they
105
+ cannot represent a part.
102
106
 
103
107
  ```ts
104
108
  import { createToolPolicy, toolPolicyToRuntimeOptions } from "@mono-agent/agent-harness";
@@ -150,11 +154,16 @@ Use `@mono-agent/agent-orchestrator` when one runtime should call named collabor
150
154
 
151
155
  Use `@mono-agent/runtime-adapter` unless the host has a custom runtime implementation that already satisfies `MonoRuntimeLike`.
152
156
 
153
- Supported model reference families:
154
-
155
- - `codex:<model>` with CLI execution
156
- - `claude:<model>` with SDK or CLI execution
157
- - `pi:<provider>:<model>` with SDK execution, including Pi OpenAI-Codex, OpenCode-through-Pi (`pi:opencode-go:*`), and local providers such as Ollama and LM Studio
158
- - `opencode:<provider>:<model>` with CLI execution for hand-authored OpenCode backend config
157
+ There is one supported model reference family: canonical `<provider>:<model>`,
158
+ run Pi-native. Only the first colon is structural, so `ollama:gemma4:31b` is
159
+ provider `ollama` and model `gemma4:31b`. `<provider>` is a Pi provider id —
160
+ `openai-codex`, `anthropic`, `openai`, `github-copilot`, `openrouter`,
161
+ `opencode-go`, or a local/self-hosted id such as `ollama` or `lmstudio`.
162
+
163
+ A leading `pi:` is canonicalized away, so `pi:ollama:gemma4:31b` still loads —
164
+ but emit the canonical form. `codex:`, `claude:`, `claude-code:`, `codex-cli:`,
165
+ `acp:`, `vercel:` and the nested `opencode:<provider>:<model>` form were
166
+ retired in 0.21.0 and are rejected at load with the replacement named. Tier
167
+ aliases (`haiku`, `sonnet`, `opus`) are not model ids; use an exact model id.
159
168
 
160
169
  Provider credentials belong in the provider/runtime environment, not in committed config.
@@ -11,6 +11,18 @@ Flow, check whether one of these fits and adapt it. Verify every key against
11
11
 
12
12
  ---
13
13
 
14
+ ## Efficient command watches
15
+
16
+ For repeated terminal redraws, enable `processJobs.enabled` and
17
+ `monitors.enabled`, then use Monitor with `wake_on: "batch"`,
18
+ `dedupe: "batch"`, and a chosen `min_wake_interval_ms`. The host clamps the
19
+ interval to `monitors.maxWakeIntervalMs` (default/cap 300000); check the start
20
+ receipt's effective policy. First and terminal wakes bypass the floor.
21
+ Use `wake_on: "exit"` with default dedupe/interval for exactly one terminal
22
+ wake and a bounded retained tail. Finite work whose final result matters still
23
+ fits a background process job. Cancellation intentionally stops the watch;
24
+ never automatically recreate it.
25
+
14
26
  ## 1. Personal Telegram assistant with BuJo memory
15
27
  **For:** an individual wanting a private assistant that remembers.
16
28
  **Goal:** a Telegram bot (long polling) that captures every turn into BuJo memory with scheduled consolidation and recalls past notes semantically.
@@ -20,7 +32,7 @@ Put `MONO_AGENT_TELEGRAM_BOT_TOKEN=...` in `.env`; the source config omits the c
20
32
 
21
33
  ```json
22
34
  {
23
- "runtime": { "model": "pi:openai-codex:gpt-5.6-terra" },
35
+ "runtime": { "model": "openai-codex:gpt-5.6-terra" },
24
36
  "telegram": { "enabled": true, "allowedChatIds": ["123456789"] },
25
37
  "memory": {
26
38
  "mode": "bujo", "path": "./.mono-agent/memory", "writeMode": "capture",
@@ -30,7 +42,7 @@ Put `MONO_AGENT_TELEGRAM_BOT_TOKEN=...` in `.env`; the source config omits the c
30
42
  }
31
43
  }
32
44
  ```
33
- **Steps:** `ollama pull nomic-embed-text:v1.5 && ollama pull qwen3.6:latest` → `mono-agent init --model claude:claude-sonnet-4-6 --memory bujo` → add telegram + fill embeddings/llm + `writeMode: capture` → `mono-agent validate` (confirm memory liveness + consolidation cadence) → `mono-agent start`.
45
+ **Steps:** `ollama pull nomic-embed-text:v1.5 && ollama pull qwen3.6:latest` → `mono-agent init --model anthropic:claude-sonnet-4-6 --memory bujo` → add telegram + fill embeddings/llm + `writeMode: capture` → `mono-agent validate` (confirm memory liveness + consolidation cadence) → `mono-agent start`.
34
46
  **Smoke:** send a fact from the allowed chat, then ask a paraphrased question later; confirm the final answer arrives separately and the temporary memory-tool activity disappears, `MemoryRecall` appears in the run JSONL, and the answer uses it.
35
47
 
36
48
  ## 2. Slack team bot with MCP tools
@@ -42,7 +54,7 @@ Put `MONO_AGENT_SLACK_BOT_TOKEN` and `MONO_AGENT_SLACK_APP_TOKEN` in `.env`; the
42
54
 
43
55
  ```json
44
56
  {
45
- "runtime": { "model": "pi:openai-codex:gpt-5.6-terra" },
57
+ "runtime": { "model": "openai-codex:gpt-5.6-terra" },
46
58
  "slack": { "enabled": true, "allowedChannelIds": ["C012345"], "stripMentionText": true },
47
59
  "tools": { "allowedTools": ["Read", "Grep", "SlackSendMessage", "deployTool"], "mcpConfigPath": "./mcp.json" },
48
60
  "concurrency": { "maxConcurrentRuns": 4, "maxPendingRuns": 8 }
@@ -58,13 +70,13 @@ Put `MONO_AGENT_SLACK_BOT_TOKEN` and `MONO_AGENT_SLACK_APP_TOKEN` in `.env`; the
58
70
 
59
71
  ```json
60
72
  {
61
- "runtime": { "model": "pi:ollama:gemma4:31b" },
73
+ "runtime": { "model": "ollama:gemma4:31b" },
62
74
  "providers": { "local": [{ "id": "ollama", "type": "ollama", "baseUrl": "http://localhost:11434", "enabled": true, "models": [{ "name": "gemma4:31b", "capabilities": { "context_window": 32768 } }] }] },
63
75
  "memory": { "mode": "journal", "path": "./.mono-agent/memory", "embeddings": { "provider": "ollama", "model": "nomic-embed-text:v1.5", "endpoint": "http://localhost:11434", "dim": 768 } },
64
76
  "sandbox": { "mode": "native", "network": { "mode": "localhost" } }
65
77
  }
66
78
  ```
67
- **Steps:** pull both models → `mono-agent init --model pi:ollama:gemma4:31b --memory journal` → add `providers.local` + embeddings + `sandbox.network.mode: localhost` → `validate` (Ollama reachable, models pulled) → `start`.
79
+ **Steps:** pull both models → `mono-agent init --model ollama:gemma4:31b --memory journal` → add `providers.local` + embeddings + `sandbox.network.mode: localhost` → `validate` (Ollama reachable, models pulled) → `start`.
68
80
  **Smoke:** `curl -X POST` the webhook path; confirm a local-model response and no outbound non-localhost network in the artifact.
69
81
 
70
82
  ## 4. OpenAI-compatible endpoint for Open WebUI
@@ -74,7 +86,7 @@ Put `MONO_AGENT_SLACK_BOT_TOKEN` and `MONO_AGENT_SLACK_APP_TOKEN` in `.env`; the
74
86
 
75
87
  ```json
76
88
  {
77
- "runtime": { "model": "claude:claude-sonnet-4-6", "session": { "mode": "continuous", "idleTimeoutMs": 1800000 } },
89
+ "runtime": { "model": "anthropic:claude-sonnet-4-6", "session": { "mode": "continuous", "idleTimeoutMs": 1800000 } },
78
90
  "openaiApi": { "enabled": true, "host": "0.0.0.0", "port": 4040, "basePath": "/v1", "allowNonLoopback": true, "modelId": "my-agent" }
79
91
  }
80
92
  ```
@@ -88,7 +100,7 @@ Put `MONO_AGENT_SLACK_BOT_TOKEN` and `MONO_AGENT_SLACK_APP_TOKEN` in `.env`; the
88
100
 
89
101
  ```json
90
102
  {
91
- "runtime": { "model": "claude:claude-sonnet-4-6" },
103
+ "runtime": { "model": "anthropic:claude-sonnet-4-6" },
92
104
  "webhook": {
93
105
  "enabled": true, "host": "127.0.0.1", "port": 8080, "defaultMode": "sync",
94
106
  "endpoints": [
@@ -113,7 +125,7 @@ Put `MONO_AGENT_SLACK_BOT_TOKEN` and `MONO_AGENT_SLACK_APP_TOKEN` in `.env`; the
113
125
 
114
126
  ```json
115
127
  {
116
- "runtime": { "model": "claude:claude-sonnet-4-6" },
128
+ "runtime": { "model": "anthropic:claude-sonnet-4-6" },
117
129
  "slack": { "enabled": true, "allowedChannelIds": ["C012345"], "unfurlLinks": false, "unfurlMedia": false },
118
130
  "cron": { "jobs": [{ "id": "morning-digest", "enabled": true, "expression": "0 9 * * *", "timezone": "America/New_York", "prompt": "Build the morning digest. Your final answer is the digest to notify.", "conversationId": "daily-digest", "notify": true, "notifyConversationId": "slack:C012345" }] }
119
131
  }
@@ -180,13 +192,13 @@ const orchestrator = await createConfiguredAgentResponder({
180
192
 
181
193
  ```json
182
194
  {
183
- "runtime": { "model": "pi:openai-codex:gpt-5.6-terra" },
195
+ "runtime": { "model": "openai-codex:gpt-5.6-terra" },
184
196
  "tools": { "allowedTools": ["*"] },
185
197
  "sandbox": { "mode": "native", "network": { "mode": "localhost" }, "readableRoots": ["."], "writableRoots": ["."], "denyWrite": [".env", ".env.*", ".git/config", ".git/hooks/**"], "fallback": "fail-closed" }
186
198
  }
187
199
  ```
188
200
  **Steps:** `mono-agent init --memory journal` → leave tools at the allow-all default (`["*"]`); the **sandbox**, not an allowlist, is what constrains the code tools → `sandbox.mode native` + `network localhost` + deny-write defaults → keep `fallback: fail-closed` (do NOT set `unsafe-host-process`) → `validate` → `start`.
189
- **Smoke:** ask it to read a file, use Exec for one argv-safe command, run one Bash pipeline, then use NodeRepl twice to retain a variable and produce `42` (all work); next fetch an external URL or write `.env` (both blocked in the artifact). Keep every primary/fallback/trigger model on Pi; direct Codex, Claude, and direct OpenCode reject this mono-agent sandbox policy.
201
+ **Smoke:** ask it to read a file, use Exec for one argv-safe command, run one Bash pipeline, then use NodeRepl twice to retain a variable and produce `42` (all work); next fetch an external URL or write `.env` (both blocked in the artifact). Every route is Pi-native, so this sandbox policy applies uniformly to the primary, every fallback, and every per-trigger override.
190
202
 
191
203
  ## 10. Phoenix-observed agent with the TUI
192
204
  **For:** an agent builder evaluating runs in a tracing dashboard.
@@ -195,7 +207,7 @@ const orchestrator = await createConfiguredAgentResponder({
195
207
 
196
208
  ```json
197
209
  {
198
- "runtime": { "model": "claude:claude-sonnet-4-6" },
210
+ "runtime": { "model": "anthropic:claude-sonnet-4-6" },
199
211
  "artifacts": { "dir": ".mono-agent/artifacts" },
200
212
  "traceability": { "registryDir": ".mono-agent/trace-sources", "sourceId": "my-agent", "heartbeatMs": 10000 },
201
213
  "observability": { "exporters": [{ "type": "phoenix", "endpoint": "http://127.0.0.1:6006/v1/traces", "projectName": "my-project", "includeSensitiveData": false, "contentPatternRedaction": false, "timeoutMs": 5000 }] }
@@ -223,16 +235,12 @@ const orchestrator = await createConfiguredAgentResponder({
223
235
 
224
236
  ```json
225
237
  {
226
- "runtime": { "model": "claude:claude-sonnet-4-6", "fallbacks": [{ "model": "pi:openai-codex:gpt-5.5" }, { "model": "pi:ollama:gemma4:31b" }], "session": { "mode": "continuous" } },
238
+ "runtime": { "model": "anthropic:claude-sonnet-4-6", "fallbacks": [{ "model": "openai-codex:gpt-5.6-sol" }, { "model": "ollama:gemma4:31b" }], "session": { "mode": "continuous" } },
227
239
  "providers": { "local": [{ "id": "ollama", "type": "ollama", "baseUrl": "http://localhost:11434", "enabled": true }], "piNative": { "transport": "auto", "piMaxRetries": 2, "maxRetryDelayMs": 60000, "piSessionsRoot": ".mono-agent/sessions" } }
228
240
  }
229
241
  ```
230
- Legacy `runtime.fallbackModels` and `MONO_AGENT_FALLBACK_MODELS` remain supported
231
- with no removal deadline, but this playbook intentionally emits the canonical
232
- per-route form for a new agent.
233
- **Steps:** `ollama pull gemma4:31b` → `mono-agent init --model claude:claude-sonnet-4-6 --fallback pi:openai-codex:gpt-5.5 --fallback pi:ollama:gemma4:31b` → add `providers.local` + `piNative.piSessionsRoot` → `validate` → `start`.
234
- **Boundary:** this mixed Pi/Claude chain intentionally omits the native mono-agent sandbox. Keep direct Codex chains all-direct; keep every route on Pi (including `pi:opencode-go:*`, not direct `opencode:*`) when `sandbox.mode` is `native`.
235
- **Smoke:** force a retryable primary failure; confirm the run result reports failover to the next model (not silent) and the conversation resumes from the transcript tail.
242
+ `runtime.fallbackModels` and `MONO_AGENT_FALLBACK_MODELS` were retired in 0.21.0
243
+ and are rejected at load; emit `runtime.fallbacks[]` only.
236
244
 
237
245
  ## 13. Personal Telegram assistant with Supermemory
238
246
  **For:** a power user trying an external memory layer while keeping the agent local.
@@ -241,7 +249,7 @@ per-route form for a new agent.
241
249
 
242
250
  ```json
243
251
  {
244
- "runtime": { "model": "claude:claude-sonnet-4-6" },
252
+ "runtime": { "model": "anthropic:claude-sonnet-4-6" },
245
253
  "telegram": { "enabled": true, "allowedChatIds": ["123456789"] },
246
254
  "memory": {
247
255
  "backend": "supermemory", "mode": "lite", "path": "./.mono-agent/memory",
@@ -261,13 +269,13 @@ per-route form for a new agent.
261
269
 
262
270
  ```json
263
271
  {
264
- "runtime": { "model": "pi:lmstudio:qwen3.6-32b" },
272
+ "runtime": { "model": "lmstudio:qwen3.6-32b" },
265
273
  "providers": { "local": [{ "id": "lmstudio", "type": "lmstudio", "baseUrl": "http://localhost:1234", "enabled": true }] },
266
274
  "memory": { "mode": "lite", "path": "./.mono-agent/memory", "writeMode": "append-host-summary" },
267
275
  "webhook": { "enabled": true }
268
276
  }
269
277
  ```
270
- **Steps:** start LM Studio's local server with the chosen model loaded → `mono-agent init --model pi:lmstudio:qwen3.6-32b --memory lite` (the `pi:lmstudio:*` model auto-adds the LM Studio provider block; there is no LM Studio preset — `local-private` is Ollama-based) → adjust `runtime.model` if the displayed model id differs → `validate` → `start`.
278
+ **Steps:** start LM Studio's local server with the chosen model loaded → `mono-agent init --model lmstudio:qwen3.6-32b --memory lite` (the `lmstudio:*` model auto-adds the LM Studio provider block; there is no LM Studio preset — `local-private` is Ollama-based) → adjust `runtime.model` if the displayed model id differs → `validate` → `start`.
271
279
  **Smoke:** `curl` the webhook invoke URL and confirm the response comes from the local LM Studio model.
272
280
 
273
281
  ## 15. Interactive agent with long jobs and large media
@@ -279,27 +287,30 @@ per-route form for a new agent.
279
287
 
280
288
  ```json
281
289
  {
282
- "runtime": { "model": "pi:openai-codex:gpt-5.5", "executionMode": "sdk" },
290
+ "runtime": { "model": "openai-codex:gpt-5.6-sol" },
283
291
  "tools": { "allowedTools": ["Read", "AskUser", "TelegramSendFile", "PublishReplyFile"], "mcpConfigPath": "./.mcp.json", "mcpCallMaxTotalTimeoutMs": 2700000 },
284
292
  "interaction": { "bridge": { "host": "127.0.0.1", "port": 4471 }, "askUser": { "timeoutMs": 600000 }, "progress": { "enabled": true } },
285
293
  "telegram": { "enabled": true, "allowedChatIds": ["123456789"], "apiRoot": "http://127.0.0.1:8081", "attachments": { "maxBytes": 268435456, "maxUploadBytes": 268435456 } }
286
294
  }
287
295
  ```
296
+ Set `interaction.askUser.timeoutMs` to `null` when this workflow must keep the
297
+ question pending until the user answers or cancels; the default remains ten
298
+ minutes.
288
299
  **Steps:** run a loopback self-hosted Bot API server if files exceed 20 MB, wire a long-running MCP tool in `.mcp.json`, `validate`, `start`.
289
300
  **Smoke:** send media with no caption, answer the `AskUser` question, watch progress update during the long job, and receive both an explicit `TelegramSendFile` send and a final generated reply file published with `PublishReplyFile` as native documents.
290
301
 
291
302
  ## 16. Local-first web research agent
292
303
  **For:** a researcher wanting operator-owned search infrastructure and bounded public-page extraction.
293
- **Goal:** discover through loopback SearXNG, extract pages locally, and optionally render sparse JavaScript HTML in an isolated anonymous browser.
304
+ **Goal:** discover through explicit Ollama or loopback SearXNG, extract pages locally, and optionally render JavaScript HTML in an isolated anonymous browser.
294
305
  **Features:** `runtime.web-research`, `runtime.webfetch-retry`, `runtime.builtin-tools`, `sandbox.network-policy`.
295
306
 
296
307
  ```json
297
308
  {
298
- "runtime": { "model": "pi:openai-codex:gpt-5.5" },
309
+ "runtime": { "model": "openai-codex:gpt-5.6-sol" },
299
310
  "tools": {
300
311
  "allowedTools": ["Read", "Glob", "Grep", "WebSearch", "WebFetch"],
301
312
  "web": {
302
- "search": { "backend": "searxng", "endpoint": "http://127.0.0.1:8088" },
313
+ "search": { "backend": "auto", "maxRequestsPerRun": 4, "ollama": { "baseUrl": "http://127.0.0.1:11434" }, "searxng": { "endpoint": "http://127.0.0.1:8088" } },
303
314
  "fetch": { "render": "never", "browserCommand": "agent-browser" }
304
315
  }
305
316
  },
@@ -307,6 +318,6 @@ per-route form for a new agent.
307
318
  }
308
319
  ```
309
320
 
310
- **Steps:** provision an operator-owned loopback SearXNG instance with JSON responses enabled → keep strict `searxng` or choose `auto` for ChatGPT-subscription Codex then keyless fallback → keep render `never`, or install `agent-browser >=0.33.1` and opt into `auto` for SPA pages → `validate` → `start`.
311
- **Boundary:** local SearXNG is private infrastructure, not an offline index; it contacts public engines and WebFetch contacts result sites. `localhost` permits the companion but blocks public fetches.
312
- **Smoke:** ask for two query variants and one official-page fetch; require canonical ranked URLs, untrusted-content boundaries, bounded timing metadata without query/URL leakage, and no duplicate network work for an identical call in the run.
321
+ **Steps:** configure explicit local or hosted `ollama`, or provision an operator-owned loopback SearXNG instance with JSON responses enabled → keep a named backend strict or choose `auto` for explicitly configured Ollama, configured SearXNG, ChatGPT-subscription Codex, then keyless fallback → keep the default four-request run budget → keep config render `never`, or install `agent-browser >=0.33.1` and opt into config render `auto` for SPA pages; use per-call `WebFetch` `render: "always"` only when a known page must be browser-first → `validate` → `start`.
322
+ **Boundary:** local SearXNG and Ollama search are private infrastructure, not offline indexes; they contact public services and WebFetch contacts result sites. Hosted Ollama credentials are bound to the exact official origin. `localhost` permits a local companion but blocks public fetches. Rendering does not bypass authentication or access challenges.
323
+ **Smoke:** ask for one broad query and one official-page fetch; require canonical ranked URLs, request-budget metadata, untrusted-content boundaries, bounded timing metadata without query/URL leakage, and no duplicate network work for an identical call in the run. The researcher must not sleep or retry after a cooldown.
@@ -123,9 +123,10 @@ pnpm test
123
123
  | Webhook | `curl` the invocation path and inspect the response body/status. |
124
124
  | Cron | Run a one-off scheduled invocation or wait for one tick. |
125
125
  | Observability | Confirm a run writes a JSONL artifact with strings capped: non-numeric values under sensitive-looking object keys are redacted; numeric values under matched keys are retained; retained free text is scanned for a closed set of high-confidence credential shapes. If an `observability.exporters` Phoenix entry is set, confirm the trace appears in Phoenix. |
126
- | Memory recall tool | With any memory tier configured (`memory.recallTool.enabled` defaults on), ask the agent to recall an old note and confirm `MemoryRecall` appears separately from action-tool allowlists and returns it. |
127
- | Session tool history | Complete a managed tool call, start a later cold turn in the same logical conversation, and confirm its bounded path-opaque call/result projection is available. After compaction, use `SessionHistory.search` then `get`; verify another conversation and the current run remain unavailable. A crash-dangling call must recover once as `interrupted` without rerun, while a clean writer shutdown must not be reported as crash recovery. |
128
- | Web research | Run `mono-agent validate` and require the Web search & fetch section to prove configured loopback SearXNG plus `agent-browser >=0.33.1` when rendering is enabled. Then ask for two query variants and one official-page fetch; require canonical ranked URLs, untrusted-content boundaries, and bounded timing metadata without query/URL leakage. |
126
+ | Memory recall tool | With any memory backend configured (`memory.recallTool.enabled` defaults on), ask the agent for one targeted old fact and confirm `MemoryRecall` appears and returns it. Active-conversation-relative questions must remain in chat context, not durable search. |
127
+ | Memory journal tool | With a synthetic local Lite/Journal/BuJo store and policy allowing `MemoryJournal`, call an explicit date range and IANA zone over at least two pages. Verify instant/id order, stable cursor continuation, safe relative provenance, lifecycle state, audit/dropped exclusion, explicit completeness metadata, and no embedding/chat request. A complete empty range must be `noData`; backend failure must be `journal_unavailable`; Supermemory or disabled reads must advertise no endpoint. Prompt/description assertions prove routing contracts, not autonomous model choice. |
128
+ | Session tool history | Complete a managed tool call, start a later cold turn in the same logical conversation, and confirm its bounded path-opaque call/result projection is available. Force one accepted write past the 250 ms foreground ceiling in a throwaway store: its event must say `deferred` without the “not saved” warning, and run finalization must wait until `SessionHistory` can retrieve the committed row. After compaction, use `SessionHistory.search` then `get`; verify another conversation and the current run remain unavailable. A definitive writer rejection must still say `failed`; a crash-dangling call must recover once as `interrupted` without rerun, while a clean writer shutdown must not be reported as crash recovery. |
129
+ | Web research | Run `mono-agent validate` and require the Web search & fetch section to prove the explicitly selected Ollama or configured loopback SearXNG route plus `agent-browser >=0.33.1` when rendering is enabled. Then ask for two query variants and one official-page fetch; require canonical ranked URLs, untrusted-content boundaries, honest provider/render failures, and bounded timing metadata without query/URL/credential leakage. Rendering never proves access-challenge bypass. |
129
130
  | Semantic memory search | With `memory.embeddings` set, first prove the configured provider only: Ollama model advertises `embedding` through `/api/show` and answers `/api/embed`, or LM Studio model has exact `type: "embedding"` in `/api/v1/models` and answers `/v1/embeddings`. Verify the finite vector dimension matches config, then ask a paraphrased question about an old note and confirm `MemoryRecall` returns it. Never accept a cross-provider fallback as proof. |
130
131
 
131
132
  ## Failure Handling
@@ -1,15 +0,0 @@
1
- import type { EffortLevel } from "@mono-agent/config";
2
- export interface CodexCatalogModel {
3
- readonly id: string;
4
- readonly displayName: string;
5
- readonly supportedEfforts: readonly EffortLevel[];
6
- readonly defaultEffort?: EffortLevel;
7
- readonly isDefault?: boolean;
8
- }
9
- /** Exact non-secret environment used by live Codex model/list discovery. */
10
- export declare function codexModelDiscoveryEnvironment(persistedEnv?: Readonly<Record<string, string | undefined>>, shellEnv?: Readonly<Record<string, string | undefined>>): Record<string, string | undefined>;
11
- export declare function normalizeEffort(value: unknown): EffortLevel | undefined;
12
- export declare function normalizeEfforts(values: readonly unknown[]): EffortLevel[];
13
- export declare function normalizeCodexCatalog(rows: readonly unknown[]): CodexCatalogModel[];
14
- export declare function requestCodexModelList(timeoutMs: number, environment: Readonly<Record<string, string | undefined>>, abortSignal?: AbortSignal): Promise<CodexCatalogModel[]>;
15
- //# sourceMappingURL=codex-model-catalog.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex-model-catalog.d.ts","sourceRoot":"","sources":["../src/codex-model-catalog.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAItD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,SAAS,WAAW,EAAE,CAAC;IAClD,QAAQ,CAAC,aAAa,CAAC,EAAE,WAAW,CAAC;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAgDD,4EAA4E;AAC5E,wBAAgB,8BAA8B,CAC5C,YAAY,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAM,EAC/D,QAAQ,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAe,GACnE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAOpC;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,CAGvE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,GAAG,WAAW,EAAE,CAE1E;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,iBAAiB,EAAE,CAsBnF;AAED,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,EACzD,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAoH9B"}
@@ -1,220 +0,0 @@
1
- import { spawn } from "node:child_process";
2
- import { homedir } from "node:os";
3
- import { createInterface } from "node:readline";
4
- import { credentialNeutralProviderStatusEnvironment } from "./provider-setup.js";
5
- const SUPPORTED_EFFORTS = new Set([
6
- "none",
7
- "minimal",
8
- "low",
9
- "medium",
10
- "high",
11
- "xhigh",
12
- "max",
13
- "ultra",
14
- ]);
15
- function isRecord(value) {
16
- return typeof value === "object" && value !== null && !Array.isArray(value);
17
- }
18
- function boundedCatalogText(value, limit) {
19
- const normalized = typeof value === "string"
20
- ? value.replace(/[\u0000-\u001f\u007f]/gu, " ").replace(/\s+/gu, " ").trim()
21
- : "";
22
- return normalized.length <= limit ? normalized : `${normalized.slice(0, Math.max(0, limit - 1))}…`;
23
- }
24
- function safeDiscoveryProcessEnv(source = process.env) {
25
- const env = {};
26
- for (const key of [
27
- "PATH",
28
- "LANG",
29
- "LC_ALL",
30
- "LC_CTYPE",
31
- "SHELL",
32
- "TMPDIR",
33
- "TMP",
34
- "TEMP",
35
- "SystemRoot",
36
- "WINDIR",
37
- "ComSpec",
38
- "PATHEXT",
39
- ]) {
40
- const value = source[key];
41
- if (typeof value === "string" && value.length > 0)
42
- env[key] = value;
43
- }
44
- return env;
45
- }
46
- /** Exact non-secret environment used by live Codex model/list discovery. */
47
- export function codexModelDiscoveryEnvironment(persistedEnv = {}, shellEnv = process.env) {
48
- const neutral = credentialNeutralProviderStatusEnvironment(shellEnv, persistedEnv);
49
- return {
50
- ...safeDiscoveryProcessEnv(shellEnv),
51
- HOME: neutral.HOME ?? homedir(),
52
- ...(neutral.CODEX_HOME === undefined ? {} : { CODEX_HOME: neutral.CODEX_HOME }),
53
- };
54
- }
55
- export function normalizeEffort(value) {
56
- const normalized = value === "off" ? "none" : typeof value === "string" ? value : "";
57
- return SUPPORTED_EFFORTS.has(normalized) ? normalized : undefined;
58
- }
59
- export function normalizeEfforts(values) {
60
- return [...new Set(values.map(normalizeEffort).filter((value) => value !== undefined))];
61
- }
62
- export function normalizeCodexCatalog(rows) {
63
- const result = [];
64
- const seen = new Set();
65
- for (const raw of rows.slice(0, 1_000)) {
66
- if (!isRecord(raw))
67
- continue;
68
- const id = typeof raw.id === "string" ? raw.id.trim() : "";
69
- if (id.length === 0 || id.length > 160 || seen.has(id))
70
- continue;
71
- const supportedRows = Array.isArray(raw.supportedReasoningEfforts)
72
- ? raw.supportedReasoningEfforts.map((entry) => isRecord(entry) ? entry.reasoningEffort : entry)
73
- : [];
74
- const supportedEfforts = normalizeEfforts(supportedRows);
75
- const normalizedDefault = normalizeEffort(raw.defaultReasoningEffort);
76
- seen.add(id);
77
- result.push({
78
- id,
79
- displayName: boundedCatalogText(raw.displayName, 160) || id,
80
- supportedEfforts,
81
- ...(normalizedDefault === undefined ? {} : { defaultEffort: normalizedDefault }),
82
- ...(typeof raw.isDefault === "boolean" ? { isDefault: raw.isDefault } : {}),
83
- });
84
- }
85
- return result;
86
- }
87
- export async function requestCodexModelList(timeoutMs, environment, abortSignal) {
88
- const child = spawn("codex", ["app-server", "--listen", "stdio://", "-c", "project_doc_max_bytes=0"], {
89
- stdio: ["pipe", "pipe", "ignore"],
90
- env: { ...environment },
91
- });
92
- const lines = createInterface({ input: child.stdout });
93
- return await new Promise((resolveResult, rejectResult) => {
94
- let settled = false;
95
- let timer;
96
- const ignoreStdinError = () => undefined;
97
- child.stdin.on("error", ignoreStdinError);
98
- const childClosedWithin = async (milliseconds) => {
99
- if (child.exitCode !== null || child.signalCode !== null)
100
- return true;
101
- return await new Promise((resolveClosed) => {
102
- const onClose = () => {
103
- clearTimeout(closeTimer);
104
- resolveClosed(true);
105
- };
106
- const closeTimer = setTimeout(() => {
107
- child.off("close", onClose);
108
- resolveClosed(false);
109
- }, milliseconds);
110
- closeTimer.unref?.();
111
- child.once("close", onClose);
112
- });
113
- };
114
- const stopChild = async () => {
115
- lines.removeAllListeners("line");
116
- lines.close();
117
- try {
118
- child.stdin.end();
119
- }
120
- catch { /* best effort */ }
121
- if (await childClosedWithin(25))
122
- return;
123
- try {
124
- child.kill("SIGTERM");
125
- }
126
- catch { /* best effort */ }
127
- if (await childClosedWithin(250))
128
- return;
129
- try {
130
- child.kill("SIGKILL");
131
- }
132
- catch { /* best effort */ }
133
- if (!await childClosedWithin(250)) {
134
- child.stdin.destroy();
135
- child.stdout.destroy();
136
- child.unref();
137
- }
138
- };
139
- let settle;
140
- const onChildError = () => void settle(new Error("Codex app-server is unavailable."));
141
- const onChildClose = () => void settle(new Error("Codex app-server closed before returning models."));
142
- const onAbort = () => {
143
- const error = new Error("Codex model catalog discovery was interrupted.");
144
- error.name = "AbortError";
145
- void settle(error);
146
- };
147
- settle = async (error, models = []) => {
148
- if (settled)
149
- return;
150
- settled = true;
151
- clearTimeout(timer);
152
- child.off("error", onChildError);
153
- child.off("close", onChildClose);
154
- abortSignal?.removeEventListener("abort", onAbort);
155
- await stopChild();
156
- child.stdin.off("error", ignoreStdinError);
157
- if (error === undefined)
158
- resolveResult(models);
159
- else
160
- rejectResult(error);
161
- };
162
- const writeMessage = (message) => {
163
- if (settled || child.stdin.destroyed || child.stdin.writableEnded)
164
- return;
165
- try {
166
- child.stdin.write(`${JSON.stringify(message)}\n`);
167
- }
168
- catch { /* bounded shutdown handles the process */ }
169
- };
170
- timer = setTimeout(() => void settle(new Error("Codex model catalog discovery timed out.")), Math.max(250, Math.min(10_000, timeoutMs)));
171
- timer.unref?.();
172
- child.once("error", onChildError);
173
- child.once("close", onChildClose);
174
- abortSignal?.addEventListener("abort", onAbort, { once: true });
175
- lines.on("line", (line) => {
176
- let message;
177
- try {
178
- message = JSON.parse(line);
179
- }
180
- catch {
181
- return;
182
- }
183
- if (!isRecord(message))
184
- return;
185
- if (typeof message.method === "string" && (typeof message.id === "string" || typeof message.id === "number")) {
186
- writeMessage({
187
- id: message.id,
188
- error: { code: -32601, message: "Model catalog discovery does not support server requests." },
189
- });
190
- return;
191
- }
192
- if (message.id === 1 && isRecord(message.result)) {
193
- writeMessage({
194
- id: 2,
195
- method: "model/list",
196
- params: { includeHidden: false, limit: 1_000 },
197
- });
198
- return;
199
- }
200
- if (message.id !== 2)
201
- return;
202
- if (!isRecord(message.result) || !Array.isArray(message.result.data)) {
203
- void settle(new Error("Codex app-server returned an invalid model catalog."));
204
- return;
205
- }
206
- void settle(undefined, normalizeCodexCatalog(message.result.data));
207
- });
208
- writeMessage({
209
- id: 1,
210
- method: "initialize",
211
- params: {
212
- clientInfo: { name: "mono-agent", title: "mono-agent", version: "0" },
213
- capabilities: { experimentalApi: true },
214
- },
215
- });
216
- if (abortSignal?.aborted === true)
217
- onAbort();
218
- });
219
- }
220
- //# sourceMappingURL=codex-model-catalog.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex-model-catalog.js","sourceRoot":"","sources":["../src/codex-model-catalog.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=configuration-proposal-main.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"configuration-proposal-main.d.ts","sourceRoot":"","sources":["../src/configuration-proposal-main.ts"],"names":[],"mappings":""}
@@ -1,13 +0,0 @@
1
- #!/usr/bin/env node
2
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
- import { configurationProposalChildSettingsFromEnv, createConfigurationProposalServer, } from "./configuration-proposal-tool.js";
4
- async function main() {
5
- const settings = configurationProposalChildSettingsFromEnv(process.env);
6
- const server = createConfigurationProposalServer(settings);
7
- await server.connect(new StdioServerTransport());
8
- }
9
- main().catch((error) => {
10
- process.stderr.write(`mono-agent-configuration-proposal: fatal: ${error instanceof Error ? error.message : String(error)}\n`);
11
- process.exitCode = 1;
12
- });
13
- //# sourceMappingURL=configuration-proposal-main.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"configuration-proposal-main.js","sourceRoot":"","sources":["../src/configuration-proposal-main.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EACL,yCAAyC,EACzC,iCAAiC,GAClC,MAAM,kCAAkC,CAAC;AAE1C,KAAK,UAAU,IAAI;IACjB,MAAM,QAAQ,GAAG,yCAAyC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,iCAAiC,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9H,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}