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