@mono-agent/agent-app 0.13.0 → 0.14.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 +163 -32
- package/dist/adapter-send-tools-main.js +0 -1
- package/dist/adapter-send-tools-main.js.map +1 -1
- package/dist/adapter-send-tools.d.ts +8 -5
- package/dist/adapter-send-tools.d.ts.map +1 -1
- package/dist/adapter-send-tools.js +133 -287
- package/dist/adapter-send-tools.js.map +1 -1
- package/dist/app-controller-channels.d.ts.map +1 -1
- package/dist/app-controller-channels.js +2 -1
- 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 +1 -5
- package/dist/app-controller-continuation.js.map +1 -1
- package/dist/app-controller-maintenance.d.ts +2 -1
- package/dist/app-controller-maintenance.d.ts.map +1 -1
- package/dist/app-controller-maintenance.js +64 -1
- package/dist/app-controller-maintenance.js.map +1 -1
- package/dist/app-controller-responder.d.ts.map +1 -1
- package/dist/app-controller-responder.js +4 -1
- package/dist/app-controller-responder.js.map +1 -1
- package/dist/app-controller-utils.js +1 -1
- package/dist/app-controller-utils.js.map +1 -1
- package/dist/background-environment.d.ts +1 -0
- package/dist/background-environment.d.ts.map +1 -1
- package/dist/background-environment.js +1 -0
- package/dist/background-environment.js.map +1 -1
- package/dist/background-runtime.d.ts +13 -2
- package/dist/background-runtime.d.ts.map +1 -1
- package/dist/background-runtime.js +27 -3
- package/dist/background-runtime.js.map +1 -1
- package/dist/background.d.ts +26 -1
- package/dist/background.d.ts.map +1 -1
- package/dist/background.js +226 -34
- package/dist/background.js.map +1 -1
- package/dist/channel-drivers/cron.js +8 -1
- package/dist/channel-drivers/cron.js.map +1 -1
- package/dist/channel-drivers/native-notify.d.ts +2 -0
- package/dist/channel-drivers/native-notify.d.ts.map +1 -1
- package/dist/channel-drivers/native-notify.js +14 -2
- package/dist/channel-drivers/native-notify.js.map +1 -1
- package/dist/channel-drivers/slack.d.ts.map +1 -1
- package/dist/channel-drivers/slack.js +49 -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 +7 -18
- package/dist/channel-drivers/telegram.js.map +1 -1
- package/dist/channel-drivers/tui.d.ts.map +1 -1
- package/dist/channel-drivers/tui.js +8 -0
- package/dist/channel-drivers/tui.js.map +1 -1
- package/dist/cli-args.d.ts +8 -2
- package/dist/cli-args.d.ts.map +1 -1
- package/dist/cli-args.js +48 -27
- package/dist/cli-args.js.map +1 -1
- package/dist/cli-background-command.d.ts.map +1 -1
- package/dist/cli-background-command.js +89 -14
- package/dist/cli-background-command.js.map +1 -1
- package/dist/cli-commands.d.ts.map +1 -1
- package/dist/cli-commands.js +0 -14
- package/dist/cli-commands.js.map +1 -1
- package/dist/cli-help.d.ts.map +1 -1
- package/dist/cli-help.js +1 -7
- package/dist/cli-help.js.map +1 -1
- package/dist/cli-runs-command.d.ts +0 -3
- package/dist/cli-runs-command.d.ts.map +1 -1
- package/dist/cli-runs-command.js +1 -5
- package/dist/cli-runs-command.js.map +1 -1
- package/dist/config-reference.d.ts.map +1 -1
- package/dist/config-reference.js +3 -4
- package/dist/config-reference.js.map +1 -1
- package/dist/doctor.js +1 -2
- package/dist/doctor.js.map +1 -1
- package/dist/interaction-bridge.d.ts +5 -22
- package/dist/interaction-bridge.d.ts.map +1 -1
- package/dist/interaction-bridge.js +251 -141
- package/dist/interaction-bridge.js.map +1 -1
- package/dist/launchd.d.ts +33 -1
- package/dist/launchd.d.ts.map +1 -1
- package/dist/launchd.js +129 -2
- package/dist/launchd.js.map +1 -1
- package/dist/modules/catalog.js +1 -1
- package/dist/modules/catalog.js.map +1 -1
- package/dist/modules/known-tools.d.ts +1 -1
- package/dist/modules/known-tools.d.ts.map +1 -1
- package/dist/modules/known-tools.js +0 -3
- package/dist/modules/known-tools.js.map +1 -1
- package/dist/run-history.d.ts +6 -2
- package/dist/run-history.d.ts.map +1 -1
- package/dist/run-history.js +476 -96
- package/dist/run-history.js.map +1 -1
- package/dist/ui.js +1 -1
- package/dist/ui.js.map +1 -1
- package/dist/wizard/prompts.d.ts.map +1 -1
- package/dist/wizard/prompts.js +3 -4
- package/dist/wizard/prompts.js.map +1 -1
- package/dist/wizard/run.js +3 -3
- package/dist/wizard/run.js.map +1 -1
- package/package.json +15 -15
- package/schema/mono-agent.config.schema.json +2 -2
- package/skills/mono-agent-composer/SKILL.md +5 -5
- package/skills/mono-agent-composer/references/config-blueprint.md +2 -2
- package/skills/mono-agent-composer/references/feature-coverage.md +3 -3
- package/skills/mono-agent-composer/references/package-map.md +1 -1
- package/skills/mono-agent-composer/references/playbooks.md +1 -1
- package/skills/mono-agent-composer/references/validation.md +20 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mono-agent/agent-app",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.0",
|
|
4
4
|
"description": "Config-first mono-agent host: builds a responder and starts every configured communication channel and traceability from one mono-agent.config.json.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "GPL-3.0-only",
|
|
@@ -37,20 +37,20 @@
|
|
|
37
37
|
"@clack/prompts": "^1.7.0",
|
|
38
38
|
"@earendil-works/pi-ai": "0.80.6",
|
|
39
39
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
40
|
-
"@mono-agent/agent-contracts": "0.
|
|
41
|
-
"@mono-agent/agent-harness": "0.
|
|
42
|
-
"@mono-agent/config": "0.
|
|
43
|
-
"@mono-agent/cron-adapter": "0.
|
|
44
|
-
"@mono-agent/operator-adapter": "0.
|
|
45
|
-
"@mono-agent/memory": "0.
|
|
46
|
-
"@mono-agent/observability": "0.
|
|
47
|
-
"@mono-agent/openai-api-adapter": "0.
|
|
48
|
-
"@mono-agent/runtime-adapter": "0.
|
|
49
|
-
"@mono-agent/slack-adapter": "0.
|
|
50
|
-
"@mono-agent/telegram-adapter": "0.
|
|
51
|
-
"@mono-agent/tui": "0.
|
|
52
|
-
"@mono-agent/web": "0.
|
|
53
|
-
"@mono-agent/webhook-adapter": "0.
|
|
40
|
+
"@mono-agent/agent-contracts": "0.14.0",
|
|
41
|
+
"@mono-agent/agent-harness": "0.14.0",
|
|
42
|
+
"@mono-agent/config": "0.14.0",
|
|
43
|
+
"@mono-agent/cron-adapter": "0.14.0",
|
|
44
|
+
"@mono-agent/operator-adapter": "0.14.0",
|
|
45
|
+
"@mono-agent/memory": "0.14.0",
|
|
46
|
+
"@mono-agent/observability": "0.14.0",
|
|
47
|
+
"@mono-agent/openai-api-adapter": "0.14.0",
|
|
48
|
+
"@mono-agent/runtime-adapter": "0.14.0",
|
|
49
|
+
"@mono-agent/slack-adapter": "0.14.0",
|
|
50
|
+
"@mono-agent/telegram-adapter": "0.14.0",
|
|
51
|
+
"@mono-agent/tui": "0.14.0",
|
|
52
|
+
"@mono-agent/web": "0.14.0",
|
|
53
|
+
"@mono-agent/webhook-adapter": "0.14.0",
|
|
54
54
|
"undici": "8.7.0",
|
|
55
55
|
"zod": "^4.4.3"
|
|
56
56
|
},
|
|
@@ -1220,7 +1220,7 @@
|
|
|
1220
1220
|
"additionalProperties": false,
|
|
1221
1221
|
"properties": {
|
|
1222
1222
|
"host": {
|
|
1223
|
-
"description": "
|
|
1223
|
+
"description": "Bind host for the app-owned AskUser/tool-progress bridge. Defaults to loopback; keep it local because non-loopback values are not rejected.",
|
|
1224
1224
|
"examples": [
|
|
1225
1225
|
"127.0.0.1"
|
|
1226
1226
|
],
|
|
@@ -1242,7 +1242,7 @@
|
|
|
1242
1242
|
"additionalProperties": false,
|
|
1243
1243
|
"properties": {
|
|
1244
1244
|
"timeoutMs": {
|
|
1245
|
-
"description": "Maximum wait for one AskUser
|
|
1245
|
+
"description": "Maximum wait for one AskUser interaction (one to five questions).",
|
|
1246
1246
|
"examples": [
|
|
1247
1247
|
600000
|
|
1248
1248
|
],
|
|
@@ -9,7 +9,7 @@ Construct a working mono-agent in the user's current folder — empty or already
|
|
|
9
9
|
|
|
10
10
|
## Authoritative Sources — Search, Then References, Never Package Source
|
|
11
11
|
|
|
12
|
-
When the `
|
|
12
|
+
When the `mono_agent_docs` MCP tool is available, use it **before** opening files or following website links. Its version-matched offline corpus contains the canonical public documentation plus the `references/*.md` bundled beside this skill. Start with `{"action":"search","query":"...","scope":"composer"}` for "can it do X?", "what is the key for Y?", and "how is Z configured?"; use `scope: "all"` for broader conceptual or troubleshooting questions. Search excerpts are a map, not the complete answer: call `{"action":"read","target":"<readTarget>"}` on the best result, follow the returned `internalLinks` with `action: "read"`, and use exact `previousTarget` / `nextTarget` actions when a long section continues. Composer-scoped content has the same authority as the bundled references.
|
|
13
13
|
|
|
14
14
|
The bundled `references/*.md` remain the source of truth and the fallback when the MCP tool is unavailable. They are maintained in lockstep with the framework and are **complete for configuration and capabilities**. If the tool's `docsVersion` differs from the installed `mono-agent` version, use search for general context but verify version-specific config and CLI details against these local references. Reformulate a weak search once before falling back; never compensate by grepping package source.
|
|
15
15
|
|
|
@@ -17,13 +17,13 @@ Do **not** read or grep the `@mono-agent` TypeScript/package source — `package
|
|
|
17
17
|
|
|
18
18
|
- `references/feature-coverage.md` is the **exhaustive** map of every feature to a `config` key, `cli` flag, `auto` behavior, or `code`-only escape hatch. If a capability is listed `config`/`cli`, use that key/flag verbatim. If it is **not in the table, or is marked `code`**, it is not reachable through `mono-agent.config.json` — say so plainly and name the escape hatch. Absence from the table means "not configurable," never "go check the source."
|
|
19
19
|
- The real exception: if the user is **modifying the framework itself** (changing `@mono-agent` package code), that is framework development, not composing an agent — outside this skill. Only then is reading `packages/*/src` correct.
|
|
20
|
-
- The published docs site (<https://mono-agent-docs.vercel.app/>) is the human-facing companion. Do not browse it just to discover links: `
|
|
20
|
+
- The published docs site (<https://mono-agent-docs.vercel.app/>) is the human-facing companion. Do not browse it just to discover links: `mono_agent_docs` searches, expands, and resolves internal links offline, and the bundled references work when the tool is absent.
|
|
21
21
|
|
|
22
22
|
**Red flags — STOP, you are about to grep source you should not:**
|
|
23
23
|
|
|
24
24
|
| Thought | Reality |
|
|
25
25
|
| --- | --- |
|
|
26
|
-
| "Let me browse the docs navigation until I find the right page." | Search `
|
|
26
|
+
| "Let me browse the docs navigation until I find the right page." | Search with `mono_agent_docs`, read the best `readTarget`, then follow its structured `internalLinks`. |
|
|
27
27
|
| "Let me verify the key name against the source." | The references give the exact key. Trust them; don't re-derive from source. |
|
|
28
28
|
| "The references might be incomplete — I'll double-check `packages/.../src`." | `feature-coverage.md` is exhaustive for config/CLI. Not in it = not configurable. |
|
|
29
29
|
| "I'll confirm the docs and source agree." | You are composing an agent, not auditing the framework. The references are the contract. |
|
|
@@ -31,7 +31,7 @@ Do **not** read or grep the `@mono-agent` TypeScript/package source — `package
|
|
|
31
31
|
|
|
32
32
|
## Operating Rules
|
|
33
33
|
|
|
34
|
-
- Answer capability/config questions
|
|
34
|
+
- Answer capability/config questions through `mono_agent_docs`: search with `scope: "composer"`, read the best target, and continue through structured links/windows as needed. Fall back to the bundled `references/*.md` (authoritative and complete) — never grep or read the `@mono-agent` package source to compose an agent. See "Authoritative Sources" above.
|
|
35
35
|
|
|
36
36
|
- The deliverable is a folder that works: `mono-agent.config.json` + `IDENTITY.md` (+ optional `skills/`, `mcp.json`), validated and started — not a tutorial.
|
|
37
37
|
- Start by discovering the intended agent product, not by naming packages.
|
|
@@ -105,7 +105,7 @@ Config-first covers one responder served over any combination of the seven chann
|
|
|
105
105
|
- `references/package-map.md` — which package owns what, for programmatic composition and troubleshooting.
|
|
106
106
|
- `references/validation.md` — validation commands and per-channel smoke tests; read before claiming the agent works.
|
|
107
107
|
|
|
108
|
-
`
|
|
108
|
+
`mono_agent_docs` is the primary discovery and reading interface when present; its composer-scoped results are built from these same versioned references. Always progress from `action: "search"` to `action: "read"` before concluding from a short hit, and use the response's exact navigation actions rather than inventing chunk or page locations. The bundled `references/*` files remain authoritative and self-sufficient when the tool is absent or version-mismatched, so use them rather than package source or a remote site. The published documentation site at <https://mono-agent-docs.vercel.app/> is the human-facing companion, not an AI retrieval dependency.
|
|
109
109
|
|
|
110
110
|
## Done Criteria
|
|
111
111
|
|
|
@@ -158,7 +158,7 @@ new agent.
|
|
|
158
158
|
// NodeRepl shares state only inside one run and uses the same sandbox policy
|
|
159
159
|
// as Bash.
|
|
160
160
|
|
|
161
|
-
// Human-in-the-loop bridge: blocking AskUser
|
|
161
|
+
// Human-in-the-loop bridge: structured blocking AskUser plus
|
|
162
162
|
// run-scoped project-MCP progress. It auto-starts when either ask tool is
|
|
163
163
|
// allowed, this block or an interaction env override is configured, or
|
|
164
164
|
// interaction.progress.enabled resolves true while
|
|
@@ -409,7 +409,7 @@ mono-agent config # resolved config field-by-field, each value tagged env/
|
|
|
409
409
|
mono-agent validate [--preset <id>] [--consumer <path>] # per-section report; --preset also checks the preset's capabilities
|
|
410
410
|
mono-agent start # traceability + every configured channel
|
|
411
411
|
mono-agent restart # apply config edits (config is JSON-first; restart to re-apply)
|
|
412
|
-
mono-agent restart --clear-sessions # restart AND purge persisted pi sessions (fresh start; durable memory kept)
|
|
412
|
+
mono-agent restart --clear-sessions # restart AND purge persisted pi sessions (fresh start; durable memory kept)
|
|
413
413
|
```
|
|
414
414
|
|
|
415
415
|
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.
|
|
@@ -29,7 +29,7 @@ Every framework capability and how a composed agent reaches it. This table is th
|
|
|
29
29
|
| Public name plus identity and optional soul documents; wizard Role has one explicit destination and created/preserved outcome | config + cli | `agent.name`, `context.identityPath`, `context.soulPath`; guided Role is `IDENTITY.md` → `## Role`, and an existing identity is never overwritten | `agent.public-name`, `context.identity`, `context.soul` |
|
|
30
30
|
| Selected skills from a skills root | config | `context.skillsRoot`, `context.selectedSkills` | `skills.selected-activation` |
|
|
31
31
|
| 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` | `app.managed-project-skills` |
|
|
32
|
-
| Version-matched semantic documentation companion for the global composer skill | cli + tool | `mono-agent install-skill` pairs `mono-agent-docs` with every available Codex/Claude target by default; `--no-docs-mcp` opts out;
|
|
32
|
+
| Version-matched semantic documentation companion for the global composer skill | cli + tool | `mono-agent install-skill` pairs `mono-agent-docs` with every available Codex/Claude target by default; `--no-docs-mcp` opts out; `mono_agent_docs` uses `action: "search"` for ranked 2–3k excerpts and `action: "read"` for anchored windows up to 10k, internal-link targets, and exact continuation actions | — |
|
|
33
33
|
| Per-skill byte cap | config | `context.skillMaxBytes` | `skills.byte-capping` |
|
|
34
34
|
| Conversation history (owner-only durable store) | auto | 64 messages per exact conversation id independent of `runtime.maxTurns`; aggregate defaults 256 MiB / 10,000 conversations / 365 inactive days; staged atomic publication and post-commit pruning; custom store via code | — |
|
|
35
35
|
| Lite memory (FTS keyword recall + rapid-log capture; no external deps) | config | `memory.mode: "lite"`, `path`, `maxBytes`, `writeMode` | `memory.lite` |
|
|
@@ -54,7 +54,7 @@ Every framework capability and how a composed agent reaches it. This table is th
|
|
|
54
54
|
| MCP servers (stdio/sse/http) from a JSON file | config | `tools.mcpConfigPath` | `tool-policy.mcp-servers` |
|
|
55
55
|
| Durable origin-bound continuations for trusted stdio/loopback-HTTP MCP services | config + auto | `tools.continuationServers` + `continuations.*`; interactive claims pin a bounded immutable origin snapshot before commit, exact rollover buckets are preserved, v3 state is restart-safe, and unavailable/legacy snapshots use a fixed zero-model fallback | `agent-app.durable-continuations` |
|
|
56
56
|
| 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; confirmed message posts are idempotently recorded in destination history | `agent-app.adapter-send-tools` |
|
|
57
|
-
| Interaction bridge for adapter-send history, blocking asks, and MCP progress | config + auto | `interaction.bridge.{host,port}`, `interaction.askUser.timeoutMs`, `interaction.progress.enabled`; env `MONO_AGENT_INTERACTION_BRIDGE_HOST`, `MONO_AGENT_INTERACTION_BRIDGE_PORT`, `MONO_AGENT_ASK_USER_TIMEOUT_MS`, `MONO_AGENT_PROGRESS_ENABLED`. It auto-starts for configured Slack/Telegram send tools, when `AskUser`
|
|
57
|
+
| Interaction bridge for adapter-send history, structured blocking asks, and MCP progress | config + auto | `interaction.bridge.{host,port}`, `interaction.askUser.timeoutMs`, `interaction.progress.enabled`; env `MONO_AGENT_INTERACTION_BRIDGE_HOST`, `MONO_AGENT_INTERACTION_BRIDGE_PORT`, `MONO_AGENT_ASK_USER_TIMEOUT_MS`, `MONO_AGENT_PROGRESS_ENABLED`. It auto-starts for configured Slack/Telegram send tools, when `AskUser` is allowed, when an `interaction` block or interaction env override is configured, or when `interaction.progress.enabled` resolves true and `tools.mcpRequestContextServers` names at least one opted project stdio MCP server. AskUser presents all questions together on web and sequential native controls on Slack/Telegram. | `interaction.bridge` |
|
|
58
58
|
| Sandbox on/off + srt engine (Pi-owned tools; direct Codex has its own sandbox, Claude/direct OpenCode reject native mono policy) | config | `sandbox.mode` | `sandbox.mode` |
|
|
59
59
|
| Network policy (none/localhost/allowlist/all) | config | `sandbox.network.{mode,allowlist}` | `sandbox.network-policy` |
|
|
60
60
|
| Filesystem scopes (readable/writable roots, deny-write globs) | config | `sandbox.readableRoots`, `sandbox.writableRoots`, `sandbox.denyWrite` | `sandbox.filesystem-scopes` |
|
|
@@ -68,7 +68,7 @@ Every framework capability and how a composed agent reaches it. This table is th
|
|
|
68
68
|
| Webhook (sync/async HTTP invoke + status polling + optional bearer) | config | `webhook` section; `apiKey` protects invoke/status and is required with non-loopback opt-in; endpoint overrides at `webhook.endpoints[].{model,effort,maxRunMs}`; endpoint `maxRunMs` wins over the `webhook.maxRunMs` fallback and `0` disables that endpoint watchdog | `webhook.http-invoke`, `webhook.run-watchdog` |
|
|
69
69
|
| OpenAI-compatible API (/v1/models, /v1/chat/completions, SSE, bearer) | config | `openaiApi` section; sampling fields remain request metadata, while non-default values are ignored with a `runtime_warning` and runtime config stays authoritative | `openai-api.chat-completions` |
|
|
70
70
|
| Telegram long polling and chat allowlist | config | `telegram` section | `telegram.long-polling` |
|
|
71
|
-
| Telegram runtime/command/reaction/button/file interactivity | config + code | built-in per-chat `/model` and `/effort` use configured primary/fallback models (no Telegram config key); `telegram.commands[]`, `telegram.reactions`, `telegram.quietHours`; `
|
|
71
|
+
| Telegram runtime/command/reaction/button/file interactivity | config + code | built-in per-chat `/model` and `/effort` use configured primary/fallback models (no Telegram config key); `telegram.commands[]`, `telegram.reactions`, `telegram.quietHours`; `AskUser`, non-blocking `TelegramSendMessage.reply_options`, and `TelegramSendFile` | `telegram.interactive` |
|
|
72
72
|
| Telegram inbound audio transcription | config | `telegram.transcription.{endpoint,model,language,timeoutMs}`; opt-in OpenAI-compatible transcription endpoint for voice notes, audio files, and round-video attachments | `telegram.transcription` |
|
|
73
73
|
| Slack (Socket Mode, channel allowlist, mention handling, native runtime controls) | config + code | `slack` section; built-in Block Kit controls use configured primary/fallback choices through DM-wide/thread-local `@agent /model` and `@agent /effort`, plus channel-wide workspace commands `/<bot>-model` and `/<bot>-effort` derived from `auth.test.user` (Slack app registration + `commands` scope; no mono-agent config key) | `slack.socket-mode` |
|
|
74
74
|
| Slack global/message shortcuts | config | `slack.shortcuts[]: {callbackId, prompt, channelId?, ackText?, threadReply?}`; JSON-only | `slack.shortcuts` |
|
|
@@ -51,7 +51,7 @@ Use this path when the agent needs identity, selected skills, history, and optio
|
|
|
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 + static salience (journal), LLM capture/reconcile + entity graph + projection-only scheduled consolidation (bujo) |
|
|
53
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
|
-
| Composer documentation search | `@mono-agent/docs-mcp` (optional plugin) | Exact-version offline hybrid semantic/BM25 search over canonical docs and composer references
|
|
54
|
+
| 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` |
|
|
55
55
|
| 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 |
|
|
56
56
|
| 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 |
|
|
57
57
|
|
|
@@ -275,7 +275,7 @@ per-route form for a new agent.
|
|
|
275
275
|
**Goal:** one Telegram agent uses `AskUser`, long-running MCP tool progress, a self-hosted Bot API server, and `TelegramSendFile`.
|
|
276
276
|
**Features:** `telegram.long-polling`, `agent-app.adapter-send-tools`, `interaction.ask-user`, `interaction.progress`, `tool-policy.mcp-servers`.
|
|
277
277
|
|
|
278
|
-
**Bridge startup:** the
|
|
278
|
+
**Bridge startup:** the interaction bridge defaults to loopback and auto-starts when `AskUser` is allowed, when the `interaction` block or an interaction env override is configured, or when `interaction.progress.enabled` resolves true and `tools.mcpRequestContextServers` names at least one opted project MCP server. Keep `interaction.bridge.host` on loopback because non-loopback values are not rejected. AskUser takes one to five structured questions with two or three described choices each; Telegram presents them sequentially with native buttons, Other/custom reply, and Done for multi-select.
|
|
279
279
|
|
|
280
280
|
```json
|
|
281
281
|
{
|
|
@@ -43,6 +43,26 @@ mono-agent start
|
|
|
43
43
|
|
|
44
44
|
Every channel the user asked for must report `running` with its endpoint facts; anything `failed` is a blocker, not a footnote.
|
|
45
45
|
|
|
46
|
+
On macOS, managed start also installs a no-`KeepAlive` recovery helper that runs
|
|
47
|
+
at login and every five minutes. It safely reconciles an inactive worker, a
|
|
48
|
+
changed keyed snapshot, or a different available controller CLI closure without
|
|
49
|
+
executing mutable source bytes. The existing worker stays live during runtime
|
|
50
|
+
installation; failed recovery preserves the helper and both definitions for the
|
|
51
|
+
next scheduled retry. `mono-agent stop` removes that authority, so an explicitly
|
|
52
|
+
stopped agent is not resurrected.
|
|
53
|
+
|
|
54
|
+
Confirm the authoritative process boundary with:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
mono-agent status --json
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Treat `ok: true` as proof only because the status command now requires the trace
|
|
61
|
+
PID to be alive and equal launchd's current PID. When launchd has no matching
|
|
62
|
+
live process, cached `running` channels are rendered `stopped`, live endpoint
|
|
63
|
+
facts are omitted, `pid` is `null`, and the command exits 1. Do not interpret an
|
|
64
|
+
old trace manifest by itself as a running consumer.
|
|
65
|
+
|
|
46
66
|
## Documentation Validation
|
|
47
67
|
|
|
48
68
|
To confirm a skills folder is indexable (replace `<skillsRoot>` with the
|