@mono-agent/agent-app 0.13.0 → 0.15.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 +164 -37
- 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-config.d.ts.map +1 -1
- package/dist/app-config.js +3 -0
- package/dist/app-config.js.map +1 -1
- package/dist/app-controller-channels.d.ts +41 -7
- package/dist/app-controller-channels.d.ts.map +1 -1
- package/dist/app-controller-channels.js +4 -4
- package/dist/app-controller-channels.js.map +1 -1
- package/dist/app-controller-continuation.d.ts +43 -11
- 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-lifecycle.d.ts +34 -5
- package/dist/app-controller-lifecycle.d.ts.map +1 -1
- package/dist/app-controller-lifecycle.js.map +1 -1
- package/dist/app-controller-maintenance.d.ts +46 -8
- 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-memory-health.d.ts +39 -10
- package/dist/app-controller-memory-health.d.ts.map +1 -1
- package/dist/app-controller-memory-health.js.map +1 -1
- package/dist/app-controller-memory.d.ts +27 -5
- package/dist/app-controller-memory.d.ts.map +1 -1
- package/dist/app-controller-memory.js +0 -1
- package/dist/app-controller-memory.js.map +1 -1
- package/dist/app-controller-responder.d.ts +53 -7
- package/dist/app-controller-responder.d.ts.map +1 -1
- package/dist/app-controller-responder.js +5 -5
- package/dist/app-controller-responder.js.map +1 -1
- package/dist/app-controller-traceability.d.ts +63 -14
- package/dist/app-controller-traceability.d.ts.map +1 -1
- package/dist/app-controller-traceability.js.map +1 -1
- package/dist/app-controller-types.d.ts +63 -0
- package/dist/app-controller-types.d.ts.map +1 -0
- package/dist/app-controller-types.js +2 -0
- package/dist/app-controller-types.js.map +1 -0
- package/dist/app-controller-utils.d.ts +1 -1
- package/dist/app-controller-utils.d.ts.map +1 -1
- package/dist/app-controller-utils.js +1 -1
- package/dist/app-controller-utils.js.map +1 -1
- package/dist/app-controller.d.ts +5 -62
- package/dist/app-controller.d.ts.map +1 -1
- package/dist/app-controller.js +0 -6
- package/dist/app-controller.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-lifecycle-utils.d.ts +27 -0
- package/dist/background-lifecycle-utils.d.ts.map +1 -0
- package/dist/background-lifecycle-utils.js +69 -0
- package/dist/background-lifecycle-utils.js.map +1 -0
- package/dist/background-log-maintenance.d.ts +6 -0
- package/dist/background-log-maintenance.d.ts.map +1 -0
- package/dist/background-log-maintenance.js +185 -0
- package/dist/background-log-maintenance.js.map +1 -0
- 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 +28 -5
- package/dist/background.d.ts.map +1 -1
- package/dist/background.js +229 -297
- 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/channel-plugins.d.ts +2 -11
- package/dist/channel-plugins.d.ts.map +1 -1
- package/dist/channel-plugins.js +63 -60
- package/dist/channel-plugins.js.map +1 -1
- package/dist/channel-status-display.js +2 -6
- package/dist/channel-status-display.js.map +1 -1
- package/dist/channels.d.ts +5 -6
- package/dist/channels.d.ts.map +1 -1
- package/dist/channels.js +7 -5
- package/dist/channels.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 +98 -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 +90 -15
- 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/cli-validate-config-command.d.ts.map +1 -1
- package/dist/cli-validate-config-command.js +12 -8
- package/dist/cli-validate-config-command.js.map +1 -1
- package/dist/config-reference.d.ts +4 -1
- package/dist/config-reference.d.ts.map +1 -1
- package/dist/config-reference.js +245 -69
- package/dist/config-reference.js.map +1 -1
- package/dist/configured-agent.d.ts +2 -8
- package/dist/configured-agent.d.ts.map +1 -1
- package/dist/configured-agent.js +3 -25
- package/dist/configured-agent.js.map +1 -1
- package/dist/consumer-contract.d.ts.map +1 -1
- package/dist/consumer-contract.js +2 -4
- package/dist/consumer-contract.js.map +1 -1
- package/dist/doctor-observability.d.ts +7 -0
- package/dist/doctor-observability.d.ts.map +1 -0
- package/dist/doctor-observability.js +80 -0
- package/dist/doctor-observability.js.map +1 -0
- package/dist/doctor-types.d.ts +17 -0
- package/dist/doctor-types.d.ts.map +1 -0
- package/dist/doctor-types.js +2 -0
- package/dist/doctor-types.js.map +1 -0
- package/dist/doctor.d.ts +2 -12
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +8 -108
- package/dist/doctor.js.map +1 -1
- package/dist/first-run-readiness.d.ts +1 -1
- package/dist/first-run-readiness.d.ts.map +1 -1
- package/dist/first-run-readiness.js +1 -1
- package/dist/first-run-readiness.js.map +1 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.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/managed-web-logs.d.ts +16 -0
- package/dist/managed-web-logs.d.ts.map +1 -0
- package/dist/managed-web-logs.js +153 -0
- package/dist/managed-web-logs.js.map +1 -0
- 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/posted-reply-history.d.ts.map +1 -1
- package/dist/posted-reply-history.js +3 -0
- package/dist/posted-reply-history.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/web-command.d.ts +4 -1
- package/dist/web-command.d.ts.map +1 -1
- package/dist/web-command.js +31 -1
- package/dist/web-command.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 +16 -16
- package/schema/mono-agent.config.schema.json +282 -164
- package/skills/mono-agent-composer/SKILL.md +5 -5
- package/skills/mono-agent-composer/references/config-blueprint.md +6 -13
- package/skills/mono-agent-composer/references/discovery-questions.md +1 -1
- package/skills/mono-agent-composer/references/feature-coverage.md +7 -8
- package/skills/mono-agent-composer/references/package-map.md +5 -6
- package/skills/mono-agent-composer/references/playbooks.md +3 -3
- package/skills/mono-agent-composer/references/validation.md +21 -1
|
@@ -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
|
|
@@ -183,7 +183,8 @@ new agent.
|
|
|
183
183
|
},
|
|
184
184
|
|
|
185
185
|
// Observability: the recorder writes empty events + a running summary at start,
|
|
186
|
-
// buffers key-redacted
|
|
186
|
+
// buffers sensitive-key-redacted, credential-scanned, capped events in RAM,
|
|
187
|
+
// then replaces both files at finish/fail.
|
|
187
188
|
// A pre-terminal crash can lose buffered events. `mono-agent status` reads the
|
|
188
189
|
// separate trace-source registry.
|
|
189
190
|
"artifacts": {
|
|
@@ -213,7 +214,7 @@ new agent.
|
|
|
213
214
|
},
|
|
214
215
|
|
|
215
216
|
// ----- Channels: one section per channel; all independent. Most channels are
|
|
216
|
-
// ----- opt-in;
|
|
217
|
+
// ----- opt-in; the `tui` operator surface defaults on and can opt out.
|
|
217
218
|
// ----- A waiting/disabled channel never blocks the others.
|
|
218
219
|
|
|
219
220
|
"tui": {
|
|
@@ -224,14 +225,6 @@ new agent.
|
|
|
224
225
|
"allowNonLoopback": false // set MONO_AGENT_TUI_API_KEY in .env when needed
|
|
225
226
|
},
|
|
226
227
|
|
|
227
|
-
"live": {
|
|
228
|
-
"enabled": true, // default-on read-only SSE relay (run-event operator surface)
|
|
229
|
-
"host": "127.0.0.1",
|
|
230
|
-
"port": 0,
|
|
231
|
-
"basePath": "/live",
|
|
232
|
-
"allowNonLoopback": false // set MONO_AGENT_LIVE_API_KEY in .env when needed
|
|
233
|
-
},
|
|
234
|
-
|
|
235
228
|
"webhook": {
|
|
236
229
|
// For bearer auth, put MONO_AGENT_WEBHOOK_API_KEY=<strong-random-secret> in
|
|
237
230
|
// the owner-only .env file; JSON strings are literal and do not interpolate env: values.
|
|
@@ -409,14 +402,14 @@ mono-agent config # resolved config field-by-field, each value tagged env/
|
|
|
409
402
|
mono-agent validate [--preset <id>] [--consumer <path>] # per-section report; --preset also checks the preset's capabilities
|
|
410
403
|
mono-agent start # traceability + every configured channel
|
|
411
404
|
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)
|
|
405
|
+
mono-agent restart --clear-sessions # restart AND purge persisted pi sessions (fresh start; durable memory kept)
|
|
413
406
|
```
|
|
414
407
|
|
|
415
408
|
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.
|
|
416
409
|
|
|
417
410
|
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`. Routine BuJo consolidation runs via the in-app scheduler; the standalone `memory-bujo` maintenance CLI was removed (use `mono-agent memory <subcommand>` from the agent folder). `agent-host` LLM capture is an in-app composition path that injects the `LlmComplete` implementation into the BuJo store.
|
|
418
411
|
|
|
419
|
-
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 and assistant-ui web console chat over the default-on `tui` stream endpoint (`"tui": {"enabled": false}` opts out); on macOS, `mono-agent tui --configure` opens a persistent, visibly marked proposal-only SELF-CONFIG conversation against the managed background agent and must not be combined with `--local`. Approval, rejection, and no-change turns continue that session; only quitting exits it. `mono-agent web` is an always-on service namespace, binds `0.0.0.0:5050` by default, and has no app login; use `--loopback` to narrow it. The
|
|
412
|
+
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 and assistant-ui web console chat over the default-on `tui` stream endpoint (`"tui": {"enabled": false}` opts out); on macOS, `mono-agent tui --configure` opens a persistent, visibly marked proposal-only SELF-CONFIG conversation against the managed background agent and must not be combined with `--local`. Approval, rejection, and no-change turns continue that session; only quitting exits it. `mono-agent web` is an always-on service namespace, binds `0.0.0.0:5050` by default, and has no app login; use `--loopback` to narrow it. The former read-only recorder command, package, and relay were removed; use `mono-agent tui` (recorded-run replay) or `mono-agent web` (live console). 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).
|
|
420
413
|
|
|
421
414
|
## Programmatic Escape Hatch
|
|
422
415
|
|
|
@@ -252,7 +252,7 @@ Do you need a browsable trace viewer or just local artifacts?
|
|
|
252
252
|
2. JSONL artifacts only (bounded terminal snapshots; no external viewer)
|
|
253
253
|
```
|
|
254
254
|
|
|
255
|
-
Fills: `artifacts.dir`, `traceability.registryDir` / `sourceId` / `sourceLabel`, and — when Phoenix is wanted — an `observability.exporters` (phoenix) OTLP entry. The local recorder starts with empty events plus a `running` summary, applies key
|
|
255
|
+
Fills: `artifacts.dir`, `traceability.registryDir` / `sourceId` / `sourceLabel`, and — when Phoenix is wanted — an `observability.exporters` (phoenix) OTLP entry. The local recorder starts with empty events plus a `running` summary, applies sensitive-key redaction, scans retained free text for high-confidence credential shapes, and caps event strings at 4,096 bytes by default. It buffers events in RAM and replaces the artifacts at finish/fail; a pre-terminal crash can lose buffered events. Phoenix adds a best-effort terminal batch, not a crash-safe stream. Artifacts record runtime/tool/message events and summaries, not private chain-of-thought. For a terminal operator console, mention `mono-agent tui` (run from anywhere once the agent is started; live chat with thinking/tool insight, run replay, config view). Config is JSON-first — edit `mono-agent.config.json` directly and run `mono-agent restart` to apply changes.
|
|
256
256
|
|
|
257
257
|
## 9. Acceptance Smoke Test
|
|
258
258
|
|
|
@@ -18,7 +18,8 @@ Every framework capability and how a composed agent reaches it. This table is th
|
|
|
18
18
|
| Pi-native transport, retry, and durable provider-session tuning | config | `providers.piNative.{transport,piMaxRetries,maxRetryDelayMs,piSessionsRoot}` | `runtime.pi-native-tuning` |
|
|
19
19
|
| Tool-output bloat guard, cost tracking | auto | built into every run | — |
|
|
20
20
|
| Context handling / auto-compaction | config + provider | `runtime.compaction.*` (matching `MONO_AGENT_COMPACTION_*`) controls adaptive Pi compaction. Omitted budgets derive from the active model window; reactive recovery re-prompts exactly once only after a verified reduction, and persistent `context_limit` advances to a configured fallback | `runtime.context-compaction` |
|
|
21
|
-
| Structured output (JSON schema)
|
|
21
|
+
| Structured output (JSON schema) | code | harness `runtimeOptions.outputSchema` | — |
|
|
22
|
+
| Live input steering | auto + code | built into ordinary Slack, Telegram, and web-console turns; custom hosts use `runtimeOptions.liveInput` | — |
|
|
22
23
|
| Tool approval gates (risk tiers, timeouts, always-allow) | code | `createMonoRuntime({ onToolApprovalRequest, ... })` — needs a host UI | — |
|
|
23
24
|
| Fully custom runtime | code | `startMonoAgentApp({ runtime })` | — |
|
|
24
25
|
|
|
@@ -29,7 +30,7 @@ Every framework capability and how a composed agent reaches it. This table is th
|
|
|
29
30
|
| 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
31
|
| Selected skills from a skills root | config | `context.skillsRoot`, `context.selectedSkills` | `skills.selected-activation` |
|
|
31
32
|
| 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;
|
|
33
|
+
| 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
34
|
| Per-skill byte cap | config | `context.skillMaxBytes` | `skills.byte-capping` |
|
|
34
35
|
| 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
36
|
| Lite memory (FTS keyword recall + rapid-log capture; no external deps) | config | `memory.mode: "lite"`, `path`, `maxBytes`, `writeMode` | `memory.lite` |
|
|
@@ -38,7 +39,7 @@ Every framework capability and how a composed agent reaches it. This table is th
|
|
|
38
39
|
| 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` | `memory.bujo` |
|
|
39
40
|
| Supermemory external backend (server-side extraction/consolidation; async ingestion; explicitly installed plugin) | config | `memory.backend: "supermemory"`, `memory.writeMode`, `memory.supermemory.{baseUrl,apiKey,apiKeyEnv,container,timeoutMs,exposeMcpServer}`; install the exact matching `@mono-agent/memory-supermemory` version | `memory.backend-supermemory` |
|
|
40
41
|
| BuJo consolidation auto-scheduler (projection-only `index.md` refresh + empty `future-log.md` stub + duplicate-group reporting; in-app, no external cron needed) | config | `memory.consolidation.{enabled,cron}` (five-field UTC, default `0 */2 * * *`, no hashed `H`); env `MONO_AGENT_MEMORY_CONSOLIDATION_CRON`, `MONO_AGENT_MEMORY_CONSOLIDATION_ENABLED` | `memory.bujo-consolidation` |
|
|
41
|
-
| Memory maintenance CLI | cli | `mono-agent memory <subcommand>` from the agent folder (stats/today/show/search/top/audit/inspect/rebuild/rollback/…). The standalone `memory-bujo <subcommand> <root>` CLI
|
|
42
|
+
| Memory maintenance CLI | cli | `mono-agent memory <subcommand>` from the agent folder (stats/today/show/search/top/audit/inspect/rebuild/rollback/…). The standalone `memory-bujo <subcommand> <root>` CLI and bin were removed; routine BuJo consolidation runs via the in-app scheduler | — |
|
|
42
43
|
| Config-aware memory preview CLI (stats/today/show/search/top plus metadata-only audit; remains available when the live recall tool is disabled; 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]` | — |
|
|
43
44
|
| 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` | — |
|
|
44
45
|
| Memory write modes and per-turn BuJo capture | config | `memory.writeMode`: `disabled`, `append-host-summary`, or `capture`; capture requires `memory.mode: "bujo"` | `memory.write-mode`, `memory.per-turn-capture` |
|
|
@@ -54,7 +55,7 @@ Every framework capability and how a composed agent reaches it. This table is th
|
|
|
54
55
|
| MCP servers (stdio/sse/http) from a JSON file | config | `tools.mcpConfigPath` | `tool-policy.mcp-servers` |
|
|
55
56
|
| 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
57
|
| 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`
|
|
58
|
+
| 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
59
|
| 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
60
|
| Network policy (none/localhost/allowlist/all) | config | `sandbox.network.{mode,allowlist}` | `sandbox.network-policy` |
|
|
60
61
|
| Filesystem scopes (readable/writable roots, deny-write globs) | config | `sandbox.readableRoots`, `sandbox.writableRoots`, `sandbox.denyWrite` | `sandbox.filesystem-scopes` |
|
|
@@ -68,7 +69,7 @@ Every framework capability and how a composed agent reaches it. This table is th
|
|
|
68
69
|
| 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
70
|
| 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
71
|
| 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`; `
|
|
72
|
+
| 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
73
|
| 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
74
|
| 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
75
|
| Slack global/message shortcuts | config | `slack.shortcuts[]: {callbackId, prompt, channelId?, ackText?, threadReply?}`; JSON-only | `slack.shortcuts` |
|
|
@@ -78,7 +79,6 @@ Every framework capability and how a composed agent reaches it. This table is th
|
|
|
78
79
|
| A2A provider (Agent Card, JSON-RPC + REST, streaming, bearer, configurable request-body limit, opt-in durable dispatch identity) | config | `channels.plugins[].package: "@mono-agent/a2a-adapter"` plus plugin `config.provider` (including `maxRequestBytes` and `idempotency.{namespace,stateDir,retentionMs,maxRecords}`), `config.agent`, `config.skill`; `config.enabled` is canonical | `a2a.provider` |
|
|
79
80
|
| A2A consumer settings (remote agent URLs, timeouts) and calls | config + code | same A2A plugin entry's `config.consumer`; calls via `sendA2AMessage({ idempotencyKey })` or `createA2AConsumerResponder({ idempotencyKeyForRequest })` | `a2a.consumer` |
|
|
80
81
|
| TUI stream endpoint (operator console transport) | config | `tui.{enabled,host,port,basePath,allowNonLoopback,apiKey}`; default on, loopback | `tui.stream-endpoint` |
|
|
81
|
-
| Live event relay (read-only run-event SSE for web) | config | `live.{enabled,host,port,basePath,allowNonLoopback,apiKey}`; default on, loopback | `live.event-relay` |
|
|
82
82
|
| Cron jobs (five-field expressions, timezones, stable job-id-seeded `H`; agent-app pins overlap to skip) | config + code | `cron.jobs[]`, including per-job `model` / `effort`; single-job `MONO_AGENT_CRON_*`, or one markdown file per job in `cron.dir` / `MONO_AGENT_CRON_DIR` (default `cron/`); queue/replace controls are programmatic-only `startCronAdapter` options | `cron.scheduled-prompts` |
|
|
83
83
|
| Cron per-run watchdog | config + code | `cron.jobs[].maxRunMs` or `maxRunMs` frontmatter; programmatic adapter fallback via `startCronAdapter({ maxRunMs })` | `cron.run-watchdog` |
|
|
84
84
|
| Per-request runtime model and effort overrides | config + code | `cron.jobs[].{model,effort}`; `webhook.endpoints[].{model,effort}` plus request body `{model,effort}` (request wins); Telegram `/model` and `/effort`; Slack Block Kit selectors through thread-local `@agent /model` / `@agent /effort` and channel-wide `/<bot>-model` / `/<bot>-effort`, all over configured primary/fallback models | `runtime.per-trigger-model` |
|
|
@@ -90,13 +90,12 @@ Every framework capability and how a composed agent reaches it. This table is th
|
|
|
90
90
|
|
|
91
91
|
| Capability | Coverage | Where | Registry config ids |
|
|
92
92
|
| --- | --- | --- | --- |
|
|
93
|
-
| JSONL run artifacts (events + summaries; strings capped; non-numeric values under sensitive-looking object keys are redacted; numeric values under matched keys are retained; free text is
|
|
93
|
+
| JSONL run artifacts (events + summaries; 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) | config | `artifacts.dir`, `artifacts.retention`, `artifacts.memoryRetention` | `observability.jsonl-artifacts` |
|
|
94
94
|
| Trace-source registry (heartbeat manifests `mono-agent status` reads) | config | `traceability.{registryDir,sourceId,sourceLabel,heartbeatMs,staleAfterMs,globalDiscovery}` | `observability.trace-registry` |
|
|
95
95
|
| Phoenix trace viewer (best-effort terminal-batched OTLP exporter; independent local JSONL has bounded terminal snapshots and can lose RAM-buffered events on crash) | config | `observability.exporters` (phoenix entry) | `observability.phoenix-exporter` |
|
|
96
96
|
| 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) | — |
|
|
97
97
|
| Always-on multi-agent web console (persistent conversations and same-thread quotes, fixed compact/expanded rail, offline-agent filtering that always preserves pinned/selected agents, alive-page/PWA response notifications, attachments, model/effort selection, reasoning/tools, hidden telemetry-backed cumulative context usage, cancellation) | cli | `mono-agent web start\|stop\|restart\|status\|logs\|run`; bare `mono-agent web` is read-only status/help; default `0.0.0.0:5050`, `--loopback` narrows to `127.0.0.1`; notifications require explicit per-origin browser permission plus a secure context and do not use Web Push; package `@mono-agent/web`; no app authentication, so LAN/Tailnet reachability is the access boundary | — |
|
|
98
98
|
| Managed proposal-only SELF-CONFIG conversation | cli + tool | macOS `mono-agent tui --configure` attaches to the authoritative background agent; persistent marker and capability map; stable configuration conversation with a fresh proposal capability after each checkpoint; host-gated `ProposeAgentConfiguration`; approval restarts and waits for readiness, failed start rolls files/agent back; only quitting exits. `--local` is ordinary chat only; off macOS configuration is manual | — |
|
|
99
|
-
| Session Recorder web PWA (read-only run browser) | cli | Command removed — use `mono-agent tui` (recorded-run replay) or `mono-agent web` (live console); the `@mono-agent/session-web` package still ships without a CLI launcher, and `MONO_AGENT_WEB_AUTH_TOKEN` is no longer read by any code (its only reader, the removed `sessions` command, is gone) | — |
|
|
100
99
|
| Setup presets (saved answer-sets: generate config + `.env.example` + checklist) | cli | `mono-agent presets list\|show <id>`, `mono-agent init --preset <id> --yes` (the `recipes` command and `--recipe` alias were removed) | — |
|
|
101
100
|
| 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 persistent SELF-CONFIG) | 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 | — |
|
|
102
101
|
| 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 | — |
|
|
@@ -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
|
|
|
@@ -105,7 +105,7 @@ Communication adapters are edge packages. They accept an `AgentResponder` and ow
|
|
|
105
105
|
| Slack | `@mono-agent/slack-adapter` | Allowed channel or DM gets the final reply |
|
|
106
106
|
| WhatsApp | `@mono-agent/whatsapp-adapter` (external channel plugin) | Allowed sender/group trigger produces a reply |
|
|
107
107
|
| OpenAI-compatible API | `@mono-agent/openai-api-adapter` | `curl /v1/models` and `/v1/chat/completions` |
|
|
108
|
-
| Operator
|
|
108
|
+
| Operator endpoint | `@mono-agent/operator-adapter` | `mono-agent tui` and `mono-agent web` connect for chat |
|
|
109
109
|
| A2A provider/consumer | `@mono-agent/a2a-adapter` (external channel plugin) | Send text to the Agent Card URL |
|
|
110
110
|
| Webhook | `@mono-agent/webhook-adapter` | `curl` the configured invocation path (with `Authorization: Bearer ...` when `apiKey` is set) |
|
|
111
111
|
| Cron | `@mono-agent/cron-adapter` | One scheduled or manually triggered invocation |
|
|
@@ -116,13 +116,12 @@ Adapters must not import the harness, runtime adapter, memory package (`@mono-ag
|
|
|
116
116
|
|
|
117
117
|
Use:
|
|
118
118
|
|
|
119
|
-
- `@mono-agent/tui` for the pi-tui operator console (`mono-agent tui`): live chat with structured stream-event insight, recorded-run replay, and config view. Remote event frames have a strict 256 KiB UTF-8 NDJSON cap: assistant-thought/tool-call payload fields are reduced and remeasured, while another oversized variant or a reducible event whose minimal form still does not fit becomes a bounded `oversized_event` marker. Other frame kinds are unaffected, and replay contains only key-redacted, capped events that reached terminal JSONL persistence.
|
|
119
|
+
- `@mono-agent/tui` for the pi-tui operator console (`mono-agent tui`): live chat with structured stream-event insight, recorded-run replay, and config view. Remote event frames have a strict 256 KiB UTF-8 NDJSON cap: assistant-thought/tool-call payload fields are reduced and remeasured, while another oversized variant or a reducible event whose minimal form still does not fit becomes a bounded `oversized_event` marker. Other frame kinds are unaffected, and replay contains only sensitive-key-redacted, credential-scanned, capped events that reached terminal JSONL persistence.
|
|
120
120
|
- `@mono-agent/web` for the assistant-ui always-on browser console (`mono-agent web`): persistent multi-agent conversations and same-thread quotes, fixed compact/expanded agent navigation with offline filtering, explicit alive-page/PWA response notifications, device-local file picking, streamed reasoning/tools, internal telemetry-backed cumulative context usage, cancellation, LAN-default HTTP on port 5050, and conflict-safe optional Tailscale Serve HTTPS. It has no app login; network reachability is the access boundary.
|
|
121
|
-
- `@mono-agent/
|
|
122
|
-
- `@mono-agent/operator-adapter` for the loopback NDJSON stream endpoint the TUI and web chat console connect to (`tui` config section, on by default) and the read-only live SSE endpoint operator tooling observes (`live` config section, on by default).
|
|
121
|
+
- `@mono-agent/operator-adapter` for the loopback NDJSON stream endpoint the TUI and web chat console connect to (`tui` config section, on by default).
|
|
123
122
|
- `@mono-agent/observability` for JSONL event artifacts, summaries, trace-source registration, and the `@mono-agent/observability/otel` Phoenix OTLP exporter configured via `observability.exporters`.
|
|
124
123
|
|
|
125
|
-
Traceability is local-first. A running host registers a source manifest; `mono-agent status` reads the trace-source registry to report live sources, and artifacts are keyed by `(sourceId, runId)` so duplicate run ids do not collide. Phoenix is the recommended trace viewer when an `observability.exporters` (phoenix) entry is configured; its terminal-batched export is best-effort. Independently, the local recorder writes empty events plus a `running` summary at start and a key-redacted, capped snapshot at finish/fail. Events stay in RAM between those boundaries, so a crash can lose them. Without Phoenix, those bounded terminal JSONL snapshots are the only local run record.
|
|
124
|
+
Traceability is local-first. A running host registers a source manifest; `mono-agent status` reads the trace-source registry to report live sources, and artifacts are keyed by `(sourceId, runId)` so duplicate run ids do not collide. Phoenix is the recommended trace viewer when an `observability.exporters` (phoenix) entry is configured; its terminal-batched export is best-effort. Independently, the local recorder writes empty events plus a `running` summary at start and a sensitive-key-redacted, credential-scanned, capped snapshot at finish/fail. Events stay in RAM between those boundaries, so a crash can lose them. Without Phoenix, those bounded terminal JSONL snapshots are the only local run record.
|
|
126
125
|
|
|
127
126
|
## Multi-Agent Join
|
|
128
127
|
|
|
@@ -190,7 +190,7 @@ const orchestrator = await createConfiguredAgentResponder({
|
|
|
190
190
|
|
|
191
191
|
## 10. Phoenix-observed agent with the TUI
|
|
192
192
|
**For:** an agent builder evaluating runs in a tracing dashboard.
|
|
193
|
-
**Goal:** run locally with the TUI, attempt a best-effort terminal-batched Phoenix export, and retain a key-redacted, capped local JSONL snapshot after terminal persistence. A pre-terminal crash can omit the Phoenix batch and lose RAM-buffered JSONL events.
|
|
193
|
+
**Goal:** run locally with the TUI, attempt a best-effort terminal-batched Phoenix export, and retain a sensitive-key-redacted, credential-scanned, capped local JSONL snapshot after terminal persistence. A pre-terminal crash can omit the Phoenix batch and lose RAM-buffered JSONL events.
|
|
194
194
|
**Features:** `observability.phoenix-exporter`, `observability.jsonl-artifacts`, `observability.trace-registry`, `tui.chat`.
|
|
195
195
|
|
|
196
196
|
```json
|
|
@@ -202,7 +202,7 @@ const orchestrator = await createConfiguredAgentResponder({
|
|
|
202
202
|
}
|
|
203
203
|
```
|
|
204
204
|
**Steps:** start Phoenix (6006) → `init` → add artifacts/traceability/exporter → `validate` (POSTs an empty protobuf) → `start` (prints the Phoenix endpoint) → `mono-agent tui`.
|
|
205
|
-
**Smoke:** complete a TUI prompt; confirm a JSONL artifact AND a Phoenix trace with merged tool spans under the project.
|
|
205
|
+
**Smoke:** complete a TUI prompt; confirm a JSONL artifact AND a Phoenix trace with merged tool spans under the project. Strings are capped. For local artifacts, 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. Phoenix applies that scan only when `contentPatternRedaction` is true.
|
|
206
206
|
|
|
207
207
|
## 11. Backfill historical runs to Phoenix
|
|
208
208
|
**For:** an ops engineer onboarding observability after the fact.
|
|
@@ -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
|
|
@@ -104,7 +124,7 @@ pnpm run test:demo
|
|
|
104
124
|
| A2A | Send text to the Agent Card URL with `sendA2AMessage()`. |
|
|
105
125
|
| Webhook | `curl` the invocation path and inspect the response body/status. |
|
|
106
126
|
| Cron | Run a one-off scheduled invocation or wait for one tick. |
|
|
107
|
-
| 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; free text is
|
|
127
|
+
| 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. |
|
|
108
128
|
| 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. |
|
|
109
129
|
| 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. |
|
|
110
130
|
|