@mono-agent/agent-app 0.6.2 → 0.9.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 +259 -19
- package/dist/account-home.d.ts +6 -0
- package/dist/account-home.d.ts.map +1 -0
- package/dist/account-home.js +9 -0
- package/dist/account-home.js.map +1 -0
- package/dist/adapter-send-proxy.d.ts +18 -0
- package/dist/adapter-send-proxy.d.ts.map +1 -0
- package/dist/adapter-send-proxy.js +229 -0
- package/dist/adapter-send-proxy.js.map +1 -0
- package/dist/adapter-send-tools-main.js +62 -4
- package/dist/adapter-send-tools-main.js.map +1 -1
- package/dist/adapter-send-tools.d.ts +33 -6
- package/dist/adapter-send-tools.d.ts.map +1 -1
- package/dist/adapter-send-tools.js +485 -87
- package/dist/adapter-send-tools.js.map +1 -1
- package/dist/app-config.d.ts +3 -1
- package/dist/app-config.d.ts.map +1 -1
- package/dist/app-config.js +16 -5
- package/dist/app-config.js.map +1 -1
- package/dist/app.d.ts +27 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +761 -147
- package/dist/app.js.map +1 -1
- package/dist/background-environment.d.ts +16 -0
- package/dist/background-environment.d.ts.map +1 -0
- package/dist/background-environment.js +68 -0
- package/dist/background-environment.js.map +1 -0
- package/dist/background-runtime.d.ts +62 -0
- package/dist/background-runtime.d.ts.map +1 -0
- package/dist/background-runtime.js +1115 -0
- package/dist/background-runtime.js.map +1 -0
- package/dist/background-snapshot-key.d.ts +13 -0
- package/dist/background-snapshot-key.d.ts.map +1 -0
- package/dist/background-snapshot-key.js +194 -0
- package/dist/background-snapshot-key.js.map +1 -0
- package/dist/background-snapshot.d.ts +96 -0
- package/dist/background-snapshot.d.ts.map +1 -0
- package/dist/background-snapshot.js +450 -0
- package/dist/background-snapshot.js.map +1 -0
- package/dist/background-worker-lease.d.ts +39 -0
- package/dist/background-worker-lease.d.ts.map +1 -0
- package/dist/background-worker-lease.js +356 -0
- package/dist/background-worker-lease.js.map +1 -0
- package/dist/background.d.ts +74 -2
- package/dist/background.d.ts.map +1 -1
- package/dist/background.js +815 -73
- package/dist/background.js.map +1 -1
- package/dist/broadcast-recorder.d.ts.map +1 -1
- package/dist/broadcast-recorder.js +24 -2
- package/dist/broadcast-recorder.js.map +1 -1
- package/dist/channel-plugins.d.ts +2 -0
- package/dist/channel-plugins.d.ts.map +1 -1
- package/dist/channel-plugins.js +8 -0
- package/dist/channel-plugins.js.map +1 -1
- package/dist/channels.d.ts +10 -0
- package/dist/channels.d.ts.map +1 -1
- package/dist/channels.js +87 -9
- package/dist/channels.js.map +1 -1
- package/dist/cli.d.ts +86 -4
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +2421 -143
- package/dist/cli.js.map +1 -1
- package/dist/config-reference.d.ts.map +1 -1
- package/dist/config-reference.js +448 -6
- package/dist/config-reference.js.map +1 -1
- package/dist/configuration-proposal-main.d.ts +3 -0
- package/dist/configuration-proposal-main.d.ts.map +1 -0
- package/dist/configuration-proposal-main.js +13 -0
- package/dist/configuration-proposal-main.js.map +1 -0
- package/dist/configuration-proposal-tool.d.ts +33 -0
- package/dist/configuration-proposal-tool.d.ts.map +1 -0
- package/dist/configuration-proposal-tool.js +188 -0
- package/dist/configuration-proposal-tool.js.map +1 -0
- package/dist/configured-agent.d.ts +16 -0
- package/dist/configured-agent.d.ts.map +1 -1
- package/dist/configured-agent.js +165 -18
- package/dist/configured-agent.js.map +1 -1
- package/dist/consumer-contract.d.ts +3 -0
- package/dist/consumer-contract.d.ts.map +1 -1
- package/dist/consumer-contract.js +44 -1
- package/dist/consumer-contract.js.map +1 -1
- package/dist/continuation-command.d.ts +15 -0
- package/dist/continuation-command.d.ts.map +1 -0
- package/dist/continuation-command.js +170 -0
- package/dist/continuation-command.js.map +1 -0
- package/dist/continuation-config.d.ts +25 -0
- package/dist/continuation-config.d.ts.map +1 -0
- package/dist/continuation-config.js +236 -0
- package/dist/continuation-config.js.map +1 -0
- package/dist/continuation-service.d.ts +99 -0
- package/dist/continuation-service.d.ts.map +1 -0
- package/dist/continuation-service.js +1313 -0
- package/dist/continuation-service.js.map +1 -0
- package/dist/continuation-store.d.ts +104 -0
- package/dist/continuation-store.d.ts.map +1 -0
- package/dist/continuation-store.js +688 -0
- package/dist/continuation-store.js.map +1 -0
- package/dist/continuations.d.ts +167 -0
- package/dist/continuations.d.ts.map +1 -0
- package/dist/continuations.js +71 -0
- package/dist/continuations.js.map +1 -0
- package/dist/doctor.d.ts +29 -5
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +1611 -116
- package/dist/doctor.js.map +1 -1
- package/dist/first-run-managed-memory.d.ts +39 -0
- package/dist/first-run-managed-memory.d.ts.map +1 -0
- package/dist/first-run-managed-memory.js +584 -0
- package/dist/first-run-managed-memory.js.map +1 -0
- package/dist/first-run-readiness.d.ts +111 -0
- package/dist/first-run-readiness.d.ts.map +1 -0
- package/dist/first-run-readiness.js +728 -0
- package/dist/first-run-readiness.js.map +1 -0
- package/dist/index.d.ts +17 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +95 -3
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +1218 -24
- package/dist/init.js.map +1 -1
- package/dist/interaction-bridge.d.ts +25 -1
- package/dist/interaction-bridge.d.ts.map +1 -1
- package/dist/interaction-bridge.js +281 -19
- package/dist/interaction-bridge.js.map +1 -1
- package/dist/launchd.d.ts +16 -6
- package/dist/launchd.d.ts.map +1 -1
- package/dist/launchd.js +30 -15
- package/dist/launchd.js.map +1 -1
- package/dist/local-configuration.d.ts +99 -0
- package/dist/local-configuration.d.ts.map +1 -0
- package/dist/local-configuration.js +1299 -0
- package/dist/local-configuration.js.map +1 -0
- package/dist/managed-runtime-packages.d.ts +9 -0
- package/dist/managed-runtime-packages.d.ts.map +1 -0
- package/dist/managed-runtime-packages.js +56 -0
- package/dist/managed-runtime-packages.js.map +1 -0
- package/dist/memory-command.d.ts +4 -0
- package/dist/memory-command.d.ts.map +1 -1
- package/dist/memory-command.js +751 -27
- package/dist/memory-command.js.map +1 -1
- package/dist/memory-embedding-service.d.ts +33 -0
- package/dist/memory-embedding-service.d.ts.map +1 -0
- package/dist/memory-embedding-service.js +207 -0
- package/dist/memory-embedding-service.js.map +1 -0
- package/dist/memory-recall.d.ts +43 -14
- package/dist/memory-recall.d.ts.map +1 -1
- package/dist/memory-recall.js +103 -33
- package/dist/memory-recall.js.map +1 -1
- package/dist/memory-retrieval.d.ts +66 -0
- package/dist/memory-retrieval.d.ts.map +1 -0
- package/dist/memory-retrieval.js +332 -0
- package/dist/memory-retrieval.js.map +1 -0
- package/dist/modules/base.d.ts +6 -5
- package/dist/modules/base.d.ts.map +1 -1
- package/dist/modules/base.js +11 -7
- package/dist/modules/base.js.map +1 -1
- package/dist/modules/catalog.d.ts.map +1 -1
- package/dist/modules/catalog.js +141 -25
- package/dist/modules/catalog.js.map +1 -1
- package/dist/modules/index.d.ts +2 -2
- package/dist/modules/index.d.ts.map +1 -1
- package/dist/modules/index.js +1 -1
- package/dist/modules/index.js.map +1 -1
- package/dist/modules/known-tools.d.ts +3 -0
- package/dist/modules/known-tools.d.ts.map +1 -1
- package/dist/modules/known-tools.js +11 -1
- package/dist/modules/known-tools.js.map +1 -1
- package/dist/modules/types.d.ts +20 -6
- package/dist/modules/types.d.ts.map +1 -1
- package/dist/modules/types.js.map +1 -1
- package/dist/notify-runtime.d.ts +26 -0
- package/dist/notify-runtime.d.ts.map +1 -0
- package/dist/notify-runtime.js +27 -0
- package/dist/notify-runtime.js.map +1 -0
- package/dist/notify-tool.d.ts +51 -0
- package/dist/notify-tool.d.ts.map +1 -0
- package/dist/notify-tool.js +182 -0
- package/dist/notify-tool.js.map +1 -0
- package/dist/package-version.d.ts +3 -0
- package/dist/package-version.d.ts.map +1 -0
- package/dist/package-version.js +14 -0
- package/dist/package-version.js.map +1 -0
- package/dist/pi-auth-store-inspection.d.ts +21 -0
- package/dist/pi-auth-store-inspection.d.ts.map +1 -0
- package/dist/pi-auth-store-inspection.js +120 -0
- package/dist/pi-auth-store-inspection.js.map +1 -0
- package/dist/pi-oauth-login-main.d.ts +3 -0
- package/dist/pi-oauth-login-main.d.ts.map +1 -0
- package/dist/pi-oauth-login-main.js +14 -0
- package/dist/pi-oauth-login-main.js.map +1 -0
- package/dist/pi-oauth-login.d.ts +22 -0
- package/dist/pi-oauth-login.d.ts.map +1 -0
- package/dist/pi-oauth-login.js +79 -0
- package/dist/pi-oauth-login.js.map +1 -0
- package/dist/proactive-notify.d.ts +2 -0
- package/dist/proactive-notify.d.ts.map +1 -1
- package/dist/proactive-notify.js +1 -0
- package/dist/proactive-notify.js.map +1 -1
- package/dist/process-incarnation.d.ts +23 -0
- package/dist/process-incarnation.d.ts.map +1 -0
- package/dist/process-incarnation.js +208 -0
- package/dist/process-incarnation.js.map +1 -0
- package/dist/project-skills.d.ts +40 -0
- package/dist/project-skills.d.ts.map +1 -0
- package/dist/project-skills.js +573 -0
- package/dist/project-skills.js.map +1 -0
- package/dist/provider-setup.d.ts +117 -2
- package/dist/provider-setup.d.ts.map +1 -1
- package/dist/provider-setup.js +1505 -49
- package/dist/provider-setup.js.map +1 -1
- package/dist/readiness-probe-worker.d.ts +12 -0
- package/dist/readiness-probe-worker.d.ts.map +1 -0
- package/dist/readiness-probe-worker.js +276 -0
- package/dist/readiness-probe-worker.js.map +1 -0
- package/dist/readiness-probe.d.ts +100 -0
- package/dist/readiness-probe.d.ts.map +1 -0
- package/dist/readiness-probe.js +780 -0
- package/dist/readiness-probe.js.map +1 -0
- package/dist/recipes/base.d.ts +15 -0
- package/dist/recipes/base.d.ts.map +1 -0
- package/dist/recipes/base.js +51 -0
- package/dist/recipes/base.js.map +1 -0
- package/dist/recipes/catalog.d.ts +4 -0
- package/dist/recipes/catalog.d.ts.map +1 -0
- package/dist/recipes/catalog.js +525 -0
- package/dist/recipes/catalog.js.map +1 -0
- package/dist/recipes/index.d.ts +11 -0
- package/dist/recipes/index.d.ts.map +1 -0
- package/dist/recipes/index.js +14 -0
- package/dist/recipes/index.js.map +1 -0
- package/dist/recipes/types.d.ts +70 -0
- package/dist/recipes/types.d.ts.map +1 -0
- package/dist/recipes/types.js +15 -0
- package/dist/recipes/types.js.map +1 -0
- package/dist/request-model-override.d.ts +43 -1
- package/dist/request-model-override.d.ts.map +1 -1
- package/dist/request-model-override.js +178 -19
- package/dist/request-model-override.js.map +1 -1
- package/dist/run-history.d.ts +32 -0
- package/dist/run-history.d.ts.map +1 -0
- package/dist/run-history.js +859 -0
- package/dist/run-history.js.map +1 -0
- package/dist/runs-health.d.ts.map +1 -1
- package/dist/runs-health.js +12 -4
- package/dist/runs-health.js.map +1 -1
- package/dist/runtime-option-extensions.d.ts +14 -0
- package/dist/runtime-option-extensions.d.ts.map +1 -0
- package/dist/runtime-option-extensions.js +98 -0
- package/dist/runtime-option-extensions.js.map +1 -0
- package/dist/runtime-routes.d.ts +9 -0
- package/dist/runtime-routes.d.ts.map +1 -0
- package/dist/runtime-routes.js +13 -0
- package/dist/runtime-routes.js.map +1 -0
- package/dist/sandbox-manager.d.ts +86 -0
- package/dist/sandbox-manager.d.ts.map +1 -0
- package/dist/sandbox-manager.js +1402 -0
- package/dist/sandbox-manager.js.map +1 -0
- package/dist/setup.d.ts +29 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +97 -0
- package/dist/setup.js.map +1 -0
- package/dist/supermemory-plugin.d.ts +56 -0
- package/dist/supermemory-plugin.d.ts.map +1 -0
- package/dist/supermemory-plugin.js +142 -0
- package/dist/supermemory-plugin.js.map +1 -0
- package/dist/tui-command.d.ts +56 -0
- package/dist/tui-command.d.ts.map +1 -1
- package/dist/tui-command.js +305 -31
- package/dist/tui-command.js.map +1 -1
- package/dist/web-command.d.ts +8 -0
- package/dist/web-command.d.ts.map +1 -1
- package/dist/web-command.js +174 -17
- package/dist/web-command.js.map +1 -1
- package/dist/wizard/answers.d.ts +31 -4
- package/dist/wizard/answers.d.ts.map +1 -1
- package/dist/wizard/answers.js +141 -29
- package/dist/wizard/answers.js.map +1 -1
- package/dist/wizard/from-flags.d.ts +7 -0
- package/dist/wizard/from-flags.d.ts.map +1 -1
- package/dist/wizard/from-flags.js +36 -2
- package/dist/wizard/from-flags.js.map +1 -1
- package/dist/wizard/index.d.ts +4 -4
- package/dist/wizard/index.d.ts.map +1 -1
- package/dist/wizard/index.js +2 -2
- package/dist/wizard/index.js.map +1 -1
- package/dist/wizard/model-discovery.d.ts +33 -2
- package/dist/wizard/model-discovery.d.ts.map +1 -1
- package/dist/wizard/model-discovery.js +826 -108
- package/dist/wizard/model-discovery.js.map +1 -1
- package/dist/wizard/presets.d.ts +1 -1
- package/dist/wizard/presets.d.ts.map +1 -1
- package/dist/wizard/presets.js +7 -12
- package/dist/wizard/presets.js.map +1 -1
- package/dist/wizard/prompts.d.ts +56 -9
- package/dist/wizard/prompts.d.ts.map +1 -1
- package/dist/wizard/prompts.js +172 -20
- package/dist/wizard/prompts.js.map +1 -1
- package/dist/wizard/run.d.ts +59 -3
- package/dist/wizard/run.d.ts.map +1 -1
- package/dist/wizard/run.js +1290 -191
- package/dist/wizard/run.js.map +1 -1
- package/package.json +21 -16
- package/resources/srt/package-lock.json +66 -0
- package/resources/srt/package.json +9 -0
- package/schema/mono-agent.config.schema.json +587 -20
- package/skills/mono-agent-composer/SKILL.md +6 -6
- package/skills/mono-agent-composer/references/config-blueprint.md +11 -10
- package/skills/mono-agent-composer/references/discovery-questions.md +33 -18
- package/skills/mono-agent-composer/references/feature-coverage.md +14 -12
- package/skills/mono-agent-composer/references/package-map.md +2 -2
- package/skills/mono-agent-composer/references/playbooks.md +8 -7
- package/skills/mono-agent-composer/references/validation.md +3 -3
|
@@ -33,7 +33,7 @@ Do **not** read or grep the `@mono-agent` TypeScript/package source — `package
|
|
|
33
33
|
- The deliverable is a folder that works: `mono-agent.config.json` + `IDENTITY.md` (+ optional `skills/`, `mcp.json`), validated and started — not a tutorial.
|
|
34
34
|
- Start by discovering the intended agent product, not by naming packages.
|
|
35
35
|
- Ask one question at a time; skip anything the user already answered.
|
|
36
|
-
- Respect existing knowledge: if the folder has `AGENTS.md`, `CLAUDE.md`, `README.md`, or
|
|
36
|
+
- Respect existing knowledge: if the folder has `AGENTS.md`, `CLAUDE.md`, `README.md`, or `SOUL.md`, reference it from the identity instead of copying it. `IDENTITY.md` → `## Role` is the single canonical guided-init Role location. Never overwrite an existing identity; say explicitly that a newly entered Role was not written and tell the user to add or edit that heading manually.
|
|
37
37
|
- Fail closed: no allowed tools, no memory writes, loopback-only network until the user opts in.
|
|
38
38
|
- Do not fake runtime success, silently broaden tool access, or hide provider/MCP failures. Backup models are configured failover (`runtime.fallbackModels`), never silent substitution.
|
|
39
39
|
- Secrets stay in env vars or the untracked config file; never commit tokens or `.env*` files.
|
|
@@ -46,7 +46,7 @@ The `mono-agent` CLI ships with `@mono-agent/agent-app` on npm:
|
|
|
46
46
|
npm install -g @mono-agent/agent-app # or: npx @mono-agent/agent-app …
|
|
47
47
|
```
|
|
48
48
|
|
|
49
|
-
To run an unreleased build instead, use a clone of the mono-agent workspace with Node
|
|
49
|
+
To run an unreleased build instead, use a clone of the mono-agent workspace with Node 22.19.0+ and pnpm 10 or newer already installed:
|
|
50
50
|
|
|
51
51
|
```bash
|
|
52
52
|
git clone <mono-agent-repo> ~/mono-agent && cd ~/mono-agent
|
|
@@ -59,7 +59,7 @@ Everything below runs in the user's agent folder, not the workspace.
|
|
|
59
59
|
|
|
60
60
|
## Composition Flow
|
|
61
61
|
|
|
62
|
-
1. **Discover.** Read `references/discovery-questions.md` and resolve: runtime model + backup models, channels, identity/knowledge, skills, tools/MCP, memory strategy, sandbox, observability, and the acceptance smoke test. Then run `mono-agent presets list` (and `mono-agent presets show <id>`) for a saved answer-set matching the user's intent; `references/playbooks.md` is the prose companion. If a preset fits, use it as the starting shape. The
|
|
62
|
+
1. **Discover.** Read `references/discovery-questions.md` and resolve: runtime model + backup models, channels, identity/knowledge, skills, tools/MCP, memory strategy, sandbox, observability, and the acceptance smoke test. Then run `mono-agent presets list` (and `mono-agent presets show <id>`) for a saved answer-set matching the user's intent; `references/playbooks.md` is the prose companion. If a preset fits, use it as the starting shape. The five core presets are `starter`, `telegram-assistant`, `slack-bot`, `local-private`, and `code-sandbox`; optional plugins such as Supermemory ship their own setup skill. Shapes with no core preset (an OpenAI-API gateway, cron digest, A2A provider, Phoenix-observed, Supermemory, or a full multi-channel build) are hand-assembled from the capability modules and playbooks.
|
|
63
63
|
2. **Scaffold.** In the user's folder, prefer the preset path when one fits — scaffold non-interactively with `--yes` (the composer is not the interactive `init` wizard):
|
|
64
64
|
|
|
65
65
|
```bash
|
|
@@ -67,8 +67,8 @@ Everything below runs in the user's agent folder, not the workspace.
|
|
|
67
67
|
mono-agent init --model <ref> [--fallback-models <csv>] [--effort <level>] [--auth] [--memory lite|journal|bujo] # bare scaffold
|
|
68
68
|
```
|
|
69
69
|
|
|
70
|
-
Either writes a `mono-agent.config.json` (with `tools.allowedTools` pre-filled from the selected capabilities' recommended tools), an `IDENTITY.md`
|
|
71
|
-
3. **Configure.** Edit `mono-agent.config.json` to match the discovery answers. Read `references/config-blueprint.md` for the full annotated config shape: every channel section, skills, MCP, memory, sandbox, and fallback models. Run `mono-agent config` to see the resolved configuration field-by-field with each value tagged `env` / `json` / `default` — the fastest way to confirm a value came from where you intended.
|
|
70
|
+
Either writes a `mono-agent.config.json` (with `tools.allowedTools` pre-filled from the selected capabilities' recommended tools), an `IDENTITY.md` whose `## Role` body is the one Role destination and which references any knowledge files already present, the managed project-local `mono-agent-configure` and `mono-agent-memory` skills, and `.mono-agent/` working directories (presets also emit a `.env.example` and any extra files). `--effort` writes `runtime.effort` on supporting providers (do not use it with direct `opencode:*` SDK 1.x); `--auth` opts in to provider setup before writing files; `--dry-run` previews without writing or launching auth/preflight commands. Existing scaffold/config files are never overwritten; reviewed secret setup is the deliberate exception that can transactionally replace `.env` and update `.gitignore`.
|
|
71
|
+
3. **Configure.** Edit `mono-agent.config.json` to match the discovery answers. For a newly created identity, put the agreed text under `IDENTITY.md` → `## Role`; if it existed before init, preserve it and report that the new answer was not stored. Preserve the generated `mono-agent-configure` and `mono-agent-memory` selections when appending other skills, and do not auto-select this full authoring-oriented composer inside the generated agent. Read `references/config-blueprint.md` for the full annotated config shape: every channel section, skills, MCP, memory, sandbox, and fallback models. Run `mono-agent config` to see the resolved configuration field-by-field with each value tagged `env` / `json` / `default` — the fastest way to confirm a value came from where you intended.
|
|
72
72
|
4. **Validate.**
|
|
73
73
|
|
|
74
74
|
```bash
|
|
@@ -82,7 +82,7 @@ Everything below runs in the user's agent folder, not the workspace.
|
|
|
82
82
|
mono-agent start
|
|
83
83
|
```
|
|
84
84
|
|
|
85
|
-
Then run the acceptance smoke test matching the chosen channel (see `references/validation.md`). To change anything, edit `mono-agent.config.json` directly and run `mono-agent restart`; there is no live browser re-apply.
|
|
85
|
+
Then run the acceptance smoke test matching the chosen channel (see `references/validation.md`). To change anything, edit `mono-agent.config.json` or `IDENTITY.md` directly and run `mono-agent restart`; there is no live browser re-apply. On macOS, `mono-agent tui --configure` can open a temporary proposal-only configuration conversation against the already-running background agent. It is separate from ordinary chat, never accepts secrets, requires an out-of-band approval, and restarts or rolls back through the managed lifecycle. Off macOS, use manual edits plus `validate`, foreground `start`, and ordinary `tui`; conversational configuration is unavailable.
|
|
86
86
|
|
|
87
87
|
## When Config Is Not Enough
|
|
88
88
|
|
|
@@ -12,7 +12,7 @@ One `mono-agent.config.json` declares the whole agent. Paths are relative to the
|
|
|
12
12
|
```text
|
|
13
13
|
my-agent/
|
|
14
14
|
mono-agent.config.json # the single declaration below
|
|
15
|
-
IDENTITY.md #
|
|
15
|
+
IDENTITY.md # canonical ## Role body, boundaries, references to existing knowledge
|
|
16
16
|
skills/ # optional: <skill-name>/SKILL.md per selected skill
|
|
17
17
|
cron/ # optional: <job-id>.md scheduled prompts
|
|
18
18
|
mcp.json # optional: MCP server definitions
|
|
@@ -35,7 +35,7 @@ my-agent/
|
|
|
35
35
|
"model": "claude:claude-sonnet-4-6", // claude:* | codex:* | pi:<provider>:<model>
|
|
36
36
|
"fallbackModels": ["pi:ollama:gemma4:31b"],
|
|
37
37
|
"executionMode": "sdk", // sdk | cli (default inferred from model)
|
|
38
|
-
"effort": "medium", // none|low|medium|high|xhigh|max
|
|
38
|
+
"effort": "medium", // none|low|medium|high|xhigh|max; omit for direct opencode:*
|
|
39
39
|
"permissionMode": "default", // default|plan|acceptEdits|bypassPermissions (CLI backends)
|
|
40
40
|
"maxTurns": 0, // 0 or omitted means unlimited; 1-100 caps turns
|
|
41
41
|
"workspace": ".",
|
|
@@ -85,10 +85,10 @@ my-agent/
|
|
|
85
85
|
"writeMode": "capture", // disabled | append-host-summary | capture (bujo only)
|
|
86
86
|
"maxBytes": 64000,
|
|
87
87
|
"embeddings": { // required for journal and bujo
|
|
88
|
-
"provider": "ollama", // ollama | openai
|
|
88
|
+
"provider": "ollama", // ollama | lmstudio | openai; exclusive, no fallback
|
|
89
89
|
"model": "nomic-embed-text:v1.5", // use exact :v1.5 tag (pull first with ollama pull)
|
|
90
|
-
"endpoint": "http://localhost:11434",
|
|
91
|
-
"apiKeyEnv": "
|
|
90
|
+
"endpoint": "http://localhost:11434", // service root; LM Studio default http://localhost:1234
|
|
91
|
+
// "apiKeyEnv": "LM_STUDIO_API_KEY", // optional authenticated LM Studio; required for openai
|
|
92
92
|
"dim": 768 // nomic-embed-text:v1.5 output dimension
|
|
93
93
|
},
|
|
94
94
|
"llm": { // enables bujo capture and the effective bujo tier; omit for lite/journal
|
|
@@ -110,7 +110,9 @@ my-agent/
|
|
|
110
110
|
"mcpConfigPath": "./mcp.json" // stdio/sse/http servers; inlined for SDK runtimes
|
|
111
111
|
},
|
|
112
112
|
|
|
113
|
-
// Sandbox for runtime commands.
|
|
113
|
+
// Sandbox for Pi-owned runtime commands. Direct Codex uses its own sandbox;
|
|
114
|
+
// Claude/direct OpenCode cannot enforce these exact srt scopes. All reject
|
|
115
|
+
// this block (pi:opencode-go:* remains a Pi route).
|
|
114
116
|
"sandbox": {
|
|
115
117
|
"mode": "native", // native (srt-wrapped) | off
|
|
116
118
|
"network": { "mode": "none", "allowlist": [] }, // none|localhost|allowlist|all; *.suffix wildcards
|
|
@@ -187,8 +189,7 @@ my-agent/
|
|
|
187
189
|
"port": 4040,
|
|
188
190
|
"basePath": "/v1", // serves /v1/models + /v1/chat/completions (SSE)
|
|
189
191
|
"allowNonLoopback": false,
|
|
190
|
-
"modelId": "my-agent"
|
|
191
|
-
"apiKey": "..." // optional bearer required from clients
|
|
192
|
+
"modelId": "my-agent" // model id advertised to API clients
|
|
192
193
|
},
|
|
193
194
|
|
|
194
195
|
// Telegram & Slack deliver only the FINAL answer by default (no streamed
|
|
@@ -291,9 +292,9 @@ mono-agent restart --force # restart AND purge persisted pi sessions (fresh sta
|
|
|
291
292
|
|
|
292
293
|
A `.env` file in the folder is loaded automatically (exported shell variables win); use `--env-file <path>` for an alternate file. `validate --consumer <path>` loads the consumer folder's `.env` by default and resolves relative `--config` / `--env-file` paths there. `start` prints the traceability source (Phoenix when an `observability.exporters` Phoenix entry is configured, otherwise the local JSONL artifacts) and one status line per channel: `running` with its endpoint facts, `waiting_for_config` with the exact missing setting, `disabled`, or `failed` with the reason. Config is JSON-first: edit `mono-agent.config.json` directly (agents can edit it) and run `mono-agent restart` to apply — there is no live browser re-apply.
|
|
293
294
|
|
|
294
|
-
For BuJo capture and the effective `bujo` tier that runs scheduled consolidation, configure `memory.llm`. Use `provider: "ollama"` with a local Ollama chat model string and optional `endpoint`, or `provider: "agent-host"` with `model` as a normal SDK runtime model reference such as `pi:openai-codex:gpt-5.5` and `executionMode: "sdk"`. `endpoint` is Ollama-only, and CLI-backed refs such as `codex:gpt-5.5` are rejected for memory LLMs until runtimes can enforce no external actions. The same values can be supplied via `MONO_AGENT_MEMORY_LLM_PROVIDER`, `MONO_AGENT_MEMORY_LLM_MODEL`, `MONO_AGENT_MEMORY_LLM_EXECUTION_MODE`, and `MONO_AGENT_MEMORY_LLM_ENDPOINT`. The standalone `memory-bujo`
|
|
295
|
+
For BuJo capture and the effective `bujo` tier that runs scheduled consolidation, configure `memory.llm`. Use `provider: "ollama"` with a local Ollama chat model string and optional `endpoint`, or `provider: "agent-host"` with `model` as a normal SDK runtime model reference such as `pi:openai-codex:gpt-5.5` and `executionMode: "sdk"`. `endpoint` is Ollama-only, and CLI-backed refs such as `codex:gpt-5.5` are rejected for memory LLMs until runtimes can enforce no external actions. The same values can be supplied via `MONO_AGENT_MEMORY_LLM_PROVIDER`, `MONO_AGENT_MEMORY_LLM_MODEL`, `MONO_AGENT_MEMORY_LLM_EXECUTION_MODE`, and `MONO_AGENT_MEMORY_LLM_ENDPOINT`. The standalone `memory-bujo migrate` command remains Ollama-only; other maintenance commands use the configured embeddings provider. `agent-host` LLM capture is an in-app composition path that injects the `LlmComplete` implementation into the BuJo store.
|
|
295
296
|
|
|
296
|
-
For operator views, run `mono-agent tui` or `mono-agent web` from any directory once the agent is started. Both discover running agents via the trace-source registry. The TUI chats over the default-on `tui` stream endpoint (`"tui": {"enabled": false}` opts out); the web PWA reads artifacts and live updates from the default-on `live` relay (`"live": {"enabled": false}` opts out). Web history/live views show agent runs by default; add `mono-agent web --include-memory` to inspect memory-maintenance runs. Both bind loopback by default. The low-level `mono-agent-tui` bin also supports `--responder <file>` (embedded, an ESM module default-exporting an `AgentResponderLike` or exporting `createResponder(env, cwd, configJson)`) and `--url <baseUrl>` (direct connect).
|
|
297
|
+
For operator views, run `mono-agent tui` or `mono-agent web` from any directory once the agent is started. Both discover running agents via the trace-source registry. The TUI chats over the default-on `tui` stream endpoint (`"tui": {"enabled": false}` opts out); on macOS, `mono-agent tui --configure` opens a separate temporary proposal-only conversation against the managed background agent and must not be combined with `--local`. The web PWA reads artifacts and live updates from the default-on `live` relay (`"live": {"enabled": false}` opts out). Web history/live views show agent runs by default; add `mono-agent web --include-memory` to inspect memory-maintenance runs. Both bind loopback by default. The low-level `mono-agent-tui` bin also supports `--responder <file>` (embedded, an ESM module default-exporting an `AgentResponderLike` or exporting `createResponder(env, cwd, configJson)`) and `--url <baseUrl>` (direct connect).
|
|
297
298
|
|
|
298
299
|
## Programmatic Escape Hatch
|
|
299
300
|
|
|
@@ -10,15 +10,15 @@ Question:
|
|
|
10
10
|
Which model should drive the agent, and should any backups take over when the provider fails?
|
|
11
11
|
|
|
12
12
|
1. `claude:<model>` through SDK or CLI mode
|
|
13
|
-
2. `
|
|
14
|
-
3. `codex:<model>` through
|
|
13
|
+
2. `codex:<model>` through CLI mode (the default direct Codex path)
|
|
14
|
+
3. `pi:openai-codex:<model>` through SDK mode (a selectable Pi alternative when Pi auth is configured)
|
|
15
15
|
4. `pi:<provider>:<model>` through SDK mode (OpenAI, Copilot, OpenRouter, OpenCode-through-Pi, local Ollama, LM Studio, ...)
|
|
16
16
|
5. A custom MonoRuntimeLike supplied programmatically (escape hatch)
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
Fills: `runtime.model`, `runtime.fallbackModels` (ordered backup references tried on retryable provider failures), `runtime.executionMode` (usually inferred), `runtime.effort`, `runtime.maxTurns`.
|
|
19
|
+
Fills: `runtime.model`, `runtime.fallbackModels` (ordered backup references tried on retryable provider failures), `runtime.executionMode` (usually inferred), `runtime.effort`, `runtime.maxTurns`. Keep a direct `codex:*` chain all-direct. Pi, Claude, and direct OpenCode may mix only with `sandbox` omitted/off; if native mono-agent sandboxing is selected, every primary/fallback/trigger model must stay on Pi (`pi:opencode-go:*` is Pi). Direct `opencode:*` is advanced scaffold/config-only, requires exact allow-all plus an explicit native `permissionMode`, and must omit `runtime.effort` under SDK 1.x.
|
|
20
20
|
|
|
21
|
-
The interactive `mono-agent init` wizard discovers Pi OpenAI-Codex auth, OpenCode models, Ollama models, and LM Studio's local server best-effort. It
|
|
21
|
+
The interactive `mono-agent init` wizard discovers Pi OpenAI-Codex auth, OpenCode models, Ollama models, and LM Studio's local server best-effort. It defaults to direct `codex:gpt-5.6-terra` and presents both `pi:openai-codex:gpt-5.6-terra` and `pi:openai-codex:gpt-5.6-sol` as concrete selectable candidates. Direct `codex:gpt-5.6-sol` is also selectable; direct GPT-5.6 routes require Codex CLI 0.144.0 or newer. The wizard maps discovered OpenCode options to `pi:opencode-go:<model>` for setup/preflight, and auto-adds local provider modules when a primary or fallback model uses `pi:ollama:*` or `pi:lmstudio:*`. Recover missing Pi OAuth with `mono-agent auth login <provider>` (and `--pi-auth-path` when required). Direct `opencode:<provider>:<model>` refs are supported only as hand-authored runtime backend config; do not present them as a first-class composer or init wizard selection. For local models also fill `providers.local` (e.g. an Ollama or LM Studio base URL plus model capabilities). Follow-up only if needed: continuous provider session per conversation (`runtime.session.mode: "continuous"`, default) versus stateless per-message.
|
|
22
22
|
|
|
23
23
|
## 2. Channels Of Communication
|
|
24
24
|
|
|
@@ -43,10 +43,10 @@ Fills one config section per choice: built-in channels use `webhook`, `openaiApi
|
|
|
43
43
|
Question:
|
|
44
44
|
|
|
45
45
|
```text
|
|
46
|
-
What
|
|
46
|
+
What exact text belongs in IDENTITY.md → ## Role, and does this folder already contain knowledge it must respect?
|
|
47
47
|
```
|
|
48
48
|
|
|
49
|
-
Fills: `context.identityPath` (default `./IDENTITY.md`), optional `context.soulPath`, `runtime.workspace`. `mono-agent init` detects `AGENTS.md`, `CLAUDE.md`, `README.md`, and `SOUL.md` and references them from
|
|
49
|
+
Fills: the `## Role` body in the one canonical identity file, `context.identityPath` (default `./IDENTITY.md`), optional `context.soulPath`, and `runtime.workspace`. `mono-agent init` detects `AGENTS.md`, `CLAUDE.md`, `README.md`, and `SOUL.md` and references them from a generated identity — keep those references rather than copying content. If `IDENTITY.md` already exists, preserve it unchanged, say the newly entered Role was not written, and tell the user to add or edit its `## Role` heading manually. Do not assume the heading already exists or store the unused answer elsewhere.
|
|
50
50
|
|
|
51
51
|
## 4. Skills
|
|
52
52
|
|
|
@@ -113,11 +113,17 @@ No prerequisites. No Ollama. SQLite is bundled.
|
|
|
113
113
|
|
|
114
114
|
**Tier 3 — journal (embeddings required):**
|
|
115
115
|
|
|
116
|
-
-
|
|
117
|
-
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
116
|
+
- Guided init asks for Ollama or LM Studio, service root, exact model, actual dimension,
|
|
117
|
+
and optional auth-env name. Treat this as separate from runtime chat-model discovery.
|
|
118
|
+
- Ollama default root `http://localhost:11434`: enumerate `/api/tags`, retain only
|
|
119
|
+
`/api/show` capabilities containing `embedding`, then prove `/api/embed`.
|
|
120
|
+
- LM Studio default root `http://localhost:1234`: retain exact `type: "embedding"`
|
|
121
|
+
entries from `/api/v1/models`, use their `key`, then prove `/v1/embeddings`.
|
|
122
|
+
- Hand-authored OpenAI remains supported but is not a guided local-memory choice.
|
|
123
|
+
- If typed discovery is inconclusive, ask for exact model + positive dimension, while
|
|
124
|
+
explaining that real readiness still must pass. Never substitute another provider.
|
|
125
|
+
- LM Studio is keyless when `apiKeyEnv` is omitted. If named, the variable must already
|
|
126
|
+
contain the token in the owner-only agent environment; missing declared auth is `waiting`.
|
|
121
127
|
|
|
122
128
|
Write:
|
|
123
129
|
|
|
@@ -129,13 +135,16 @@ Write:
|
|
|
129
135
|
"embeddings": {
|
|
130
136
|
"provider": "ollama",
|
|
131
137
|
"model": "nomic-embed-text:v1.5",
|
|
138
|
+
"endpoint": "http://localhost:11434",
|
|
132
139
|
"dim": 768
|
|
133
140
|
}
|
|
134
141
|
}
|
|
135
142
|
```
|
|
136
143
|
|
|
137
|
-
After writing, remind the user to run `mono-agent validate` (checks root writability
|
|
138
|
-
provider
|
|
144
|
+
After writing, remind the user to run `mono-agent validate` (checks root writability,
|
|
145
|
+
managed provider/model/dimension identity, provider-native model typing, real finite-vector
|
|
146
|
+
response, and dimension). Changing any semantic identity field on an existing root requires
|
|
147
|
+
stopping the agent and running config-aware `mono-agent memory rebuild --json`.
|
|
139
148
|
|
|
140
149
|
**Tier 4 — bujo (embeddings + chat model + consolidation):**
|
|
141
150
|
|
|
@@ -144,18 +153,24 @@ hybrid BM25+vector recall, entity graph, scheduled consolidation (decay + duplic
|
|
|
144
153
|
superseding), living `index.md`, and an empty retired `future-log.md` stub. Consolidation
|
|
145
154
|
is **auto-scheduled in-app** — no external cron or launchd setup needed.
|
|
146
155
|
|
|
147
|
-
- Ask: which embeddings provider/model? Use the same
|
|
156
|
+
- Ask: which embeddings provider/service-root/model/dimension/auth-env? Use the same
|
|
157
|
+
exclusive choices and real-probe contract as journal.
|
|
148
158
|
- Ask: which chat LLM provider/model for LLM pipelines?
|
|
149
159
|
- Ollama: local model string such as `qwen3.6:latest`; pull it first with
|
|
150
160
|
`ollama pull qwen3.6:latest`.
|
|
151
|
-
- agent-host: SDK runtime model reference such as `pi:openai-codex:gpt-5.
|
|
152
|
-
`executionMode: "sdk"`. Do not use CLI-backed refs such as `codex:gpt-5.
|
|
161
|
+
- agent-host: SDK runtime model reference such as `pi:openai-codex:gpt-5.6-terra` with
|
|
162
|
+
`executionMode: "sdk"`. Do not use CLI-backed refs such as `codex:gpt-5.6-terra`; they are
|
|
153
163
|
rejected for memory LLMs until runtimes can enforce no external actions.
|
|
154
164
|
- Ask: should per-turn intelligent capture be enabled (`writeMode: "capture"`), or only
|
|
155
165
|
deterministic rapid-log summaries (`append-host-summary`) plus scheduled consolidation?
|
|
156
166
|
- Ask: should we keep the default consolidation schedule (`0 */2 * * *`), customise the
|
|
157
167
|
cron expression, or disable scheduled consolidation?
|
|
158
168
|
|
|
169
|
+
The embeddings service and capture LLM are independent. Choosing LM Studio embeddings does
|
|
170
|
+
not move capture there; guided config keeps an explicit `agent-host` LLM, while an authored
|
|
171
|
+
Ollama `memory.llm` remains valid. Standalone advanced `memory-bujo migrate` is still
|
|
172
|
+
Ollama-only and outside guided init.
|
|
173
|
+
|
|
159
174
|
Write (embeddings + chat model):
|
|
160
175
|
|
|
161
176
|
```jsonc
|
|
@@ -180,7 +195,7 @@ For an agent-host memory LLM, write the `llm` block as:
|
|
|
180
195
|
```jsonc
|
|
181
196
|
"llm": {
|
|
182
197
|
"provider": "agent-host",
|
|
183
|
-
"model": "pi:openai-codex:gpt-5.
|
|
198
|
+
"model": "pi:openai-codex:gpt-5.6-terra",
|
|
184
199
|
"executionMode": "sdk"
|
|
185
200
|
}
|
|
186
201
|
```
|
|
@@ -209,7 +224,7 @@ See `docs/memory/index.md` for the full tier table, config shapes, and CLI subco
|
|
|
209
224
|
Question:
|
|
210
225
|
|
|
211
226
|
```text
|
|
212
|
-
Should runtime commands run inside
|
|
227
|
+
Should Pi-owned runtime commands run inside the native mono-agent sandbox? Direct Codex uses its own native sandbox and rejects this block; Claude and direct OpenCode reject it because their provider-owned tools cannot enforce the exact `srt` scopes.
|
|
213
228
|
|
|
214
229
|
1. No sandbox for the first pass
|
|
215
230
|
2. Native sandbox, no network (fail closed)
|
|
@@ -8,8 +8,8 @@ Every framework capability and how a composed agent reaches it. This table is th
|
|
|
8
8
|
| --- | --- | --- |
|
|
9
9
|
| Model backends: claude (sdk/cli), codex (cli direct fallback), pi sdk providers (OpenAI, OpenAI-Codex preferred when Pi auth exists, Copilot, OpenRouter, OpenCode-through-Pi, Ollama, LM Studio, ...), plus hand-authored opencode runtime refs (cli, `opencode:<provider>:<model>` via the OpenCode server) | config | `runtime.model` |
|
|
10
10
|
| Backup models on retryable provider failure | config | `runtime.fallbackModels` |
|
|
11
|
-
| Execution mode (sdk/cli), effort, max turns, workspace | config + cli | `runtime.executionMode`, `runtime.effort` (`mono-agent init --effort <level
|
|
12
|
-
| Tool-permission posture for CLI backends | config | `runtime.permissionMode` |
|
|
11
|
+
| Execution mode (sdk/cli), effort, max turns, workspace | config + cli | `runtime.executionMode`, `runtime.effort` (`mono-agent init --effort <level>`; unsupported for direct OpenCode SDK 1.x), `runtime.maxTurns`, `runtime.workspace` |
|
|
12
|
+
| Tool-permission posture for CLI backends (direct OpenCode asks/rejects unanswered by default; configure explicitly) | config | `runtime.permissionMode` |
|
|
13
13
|
| Continuous provider sessions with idle eviction | config | `runtime.session.{mode,idleTimeoutMs}` |
|
|
14
14
|
| Local providers (Ollama / LM Studio / OpenAI-compatible) | config | `providers.local[]` |
|
|
15
15
|
| Pi OAuth credentials | config | `providers.piAuthPath` |
|
|
@@ -23,19 +23,20 @@ Every framework capability and how a composed agent reaches it. This table is th
|
|
|
23
23
|
|
|
24
24
|
| Capability | Coverage | Where |
|
|
25
25
|
| --- | --- | --- |
|
|
26
|
-
| Identity + optional soul documents | config | `context.identityPath`, `context.soulPath` |
|
|
26
|
+
| Identity + optional soul documents; wizard Role has one explicit destination and created/preserved outcome | config + cli | `context.identityPath`, `context.soulPath`; guided Role is `IDENTITY.md` → `## Role`, and an existing identity is never overwritten |
|
|
27
27
|
| Selected skills from a skills root | config | `context.skillsRoot`, `context.selectedSkills` |
|
|
28
|
+
| Generated project configuration skills with progressive disclosure | config + cli | init selects `mono-agent-configure` + `mono-agent-memory` under `./skills` with `context.skillDisclosure: "index"`; drift: `mono-agent install-skill --project --check\|--update` |
|
|
28
29
|
| Per-skill byte cap | config | `context.skillMaxBytes` |
|
|
29
|
-
| Conversation history (in-memory
|
|
30
|
+
| Conversation history (bounded in-memory) | auto | 12 messages by default; twice a positive `runtime.maxTurns`; custom store via code |
|
|
30
31
|
| Lite memory (FTS keyword recall + rapid-log capture; no external deps) | config | `memory.mode: "lite"`, `path`, `maxBytes`, `writeMode` |
|
|
31
|
-
| Journal memory (hybrid recall BM25+vector + salience decay; needs configured embeddings) | config | `memory.mode: "journal"`, `path`, `memory.embeddings.{provider,model,dim}` (`provider: "ollama" | "openai"
|
|
32
|
-
| BuJo memory (journal + LLM capture/reconcile ADD/UPDATE/SUPERSEDE/NOOP + entity graph + auto-scheduled consolidation; needs embeddings + an app-level `memory.llm`) | config | `memory.mode: "bujo"`, `path
|
|
32
|
+
| Journal memory (hybrid recall BM25+vector + salience decay; needs configured embeddings) | config | `memory.mode: "journal"`, `path`, `memory.embeddings.{provider,endpoint,model,dim,apiKeyEnv}` (`provider: "ollama" | "lmstudio" | "openai"`; exclusive, no cross-provider fallback) |
|
|
33
|
+
| BuJo memory (journal + LLM capture/reconcile ADD/UPDATE/SUPERSEDE/NOOP + entity graph + auto-scheduled consolidation; needs embeddings + an app-level `memory.llm`) | config | `memory.mode: "bujo"`, `path`; selected Ollama/LM Studio/OpenAI embeddings are independent from explicit `memory.llm` with `provider: "ollama"` (`model`, optional `endpoint`) or `provider: "agent-host"` (`model` is an SDK runtime model ref, optional `executionMode: "sdk"`) — see `docs/memory/index.md` |
|
|
33
34
|
| BuJo consolidation auto-scheduler (lightweight decay + duplicate superseding; in-app, no external cron needed) | config | `memory.consolidation.{enabled,cron}` (default `0 */2 * * *`); env `MONO_AGENT_MEMORY_CONSOLIDATION_CRON`, `MONO_AGENT_MEMORY_CONSOLIDATION_ENABLED` |
|
|
34
|
-
| Memory out-of-band maintenance CLI (rebuild/recall/index/legacy reflect/migrate) | cli | `memory-bujo <subcommand> <root>`; opt-in `MONO_AGENT_MEMORY_EMBEDDINGS_PROVIDER`/`_MODEL
|
|
35
|
-
| Config-aware memory preview CLI (stats/today/show/search/top
|
|
36
|
-
| Memory liveness check (
|
|
35
|
+
| Memory out-of-band maintenance CLI (rebuild/recall/index/legacy reflect/migrate) | cli | `memory-bujo <subcommand> <root>`; opt-in `MONO_AGENT_MEMORY_EMBEDDINGS_PROVIDER` (`ollama`/`lmstudio`/`openai`), `_MODEL`, and `_DIM` for semantic recall; advanced `migrate` remains Ollama-only, outside guided init, and requires `MONO_AGENT_MEMORY_LLM_MODEL` (optional `_ENDPOINT`) |
|
|
36
|
+
| Config-aware memory preview CLI (stats/today/show/search/top plus metadata-only audit; local search warns and falls back to FTS-only when embeddings are down) | cli | `mono-agent memory stats\|today\|show <date>\|search <query>\|top\|audit [--limit <n>] [--json]` |
|
|
37
|
+
| Memory liveness check (managed tier/provider/model/dimension identity; provider-native typed discovery plus real finite-vector/dimension probe for Ollama or LM Studio; declared auth env; BuJo LLM config + consolidation cadence; no cross-provider fallback) | cli | `mono-agent validate` |
|
|
37
38
|
| Host summaries appended after runs | config | `memory.writeMode: "append-host-summary"` |
|
|
38
|
-
| Auto-provisioned read-only `MemoryRecall` tool
|
|
39
|
+
| Auto-provisioned read-only `MemoryRecall` tool exposed for every configured memory tier; no chat LLM | config | `config.memory.recallTool.enabled` (`MONO_AGENT_MEMORY_RECALL_TOOL_ENABLED`, default on; explicit false opts out) |
|
|
39
40
|
|
|
40
41
|
## Tools, MCP, sandbox
|
|
41
42
|
|
|
@@ -45,7 +46,7 @@ Every framework capability and how a composed agent reaches it. This table is th
|
|
|
45
46
|
| Tool allow/deny lists (deny wins, even under allow-all; pi doesn't deny external MCP tools) | config | `tools.allowedTools`, `tools.disallowedTools` |
|
|
46
47
|
| MCP servers (stdio/sse/http) from a JSON file | config | `tools.mcpConfigPath` |
|
|
47
48
|
| Adapter-derived send tools for enabled Slack/Telegram adapters | config | auto-available under allow-all once the channel is enabled; a **specific** `tools.allowedTools` must include `SlackSendMessage` / `TelegramSendMessage`; valid `slack.*` / `telegram.*` config and existing adapter allowlists provide credentials and destination bounds |
|
|
48
|
-
| Sandbox on/off + srt engine | config | `sandbox.mode` |
|
|
49
|
+
| Sandbox on/off + srt engine (Pi-owned tools; direct Codex has its own sandbox, Claude/direct OpenCode reject native mono policy) | config | `sandbox.mode` |
|
|
49
50
|
| Network policy (none/localhost/allowlist/all) | config | `sandbox.network.{mode,allowlist}` |
|
|
50
51
|
| Filesystem scopes (readable/writable roots, deny-write globs) | config | `sandbox.readableRoots`, `sandbox.writableRoots`, `sandbox.denyWrite` |
|
|
51
52
|
| Fallback behavior when srt is unavailable | config | `sandbox.fallback`, `sandbox.unsafeAllowHostProcess` |
|
|
@@ -77,9 +78,10 @@ Every framework capability and how a composed agent reaches it. This table is th
|
|
|
77
78
|
| Trace-source registry (heartbeat manifests `mono-agent status` reads) | config | `traceability.{registryDir,sourceId,sourceLabel,heartbeatMs,staleAfterMs,globalDiscovery}` |
|
|
78
79
|
| Phoenix trace viewer (OTLP exporter; local JSONL artifacts are the fallback) | config | `observability.exporters` (phoenix entry) |
|
|
79
80
|
| Operator console (live chat with thinking/tool/telemetry insight, run replay, config view) | cli | `mono-agent tui [--agent <label>]`; agents serve the `tui` stream endpoint by default (`tui.enabled`, loopback) |
|
|
81
|
+
| Managed proposal-only configuration conversation | cli + tool | macOS `mono-agent tui --configure` attaches to the authoritative background agent; `/configure`; separate configuration/ordinary conversation ids; host-gated `ProposeAgentConfiguration`; approval restarts and waits for readiness, failed start rolls files/agent back. `--local` is ordinary chat only; off macOS configuration is manual |
|
|
80
82
|
| Session Recorder web PWA (read-only run browser) | cli | `mono-agent web [--host] [--port] [--no-open] [--allow-non-loopback] [--include-memory]`; consumes the default-on `live` relay and local artifacts; memory runs are opt-in |
|
|
81
83
|
| Setup presets (saved answer-sets: generate config + `.env.example` + checklist) | cli | `mono-agent presets list\|show <id>`, `mono-agent init --preset <id> --yes` (`recipes`/`--recipe` deprecated aliases) |
|
|
82
|
-
| Interactive setup wizard (preset/custom; walks model→channels→memory→tools→sandbox→observability) | cli | `mono-agent init` (no flags, on a TTY; `setup` alias) |
|
|
84
|
+
| Interactive setup wizard (preset/custom; exact `IDENTITY.md` → `## Role` prompt/outcome; walks model→channels→memory→tools→sandbox→observability; Journal/BuJo explicitly choose Ollama or LM Studio service root/model/dimension/optional auth env using typed discovery and a real probe; macOS starts the background agent before temporary configuration) | cli | `mono-agent init` (no flags, on a TTY; `setup` alias); manual embedding entry still requires readiness probe; flags/non-TTY stay scaffold-only; unsupported platforms use manual configuration/foreground start/ordinary TUI |
|
|
83
85
|
| Tools reporting + no-tools guardrail (allow-all → `All tools allowed`; explicit empty `allowedTools: []` → `waiting`; unknown-tool "did you mean"; send-tool/channel cross-checks) | cli | part of `mono-agent validate`/`doctor`; the wizard's tools step |
|
|
84
86
|
| Resolved config view (every field tagged env/json/default) | cli | `mono-agent config` |
|
|
85
87
|
| Scaffold / validate / start / install-skill | cli | `mono-agent init [--model <ref>] [--fallback-models <csv>] [--effort <level>] [--auth]\|validate [--consumer <path>]\|config\|presets\|start\|install-skill` |
|
|
@@ -50,8 +50,8 @@ 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
|
| 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` |
|
|
52
52
|
| Memory engine (all tiers: lite/journal/bujo) | `@mono-agent/memory/bujo` | `BujoMemoryStore` — tier-aware: FTS recall (lite), hybrid recall + decay (journal), LLM capture/reconcile + entity graph + scheduled consolidation (bujo) |
|
|
53
|
-
| Embedding providers | `@mono-agent/memory/search` | Ollama/OpenAI embedding providers used by the store subpath for vector recall |
|
|
54
|
-
| Recall tool surface | `@mono-agent/agent-app` (bundled) | Auto-provisions
|
|
53
|
+
| 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 |
|
|
54
|
+
| 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 |
|
|
55
55
|
|
|
56
56
|
Mono-agent selected skills are not auto-selected by description. The host chooses `context.selectedSkills`, and the harness loads those exact bodies.
|
|
57
57
|
|
|
@@ -18,7 +18,7 @@ Flow, check whether one of these fits and adapt it. Verify every key against
|
|
|
18
18
|
|
|
19
19
|
```json
|
|
20
20
|
{
|
|
21
|
-
"runtime": { "model": "
|
|
21
|
+
"runtime": { "model": "pi:openai-codex:gpt-5.6-terra" },
|
|
22
22
|
"telegram": { "enabled": true, "botToken": "...", "allowedChatIds": ["123456789"] },
|
|
23
23
|
"memory": {
|
|
24
24
|
"mode": "bujo", "path": "./.mono-agent/memory", "writeMode": "capture",
|
|
@@ -38,7 +38,7 @@ Flow, check whether one of these fits and adapt it. Verify every key against
|
|
|
38
38
|
|
|
39
39
|
```json
|
|
40
40
|
{
|
|
41
|
-
"runtime": { "model": "
|
|
41
|
+
"runtime": { "model": "pi:openai-codex:gpt-5.6-terra" },
|
|
42
42
|
"slack": { "enabled": true, "botToken": "xoxb-...", "appToken": "xapp-...", "allowedChannelIds": ["C012345"], "botUserIds": ["U012345"], "mentionTextAliases": ["@agent"] },
|
|
43
43
|
"tools": { "allowedTools": ["Read", "Grep", "SlackSendMessage", "deployTool"], "mcpConfigPath": "./mcp.json" },
|
|
44
44
|
"concurrency": { "maxConcurrentRuns": 4, "maxPendingRuns": 8 }
|
|
@@ -71,10 +71,10 @@ Flow, check whether one of these fits and adapt it. Verify every key against
|
|
|
71
71
|
```json
|
|
72
72
|
{
|
|
73
73
|
"runtime": { "model": "claude:claude-sonnet-4-6", "session": { "mode": "continuous", "idleTimeoutMs": 1800000 } },
|
|
74
|
-
"openaiApi": { "enabled": true, "host": "0.0.0.0", "port": 4040, "basePath": "/v1", "allowNonLoopback": true, "modelId": "my-agent"
|
|
74
|
+
"openaiApi": { "enabled": true, "host": "0.0.0.0", "port": 4040, "basePath": "/v1", "allowNonLoopback": true, "modelId": "my-agent" }
|
|
75
75
|
}
|
|
76
76
|
```
|
|
77
|
-
**Steps:** `mono-agent init` → add `openaiApi` (set `allowNonLoopback`, `
|
|
77
|
+
**Steps:** `mono-agent init` → add `openaiApi` (set `allowNonLoopback`, `modelId`) + continuous session → put `MONO_AGENT_OPENAI_API_KEY` in an owner-only `.env` → `validate` → `start` → in Open WebUI add an OpenAI connection at `http://host:4040/v1` with the bearer.
|
|
78
78
|
**Smoke:** `curl /v1/models` returns `my-agent`; two calls with the same `X-OpenWebUI-Chat-Id` resume the session and stream via SSE.
|
|
79
79
|
|
|
80
80
|
## 5. Webhook automation (sync + async)
|
|
@@ -164,13 +164,13 @@ const ext = createCollaboratorToolRuntimeExtension({
|
|
|
164
164
|
|
|
165
165
|
```json
|
|
166
166
|
{
|
|
167
|
-
"runtime": { "model": "
|
|
167
|
+
"runtime": { "model": "pi:openai-codex:gpt-5.6-terra" },
|
|
168
168
|
"tools": { "allowedTools": ["*"] },
|
|
169
169
|
"sandbox": { "mode": "native", "network": { "mode": "localhost" }, "readableRoots": ["."], "writableRoots": ["."], "denyWrite": [".env", ".env.*", ".git/config", ".git/hooks/**"], "fallback": "fail-closed" }
|
|
170
170
|
}
|
|
171
171
|
```
|
|
172
172
|
**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`.
|
|
173
|
-
**Smoke:** ask it to read a file + run Bash (works), then fetch an external URL or write `.env` (both blocked in the artifact).
|
|
173
|
+
**Smoke:** ask it to read a file + run Bash (works), then fetch an external URL or write `.env` (both blocked in the artifact). Keep every primary/fallback/trigger model on Pi; direct Codex, Claude, and direct OpenCode reject this mono-agent sandbox policy.
|
|
174
174
|
|
|
175
175
|
## 10. Phoenix-observed agent with the TUI
|
|
176
176
|
**For:** an agent builder evaluating runs in a tracing dashboard.
|
|
@@ -212,6 +212,7 @@ const ext = createCollaboratorToolRuntimeExtension({
|
|
|
212
212
|
}
|
|
213
213
|
```
|
|
214
214
|
**Steps:** `ollama pull gemma4:31b` → `mono-agent init --model claude:claude-sonnet-4-6 --fallback-models pi:openai-codex:gpt-5.5,pi:ollama:gemma4:31b` → add `providers.local` + `piNative.piSessionsRoot` → `validate` → `start`.
|
|
215
|
+
**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`.
|
|
215
216
|
**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.
|
|
216
217
|
|
|
217
218
|
## 13. Personal Telegram assistant with Supermemory
|
|
@@ -231,7 +232,7 @@ const ext = createCollaboratorToolRuntimeExtension({
|
|
|
231
232
|
}
|
|
232
233
|
}
|
|
233
234
|
```
|
|
234
|
-
**Steps:** run `supermemory-server`, save its `sm_...` key in `.env`,
|
|
235
|
+
**Steps:** install the exact `@mono-agent/memory-supermemory` version matching agent-app, run `supermemory-server`, save its `sm_...` key in `.env`, add the explicit memory block plus Telegram token/chat id, `validate`, `start`.
|
|
235
236
|
**Smoke:** send a fact, wait for ingestion, then ask a paraphrased question; confirm the run shows `MemoryRecall` returning Supermemory hits.
|
|
236
237
|
|
|
237
238
|
## 14. Fully local LM Studio agent
|
|
@@ -80,7 +80,7 @@ pnpm run test:demo
|
|
|
80
80
|
|
|
81
81
|
| Surface | Smoke |
|
|
82
82
|
| --- | --- |
|
|
83
|
-
| TUI | Start the host and complete one
|
|
83
|
+
| TUI | Start the host, connect with ordinary `mono-agent tui`, and complete one real prompt against the running responder. |
|
|
84
84
|
| Telegram | Send one allowed chat message and verify the reply. |
|
|
85
85
|
| Slack | Send one allowed DM or channel message and verify formatting. |
|
|
86
86
|
| Adapter send tools | When `SlackSendMessage` / `TelegramSendMessage` are available (allow-all, or an explicit `tools.allowedTools` entry) with the channel enabled, call them from a non-Slack/Telegram surface such as TUI, cron, or OpenAI API to an allowed destination and verify delivery. |
|
|
@@ -90,8 +90,8 @@ pnpm run test:demo
|
|
|
90
90
|
| Webhook | `curl` the invocation path and inspect the response body/status. |
|
|
91
91
|
| Cron | Run a one-off scheduled invocation or wait for one tick. |
|
|
92
92
|
| Observability | Confirm a run writes a redacted JSONL artifact; if an `observability.exporters` Phoenix entry is set, confirm the trace appears in Phoenix. |
|
|
93
|
-
| Memory recall tool | With `memory.recallTool.enabled`
|
|
94
|
-
| Semantic memory search | With `memory.embeddings` set
|
|
93
|
+
| Memory recall tool | With any memory tier configured (`memory.recallTool.enabled` defaults on), ask the agent to recall an old note and confirm `MemoryRecall` appears separately from action-tool allowlists and returns it. |
|
|
94
|
+
| 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. |
|
|
95
95
|
|
|
96
96
|
## Failure Handling
|
|
97
97
|
|