@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.
- package/README.md +260 -98
- package/dist/adapter-send-tools.d.ts +3 -2
- package/dist/adapter-send-tools.d.ts.map +1 -1
- package/dist/adapter-send-tools.js +15 -5
- package/dist/adapter-send-tools.js.map +1 -1
- package/dist/app-controller-channels.d.ts +6 -0
- package/dist/app-controller-channels.d.ts.map +1 -1
- package/dist/app-controller-channels.js +29 -2
- package/dist/app-controller-channels.js.map +1 -1
- package/dist/app-controller-continuation.d.ts.map +1 -1
- package/dist/app-controller-continuation.js +2 -3
- package/dist/app-controller-continuation.js.map +1 -1
- package/dist/app-controller-lifecycle.d.ts +4 -0
- package/dist/app-controller-lifecycle.d.ts.map +1 -1
- package/dist/app-controller-lifecycle.js +7 -0
- package/dist/app-controller-lifecycle.js.map +1 -1
- package/dist/app-controller-maintenance.d.ts +3 -1
- package/dist/app-controller-maintenance.d.ts.map +1 -1
- package/dist/app-controller-maintenance.js +3 -0
- package/dist/app-controller-maintenance.js.map +1 -1
- package/dist/app-controller-monitors.d.ts +26 -0
- package/dist/app-controller-monitors.d.ts.map +1 -0
- package/dist/app-controller-monitors.js +127 -0
- package/dist/app-controller-monitors.js.map +1 -0
- package/dist/app-controller-responder.d.ts +9 -17
- package/dist/app-controller-responder.d.ts.map +1 -1
- package/dist/app-controller-responder.js +54 -86
- package/dist/app-controller-responder.js.map +1 -1
- package/dist/app-controller-traceability.d.ts.map +1 -1
- package/dist/app-controller-traceability.js +3 -0
- package/dist/app-controller-traceability.js.map +1 -1
- package/dist/app-controller-types.d.ts +1 -0
- package/dist/app-controller-types.d.ts.map +1 -1
- package/dist/app-controller-utils.d.ts +1 -5
- package/dist/app-controller-utils.d.ts.map +1 -1
- package/dist/app-controller-utils.js +4 -21
- package/dist/app-controller-utils.js.map +1 -1
- package/dist/app-controller.d.ts +26 -10
- package/dist/app-controller.d.ts.map +1 -1
- package/dist/app-controller.js +39 -1
- package/dist/app-controller.js.map +1 -1
- package/dist/artifact-retention.js +11 -0
- package/dist/artifact-retention.js.map +1 -1
- package/dist/background.d.ts +0 -6
- package/dist/background.d.ts.map +1 -1
- package/dist/background.js +5 -58
- package/dist/background.js.map +1 -1
- package/dist/channel-drivers/slack.d.ts.map +1 -1
- package/dist/channel-drivers/slack.js +18 -0
- 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 +26 -0
- package/dist/channel-drivers/telegram.js.map +1 -1
- package/dist/channel-drivers/tui.d.ts +68 -8
- package/dist/channel-drivers/tui.d.ts.map +1 -1
- package/dist/channel-drivers/tui.js +407 -89
- package/dist/channel-drivers/tui.js.map +1 -1
- package/dist/channel-runtime-controls.d.ts +2 -1
- package/dist/channel-runtime-controls.d.ts.map +1 -1
- package/dist/channel-runtime-controls.js +79 -22
- package/dist/channel-runtime-controls.js.map +1 -1
- package/dist/cli-args.d.ts +5 -8
- package/dist/cli-args.d.ts.map +1 -1
- package/dist/cli-args.js +33 -52
- package/dist/cli-args.js.map +1 -1
- package/dist/cli-background-command.d.ts.map +1 -1
- package/dist/cli-background-command.js +4 -0
- package/dist/cli-background-command.js.map +1 -1
- package/dist/cli-commands.d.ts.map +1 -1
- package/dist/cli-commands.js +24 -2
- package/dist/cli-commands.js.map +1 -1
- package/dist/cli-help.d.ts +26 -0
- package/dist/cli-help.d.ts.map +1 -1
- package/dist/cli-help.js +58 -53
- package/dist/cli-help.js.map +1 -1
- package/dist/cli-init-command.d.ts +1 -2
- package/dist/cli-init-command.d.ts.map +1 -1
- package/dist/cli-init-command.js +31 -71
- package/dist/cli-init-command.js.map +1 -1
- package/dist/cli-install-skill-command.d.ts.map +1 -1
- package/dist/cli-install-skill-command.js +12 -3
- package/dist/cli-install-skill-command.js.map +1 -1
- package/dist/config-reference.d.ts +1 -0
- package/dist/config-reference.d.ts.map +1 -1
- package/dist/config-reference.js +217 -60
- package/dist/config-reference.js.map +1 -1
- package/dist/configured-agent.d.ts +27 -4
- package/dist/configured-agent.d.ts.map +1 -1
- package/dist/configured-agent.js +159 -112
- package/dist/configured-agent.js.map +1 -1
- package/dist/conversation-title.d.ts.map +1 -1
- package/dist/conversation-title.js +9 -2
- package/dist/conversation-title.js.map +1 -1
- package/dist/cron-control-store.d.ts.map +1 -1
- package/dist/cron-control-store.js +4 -2
- package/dist/cron-control-store.js.map +1 -1
- package/dist/doctor.d.ts +7 -13
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +406 -770
- package/dist/doctor.js.map +1 -1
- package/dist/first-run-readiness.d.ts.map +1 -1
- package/dist/first-run-readiness.js +0 -6
- package/dist/first-run-readiness.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/interaction-bridge.d.ts +3 -3
- package/dist/interaction-bridge.d.ts.map +1 -1
- package/dist/interaction-bridge.js +27 -10
- package/dist/interaction-bridge.js.map +1 -1
- package/dist/launchd.d.ts +2 -0
- package/dist/launchd.d.ts.map +1 -1
- package/dist/launchd.js +3 -0
- package/dist/launchd.js.map +1 -1
- package/dist/local-tui-session.d.ts +14 -0
- package/dist/local-tui-session.d.ts.map +1 -0
- package/dist/local-tui-session.js +100 -0
- package/dist/local-tui-session.js.map +1 -0
- package/dist/mcp-apps.d.ts.map +1 -1
- package/dist/mcp-apps.js +3 -0
- package/dist/mcp-apps.js.map +1 -1
- package/dist/memory-journal.d.ts +53 -0
- package/dist/memory-journal.d.ts.map +1 -0
- package/dist/memory-journal.js +586 -0
- package/dist/memory-journal.js.map +1 -0
- package/dist/memory-recall.d.ts.map +1 -1
- package/dist/memory-recall.js +16 -2
- package/dist/memory-recall.js.map +1 -1
- package/dist/memory-remember.d.ts +49 -0
- package/dist/memory-remember.d.ts.map +1 -0
- package/dist/memory-remember.js +190 -0
- package/dist/memory-remember.js.map +1 -0
- package/dist/memory-retrieval.d.ts +33 -0
- package/dist/memory-retrieval.d.ts.map +1 -1
- package/dist/memory-retrieval.js +43 -0
- package/dist/memory-retrieval.js.map +1 -1
- package/dist/model-effort-capabilities.d.ts +8 -9
- package/dist/model-effort-capabilities.d.ts.map +1 -1
- package/dist/model-effort-capabilities.js +17 -35
- package/dist/model-effort-capabilities.js.map +1 -1
- package/dist/modules/base.d.ts +3 -4
- package/dist/modules/base.d.ts.map +1 -1
- package/dist/modules/base.js +4 -6
- package/dist/modules/base.js.map +1 -1
- package/dist/modules/catalog.d.ts.map +1 -1
- package/dist/modules/catalog.js +11 -9
- package/dist/modules/catalog.js.map +1 -1
- package/dist/modules/known-tools.d.ts +2 -2
- package/dist/modules/known-tools.d.ts.map +1 -1
- package/dist/modules/known-tools.js +7 -0
- package/dist/modules/known-tools.js.map +1 -1
- package/dist/monitor-channel-routing.d.ts +20 -0
- package/dist/monitor-channel-routing.d.ts.map +1 -0
- package/dist/monitor-channel-routing.js +73 -0
- package/dist/monitor-channel-routing.js.map +1 -0
- package/dist/monitors-command.d.ts +23 -0
- package/dist/monitors-command.d.ts.map +1 -0
- package/dist/monitors-command.js +217 -0
- package/dist/monitors-command.js.map +1 -0
- package/dist/monitors-config.d.ts +77 -0
- package/dist/monitors-config.d.ts.map +1 -0
- package/dist/monitors-config.js +150 -0
- package/dist/monitors-config.js.map +1 -0
- package/dist/monitors-context.d.ts +58 -0
- package/dist/monitors-context.d.ts.map +1 -0
- package/dist/monitors-context.js +194 -0
- package/dist/monitors-context.js.map +1 -0
- package/dist/monitors-runtime.d.ts +36 -0
- package/dist/monitors-runtime.d.ts.map +1 -0
- package/dist/monitors-runtime.js +103 -0
- package/dist/monitors-runtime.js.map +1 -0
- package/dist/monitors-service.d.ts +71 -0
- package/dist/monitors-service.d.ts.map +1 -0
- package/dist/monitors-service.js +1796 -0
- package/dist/monitors-service.js.map +1 -0
- package/dist/monitors-store.d.ts +93 -0
- package/dist/monitors-store.d.ts.map +1 -0
- package/dist/monitors-store.js +313 -0
- package/dist/monitors-store.js.map +1 -0
- package/dist/notify-destinations.d.ts +3 -2
- package/dist/notify-destinations.d.ts.map +1 -1
- package/dist/notify-destinations.js +6 -7
- package/dist/notify-destinations.js.map +1 -1
- package/dist/posted-reply-history.d.ts.map +1 -1
- package/dist/posted-reply-history.js +40 -3
- package/dist/posted-reply-history.js.map +1 -1
- package/dist/proactive-notify.d.ts +20 -1
- package/dist/proactive-notify.d.ts.map +1 -1
- package/dist/proactive-notify.js +56 -3
- package/dist/proactive-notify.js.map +1 -1
- package/dist/process-job-channel-routing.js +2 -1
- package/dist/process-job-channel-routing.js.map +1 -1
- package/dist/process-job-output-tail.d.ts +53 -0
- package/dist/process-job-output-tail.d.ts.map +1 -0
- package/dist/process-job-output-tail.js +257 -0
- package/dist/process-job-output-tail.js.map +1 -0
- package/dist/process-jobs-config.d.ts +1 -1
- package/dist/process-jobs-config.js +1 -1
- package/dist/process-jobs-config.js.map +1 -1
- package/dist/process-jobs-context.d.ts +11 -1
- package/dist/process-jobs-context.d.ts.map +1 -1
- package/dist/process-jobs-context.js +55 -11
- package/dist/process-jobs-context.js.map +1 -1
- package/dist/process-jobs-protection.js +1 -1
- package/dist/process-jobs-protection.js.map +1 -1
- package/dist/process-jobs-runtime.d.ts.map +1 -1
- package/dist/process-jobs-runtime.js +15 -12
- package/dist/process-jobs-runtime.js.map +1 -1
- package/dist/process-jobs-service.d.ts.map +1 -1
- package/dist/process-jobs-service.js +118 -172
- package/dist/process-jobs-service.js.map +1 -1
- package/dist/process-jobs-store.d.ts +3 -1
- package/dist/process-jobs-store.d.ts.map +1 -1
- package/dist/process-jobs-store.js +4 -1
- package/dist/process-jobs-store.js.map +1 -1
- package/dist/process-output-redaction.d.ts +58 -0
- package/dist/process-output-redaction.d.ts.map +1 -0
- package/dist/process-output-redaction.js +311 -0
- package/dist/process-output-redaction.js.map +1 -0
- package/dist/project-skills.d.ts +11 -5
- package/dist/project-skills.d.ts.map +1 -1
- package/dist/project-skills.js +88 -39
- package/dist/project-skills.js.map +1 -1
- package/dist/provider-auth-checks.d.ts +27 -0
- package/dist/provider-auth-checks.d.ts.map +1 -0
- package/dist/provider-auth-checks.js +349 -0
- package/dist/provider-auth-checks.js.map +1 -0
- package/dist/provider-auth-observations.d.ts +22 -0
- package/dist/provider-auth-observations.d.ts.map +1 -0
- package/dist/provider-auth-observations.js +139 -0
- package/dist/provider-auth-observations.js.map +1 -0
- package/dist/provider-auth-operator.d.ts +19 -0
- package/dist/provider-auth-operator.d.ts.map +1 -0
- package/dist/provider-auth-operator.js +560 -0
- package/dist/provider-auth-operator.js.map +1 -0
- package/dist/provider-auth-status.d.ts +20 -0
- package/dist/provider-auth-status.d.ts.map +1 -0
- package/dist/provider-auth-status.js +235 -0
- package/dist/provider-auth-status.js.map +1 -0
- package/dist/provider-model-catalog.d.ts +95 -0
- package/dist/provider-model-catalog.d.ts.map +1 -0
- package/dist/provider-model-catalog.js +550 -0
- package/dist/provider-model-catalog.js.map +1 -0
- package/dist/provider-setup.d.ts +26 -13
- package/dist/provider-setup.d.ts.map +1 -1
- package/dist/provider-setup.js +106 -130
- package/dist/provider-setup.js.map +1 -1
- package/dist/readiness-probe-worker.d.ts +1 -2
- package/dist/readiness-probe-worker.d.ts.map +1 -1
- package/dist/readiness-probe-worker.js +3 -8
- package/dist/readiness-probe-worker.js.map +1 -1
- package/dist/readiness-probe.d.ts +1 -1
- package/dist/readiness-probe.d.ts.map +1 -1
- package/dist/readiness-probe.js +3 -33
- package/dist/readiness-probe.js.map +1 -1
- package/dist/reply-artifacts.d.ts +3 -1
- package/dist/reply-artifacts.d.ts.map +1 -1
- package/dist/reply-artifacts.js +45 -10
- package/dist/reply-artifacts.js.map +1 -1
- package/dist/request-model-override.d.ts +14 -37
- package/dist/request-model-override.d.ts.map +1 -1
- package/dist/request-model-override.js +105 -143
- package/dist/request-model-override.js.map +1 -1
- package/dist/request-scoped-mcp.d.ts +3 -0
- package/dist/request-scoped-mcp.d.ts.map +1 -1
- package/dist/request-scoped-mcp.js +1 -1
- package/dist/request-scoped-mcp.js.map +1 -1
- package/dist/run-history.d.ts.map +1 -1
- package/dist/run-history.js +56 -13
- package/dist/run-history.js.map +1 -1
- package/dist/runtime-option-extensions.d.ts +2 -4
- package/dist/runtime-option-extensions.d.ts.map +1 -1
- package/dist/runtime-option-extensions.js +4 -8
- package/dist/runtime-option-extensions.js.map +1 -1
- package/dist/runtime-routes.d.ts +5 -5
- package/dist/runtime-routes.d.ts.map +1 -1
- package/dist/runtime-routes.js +29 -18
- package/dist/runtime-routes.js.map +1 -1
- package/dist/sandbox-settings-cleanup.d.ts +15 -0
- package/dist/sandbox-settings-cleanup.d.ts.map +1 -0
- package/dist/sandbox-settings-cleanup.js +88 -0
- package/dist/sandbox-settings-cleanup.js.map +1 -0
- package/dist/seen-conversations.d.ts +4 -3
- package/dist/seen-conversations.d.ts.map +1 -1
- package/dist/seen-conversations.js +6 -5
- package/dist/seen-conversations.js.map +1 -1
- package/dist/session-history.d.ts +14 -0
- package/dist/session-history.d.ts.map +1 -1
- package/dist/session-history.js +120 -5
- package/dist/session-history.js.map +1 -1
- package/dist/systemd-command.d.ts +8 -0
- package/dist/systemd-command.d.ts.map +1 -0
- package/dist/systemd-command.js +206 -0
- package/dist/systemd-command.js.map +1 -0
- package/dist/systemd.d.ts +51 -0
- package/dist/systemd.d.ts.map +1 -0
- package/dist/systemd.js +299 -0
- package/dist/systemd.js.map +1 -0
- package/dist/tool-output-artifacts.d.ts +4 -0
- package/dist/tool-output-artifacts.d.ts.map +1 -0
- package/dist/tool-output-artifacts.js +17 -0
- package/dist/tool-output-artifacts.js.map +1 -0
- package/dist/trigger-overrides.d.ts +6 -0
- package/dist/trigger-overrides.d.ts.map +1 -1
- package/dist/trigger-overrides.js +36 -4
- package/dist/trigger-overrides.js.map +1 -1
- package/dist/tui-command.d.ts +0 -45
- package/dist/tui-command.d.ts.map +1 -1
- package/dist/tui-command.js +27 -264
- package/dist/tui-command.js.map +1 -1
- package/dist/untrusted-text.d.ts +36 -0
- package/dist/untrusted-text.d.ts.map +1 -0
- package/dist/untrusted-text.js +150 -0
- package/dist/untrusted-text.js.map +1 -0
- package/dist/web-command.d.ts +3 -0
- package/dist/web-command.d.ts.map +1 -1
- package/dist/web-command.js +112 -7
- package/dist/web-command.js.map +1 -1
- package/dist/web-request-coordinator.d.ts +19 -0
- package/dist/web-request-coordinator.d.ts.map +1 -0
- package/dist/web-request-coordinator.js +242 -0
- package/dist/web-request-coordinator.js.map +1 -0
- package/dist/wizard/answers.d.ts +3 -9
- package/dist/wizard/answers.d.ts.map +1 -1
- package/dist/wizard/answers.js +11 -36
- package/dist/wizard/answers.js.map +1 -1
- package/dist/wizard/from-flags.d.ts +1 -2
- package/dist/wizard/from-flags.d.ts.map +1 -1
- package/dist/wizard/from-flags.js +8 -3
- package/dist/wizard/from-flags.js.map +1 -1
- package/dist/wizard/model-discovery.d.ts +7 -8
- package/dist/wizard/model-discovery.d.ts.map +1 -1
- package/dist/wizard/model-discovery.js +58 -431
- package/dist/wizard/model-discovery.js.map +1 -1
- package/dist/wizard/presets.js +2 -2
- package/dist/wizard/presets.js.map +1 -1
- package/dist/wizard/prompts.d.ts +13 -12
- package/dist/wizard/prompts.d.ts.map +1 -1
- package/dist/wizard/prompts.js +25 -45
- package/dist/wizard/prompts.js.map +1 -1
- package/dist/wizard/run.d.ts.map +1 -1
- package/dist/wizard/run.js +30 -153
- package/dist/wizard/run.js.map +1 -1
- package/package.json +18 -18
- package/schema/mono-agent.config.schema.json +301 -53
- package/skills/mono-agent-composer/SKILL.md +5 -5
- package/skills/mono-agent-composer/references/config-blueprint.md +61 -47
- package/skills/mono-agent-composer/references/discovery-questions.md +18 -18
- package/skills/mono-agent-composer/references/feature-coverage.md +39 -21
- package/skills/mono-agent-composer/references/package-map.md +26 -17
- package/skills/mono-agent-composer/references/playbooks.md +39 -28
- package/skills/mono-agent-composer/references/validation.md +4 -3
- package/dist/codex-model-catalog.d.ts +0 -15
- package/dist/codex-model-catalog.d.ts.map +0 -1
- package/dist/codex-model-catalog.js +0 -220
- package/dist/codex-model-catalog.js.map +0 -1
- package/dist/configuration-proposal-main.d.ts +0 -3
- package/dist/configuration-proposal-main.d.ts.map +0 -1
- package/dist/configuration-proposal-main.js +0 -13
- package/dist/configuration-proposal-main.js.map +0 -1
- package/dist/configuration-proposal-tool.d.ts +0 -33
- package/dist/configuration-proposal-tool.d.ts.map +0 -1
- package/dist/configuration-proposal-tool.js +0 -188
- package/dist/configuration-proposal-tool.js.map +0 -1
- package/dist/local-configuration.d.ts +0 -99
- package/dist/local-configuration.d.ts.map +0 -1
- package/dist/local-configuration.js +0 -1330
- package/dist/local-configuration.js.map +0 -1
package/README.md
CHANGED
|
@@ -28,13 +28,21 @@ Turn a folder's `mono-agent.config.json` into a running agent host:
|
|
|
28
28
|
external channel plugins from `channels.plugins[]`.
|
|
29
29
|
- Build the shared runtime/responder/memory stack through app-owned configured
|
|
30
30
|
composition
|
|
31
|
-
(
|
|
32
|
-
`runtime.fallbackModels` compatibility).
|
|
31
|
+
(canonical `runtime.fallbacks` routes).
|
|
33
32
|
- Preserve bounded answered/expired `AskUser` evidence in the assistant history
|
|
34
33
|
copy so cold/stateless provider replay does not lose the out-of-band exchange;
|
|
35
34
|
cancelled asks are not journaled.
|
|
35
|
+
- Publish the harness's bounded, redacted continuity account for every admitted
|
|
36
|
+
non-isolated turn that settles as cancelled or failed before its success
|
|
37
|
+
commit. Cancellation preserves operator, shutdown, stale-session, signal,
|
|
38
|
+
timeout, generic, and unrecorded-reason provenance; failure records a trusted
|
|
39
|
+
host settlement category while bounding/redacting runtime/provider code and
|
|
40
|
+
detail as untrusted evidence. Eligible durable Pi recovery retains native context
|
|
41
|
+
without appending the account to Pi; cold reseed includes the account. The
|
|
42
|
+
on-disk history shape is unchanged by recovery;
|
|
43
|
+
`RunHistory` and `SessionHistory` remain the deeper evidence paths.
|
|
36
44
|
- Expose the request-scoped read-only `RunHistory` tool for safe normalized
|
|
37
|
-
search and paged evidence from
|
|
45
|
+
recovery, search, and paged evidence from settled prior runs in the logical
|
|
38
46
|
conversation, independent of daily rollover buckets.
|
|
39
47
|
- Expose the sibling request-scoped read-only `SessionHistory` tool over the
|
|
40
48
|
harness's canonical retained managed-tool lifecycle sidecar.
|
|
@@ -46,7 +54,8 @@ Turn a folder's `mono-agent.config.json` into a running agent host:
|
|
|
46
54
|
Slack/Telegram/web/WhatsApp wake routing with exact active-run steering and a
|
|
47
55
|
reserved visible normal-turn fallback,
|
|
48
56
|
wake with age-bounded busy deferrals, bounded pending/store materialization,
|
|
49
|
-
stable secret-free safety errors,
|
|
57
|
+
stable secret-free safety errors, a memory-only redacted live output tail,
|
|
58
|
+
native same-message lifecycle surfaces,
|
|
50
59
|
fail-closed live store health, a bounded monotonic registry that seals every
|
|
51
60
|
retained state root even after disable or reconfiguration, bounded locked
|
|
52
61
|
recovery through a fixed-name owner-private sibling directory while request
|
|
@@ -60,6 +69,15 @@ Turn a folder's `mono-agent.config.json` into a running agent host:
|
|
|
60
69
|
routes, and `mono-agent jobs` CLI at the app boundary. This
|
|
61
70
|
local contract does not resist a hostile same-UID provider; use OS privilege
|
|
62
71
|
separation when that is in the threat model.
|
|
72
|
+
- Opt in to Pi-native host-owned watches through `monitors.*`. Telegram, Slack,
|
|
73
|
+
and existing web conversations receive coalesced event batches as exact-origin
|
|
74
|
+
tool-capable wake turns; web uses ordinary assistant turns rather than a
|
|
75
|
+
Monitor card, and shares one per-thread serialization lane with ProcessJobs
|
|
76
|
+
wakes and queued user follow-ups.
|
|
77
|
+
Optional batch deduplication and wake intervals suppress unnecessary inference;
|
|
78
|
+
exit-only watches deliver one terminal wake. The host clamps intervals through
|
|
79
|
+
`monitors.maxWakeIntervalMs` (default/cap 300000) and exposes durable suppression
|
|
80
|
+
and delivery-disposition counters. `maxChainDepth` defaults to 4, with cap 64.
|
|
63
81
|
- Drive each channel through a uniform driver contract with per-channel
|
|
64
82
|
`disabled` / `waiting_for_config` / `running` / `degraded` / `failed` status.
|
|
65
83
|
`degraded` means a temporarily unavailable transport owns its recovery while
|
|
@@ -73,8 +91,8 @@ Turn a folder's `mono-agent.config.json` into a running agent host:
|
|
|
73
91
|
actions are config-opt-in, API-key-protected, and explicitly confirmed; they
|
|
74
92
|
never rewrite config, environment, or Markdown job sources.
|
|
75
93
|
- Register the host as a traceability source. Config edits are made directly in
|
|
76
|
-
`mono-agent.config.json
|
|
77
|
-
|
|
94
|
+
`mono-agent.config.json` or `IDENTITY.md` and take effect after validation and
|
|
95
|
+
`mono-agent restart`.
|
|
78
96
|
- Check managed launchd logs with bounded metadata reads every five minutes,
|
|
79
97
|
reconcile installed macOS LaunchAgents at login and hourly, and make `status`
|
|
80
98
|
require agreement between the cached trace and launchd's live PID.
|
|
@@ -88,16 +106,25 @@ Turn a folder's `mono-agent.config.json` into a running agent host:
|
|
|
88
106
|
- Scaffold (`mono-agent init`) and validate (`mono-agent validate`) agent
|
|
89
107
|
folders non-destructively.
|
|
90
108
|
- Resolve local-first WebSearch/WebFetch settings into every runtime run and
|
|
91
|
-
report
|
|
92
|
-
|
|
93
|
-
|
|
109
|
+
report the four-request default WebSearch budget plus separate bounded
|
|
110
|
+
readiness for explicit Ollama or loopback
|
|
111
|
+
SearXNG plus the optional `agent-browser` renderer; the app never owns any
|
|
112
|
+
companion's lifecycle. Opt-in `tools.web.coordination: "host"` injects the same private
|
|
113
|
+
admission and cooldown store into parent and subagent runs;
|
|
114
|
+
`mono-agent web-control status|reset` inspects or clears idle operational state.
|
|
115
|
+
- Bind oversized tool-block persistence to the harness's authoritative run id,
|
|
116
|
+
writing owner-private raw payloads under `artifacts.dir/tool-output/<runId>/`.
|
|
117
|
+
The sink is not injected into out-of-harness child callbacks. The hourly
|
|
118
|
+
artifact sweep bounds run directories with the existing `artifacts.retention`
|
|
119
|
+
policy while conservatively retaining active, uncertain, or recently modified runs.
|
|
94
120
|
- Operate the machine-wide `@mono-agent/web` assistant-ui console through
|
|
95
|
-
`mono-agent web`, including persisted curated host themes and
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
121
|
+
`mono-agent web`, including persisted curated host themes and a console label
|
|
122
|
+
that defaults to the hostname and can be restored with `--name -`; on macOS
|
|
123
|
+
pair its worker with one helper-only,
|
|
124
|
+
stopped-writer log controller while the worker remains wake-only; publish a
|
|
125
|
+
bounded, refreshable skill registry through each running operator endpoint so
|
|
126
|
+
the web composer can discover valid `$skill-name` references; use
|
|
127
|
+
`mono-agent tui` for bounded recorded-run replay.
|
|
101
128
|
- Discover and expose one exact running agent through the ACP core-session
|
|
102
129
|
profile with `mono-agent bridge acp`, including durable session resume, while
|
|
103
130
|
preserving agent-owned configuration, workspace, sandbox, tools, MCP servers,
|
|
@@ -105,6 +132,14 @@ Turn a folder's `mono-agent.config.json` into a running agent host:
|
|
|
105
132
|
|
|
106
133
|
## Install / Usage
|
|
107
134
|
|
|
135
|
+
Process-job chains keep the default depth budget of 4 and allow a configured
|
|
136
|
+
ceiling of 64. Request diagnostics remain visible when the budget is exhausted.
|
|
137
|
+
Background Exec/Bash accepts `wake_on_completion: false` for helpers that only
|
|
138
|
+
need terminal card updates. Exact sentinel-only wakes suppress delivery; a
|
|
139
|
+
receipt timeout before the destination confirms steering or durable follow-up
|
|
140
|
+
admission settles as unknown and never automatically replays. A confirmed web
|
|
141
|
+
follow-up receipt does not wait for that turn's later model outcome.
|
|
142
|
+
|
|
108
143
|
```bash
|
|
109
144
|
# Install the scoped CLI host directly:
|
|
110
145
|
npm install --global @mono-agent/agent-app
|
|
@@ -122,6 +157,10 @@ same CLI.
|
|
|
122
157
|
|
|
123
158
|
### Guided initialization and readiness
|
|
124
159
|
|
|
160
|
+
Linux lifecycle commands use systemd user services with journald logs and
|
|
161
|
+
`dev (unmanaged)` runtime provenance. See [Linux background services](../../docs/observability/linux-services.md)
|
|
162
|
+
for linger, external HTTPS, migration, and the initial operator-command scope.
|
|
163
|
+
|
|
125
164
|
On an interactive terminal, bare `mono-agent init` (no flags) runs a colourful,
|
|
126
165
|
step-by-step wizard — powered by `@clack/prompts` — that asks for the public
|
|
127
166
|
agent name plus exact Role text for `IDENTITY.md` → `## Role` and composes the capability selection before writing anything. An existing `IDENTITY.md` is preserved and the review says the entered Role will not be written. Escape
|
|
@@ -151,9 +190,12 @@ primary/fallback pickers combine every bundled model
|
|
|
151
190
|
for the guided Pi providers (Anthropic, GitHub Copilot, OpenAI Codex, and
|
|
152
191
|
OpenCode-Go), Codex's live account catalog, the Claude SDK catalog, and local
|
|
153
192
|
discovery. The live Codex provider default leads when available; offline setup
|
|
154
|
-
falls back to curated `codex:gpt-5.6-terra` without guessing effort metadata, so
|
|
155
|
-
only **Provider default** is offered until live `model/list` succeeds. GPT-
|
|
156
|
-
|
|
193
|
+
falls back to curated `openai-codex:gpt-5.6-terra` without guessing effort metadata, so
|
|
194
|
+
only **Provider default** is offered until live `model/list` succeeds. GPT-6
|
|
195
|
+
Astra is selectable as `openai-codex:gpt-6-astra` for Codex subscriptions;
|
|
196
|
+
`openai:gpt-6-astra` is also runtime-compatible for OpenAI API keys through the
|
|
197
|
+
existing hand-authored provider path, without adding direct OpenAI to guided
|
|
198
|
+
setup. GPT-5.6 Sol remains selectable as `openai-codex:gpt-5.6-sol`.
|
|
157
199
|
OpenCode-Go Pi refs can save `OPENCODE_API_KEY` into
|
|
158
200
|
the Pi auth store or remain environment-provided, and any number of fallback
|
|
159
201
|
models are selected from the same discovered choices one at a time. Each route
|
|
@@ -184,21 +226,39 @@ action fails the check.
|
|
|
184
226
|
Escape or Ctrl-C interrupts preflight; recovery can resume verified routes when
|
|
185
227
|
the non-secret plan fingerprint still matches, restart all checks, edit choices,
|
|
186
228
|
or cancel. Authentication repair clears every prior route proof because it can
|
|
187
|
-
replace credential bytes. Guided commit atomically creates the config and
|
|
229
|
+
replace credential bytes. Guided commit atomically creates the config and
|
|
230
|
+
rechecks its exact snapshot after validation. On macOS it then creates or
|
|
231
|
+
refreshes the canonical per-config launchd service and waits up to 60 seconds
|
|
232
|
+
for a fresh trace whose durable `metadata.lifecycle.startupCompleted` proof is
|
|
233
|
+
true. The worker publishes that proof only after channels, memory rituals, and
|
|
234
|
+
final memory-health work complete; later trace refreshes change the diagnostic
|
|
235
|
+
`metadata.reason` without revoking readiness. Once ready, init prints the manual
|
|
236
|
+
continuation: edit `mono-agent.config.json` or `IDENTITY.md`, run
|
|
237
|
+
`mono-agent validate`, restart, and open the ordinary TUI. A readiness timeout
|
|
238
|
+
preserves the committed files, then unloads the worker plus scheduled
|
|
239
|
+
maintenance and removes their definitions only when stopped state is proven. If
|
|
240
|
+
cleanup cannot be proven, the command says that a process may still be running
|
|
241
|
+
and prints exact `start`, `status`, and `logs --follow` recovery commands plus
|
|
242
|
+
log paths. On Linux the next steps use the systemd background service and
|
|
243
|
+
ordinary TUI; platforms without a background backend use foreground start. Any
|
|
244
|
+
flag or non-TTY invocation remains scaffold-only and never starts a process.
|
|
188
245
|
|
|
189
246
|
### Managed skills and documentation companion
|
|
190
247
|
|
|
191
|
-
Every scaffold selects versioned `mono-agent-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
248
|
+
Every scaffold selects the versioned `mono-agent-memory` skill from `./skills`
|
|
249
|
+
with index disclosure. `ReadSkill` remains separate from action-tool policy.
|
|
250
|
+
`mono-agent install-skill --project --check|--update` reports version/hash drift
|
|
251
|
+
and refreshes only unchanged managed copies with backups; a canonical owner-only
|
|
252
|
+
non-symlink parent chain, per-project owner lock, and compare-and-swap activation
|
|
253
|
+
prevent outside or concurrent operator edits from being overwritten, and a
|
|
254
|
+
partial activation restores only files that still equal the managed bytes it
|
|
255
|
+
wrote. Bundle version `2.0.0` retires `mono-agent-configure`: runtime loading
|
|
256
|
+
ignores that exact selected name and validation reports it as non-fatal waiting,
|
|
257
|
+
while any other missing selected skill remains an error. Project check reports
|
|
258
|
+
four retirement states. Project update removes a retired manifest entry and
|
|
259
|
+
deletes its file only when the entry proves ownership and its bytes still match;
|
|
260
|
+
modified and colliding copies fail closed, and retirement participates in the
|
|
261
|
+
same lock, backup, and rollback transaction as the memory update.
|
|
202
262
|
|
|
203
263
|
Harness-mode `mono-agent install-skill` also pairs the exact matching
|
|
204
264
|
`@mono-agent/docs-mcp` version with available selected Codex and Claude Code
|
|
@@ -209,43 +269,6 @@ transactional; an unrelated entry named `mono-agent-docs` is never overwritten,
|
|
|
209
269
|
including with `--force`. Project `--check` / `--update` mode does not touch
|
|
210
270
|
harness MCP configuration.
|
|
211
271
|
|
|
212
|
-
### Conversational self-configuration
|
|
213
|
-
|
|
214
|
-
In the separate, visibly marked **SELF-CONFIG** session only, the background app injects proposal-only
|
|
215
|
-
`ProposeAgentConfiguration`. The opening message shows a user-led map of identity/knowledge,
|
|
216
|
-
runtime/models, skills/tools/MCP/plugins, memory, channels/APIs/A2A, automation,
|
|
217
|
-
security, observability/operations, and acceptance criteria, then builds the chosen
|
|
218
|
-
workflow conversationally. It says never to enter secrets and to expect a separate
|
|
219
|
-
host approval before anything changes. Approval, rejection, a proposal-free turn,
|
|
220
|
-
`done`, and `no changes` all keep SELF-CONFIG active; only `/quit`, `/exit`, or
|
|
221
|
-
double `ctrl+c` exits the session, and quitting leaves the background agent running.
|
|
222
|
-
The host accepts only a fail-closed low-risk
|
|
223
|
-
allowlist: public name; effort, turn/session UX; selected project skills and
|
|
224
|
-
disclosure; memory size or MemoryRecall enablement; semantic tool-policy
|
|
225
|
-
tightening; and the separately validated Role body. Every path, memory-tier or
|
|
226
|
-
capture-cost change, runtime/provider route, channel/proactive/plugin, MCP,
|
|
227
|
-
exporter, embeddings/LLM endpoint, sandbox/network field, secret, and unknown
|
|
228
|
-
future field is handed to the explicit guided flow. It canonicalizes
|
|
229
|
-
config/Identity/state paths without following symlink parents, stages and
|
|
230
|
-
fsyncs replacements, then performs the final source comparison and rename as
|
|
231
|
-
one non-yielding commit step under an owner-only transaction lock. Separate TUI
|
|
232
|
-
confirmation, failure-atomic config/Role rollback compensation, rollback
|
|
233
|
-
evidence, a successful managed restart, and a fresh ready trace source remain mandatory. Configuration turns replace
|
|
234
|
-
the ordinary tool/MCP policy with `ReadSkill`, `MemoryRecall`, and the proposal
|
|
235
|
-
tool only. Pure direct-Codex chains use its native read-only plan posture;
|
|
236
|
-
mixed chains keep the finite proposal surface so a route that cannot represent
|
|
237
|
-
it cannot widen authority. Direct OpenCode cannot receive the host-owned MCP
|
|
238
|
-
proposal capability: a direct-OpenCode primary is routed through a configured
|
|
239
|
-
proposal-capable fallback, while a direct-OpenCode fallback makes self-configuration
|
|
240
|
-
unavailable with explicit remediation. The approval card shows
|
|
241
|
-
every full, untruncated JSON patch value and pages through the exact Role body
|
|
242
|
-
while keeping Reject/Approve reachable, and rejects
|
|
243
|
-
terminal-control or bidi-control review text before displaying it. The configuration
|
|
244
|
-
conversation id stays stable across incremental checkpoints and verified restarts;
|
|
245
|
-
each settled turn receives a fresh opaque proposal capability plus a safe host-outcome
|
|
246
|
-
summary. Fast follow-up text remains in the editor until settlement and is never sent
|
|
247
|
-
as ordinary chat or to a stale endpoint. Remote/proactive channels never receive this tool.
|
|
248
|
-
|
|
249
272
|
### Managed background runtime
|
|
250
273
|
|
|
251
274
|
Before the first macOS background launch, the CLI copies the exact package and
|
|
@@ -285,8 +308,8 @@ login or reboot. A loaded v1 proof is treated as one-time drift and republished
|
|
|
285
308
|
by the recovery controller.
|
|
286
309
|
A managed worker freezes the proven config, Identity, optional Soul, and MCP authority
|
|
287
310
|
file into private read-only copies before app/channel loading, while trace metadata continues to
|
|
288
|
-
name the canonical config. Readiness requires one live launchd-owned trace PID
|
|
289
|
-
the exact durable snapshot
|
|
311
|
+
name the canonical config. Readiness requires one live launchd-owned trace PID and
|
|
312
|
+
the exact durable snapshot.
|
|
290
313
|
Stop succeeds only after both launchd unload and worker death are proven.
|
|
291
314
|
|
|
292
315
|
### Validation, recovery, and managed logs
|
|
@@ -298,10 +321,11 @@ names its full closure id plus sanitized install metadata; other executions repo
|
|
|
298
321
|
`dev (unmanaged)`. With `--consumer`, this remains the validator CLI's provenance,
|
|
299
322
|
not an attestation of a separately running daemon.
|
|
300
323
|
|
|
301
|
-
Its **Web search & fetch** section reports the resolved
|
|
324
|
+
Its **Web search & fetch** section reports the resolved search backend and
|
|
302
325
|
static/browser extraction mode. With liveness enabled it performs one bounded
|
|
303
|
-
JSON query against
|
|
304
|
-
enabled browser renderer reports `agent-browser` 0.33.1 or newer.
|
|
326
|
+
JSON query against the selected SearXNG or Ollama endpoint and checks that an
|
|
327
|
+
enabled browser renderer reports `agent-browser` 0.33.1 or newer. Hosted Ollama
|
|
328
|
+
authentication is sent only to the exact official origin. Start
|
|
305
329
|
preflight (`liveness: false`) skips both probes without changing structural
|
|
306
330
|
validation.
|
|
307
331
|
|
|
@@ -434,26 +458,42 @@ verified turn. Missing Codex setup points to the official instructions at
|
|
|
434
458
|
<https://developers.openai.com/codex/cli/>; the app never auto-installs it. The
|
|
435
459
|
wizard offers browser callback and headless device-code login. Detected credentials
|
|
436
460
|
skip redundant authentication but remain unverified until the exact route call
|
|
437
|
-
successfully runs.
|
|
438
|
-
and
|
|
461
|
+
successfully runs. Passive status treats refreshable OAuth expiry as present but
|
|
462
|
+
unverified and fails closed on unusable material or unsafe stores. The optional
|
|
463
|
+
provider-auth check operator runs one explicit target-only, bounded request per
|
|
464
|
+
displayed provider, records only fixed sanitized outcomes, and never probes from
|
|
465
|
+
a status read. Ordinary run evidence is generation-fenced before provider
|
|
466
|
+
execution: a target-store mutation invalidates already-running summaries and
|
|
467
|
+
their failover attempts, including when the surrounding persistence finishes
|
|
468
|
+
after logical cancellation or reports a post-install cleanup failure. Guided Pi
|
|
469
|
+
setup covers Anthropic, GitHub Copilot, OpenAI Codex, and OpenCode-Go; other
|
|
470
|
+
hand-authored Pi and local-provider configs remain compatible
|
|
439
471
|
without being advertised as guided cloud integrations. Supported OAuth methods and
|
|
440
472
|
the OpenCode-Go key flow come from the bundled upstream catalog;
|
|
441
473
|
stale auth locks are repaired only when the recorded process is securely proven
|
|
442
474
|
gone. The
|
|
443
|
-
wizard keeps **Allow all tools** as its default
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
475
|
+
wizard keeps **Allow all tools** as its default, disclosing shell/file/web/channel
|
|
476
|
+
effects and reconfirming an unsandboxed choice. Every route is Pi-native, so one
|
|
477
|
+
common monotonic contract covers the whole chain and rejects or skips a route
|
|
478
|
+
that cannot represent it. Pi keeps mono-agent tool policy and optional SRT. No
|
|
479
|
+
route silently drops a required capability.
|
|
480
|
+
|
|
481
|
+
Every app-owned TUI/operator endpoint owns an in-memory provider-auth service
|
|
482
|
+
for the web console's Agent settings, with no additional configuration. Its
|
|
483
|
+
routes are keyless when the endpoint has no normal API key and otherwise require
|
|
484
|
+
that bearer. It reports only providers used by effective configured routes and
|
|
485
|
+
keeps credential detection distinct from a successful live request. GitHub
|
|
486
|
+
Copilot and OpenAI Codex use Pi's native device-code flow; Anthropic uses the
|
|
487
|
+
existing manual-code redirect callback; API-key providers use masked
|
|
488
|
+
provider-owned prompts. Returned credentials pass through the same owner-private,
|
|
489
|
+
cross-process-locked, sibling-preserving, no-clobber Pi-store transaction as
|
|
490
|
+
the CLI API-key flow. A valid repeated login replaces the current session only
|
|
491
|
+
after validation. Late provider work is discarded before promotion; a mutation
|
|
492
|
+
already in atomic promotion or cleanup drains before another writer starts. If
|
|
493
|
+
that drain exceeds two seconds, the fresh session fails closed with
|
|
494
|
+
`replacement_timeout`. Sessions, submitted values, URLs, and codes are never
|
|
495
|
+
written to agent history. The service covers `providers.piAuthPath` only, not
|
|
496
|
+
Codex CLI credentials.
|
|
457
497
|
|
|
458
498
|
### Run history
|
|
459
499
|
|
|
@@ -461,7 +501,7 @@ validation/runtime and an incompatible dynamic override is warned and ignored.
|
|
|
461
501
|
allow-all on MCP-capable routes; a restrictive `tools.allowedTools` must name
|
|
462
502
|
`RunHistory` explicitly (`run_history` remains a deprecated policy alias), and
|
|
463
503
|
`disallowedTools` can remove it. Direct OpenCode and other MCP-incompatible
|
|
464
|
-
routes suppress it. The agent-facing shorthand is `{}` to list recent runs,
|
|
504
|
+
routes suppress it. The agent-facing shorthand is `{}` to list recent settled runs,
|
|
465
505
|
`{ "query": "topic terms" }` to search safe trigger and summary metadata,
|
|
466
506
|
`{ "runId": "..." }` for a compact overview, and
|
|
467
507
|
`{ "runId": "...", "cursor": "..." }` for the next timeline page. The
|
|
@@ -469,7 +509,11 @@ routes suppress it. The agent-facing shorthand is `{}` to list recent runs,
|
|
|
469
509
|
compatible. List/search defaults to 5 results (maximum 10); timeline pages hold
|
|
470
510
|
at most 10 entries and about 16 KiB. Each result includes tool-authored
|
|
471
511
|
`navigation.guidance` and exact `navigation.nextActions[].arguments` for
|
|
472
|
-
continuing exploration.
|
|
512
|
+
continuing exploration. For an unhinted request to pick up, continue, or
|
|
513
|
+
recover incomplete work, start with `{}`, select a `failed`, `cancelled`, or
|
|
514
|
+
`interrupted` candidate, and inspect its `runId`. That overview marks output as
|
|
515
|
+
incomplete evidence and returns a conditional exact `navigation.relatedTools`
|
|
516
|
+
handoff to follow only when `SessionHistory` is available.
|
|
473
517
|
List and search read retained summaries once; search never reads event JSONL
|
|
474
518
|
and matches all normalized terms only against sanitized trigger/user input,
|
|
475
519
|
run id, dates, status/failure kind, source/detail, model, and effort. Daily
|
|
@@ -519,6 +563,14 @@ successful-turn commit. A lifecycle record may therefore exist without a
|
|
|
519
563
|
canonical message-history entry. Stable conversation/run/tool-call keys and
|
|
520
564
|
writer-assigned per-run start/end sequences make retries idempotent; process
|
|
521
565
|
recovery closes dangling starts as `interrupted` without rerunning a tool.
|
|
566
|
+
Each client event waits at most 250 ms for foreground confirmation. If an
|
|
567
|
+
accepted write is still queued or syncing, the event records immutable
|
|
568
|
+
`persistence: "deferred"` metadata without an error code while the worker keeps
|
|
569
|
+
the real request alive. The harness drains those accepted writes before bounded
|
|
570
|
+
run finalization. `persisted` means the row committed before publication;
|
|
571
|
+
`failed` is reserved for a definitive writer rejection. A deferred run artifact
|
|
572
|
+
is not final storage evidence: after the run, `SessionHistory` is authoritative
|
|
573
|
+
for committed rows. All three event states keep `untrusted: true`.
|
|
522
574
|
Arguments/results are securely pre-bounded, redacted, and byte-bounded, with truncation metadata and
|
|
523
575
|
opaque artifact ids. Filesystem-shaped spans in object keys and string values use an opaque host-root token plus
|
|
524
576
|
at most two non-sensitive trailing components, so commands and results remain
|
|
@@ -528,6 +580,33 @@ root, or private run path. Only regular files beneath the configured run-specifi
|
|
|
528
580
|
outside or symlinked paths are dropped. Isolated/proactive
|
|
529
581
|
runs persist but search excludes them unless explicitly requested.
|
|
530
582
|
|
|
583
|
+
Configured harness runs install the run-bound tool-output sink. When a tool
|
|
584
|
+
lifecycle record persists too, `SessionHistory` exposes only its opaque id and
|
|
585
|
+
current availability, never the host path or contents. The immediate truncation
|
|
586
|
+
summary still names a successfully saved path. These files contain raw,
|
|
587
|
+
untrusted data. The hourly artifact sweep removes eligible run directories by
|
|
588
|
+
the existing `artifacts.retention` age/count policy, with dry-run parity; it
|
|
589
|
+
protects directories projected from running or uncertain summaries and can
|
|
590
|
+
clean an aged orphan without a tool-history row. Recently modified directories
|
|
591
|
+
are held through the next hourly interval, even under count pressure, and are
|
|
592
|
+
revalidated before removal. Tool-history retention itself
|
|
593
|
+
still owns only its database records and tombstones. After file pruning,
|
|
594
|
+
`SessionHistory` recomputes the opaque reference as unavailable.
|
|
595
|
+
|
|
596
|
+
For tool evidence from a failed, cancelled, or interrupted `RunHistory` candidate, use
|
|
597
|
+
`{ "action": "search", "runIds": ["..."], "includeIsolated": true }` without
|
|
598
|
+
a `states` filter. If it returns no records, do not broaden into another run or
|
|
599
|
+
conversation. Each search result distinguishes the invocation `recordId` from
|
|
600
|
+
the terminal `resultRecordId`; follow its trusted navigation to inspect the
|
|
601
|
+
result first when present and the invocation when its arguments are needed.
|
|
602
|
+
The exact navigation retains `includeIsolated: true`, uses `chunkBytes: 8192`,
|
|
603
|
+
and gives the next exact `get` arguments for every cursor. A bounded search
|
|
604
|
+
preview is not the full record and cannot replace record-level inspection when
|
|
605
|
+
recovering interrupted work. This is read-only evidence recovery: it does not
|
|
606
|
+
resume provider state, replay tools, rerun work, or guarantee continuation from
|
|
607
|
+
the interrupted point. Continue as fresh work in the current run with currently
|
|
608
|
+
available tools and fresh verification.
|
|
609
|
+
|
|
531
610
|
`{ "action": "search" }` returns at most 10 bounded previews with text,
|
|
532
611
|
tool/state/run/time filters and a query-bound opaque cursor.
|
|
533
612
|
`{ "action": "get", "recordId": "..." }` (or `toolCallId`) returns bounded
|
|
@@ -542,6 +621,7 @@ projection capped at 64 KiB including its truncation marker; warm provider resum
|
|
|
542
621
|
continues natively and receives no replay. A zero-byte fresh sidecar is absent
|
|
543
622
|
for automatic projection; another corrupt/unsafe projection emits a structured
|
|
544
623
|
warning and continues the turn, while explicit SessionHistory reads fail closed.
|
|
624
|
+
Neither history tool resumes provider state or replays/reruns retained work.
|
|
545
625
|
Lazy writer acquisition keeps one at-most-10-second restart-handoff attempt.
|
|
546
626
|
After failure, writes from every already-created turn reuse that rejection and
|
|
547
627
|
new turns fail immediately during an initial 30-second backoff. Each failed
|
|
@@ -577,13 +657,53 @@ terminal record in place. A newer tool-history schema hard-fails downgrade until
|
|
|
577
657
|
persisted conversation state is purged; an older compatible version is reported
|
|
578
658
|
as upgrade-pending for the next writer.
|
|
579
659
|
|
|
660
|
+
### Memory evidence routing and chronological browsing
|
|
661
|
+
|
|
662
|
+
The configured host keeps four evidence sources distinct: the active
|
|
663
|
+
conversation for what was just said, `MemoryRecall` for a targeted durable fact
|
|
664
|
+
or decision, `MemoryJournal` for a broad retrospective over explicit local
|
|
665
|
+
calendar dates, and `RunHistory`/`SessionHistory` for exact execution evidence.
|
|
666
|
+
Unhinted interrupted-work recovery still begins with `RunHistory {}`.
|
|
667
|
+
|
|
668
|
+
`MemoryJournal` is request-scoped and read-only. It is offered only for a local
|
|
669
|
+
Lite, Journal, or BuJo store when `memory.recallTool.enabled` is on and normal
|
|
670
|
+
tool policy allows it. Supermemory has search but no chronological capability.
|
|
671
|
+
A first call requires `fromDate`, `throughDate`, and an IANA `timeZone`; the
|
|
672
|
+
inclusive range is capped at 31 calendar days. Pages default to 10 and cap at
|
|
673
|
+
25 entries, 8 KiB projected data, and 2 KiB per entry text. The frozen snapshot
|
|
674
|
+
caps at 1,000 entries/2 MiB and continues only with its request-private authenticated,
|
|
675
|
+
run-bound cursor at the exact issued offset.
|
|
676
|
+
It returns curated daily-source provenance and lifecycle state, excludes raw
|
|
677
|
+
audit observations and dropped records, and labels content untrusted. A clean
|
|
678
|
+
empty range, unsupported composition, and backend failure remain distinct.
|
|
679
|
+
|
|
680
|
+
### Durable memory writes
|
|
681
|
+
|
|
682
|
+
`Remember` gives the agent an explicit way to persist one stated fact, closing
|
|
683
|
+
the loop left by read-only `MemoryRecall`. It is request-scoped, deterministic,
|
|
684
|
+
and append-only, and it writes through the shared memory retrieval service so no
|
|
685
|
+
second store is opened.
|
|
686
|
+
|
|
687
|
+
Availability is deliberately narrow: a configured memory block with
|
|
688
|
+
`memory.rememberTool.enabled` left on, a store that affirms `supportsRemember()`
|
|
689
|
+
(read-only stores and external backends never do), and tool policy that allows
|
|
690
|
+
`Remember` — unlike `MemoryRecall`, this tool is allowlist-gated so writes can be
|
|
691
|
+
withheld without disabling recall.
|
|
692
|
+
|
|
693
|
+
Before anything is stored the host normalizes the text to exactly what will be
|
|
694
|
+
written and checks that against configured credential values, known token shapes,
|
|
695
|
+
credential assignments, and terminal/bidi controls. A match is rejected rather
|
|
696
|
+
than redacted, so a mangled value is never persisted behind a success result.
|
|
697
|
+
|
|
580
698
|
### Web conversation titles
|
|
581
699
|
|
|
582
700
|
`SetConversationTitle` requires no config key. For an ordinary interactive web
|
|
583
701
|
turn whose title is still automatic, the app supplies a request-scoped MCP tool
|
|
584
702
|
that accepts one normalized title of at most 80 characters. Its model-facing
|
|
585
|
-
guidance asks
|
|
586
|
-
|
|
703
|
+
guidance asks it to name the conversation as a whole and to keep refining that
|
|
704
|
+
name whenever a better whole-thread name emerges, never to use the title as a
|
|
705
|
+
status line for the step in progress. The tool result stays a proposal: the
|
|
706
|
+
console applies it out of band and may decline it. The web
|
|
587
707
|
console applies successful tool results quietly while retaining the tool call in
|
|
588
708
|
the collapsed Activity disclosure.
|
|
589
709
|
|
|
@@ -597,10 +717,19 @@ title remains the fallback.
|
|
|
597
717
|
|
|
598
718
|
### Channel interactions and conversation history
|
|
599
719
|
|
|
720
|
+
The configured agent preserves the harness's positive `importContext`
|
|
721
|
+
capability through root-ownership, monitor, process-job, posted-reply, reply-file,
|
|
722
|
+
and MCP-App decorators. The default durable store exposes it only when complete
|
|
723
|
+
batch retention and provider-state retirement or absence are provable. Slack's
|
|
724
|
+
posted-reply wrapper overlays destination history only on the leased Send view;
|
|
725
|
+
the canonical import itself stays scope-free.
|
|
726
|
+
|
|
600
727
|
For missing context, the agent should use active conversation history first,
|
|
601
|
-
`MemoryRecall` for intentionally captured durable
|
|
602
|
-
|
|
603
|
-
|
|
728
|
+
`MemoryRecall` for a targeted intentionally captured durable fact,
|
|
729
|
+
`MemoryJournal` for a broad explicit-period curated retrospective, `RunHistory`
|
|
730
|
+
for exact settled prior-run evidence (including failed/cancelled/interrupted
|
|
731
|
+
work), and `SessionHistory` for retained managed-tool calls and results.
|
|
732
|
+
Answered or expired blocking `AskUser` exchanges
|
|
604
733
|
are written into the assistant history copy before the final response;
|
|
605
734
|
cancelled asks are not journaled. The copy is explicitly labelled as untrusted
|
|
606
735
|
historical data and bounded by newest whole interactions. If the newest valid
|
|
@@ -730,8 +859,8 @@ staging, current-run, or authorized in-flight content. Retried identities are
|
|
|
730
859
|
deduplicated. A manifest
|
|
731
860
|
that cannot accept its delivery-conversation binding becomes one bounded failed
|
|
732
861
|
part while answer text and other valid parts survive. Terminal failure,
|
|
733
|
-
cancellation, or missing run metadata removes uncommitted state.
|
|
734
|
-
|
|
862
|
+
cancellation, or missing run metadata removes uncommitted state. An authenticated
|
|
863
|
+
authoritative request-tool override can exclude this publisher.
|
|
735
864
|
|
|
736
865
|
Audit storage performs one root inventory for a process/root lifecycle, then
|
|
737
866
|
maintains exact owner byte counts under a global append gate. Reclamation uses
|
|
@@ -764,8 +893,16 @@ ten-minute idle timeout. See
|
|
|
764
893
|
[Reply files and MCP Apps](https://mono-agent-docs.vercel.app/tools/rich-replies/)
|
|
765
894
|
for native channel behavior, fallbacks, browser security, and limits.
|
|
766
895
|
|
|
896
|
+
Successful cron answers suppressed by the shared notification classifier project
|
|
897
|
+
`NOTHING_TO_REPORT` as operator summary and detail text. Classification uses the
|
|
898
|
+
full stored answer before either byte limit, including a sentinel on the final
|
|
899
|
+
line of long narration. Agent SQLite and retained activity keep the original
|
|
900
|
+
text; failures and non-suppressed output retain their existing truncation rules.
|
|
901
|
+
|
|
767
902
|
## Architecture
|
|
768
903
|
|
|
904
|
+
Configured continuous sessions persist the requested primary model with their durable epoch. Per-model runtime factories are cached for the harness lifetime, and history retirement resolves the owning runtime. A model switch cold-seeds one new epoch; repeated overrides stay warm. Existing fallback and proactive-isolation policies continue to apply. See [session boundaries](../../docs/runtime/sessions-concurrency.md).
|
|
905
|
+
|
|
769
906
|
### Data flow
|
|
770
907
|
|
|
771
908
|
`@mono-agent/agent-app` is the composition root. A running host follows this
|
|
@@ -803,7 +940,7 @@ path:
|
|
|
803
940
|
| Channel integration | `channels.ts`, `channel-drivers/` | Built-in drivers plus config-loaded plugin resolution. |
|
|
804
941
|
| 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. |
|
|
805
942
|
| 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. |
|
|
806
|
-
| Host services | `run-history.ts`, `session-history.ts`, `conversation-title.ts`, `request-scoped-mcp.ts`, `process-jobs*.ts`, `continuation*.ts`, `memory-*.ts` | Shared request-scoped guards, bounded prior-run/tool-lifecycle evidence, automatic web conversation titles, local process-job ownership/wake/recovery, durable continuations, and memory operations. |
|
|
943
|
+
| Host services | `run-history.ts`, `session-history.ts`, `conversation-title.ts`, `request-scoped-mcp.ts`, `process-jobs*.ts`, `continuation*.ts`, `memory-*.ts` | Shared request-scoped guards, bounded prior-run/tool-lifecycle evidence, bounded local memory chronology, automatic web conversation titles, local process-job ownership/wake/recovery, durable continuations, and memory operations. |
|
|
807
944
|
|
|
808
945
|
## Public API
|
|
809
946
|
|
|
@@ -817,6 +954,7 @@ path:
|
|
|
817
954
|
| Scaffold or validate an agent folder | `initMonoAgentFolder`, `validateMonoAgentFolder` |
|
|
818
955
|
| Add bounded prior-run inspection | `createRunHistoryRuntimeExtension`, `isRunHistoryToolAllowed` |
|
|
819
956
|
| Add bounded retained-tool inspection | `createSessionHistoryRuntimeExtension`, `isSessionHistoryToolAllowed` |
|
|
957
|
+
| Add bounded local memory chronology | `createMemoryJournalRuntimeExtension`, `isMemoryJournalToolAllowed`, `resolveMemoryJournalRange` |
|
|
820
958
|
| Operate the CLI programmatically, including process jobs and the managed web lifecycle | `runCli`, `runJobsCommand`, `parseCliArgs`, `renderHelp` |
|
|
821
959
|
|
|
822
960
|
The web maintenance controller and publication helpers remain private CLI
|
|
@@ -894,8 +1032,20 @@ IssueContinuationCapabilityInput
|
|
|
894
1032
|
MANAGED_SRT_LOCK_SHA256
|
|
895
1033
|
MANAGED_SRT_PACKAGE
|
|
896
1034
|
MANAGED_SRT_VERSION
|
|
1035
|
+
MEMORY_JOURNAL_DEFAULT_PAGE_SIZE
|
|
1036
|
+
MEMORY_JOURNAL_ENTRY_TEXT_MAX_BYTES
|
|
1037
|
+
MEMORY_JOURNAL_MAX_PAGE_SIZE
|
|
1038
|
+
MEMORY_JOURNAL_MAX_RANGE_DAYS
|
|
1039
|
+
MEMORY_JOURNAL_MAX_SNAPSHOTS
|
|
1040
|
+
MEMORY_JOURNAL_MCP_SERVER_NAME
|
|
1041
|
+
MEMORY_JOURNAL_PAGE_MAX_BYTES
|
|
1042
|
+
MEMORY_JOURNAL_TOOL_NAME
|
|
897
1043
|
ManagedSrtSetupOptions
|
|
898
1044
|
ManagedSrtSetupResult
|
|
1045
|
+
MemoryJournalBinding
|
|
1046
|
+
MemoryJournalCapableStore
|
|
1047
|
+
MemoryJournalErrorCode
|
|
1048
|
+
MemoryJournalRuntimeExtensionOptions
|
|
899
1049
|
MemoryRitualSchedule
|
|
900
1050
|
MonoAgentApp
|
|
901
1051
|
MonoAgentAppConfigInput
|
|
@@ -907,6 +1057,7 @@ PreflightResult
|
|
|
907
1057
|
RUN_HISTORY_MCP_SERVER_NAME
|
|
908
1058
|
RUN_HISTORY_TOOL_NAME
|
|
909
1059
|
ResolvedExporter
|
|
1060
|
+
ResolvedMemoryJournalRange
|
|
910
1061
|
RunContinuationCommandOptions
|
|
911
1062
|
RunHistoryBinding
|
|
912
1063
|
RunHistoryRuntimeExtension
|
|
@@ -952,6 +1103,8 @@ createConfiguredAgentResponder
|
|
|
952
1103
|
createConfiguredAgentRuntime
|
|
953
1104
|
createConfiguredMemory
|
|
954
1105
|
createCronChannelDriver
|
|
1106
|
+
createMemoryJournalRuntimeExtension
|
|
1107
|
+
createMemoryJournalServer
|
|
955
1108
|
createOpenAIApiChannelDriver
|
|
956
1109
|
createRunHistoryRuntimeExtension
|
|
957
1110
|
createRunHistoryServer
|
|
@@ -970,6 +1123,9 @@ isAppCoreConfigError
|
|
|
970
1123
|
isColorEnabled
|
|
971
1124
|
isContinuationMode
|
|
972
1125
|
isContinuationState
|
|
1126
|
+
isMemoryJournalCapableStore
|
|
1127
|
+
isMemoryJournalToolAllowed
|
|
1128
|
+
isMemoryJournalToolPolicyName
|
|
973
1129
|
isRunHistoryToolAllowed
|
|
974
1130
|
isSessionHistoryToolAllowed
|
|
975
1131
|
keyValue
|
|
@@ -990,6 +1146,7 @@ resolveAppTraceSourceId
|
|
|
990
1146
|
resolveAppTraceSourceLabel
|
|
991
1147
|
resolveAppTraceStaleAfterMs
|
|
992
1148
|
resolveChannelDrivers
|
|
1149
|
+
resolveMemoryJournalRange
|
|
993
1150
|
rule
|
|
994
1151
|
runCli
|
|
995
1152
|
runContinuationCommand
|
|
@@ -1023,6 +1180,11 @@ compose communication adapters; adapters never depend on it.
|
|
|
1023
1180
|
`@mono-agent/agent-harness` and `@mono-agent/runtime-adapter`).
|
|
1024
1181
|
- Multi-agent orchestration (owned by `@mono-agent/agent-orchestrator`).
|
|
1025
1182
|
|
|
1183
|
+
Opt in to metadata-only prompt-cache request fingerprints with
|
|
1184
|
+
`providers.piNative.promptCacheDiagnostics` (default `false`) or
|
|
1185
|
+
`MONO_AGENT_PI_PROMPT_CACHE_DIAGNOSTICS`. The offline reader is documented in
|
|
1186
|
+
[Prompt-cache measurement](https://mono-agent-docs.vercel.app/runtime/prompt-cache-measurement/).
|
|
1187
|
+
|
|
1026
1188
|
## Related Documentation
|
|
1027
1189
|
|
|
1028
1190
|
- [Quickstart](https://mono-agent-docs.vercel.app/getting-started/quickstart/)
|
|
@@ -53,7 +53,7 @@ export interface TelegramSendToolSettings {
|
|
|
53
53
|
export interface AskUserToolSettings {
|
|
54
54
|
readonly bridgeUrl: string;
|
|
55
55
|
readonly bridgeToken: string;
|
|
56
|
-
readonly timeoutMs: number;
|
|
56
|
+
readonly timeoutMs: number | null;
|
|
57
57
|
readonly producerConversationId?: string;
|
|
58
58
|
readonly interactionConversationId?: string;
|
|
59
59
|
readonly runId?: string;
|
|
@@ -89,6 +89,7 @@ export interface AdapterSendToolsDeliveryHistoryCapabilityIssuer {
|
|
|
89
89
|
export interface AdapterSendToolsRuntimeExtension {
|
|
90
90
|
readonly runtimeOptions: {
|
|
91
91
|
readonly mcpServers: Record<string, unknown>;
|
|
92
|
+
readonly mcpCallNoTotalTimeoutTools?: readonly string[];
|
|
92
93
|
};
|
|
93
94
|
readonly cleanup: () => Promise<void>;
|
|
94
95
|
readonly settleCleanup?: () => Promise<void>;
|
|
@@ -151,7 +152,7 @@ export interface AdapterSendToolsChildContext {
|
|
|
151
152
|
export interface AdapterSendToolsInteractionEnv {
|
|
152
153
|
readonly bridgeUrl: string;
|
|
153
154
|
readonly bridgeToken: string;
|
|
154
|
-
readonly timeoutMs: number;
|
|
155
|
+
readonly timeoutMs: number | null;
|
|
155
156
|
}
|
|
156
157
|
export declare function adapterSendToolsMcpEnv(configPath: string, allowedTools: readonly string[], context?: AdapterSendToolsChildContext, interaction?: AdapterSendToolsInteractionEnv): Record<string, string>;
|
|
157
158
|
export interface AdapterSendToolsChildConfig {
|