@mono-agent/agent-app 0.19.1 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +304 -32
- package/dist/acp-bridge.d.ts.map +1 -1
- package/dist/acp-bridge.js +113 -54
- package/dist/acp-bridge.js.map +1 -1
- package/dist/acp-session-store.d.ts +12 -0
- package/dist/acp-session-store.d.ts.map +1 -0
- package/dist/acp-session-store.js +74 -0
- package/dist/acp-session-store.js.map +1 -0
- package/dist/agent-artifact-paths.d.ts +8 -0
- package/dist/agent-artifact-paths.d.ts.map +1 -0
- package/dist/agent-artifact-paths.js +11 -0
- package/dist/agent-artifact-paths.js.map +1 -0
- package/dist/agent-root-coordinator.d.ts +101 -0
- package/dist/agent-root-coordinator.d.ts.map +1 -0
- package/dist/agent-root-coordinator.js +470 -0
- package/dist/agent-root-coordinator.js.map +1 -0
- package/dist/app-controller-channels.d.ts +11 -1
- package/dist/app-controller-channels.d.ts.map +1 -1
- package/dist/app-controller-channels.js +145 -20
- package/dist/app-controller-channels.js.map +1 -1
- package/dist/app-controller-continuation.d.ts +2 -0
- package/dist/app-controller-continuation.d.ts.map +1 -1
- package/dist/app-controller-continuation.js.map +1 -1
- package/dist/app-controller-lifecycle.d.ts +5 -0
- package/dist/app-controller-lifecycle.d.ts.map +1 -1
- package/dist/app-controller-lifecycle.js +24 -5
- package/dist/app-controller-lifecycle.js.map +1 -1
- package/dist/app-controller-maintenance.d.ts +2 -0
- package/dist/app-controller-maintenance.d.ts.map +1 -1
- package/dist/app-controller-maintenance.js +32 -2
- package/dist/app-controller-maintenance.js.map +1 -1
- package/dist/app-controller-process-jobs.d.ts +46 -0
- package/dist/app-controller-process-jobs.d.ts.map +1 -0
- package/dist/app-controller-process-jobs.js +281 -0
- package/dist/app-controller-process-jobs.js.map +1 -0
- package/dist/app-controller-responder.d.ts +15 -0
- package/dist/app-controller-responder.d.ts.map +1 -1
- package/dist/app-controller-responder.js +146 -12
- package/dist/app-controller-responder.js.map +1 -1
- package/dist/app-controller-traceability.d.ts +6 -0
- package/dist/app-controller-traceability.d.ts.map +1 -1
- package/dist/app-controller-traceability.js +10 -0
- package/dist/app-controller-traceability.js.map +1 -1
- package/dist/app-controller-utils.d.ts +8 -0
- package/dist/app-controller-utils.d.ts.map +1 -1
- package/dist/app-controller-utils.js +24 -1
- package/dist/app-controller-utils.js.map +1 -1
- package/dist/app-controller.d.ts +40 -1
- package/dist/app-controller.d.ts.map +1 -1
- package/dist/app-controller.js +124 -39
- package/dist/app-controller.js.map +1 -1
- package/dist/background-log-maintenance.d.ts +85 -2
- package/dist/background-log-maintenance.d.ts.map +1 -1
- package/dist/background-log-maintenance.js +407 -136
- package/dist/background-log-maintenance.js.map +1 -1
- package/dist/background-runtime.d.ts.map +1 -1
- package/dist/background-runtime.js +22 -41
- package/dist/background-runtime.js.map +1 -1
- package/dist/background.d.ts +18 -26
- package/dist/background.d.ts.map +1 -1
- package/dist/background.js +83 -138
- package/dist/background.js.map +1 -1
- package/dist/channel-drivers/cron.d.ts +12 -1
- package/dist/channel-drivers/cron.d.ts.map +1 -1
- package/dist/channel-drivers/cron.js +121 -18
- package/dist/channel-drivers/cron.js.map +1 -1
- package/dist/channel-drivers/native-notify.d.ts +3 -0
- package/dist/channel-drivers/native-notify.d.ts.map +1 -1
- package/dist/channel-drivers/native-notify.js +2 -1
- package/dist/channel-drivers/native-notify.js.map +1 -1
- package/dist/channel-drivers/slack.d.ts.map +1 -1
- package/dist/channel-drivers/slack.js +41 -4
- package/dist/channel-drivers/slack.js.map +1 -1
- package/dist/channel-drivers/telegram.d.ts.map +1 -1
- package/dist/channel-drivers/telegram.js +46 -3
- package/dist/channel-drivers/telegram.js.map +1 -1
- package/dist/channel-drivers/tui.d.ts +13 -2
- package/dist/channel-drivers/tui.d.ts.map +1 -1
- package/dist/channel-drivers/tui.js +112 -3
- package/dist/channel-drivers/tui.js.map +1 -1
- package/dist/channels.d.ts +1 -1
- package/dist/channels.d.ts.map +1 -1
- package/dist/channels.js +4 -2
- package/dist/channels.js.map +1 -1
- package/dist/cli-args.d.ts +15 -1
- package/dist/cli-args.d.ts.map +1 -1
- package/dist/cli-args.js +82 -12
- package/dist/cli-args.js.map +1 -1
- package/dist/cli-background-command.d.ts +9 -2
- package/dist/cli-background-command.d.ts.map +1 -1
- package/dist/cli-background-command.js +174 -66
- package/dist/cli-background-command.js.map +1 -1
- package/dist/cli-commands.d.ts.map +1 -1
- package/dist/cli-commands.js +50 -12
- package/dist/cli-commands.js.map +1 -1
- package/dist/cli-help.d.ts.map +1 -1
- package/dist/cli-help.js +21 -1
- package/dist/cli-help.js.map +1 -1
- package/dist/config-reference.d.ts.map +1 -1
- package/dist/config-reference.js +99 -2
- package/dist/config-reference.js.map +1 -1
- package/dist/configured-agent.d.ts +44 -3
- package/dist/configured-agent.d.ts.map +1 -1
- package/dist/configured-agent.js +805 -156
- package/dist/configured-agent.js.map +1 -1
- package/dist/conversation-state-roots.d.ts +59 -0
- package/dist/conversation-state-roots.d.ts.map +1 -0
- package/dist/conversation-state-roots.js +248 -0
- package/dist/conversation-state-roots.js.map +1 -0
- package/dist/cron-control-store.d.ts +91 -0
- package/dist/cron-control-store.d.ts.map +1 -0
- package/dist/cron-control-store.js +1251 -0
- package/dist/cron-control-store.js.map +1 -0
- package/dist/cron-operator-service.d.ts +54 -0
- package/dist/cron-operator-service.d.ts.map +1 -0
- package/dist/cron-operator-service.js +352 -0
- package/dist/cron-operator-service.js.map +1 -0
- package/dist/doctor-session-history.d.ts +9 -0
- package/dist/doctor-session-history.d.ts.map +1 -0
- package/dist/doctor-session-history.js +313 -0
- package/dist/doctor-session-history.js.map +1 -0
- package/dist/doctor.d.ts +2 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +320 -9
- package/dist/doctor.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/interaction-bridge.d.ts +1 -0
- package/dist/interaction-bridge.d.ts.map +1 -1
- package/dist/interaction-bridge.js +54 -6
- package/dist/interaction-bridge.js.map +1 -1
- package/dist/jobs-command.d.ts +17 -0
- package/dist/jobs-command.d.ts.map +1 -0
- package/dist/jobs-command.js +207 -0
- package/dist/jobs-command.js.map +1 -0
- package/dist/launchd-lifecycle-lock.d.ts +36 -0
- package/dist/launchd-lifecycle-lock.d.ts.map +1 -0
- package/dist/launchd-lifecycle-lock.js +124 -0
- package/dist/launchd-lifecycle-lock.js.map +1 -0
- package/dist/launchd-log-monitor-status.d.ts +7 -0
- package/dist/launchd-log-monitor-status.d.ts.map +1 -0
- package/dist/launchd-log-monitor-status.js +224 -0
- package/dist/launchd-log-monitor-status.js.map +1 -0
- package/dist/launchd-logs.d.ts +9 -1
- package/dist/launchd-logs.d.ts.map +1 -1
- package/dist/launchd-logs.js +69 -16
- package/dist/launchd-logs.js.map +1 -1
- package/dist/launchd-maintenance-command.d.ts +10 -0
- package/dist/launchd-maintenance-command.d.ts.map +1 -0
- package/dist/launchd-maintenance-command.js +2 -0
- package/dist/launchd-maintenance-command.js.map +1 -0
- package/dist/launchd-maintenance-entry.d.ts +30 -0
- package/dist/launchd-maintenance-entry.d.ts.map +1 -0
- package/dist/launchd-maintenance-entry.js +206 -0
- package/dist/launchd-maintenance-entry.js.map +1 -0
- package/dist/launchd-maintenance-gate.d.ts +28 -0
- package/dist/launchd-maintenance-gate.d.ts.map +1 -0
- package/dist/launchd-maintenance-gate.js +80 -0
- package/dist/launchd-maintenance-gate.js.map +1 -0
- package/dist/launchd-private-files.d.ts +3 -0
- package/dist/launchd-private-files.d.ts.map +1 -0
- package/dist/launchd-private-files.js +58 -0
- package/dist/launchd-private-files.js.map +1 -0
- package/dist/launchd.d.ts +56 -2
- package/dist/launchd.d.ts.map +1 -1
- package/dist/launchd.js +210 -5
- package/dist/launchd.js.map +1 -1
- package/dist/local-configuration.d.ts.map +1 -1
- package/dist/local-configuration.js +33 -7
- package/dist/local-configuration.js.map +1 -1
- package/dist/managed-launchd-maintenance-environment.d.ts +3 -0
- package/dist/managed-launchd-maintenance-environment.d.ts.map +1 -0
- package/dist/managed-launchd-maintenance-environment.js +12 -0
- package/dist/managed-launchd-maintenance-environment.js.map +1 -0
- package/dist/managed-runtime-launch-proof.d.ts +11 -0
- package/dist/managed-runtime-launch-proof.d.ts.map +1 -0
- package/dist/managed-runtime-launch-proof.js +59 -0
- package/dist/managed-runtime-launch-proof.js.map +1 -0
- package/dist/managed-runtime-maintenance-entry.d.ts +10 -0
- package/dist/managed-runtime-maintenance-entry.d.ts.map +1 -0
- package/dist/managed-runtime-maintenance-entry.js +244 -0
- package/dist/managed-runtime-maintenance-entry.js.map +1 -0
- package/dist/managed-web-logs.d.ts +29 -11
- package/dist/managed-web-logs.d.ts.map +1 -1
- package/dist/managed-web-logs.js +244 -121
- package/dist/managed-web-logs.js.map +1 -1
- package/dist/managed-web-maintenance-environment.d.ts +6 -0
- package/dist/managed-web-maintenance-environment.d.ts.map +1 -0
- package/dist/managed-web-maintenance-environment.js +19 -0
- package/dist/managed-web-maintenance-environment.js.map +1 -0
- package/dist/mcp-apps.d.ts +37 -0
- package/dist/mcp-apps.d.ts.map +1 -0
- package/dist/mcp-apps.js +1753 -0
- package/dist/mcp-apps.js.map +1 -0
- package/dist/memory-command.d.ts +12 -0
- package/dist/memory-command.d.ts.map +1 -1
- package/dist/memory-command.js +510 -1
- package/dist/memory-command.js.map +1 -1
- package/dist/modules/known-tools.d.ts +1 -1
- package/dist/modules/known-tools.d.ts.map +1 -1
- package/dist/modules/known-tools.js +2 -0
- package/dist/modules/known-tools.js.map +1 -1
- package/dist/posted-reply-history.d.ts.map +1 -1
- package/dist/posted-reply-history.js +12 -0
- package/dist/posted-reply-history.js.map +1 -1
- package/dist/proactive-notify.d.ts +4 -1
- package/dist/proactive-notify.d.ts.map +1 -1
- package/dist/proactive-notify.js +43 -5
- package/dist/proactive-notify.js.map +1 -1
- package/dist/process-jobs-config.d.ts +82 -0
- package/dist/process-jobs-config.d.ts.map +1 -0
- package/dist/process-jobs-config.js +423 -0
- package/dist/process-jobs-config.js.map +1 -0
- package/dist/process-jobs-context.d.ts +24 -0
- package/dist/process-jobs-context.d.ts.map +1 -0
- package/dist/process-jobs-context.js +135 -0
- package/dist/process-jobs-context.js.map +1 -0
- package/dist/process-jobs-root-registry.d.ts +115 -0
- package/dist/process-jobs-root-registry.d.ts.map +1 -0
- package/dist/process-jobs-root-registry.js +978 -0
- package/dist/process-jobs-root-registry.js.map +1 -0
- package/dist/process-jobs-runtime.d.ts +35 -0
- package/dist/process-jobs-runtime.d.ts.map +1 -0
- package/dist/process-jobs-runtime.js +177 -0
- package/dist/process-jobs-runtime.js.map +1 -0
- package/dist/process-jobs-service.d.ts +70 -0
- package/dist/process-jobs-service.d.ts.map +1 -0
- package/dist/process-jobs-service.js +1989 -0
- package/dist/process-jobs-service.js.map +1 -0
- package/dist/process-jobs-store.d.ts +151 -0
- package/dist/process-jobs-store.d.ts.map +1 -0
- package/dist/process-jobs-store.js +1290 -0
- package/dist/process-jobs-store.js.map +1 -0
- package/dist/reply-artifacts.d.ts +65 -0
- package/dist/reply-artifacts.d.ts.map +1 -0
- package/dist/reply-artifacts.js +1147 -0
- package/dist/reply-artifacts.js.map +1 -0
- package/dist/reply-part-budget.d.ts +16 -0
- package/dist/reply-part-budget.d.ts.map +1 -0
- package/dist/reply-part-budget.js +57 -0
- package/dist/reply-part-budget.js.map +1 -0
- package/dist/request-model-override.d.ts +19 -0
- package/dist/request-model-override.d.ts.map +1 -1
- package/dist/request-model-override.js +54 -1
- package/dist/request-model-override.js.map +1 -1
- package/dist/request-scoped-mcp.d.ts +31 -0
- package/dist/request-scoped-mcp.d.ts.map +1 -0
- package/dist/request-scoped-mcp.js +197 -0
- package/dist/request-scoped-mcp.js.map +1 -0
- package/dist/run-history.d.ts.map +1 -1
- package/dist/run-history.js +50 -254
- package/dist/run-history.js.map +1 -1
- package/dist/runtime-option-extensions.d.ts +21 -0
- package/dist/runtime-option-extensions.d.ts.map +1 -1
- package/dist/runtime-option-extensions.js +53 -0
- package/dist/runtime-option-extensions.js.map +1 -1
- package/dist/secure-file-replace.d.ts +3 -0
- package/dist/secure-file-replace.d.ts.map +1 -1
- package/dist/secure-file-replace.js +31 -7
- package/dist/secure-file-replace.js.map +1 -1
- package/dist/session-history.d.ts +146 -0
- package/dist/session-history.d.ts.map +1 -0
- package/dist/session-history.js +347 -0
- package/dist/session-history.js.map +1 -0
- package/dist/sessions.d.ts +45 -2
- package/dist/sessions.d.ts.map +1 -1
- package/dist/sessions.js +849 -30
- package/dist/sessions.js.map +1 -1
- package/dist/web-command.d.ts +12 -11
- package/dist/web-command.d.ts.map +1 -1
- package/dist/web-command.js +554 -80
- package/dist/web-command.js.map +1 -1
- package/dist/web-log-maintenance-command.d.ts +7 -0
- package/dist/web-log-maintenance-command.d.ts.map +1 -0
- package/dist/web-log-maintenance-command.js +21 -0
- package/dist/web-log-maintenance-command.js.map +1 -0
- package/dist/web-log-maintenance-status.d.ts +26 -0
- package/dist/web-log-maintenance-status.d.ts.map +1 -0
- package/dist/web-log-maintenance-status.js +171 -0
- package/dist/web-log-maintenance-status.js.map +1 -0
- package/dist/web-log-maintenance.d.ts +32 -0
- package/dist/web-log-maintenance.d.ts.map +1 -0
- package/dist/web-log-maintenance.js +163 -0
- package/dist/web-log-maintenance.js.map +1 -0
- package/dist/web-maintenance-paths.d.ts +12 -0
- package/dist/web-maintenance-paths.d.ts.map +1 -0
- package/dist/web-maintenance-paths.js +24 -0
- package/dist/web-maintenance-paths.js.map +1 -0
- package/dist/wizard/prompts.d.ts.map +1 -1
- package/dist/wizard/prompts.js +1 -0
- package/dist/wizard/prompts.js.map +1 -1
- package/dist/wizard/run.js +1 -1
- package/dist/wizard/run.js.map +1 -1
- package/package.json +15 -15
- package/schema/mono-agent.config.schema.json +102 -1
- package/skills/mono-agent-composer/references/config-blueprint.md +26 -2
- package/skills/mono-agent-composer/references/discovery-questions.md +2 -2
- package/skills/mono-agent-composer/references/feature-coverage.md +6 -4
- package/skills/mono-agent-composer/references/package-map.md +19 -3
- package/skills/mono-agent-composer/references/playbooks.md +3 -3
- 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
|
-
-
|
|
48
|
-
|
|
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;
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
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.
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
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.
|
|
284
|
-
|
|
285
|
-
|
|
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
|
|
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
|
|
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.
|
|
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,
|
|
386
|
-
|
|
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
|
-
|
|
500
|
-
|
|
501
|
-
|
|
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` |
|
|
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
|
-
|
|
|
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
|
package/dist/acp-bridge.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acp-bridge.d.ts","sourceRoot":"","sources":["../src/acp-bridge.ts"],"names":[],"mappings":"
|
|
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"}
|