@mono-agent/agent-app 0.20.14 → 0.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +227 -80
- package/dist/adapter-send-tools.d.ts +3 -2
- package/dist/adapter-send-tools.d.ts.map +1 -1
- package/dist/adapter-send-tools.js +15 -5
- package/dist/adapter-send-tools.js.map +1 -1
- package/dist/app-controller-channels.d.ts +2 -0
- package/dist/app-controller-channels.d.ts.map +1 -1
- package/dist/app-controller-channels.js +10 -1
- package/dist/app-controller-channels.js.map +1 -1
- package/dist/app-controller-maintenance.d.ts +3 -1
- package/dist/app-controller-maintenance.d.ts.map +1 -1
- package/dist/app-controller-maintenance.js +3 -0
- package/dist/app-controller-maintenance.js.map +1 -1
- package/dist/app-controller-responder.d.ts +2 -0
- package/dist/app-controller-responder.d.ts.map +1 -1
- package/dist/app-controller-responder.js +21 -17
- package/dist/app-controller-responder.js.map +1 -1
- package/dist/app-controller-traceability.d.ts.map +1 -1
- package/dist/app-controller-traceability.js +3 -0
- package/dist/app-controller-traceability.js.map +1 -1
- package/dist/app-controller-types.d.ts +1 -0
- package/dist/app-controller-types.d.ts.map +1 -1
- package/dist/app-controller.d.ts +2 -0
- package/dist/app-controller.d.ts.map +1 -1
- package/dist/app-controller.js +3 -0
- package/dist/app-controller.js.map +1 -1
- package/dist/artifact-retention.js +11 -0
- package/dist/artifact-retention.js.map +1 -1
- package/dist/background.d.ts +0 -6
- package/dist/background.d.ts.map +1 -1
- package/dist/background.js +5 -58
- package/dist/background.js.map +1 -1
- package/dist/channel-drivers/tui.d.ts +2 -2
- package/dist/channel-drivers/tui.d.ts.map +1 -1
- package/dist/channel-drivers/tui.js +27 -8
- package/dist/channel-drivers/tui.js.map +1 -1
- package/dist/cli-args.d.ts +4 -5
- package/dist/cli-args.d.ts.map +1 -1
- package/dist/cli-args.js +20 -19
- package/dist/cli-args.js.map +1 -1
- package/dist/cli-background-command.d.ts.map +1 -1
- package/dist/cli-background-command.js +4 -0
- package/dist/cli-background-command.js.map +1 -1
- package/dist/cli-commands.d.ts.map +1 -1
- package/dist/cli-commands.js +13 -2
- package/dist/cli-commands.js.map +1 -1
- package/dist/cli-help.d.ts.map +1 -1
- package/dist/cli-help.js +33 -19
- package/dist/cli-help.js.map +1 -1
- package/dist/cli-init-command.d.ts.map +1 -1
- package/dist/cli-init-command.js +26 -22
- package/dist/cli-init-command.js.map +1 -1
- package/dist/cli-install-skill-command.d.ts.map +1 -1
- package/dist/cli-install-skill-command.js +12 -3
- package/dist/cli-install-skill-command.js.map +1 -1
- package/dist/config-reference.d.ts +1 -0
- package/dist/config-reference.d.ts.map +1 -1
- package/dist/config-reference.js +66 -10
- package/dist/config-reference.js.map +1 -1
- package/dist/configured-agent.d.ts +9 -1
- package/dist/configured-agent.d.ts.map +1 -1
- package/dist/configured-agent.js +95 -29
- package/dist/configured-agent.js.map +1 -1
- package/dist/cron-control-store.d.ts.map +1 -1
- package/dist/cron-control-store.js +4 -2
- package/dist/cron-control-store.js.map +1 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +215 -45
- package/dist/doctor.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/interaction-bridge.d.ts +3 -3
- package/dist/interaction-bridge.d.ts.map +1 -1
- package/dist/interaction-bridge.js +27 -10
- package/dist/interaction-bridge.js.map +1 -1
- package/dist/launchd.d.ts +2 -0
- package/dist/launchd.d.ts.map +1 -1
- package/dist/launchd.js +3 -0
- package/dist/launchd.js.map +1 -1
- package/dist/local-tui-session.d.ts +14 -0
- package/dist/local-tui-session.d.ts.map +1 -0
- package/dist/local-tui-session.js +100 -0
- package/dist/local-tui-session.js.map +1 -0
- package/dist/mcp-apps.d.ts.map +1 -1
- package/dist/mcp-apps.js +3 -0
- package/dist/mcp-apps.js.map +1 -1
- package/dist/memory-journal.d.ts +53 -0
- package/dist/memory-journal.d.ts.map +1 -0
- package/dist/memory-journal.js +586 -0
- package/dist/memory-journal.js.map +1 -0
- package/dist/memory-recall.d.ts.map +1 -1
- package/dist/memory-recall.js +16 -2
- package/dist/memory-recall.js.map +1 -1
- package/dist/memory-retrieval.d.ts +9 -0
- package/dist/memory-retrieval.d.ts.map +1 -1
- package/dist/memory-retrieval.js +20 -0
- package/dist/memory-retrieval.js.map +1 -1
- package/dist/modules/base.js +1 -1
- package/dist/modules/base.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 +1 -0
- package/dist/modules/known-tools.js.map +1 -1
- package/dist/monitors-command.js +12 -2
- package/dist/monitors-command.js.map +1 -1
- package/dist/monitors-config.d.ts +4 -1
- package/dist/monitors-config.d.ts.map +1 -1
- package/dist/monitors-config.js +5 -1
- package/dist/monitors-config.js.map +1 -1
- package/dist/monitors-context.d.ts.map +1 -1
- package/dist/monitors-context.js +14 -2
- package/dist/monitors-context.js.map +1 -1
- package/dist/monitors-service.d.ts +2 -2
- package/dist/monitors-service.d.ts.map +1 -1
- package/dist/monitors-service.js +227 -96
- package/dist/monitors-service.js.map +1 -1
- package/dist/monitors-store.d.ts +11 -1
- package/dist/monitors-store.d.ts.map +1 -1
- package/dist/monitors-store.js +36 -6
- package/dist/monitors-store.js.map +1 -1
- package/dist/notify-destinations.d.ts +3 -2
- package/dist/notify-destinations.d.ts.map +1 -1
- package/dist/notify-destinations.js +6 -7
- package/dist/notify-destinations.js.map +1 -1
- package/dist/posted-reply-history.d.ts.map +1 -1
- package/dist/posted-reply-history.js +40 -3
- package/dist/posted-reply-history.js.map +1 -1
- package/dist/proactive-notify.d.ts +20 -1
- package/dist/proactive-notify.d.ts.map +1 -1
- package/dist/proactive-notify.js +56 -3
- package/dist/proactive-notify.js.map +1 -1
- package/dist/process-job-channel-routing.js +2 -1
- package/dist/process-job-channel-routing.js.map +1 -1
- package/dist/process-job-output-tail.d.ts +53 -0
- package/dist/process-job-output-tail.d.ts.map +1 -0
- package/dist/process-job-output-tail.js +257 -0
- package/dist/process-job-output-tail.js.map +1 -0
- package/dist/process-jobs-config.d.ts +1 -1
- package/dist/process-jobs-config.js +1 -1
- package/dist/process-jobs-config.js.map +1 -1
- package/dist/process-jobs-context.d.ts +3 -1
- package/dist/process-jobs-context.d.ts.map +1 -1
- package/dist/process-jobs-context.js +44 -11
- package/dist/process-jobs-context.js.map +1 -1
- package/dist/process-jobs-runtime.d.ts.map +1 -1
- package/dist/process-jobs-runtime.js +14 -0
- package/dist/process-jobs-runtime.js.map +1 -1
- package/dist/process-jobs-service.d.ts.map +1 -1
- package/dist/process-jobs-service.js +115 -23
- package/dist/process-jobs-service.js.map +1 -1
- package/dist/process-jobs-store.d.ts +3 -1
- package/dist/process-jobs-store.d.ts.map +1 -1
- package/dist/process-jobs-store.js +4 -1
- package/dist/process-jobs-store.js.map +1 -1
- package/dist/process-output-redaction.d.ts +26 -1
- package/dist/process-output-redaction.d.ts.map +1 -1
- package/dist/process-output-redaction.js +164 -2
- package/dist/process-output-redaction.js.map +1 -1
- package/dist/project-skills.d.ts +11 -5
- package/dist/project-skills.d.ts.map +1 -1
- package/dist/project-skills.js +88 -39
- package/dist/project-skills.js.map +1 -1
- package/dist/provider-auth-checks.d.ts +27 -0
- package/dist/provider-auth-checks.d.ts.map +1 -0
- package/dist/provider-auth-checks.js +349 -0
- package/dist/provider-auth-checks.js.map +1 -0
- package/dist/provider-auth-observations.d.ts +22 -0
- package/dist/provider-auth-observations.d.ts.map +1 -0
- package/dist/provider-auth-observations.js +139 -0
- package/dist/provider-auth-observations.js.map +1 -0
- package/dist/provider-auth-operator.d.ts +19 -0
- package/dist/provider-auth-operator.d.ts.map +1 -0
- package/dist/provider-auth-operator.js +560 -0
- package/dist/provider-auth-operator.js.map +1 -0
- package/dist/provider-auth-status.d.ts +20 -0
- package/dist/provider-auth-status.d.ts.map +1 -0
- package/dist/provider-auth-status.js +235 -0
- package/dist/provider-auth-status.js.map +1 -0
- package/dist/provider-model-catalog.d.ts +17 -0
- package/dist/provider-model-catalog.d.ts.map +1 -1
- package/dist/provider-model-catalog.js +113 -2
- package/dist/provider-model-catalog.js.map +1 -1
- package/dist/provider-setup.d.ts +22 -0
- package/dist/provider-setup.d.ts.map +1 -1
- package/dist/provider-setup.js +101 -15
- package/dist/provider-setup.js.map +1 -1
- package/dist/reply-artifacts.d.ts +3 -1
- package/dist/reply-artifacts.d.ts.map +1 -1
- package/dist/reply-artifacts.js +45 -10
- package/dist/reply-artifacts.js.map +1 -1
- package/dist/request-model-override.d.ts +11 -2
- package/dist/request-model-override.d.ts.map +1 -1
- package/dist/request-model-override.js +51 -1
- package/dist/request-model-override.js.map +1 -1
- package/dist/request-scoped-mcp.d.ts +3 -0
- package/dist/request-scoped-mcp.d.ts.map +1 -1
- package/dist/request-scoped-mcp.js +1 -1
- package/dist/request-scoped-mcp.js.map +1 -1
- package/dist/run-history.d.ts.map +1 -1
- package/dist/run-history.js +56 -13
- package/dist/run-history.js.map +1 -1
- package/dist/seen-conversations.d.ts +4 -3
- package/dist/seen-conversations.d.ts.map +1 -1
- package/dist/seen-conversations.js +6 -5
- package/dist/seen-conversations.js.map +1 -1
- package/dist/session-history.d.ts +14 -0
- package/dist/session-history.d.ts.map +1 -1
- package/dist/session-history.js +120 -5
- package/dist/session-history.js.map +1 -1
- package/dist/systemd-command.d.ts +8 -0
- package/dist/systemd-command.d.ts.map +1 -0
- package/dist/systemd-command.js +206 -0
- package/dist/systemd-command.js.map +1 -0
- package/dist/systemd.d.ts +51 -0
- package/dist/systemd.d.ts.map +1 -0
- package/dist/systemd.js +299 -0
- package/dist/systemd.js.map +1 -0
- package/dist/tool-output-artifacts.d.ts +4 -0
- package/dist/tool-output-artifacts.d.ts.map +1 -0
- package/dist/tool-output-artifacts.js +17 -0
- package/dist/tool-output-artifacts.js.map +1 -0
- package/dist/tui-command.d.ts +0 -45
- package/dist/tui-command.d.ts.map +1 -1
- package/dist/tui-command.js +27 -264
- package/dist/tui-command.js.map +1 -1
- package/dist/untrusted-text.js +2 -2
- package/dist/web-command.d.ts +3 -0
- package/dist/web-command.d.ts.map +1 -1
- package/dist/web-command.js +112 -7
- package/dist/web-command.js.map +1 -1
- package/dist/web-request-coordinator.d.ts +19 -0
- package/dist/web-request-coordinator.d.ts.map +1 -0
- package/dist/web-request-coordinator.js +242 -0
- package/dist/web-request-coordinator.js.map +1 -0
- package/dist/wizard/prompts.d.ts.map +1 -1
- package/dist/wizard/prompts.js +1 -0
- package/dist/wizard/prompts.js.map +1 -1
- package/dist/wizard/run.js +1 -1
- package/dist/wizard/run.js.map +1 -1
- package/package.json +18 -18
- package/schema/mono-agent.config.schema.json +120 -8
- package/skills/mono-agent-composer/SKILL.md +4 -4
- package/skills/mono-agent-composer/references/config-blueprint.md +18 -7
- package/skills/mono-agent-composer/references/discovery-questions.md +10 -5
- package/skills/mono-agent-composer/references/feature-coverage.md +30 -14
- package/skills/mono-agent-composer/references/package-map.md +6 -3
- package/skills/mono-agent-composer/references/playbooks.md +20 -5
- package/skills/mono-agent-composer/references/validation.md +4 -3
- package/dist/configuration-proposal-main.d.ts +0 -3
- package/dist/configuration-proposal-main.d.ts.map +0 -1
- package/dist/configuration-proposal-main.js +0 -13
- package/dist/configuration-proposal-main.js.map +0 -1
- package/dist/configuration-proposal-tool.d.ts +0 -33
- package/dist/configuration-proposal-tool.d.ts.map +0 -1
- package/dist/configuration-proposal-tool.js +0 -180
- package/dist/configuration-proposal-tool.js.map +0 -1
- package/dist/local-configuration.d.ts +0 -99
- package/dist/local-configuration.d.ts.map +0 -1
- package/dist/local-configuration.js +0 -1302
- package/dist/local-configuration.js.map +0 -1
|
@@ -50,11 +50,12 @@ Use this path when the agent needs identity, selected skills, history, and optio
|
|
|
50
50
|
| Selected skill bodies | `@mono-agent/agent-harness` | Load only configured skills from `<skillsRoot>/<name>/SKILL.md` |
|
|
51
51
|
| Live operator skill registry | `@mono-agent/agent-app` + `@mono-agent/operator-adapter` | Classify installed skills as inlined, on-demand, or unavailable and expose a bounded memory-only snapshot for console discovery |
|
|
52
52
|
| Memory substrate (schema, migrations, FTS+vector db, RRF) | `@mono-agent/memory/store` | SQLite storage, BM25 FTS, optional vector index, hybrid recall; re-exports `MemoryStore`/`MemoryBlock`/`MemoryWriteResult` from `@mono-agent/agent-contracts` |
|
|
53
|
-
| Memory engine (all tiers: lite/journal/bujo) | `@mono-agent/memory/bujo` | `BujoMemoryStore` — tier-aware: FTS recall (lite), hybrid recall + static salience (journal), LLM capture/reconcile + entity graph + projection-only scheduled consolidation (bujo) |
|
|
53
|
+
| Memory engine (all tiers: lite/journal/bujo) | `@mono-agent/memory/bujo` | `BujoMemoryStore` — tier-aware: FTS recall (lite), hybrid recall + static salience (journal), LLM capture/reconcile + entity graph + projection-only scheduled consolidation (bujo); all tiers affirm bounded canonical chronological browse |
|
|
54
54
|
| Embedding providers | `@mono-agent/memory/search` | Exclusive Ollama/LM Studio/OpenAI embedding providers used by the store subpath for vector recall; `agent-app` owns guided typed discovery and the real readiness probe |
|
|
55
55
|
| Composer documentation search + guided reading | `@mono-agent/docs-mcp` (optional plugin) | Exact-version offline hybrid semantic/BM25 `mono_agent_docs` search plus anchored reads, cross-link resolution, and continuation windows over canonical docs and composer references; paired by `mono-agent install-skill`, outside the composed agent's own `mcp.json` |
|
|
56
56
|
| External Supermemory backend | `@mono-agent/memory-supermemory` (optional plugin) | Explicitly installed lockstep package selected by `memory.backend: "supermemory"`; proxies the shared `MemoryStore` / `MemoryRecall` contracts to local or hosted Supermemory for server-side extraction, consolidation, and hybrid recall |
|
|
57
57
|
| Recall tool surface | `@mono-agent/agent-app` (bundled) | Auto-provisions read-only `MemoryRecall` for every configured tier and direct configured responder; automatic/tool recall share the same store and per-turn query cache |
|
|
58
|
+
| Chronological journal tool surface | `@mono-agent/agent-app` (bundled) | Auto-provisions policy-gated `MemoryJournal` only for affirmative local Lite/Journal/BuJo capability; strict explicit dates/zone, frozen request snapshots, safe provenance, no Supermemory/search fallback |
|
|
58
59
|
|
|
59
60
|
Mono-agent selected skills are not auto-selected by description. The host chooses `context.selectedSkills`, and the harness loads those exact bodies.
|
|
60
61
|
|
|
@@ -82,13 +83,15 @@ companion, not an MCP server injected into every composed agent. Add project
|
|
|
82
83
|
MCP servers to the agent's own `mcp.json`; do not copy the documentation server
|
|
83
84
|
there unless the resulting agent itself must answer mono-agent framework questions.
|
|
84
85
|
|
|
85
|
-
`RunHistory`, `SessionHistory`, and `SetConversationTitle` are app-owned
|
|
86
|
+
`RunHistory`, `SessionHistory`, `MemoryJournal`, and `SetConversationTitle` are app-owned
|
|
86
87
|
request-scoped tools, not entries for `mcp.json`. `SessionHistory` searches the
|
|
87
88
|
current logical session's retained managed-tool calls/results and needs no config
|
|
88
89
|
key. `SetConversationTitle` appears only for writable interactive web threads;
|
|
89
90
|
it keeps automatic semantic titles current, while a user rename permanently
|
|
90
91
|
wins. Allow-all exposes eligible tools; a specific allowlist must name each one.
|
|
91
|
-
|
|
92
|
+
`MemoryJournal` also requires `memory.recallTool.enabled` and an affirmative local
|
|
93
|
+
browse capability; Supermemory never acquires it through policy alone. Every route is
|
|
94
|
+
Pi-native, so no route family suppresses any of these tools; the
|
|
92
95
|
surface conditions above (writable interactive web thread, retained managed-tool
|
|
93
96
|
calls) are the only gates.
|
|
94
97
|
`@mono-agent/agent-app` also owns rich reply composition. `PublishReplyFile`
|
|
@@ -11,6 +11,18 @@ Flow, check whether one of these fits and adapt it. Verify every key against
|
|
|
11
11
|
|
|
12
12
|
---
|
|
13
13
|
|
|
14
|
+
## Efficient command watches
|
|
15
|
+
|
|
16
|
+
For repeated terminal redraws, enable `processJobs.enabled` and
|
|
17
|
+
`monitors.enabled`, then use Monitor with `wake_on: "batch"`,
|
|
18
|
+
`dedupe: "batch"`, and a chosen `min_wake_interval_ms`. The host clamps the
|
|
19
|
+
interval to `monitors.maxWakeIntervalMs` (default/cap 300000); check the start
|
|
20
|
+
receipt's effective policy. First and terminal wakes bypass the floor.
|
|
21
|
+
Use `wake_on: "exit"` with default dedupe/interval for exactly one terminal
|
|
22
|
+
wake and a bounded retained tail. Finite work whose final result matters still
|
|
23
|
+
fits a background process job. Cancellation intentionally stops the watch;
|
|
24
|
+
never automatically recreate it.
|
|
25
|
+
|
|
14
26
|
## 1. Personal Telegram assistant with BuJo memory
|
|
15
27
|
**For:** an individual wanting a private assistant that remembers.
|
|
16
28
|
**Goal:** a Telegram bot (long polling) that captures every turn into BuJo memory with scheduled consolidation and recalls past notes semantically.
|
|
@@ -281,12 +293,15 @@ and are rejected at load; emit `runtime.fallbacks[]` only.
|
|
|
281
293
|
"telegram": { "enabled": true, "allowedChatIds": ["123456789"], "apiRoot": "http://127.0.0.1:8081", "attachments": { "maxBytes": 268435456, "maxUploadBytes": 268435456 } }
|
|
282
294
|
}
|
|
283
295
|
```
|
|
296
|
+
Set `interaction.askUser.timeoutMs` to `null` when this workflow must keep the
|
|
297
|
+
question pending until the user answers or cancels; the default remains ten
|
|
298
|
+
minutes.
|
|
284
299
|
**Steps:** run a loopback self-hosted Bot API server if files exceed 20 MB, wire a long-running MCP tool in `.mcp.json`, `validate`, `start`.
|
|
285
300
|
**Smoke:** send media with no caption, answer the `AskUser` question, watch progress update during the long job, and receive both an explicit `TelegramSendFile` send and a final generated reply file published with `PublishReplyFile` as native documents.
|
|
286
301
|
|
|
287
302
|
## 16. Local-first web research agent
|
|
288
303
|
**For:** a researcher wanting operator-owned search infrastructure and bounded public-page extraction.
|
|
289
|
-
**Goal:** discover through loopback SearXNG, extract pages locally, and optionally render
|
|
304
|
+
**Goal:** discover through explicit Ollama or loopback SearXNG, extract pages locally, and optionally render JavaScript HTML in an isolated anonymous browser.
|
|
290
305
|
**Features:** `runtime.web-research`, `runtime.webfetch-retry`, `runtime.builtin-tools`, `sandbox.network-policy`.
|
|
291
306
|
|
|
292
307
|
```json
|
|
@@ -295,7 +310,7 @@ and are rejected at load; emit `runtime.fallbacks[]` only.
|
|
|
295
310
|
"tools": {
|
|
296
311
|
"allowedTools": ["Read", "Glob", "Grep", "WebSearch", "WebFetch"],
|
|
297
312
|
"web": {
|
|
298
|
-
"search": { "backend": "
|
|
313
|
+
"search": { "backend": "auto", "maxRequestsPerRun": 4, "ollama": { "baseUrl": "http://127.0.0.1:11434" }, "searxng": { "endpoint": "http://127.0.0.1:8088" } },
|
|
299
314
|
"fetch": { "render": "never", "browserCommand": "agent-browser" }
|
|
300
315
|
}
|
|
301
316
|
},
|
|
@@ -303,6 +318,6 @@ and are rejected at load; emit `runtime.fallbacks[]` only.
|
|
|
303
318
|
}
|
|
304
319
|
```
|
|
305
320
|
|
|
306
|
-
**Steps:** provision an operator-owned loopback SearXNG instance with JSON responses enabled → keep strict
|
|
307
|
-
**Boundary:** local SearXNG
|
|
308
|
-
**Smoke:** ask for
|
|
321
|
+
**Steps:** configure explicit local or hosted `ollama`, or provision an operator-owned loopback SearXNG instance with JSON responses enabled → keep a named backend strict or choose `auto` for explicitly configured Ollama, configured SearXNG, ChatGPT-subscription Codex, then keyless fallback → keep the default four-request run budget → keep config render `never`, or install `agent-browser >=0.33.1` and opt into config render `auto` for SPA pages; use per-call `WebFetch` `render: "always"` only when a known page must be browser-first → `validate` → `start`.
|
|
322
|
+
**Boundary:** local SearXNG and Ollama search are private infrastructure, not offline indexes; they contact public services and WebFetch contacts result sites. Hosted Ollama credentials are bound to the exact official origin. `localhost` permits a local companion but blocks public fetches. Rendering does not bypass authentication or access challenges.
|
|
323
|
+
**Smoke:** ask for one broad query and one official-page fetch; require canonical ranked URLs, request-budget metadata, untrusted-content boundaries, bounded timing metadata without query/URL leakage, and no duplicate network work for an identical call in the run. The researcher must not sleep or retry after a cooldown.
|
|
@@ -123,9 +123,10 @@ pnpm test
|
|
|
123
123
|
| Webhook | `curl` the invocation path and inspect the response body/status. |
|
|
124
124
|
| Cron | Run a one-off scheduled invocation or wait for one tick. |
|
|
125
125
|
| Observability | Confirm a run writes a JSONL artifact with strings capped: non-numeric values under sensitive-looking object keys are redacted; numeric values under matched keys are retained; retained free text is scanned for a closed set of high-confidence credential shapes. If an `observability.exporters` Phoenix entry is set, confirm the trace appears in Phoenix. |
|
|
126
|
-
| Memory recall tool | With any memory
|
|
127
|
-
|
|
|
128
|
-
|
|
|
126
|
+
| Memory recall tool | With any memory backend configured (`memory.recallTool.enabled` defaults on), ask the agent for one targeted old fact and confirm `MemoryRecall` appears and returns it. Active-conversation-relative questions must remain in chat context, not durable search. |
|
|
127
|
+
| Memory journal tool | With a synthetic local Lite/Journal/BuJo store and policy allowing `MemoryJournal`, call an explicit date range and IANA zone over at least two pages. Verify instant/id order, stable cursor continuation, safe relative provenance, lifecycle state, audit/dropped exclusion, explicit completeness metadata, and no embedding/chat request. A complete empty range must be `noData`; backend failure must be `journal_unavailable`; Supermemory or disabled reads must advertise no endpoint. Prompt/description assertions prove routing contracts, not autonomous model choice. |
|
|
128
|
+
| Session tool history | Complete a managed tool call, start a later cold turn in the same logical conversation, and confirm its bounded path-opaque call/result projection is available. Force one accepted write past the 250 ms foreground ceiling in a throwaway store: its event must say `deferred` without the “not saved” warning, and run finalization must wait until `SessionHistory` can retrieve the committed row. After compaction, use `SessionHistory.search` then `get`; verify another conversation and the current run remain unavailable. A definitive writer rejection must still say `failed`; a crash-dangling call must recover once as `interrupted` without rerun, while a clean writer shutdown must not be reported as crash recovery. |
|
|
129
|
+
| Web research | Run `mono-agent validate` and require the Web search & fetch section to prove the explicitly selected Ollama or configured loopback SearXNG route plus `agent-browser >=0.33.1` when rendering is enabled. Then ask for two query variants and one official-page fetch; require canonical ranked URLs, untrusted-content boundaries, honest provider/render failures, and bounded timing metadata without query/URL/credential leakage. Rendering never proves access-challenge bypass. |
|
|
129
130
|
| Semantic memory search | With `memory.embeddings` set, first prove the configured provider only: Ollama model advertises `embedding` through `/api/show` and answers `/api/embed`, or LM Studio model has exact `type: "embedding"` in `/api/v1/models` and answers `/v1/embeddings`. Verify the finite vector dimension matches config, then ask a paraphrased question about an old note and confirm `MemoryRecall` returns it. Never accept a cross-provider fallback as proof. |
|
|
130
131
|
|
|
131
132
|
## Failure Handling
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"configuration-proposal-main.d.ts","sourceRoot":"","sources":["../src/configuration-proposal-main.ts"],"names":[],"mappings":""}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
3
|
-
import { configurationProposalChildSettingsFromEnv, createConfigurationProposalServer, } from "./configuration-proposal-tool.js";
|
|
4
|
-
async function main() {
|
|
5
|
-
const settings = configurationProposalChildSettingsFromEnv(process.env);
|
|
6
|
-
const server = createConfigurationProposalServer(settings);
|
|
7
|
-
await server.connect(new StdioServerTransport());
|
|
8
|
-
}
|
|
9
|
-
main().catch((error) => {
|
|
10
|
-
process.stderr.write(`mono-agent-configuration-proposal: fatal: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
11
|
-
process.exitCode = 1;
|
|
12
|
-
});
|
|
13
|
-
//# sourceMappingURL=configuration-proposal-main.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"configuration-proposal-main.js","sourceRoot":"","sources":["../src/configuration-proposal-main.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EACL,yCAAyC,EACzC,iCAAiC,GAClC,MAAM,kCAAkC,CAAC;AAE1C,KAAK,UAAU,IAAI;IACjB,MAAM,QAAQ,GAAG,yCAAyC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,iCAAiC,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9H,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
-
export declare const CONFIGURATION_PROPOSAL_MCP_SERVER_NAME = "agent_configuration";
|
|
3
|
-
export declare const CONFIGURATION_PROPOSAL_TOOL_NAME = "ProposeAgentConfiguration";
|
|
4
|
-
export interface JsonPatchOperation {
|
|
5
|
-
readonly op: "add" | "remove" | "replace" | "move" | "copy" | "test";
|
|
6
|
-
readonly path: string;
|
|
7
|
-
readonly from?: string;
|
|
8
|
-
readonly value?: unknown;
|
|
9
|
-
}
|
|
10
|
-
export interface AgentConfigurationProposal {
|
|
11
|
-
readonly schema: "mono-agent.configuration-proposal.v1";
|
|
12
|
-
readonly id: string;
|
|
13
|
-
readonly baseVersion: string;
|
|
14
|
-
readonly rationale: string;
|
|
15
|
-
readonly patch: readonly JsonPatchOperation[];
|
|
16
|
-
readonly role?: string;
|
|
17
|
-
readonly createdAt: string;
|
|
18
|
-
}
|
|
19
|
-
export interface ConfigurationProposalChildSettings {
|
|
20
|
-
readonly sinkPath: string;
|
|
21
|
-
readonly baseVersion: string;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Proposal copy is rendered in an out-of-band terminal approval card. Keep
|
|
25
|
-
* ordinary Unicode text and LF newlines intact, but reject terminal controls
|
|
26
|
-
* and bidi controls that could clear, overwrite, or visually reorder the
|
|
27
|
-
* operator's review.
|
|
28
|
-
*/
|
|
29
|
-
export declare function containsUnsafeConfigurationReviewControl(value: string): boolean;
|
|
30
|
-
export declare function configurationProposalChildSettingsFromEnv(env: Record<string, string | undefined>): ConfigurationProposalChildSettings;
|
|
31
|
-
export declare function configurationProposalMcpServerSpec(settings: ConfigurationProposalChildSettings, cwd: string): Record<string, unknown>;
|
|
32
|
-
export declare function createConfigurationProposalServer(settings: ConfigurationProposalChildSettings): McpServer;
|
|
33
|
-
//# sourceMappingURL=configuration-proposal-tool.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"configuration-proposal-tool.d.ts","sourceRoot":"","sources":["../src/configuration-proposal-tool.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,eAAO,MAAM,sCAAsC,wBAAwB,CAAC;AAC5E,eAAO,MAAM,gCAAgC,8BAA8B,CAAC;AAK5E,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACrE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,MAAM,EAAE,sCAAsC,CAAC;IACxD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC9C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;GAKG;AACH,wBAAgB,wCAAwC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE/E;AAwCD,wBAAgB,yCAAyC,CACvD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GACtC,kCAAkC,CAUpC;AAED,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,kCAAkC,EAC5C,GAAG,EAAE,MAAM,GACV,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAWzB;AAED,wBAAgB,iCAAiC,CAAC,QAAQ,EAAE,kCAAkC,GAAG,SAAS,CAoFzG"}
|
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
import { randomUUID } from "node:crypto";
|
|
2
|
-
import { rename, rm, writeFile } from "node:fs/promises";
|
|
3
|
-
import { fileURLToPath } from "node:url";
|
|
4
|
-
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
5
|
-
import { z } from "zod";
|
|
6
|
-
import { containsSecretLikeValue, containsUnsafeReviewControl } from "./untrusted-text.js";
|
|
7
|
-
export const CONFIGURATION_PROPOSAL_MCP_SERVER_NAME = "agent_configuration";
|
|
8
|
-
export const CONFIGURATION_PROPOSAL_TOOL_NAME = "ProposeAgentConfiguration";
|
|
9
|
-
const SINK_ENV = "MONO_AGENT_CONFIGURATION_PROPOSAL_SINK";
|
|
10
|
-
const BASE_VERSION_ENV = "MONO_AGENT_CONFIGURATION_BASE_VERSION";
|
|
11
|
-
/**
|
|
12
|
-
* Proposal copy is rendered in an out-of-band terminal approval card. Keep
|
|
13
|
-
* ordinary Unicode text and LF newlines intact, but reject terminal controls
|
|
14
|
-
* and bidi controls that could clear, overwrite, or visually reorder the
|
|
15
|
-
* operator's review.
|
|
16
|
-
*/
|
|
17
|
-
export function containsUnsafeConfigurationReviewControl(value) {
|
|
18
|
-
return containsUnsafeReviewControl(value);
|
|
19
|
-
}
|
|
20
|
-
const patchOperationSchema = z.object({
|
|
21
|
-
op: z.enum(["add", "remove", "replace", "move", "copy", "test"]),
|
|
22
|
-
path: z.string().min(1).max(500).startsWith("/"),
|
|
23
|
-
from: z.string().min(1).max(500).startsWith("/").optional(),
|
|
24
|
-
value: z.unknown().optional(),
|
|
25
|
-
}).superRefine((operation, context) => {
|
|
26
|
-
if ((operation.op === "move" || operation.op === "copy") && operation.from === undefined) {
|
|
27
|
-
context.addIssue({ code: "custom", message: `${operation.op} requires from.` });
|
|
28
|
-
}
|
|
29
|
-
if ((operation.op === "add" || operation.op === "replace" || operation.op === "test") && !("value" in operation)) {
|
|
30
|
-
context.addIssue({ code: "custom", message: `${operation.op} requires value.` });
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
const proposalInputSchema = {
|
|
34
|
-
rationale: configurationReviewTextSchema(2_000, "Short operator-facing reason for this change."),
|
|
35
|
-
patch: z.array(patchOperationSchema).max(50).describe("RFC 6902 patch against mono-agent.config.json. May be empty only for a Role-only proposal."),
|
|
36
|
-
role: configurationReviewTextSchema(8_000, "Optional replacement body for the existing ## Role section in the configured identity document (normally IDENTITY.md).").optional(),
|
|
37
|
-
};
|
|
38
|
-
function configurationReviewTextSchema(maxLength, description) {
|
|
39
|
-
return z.string()
|
|
40
|
-
.superRefine((value, context) => {
|
|
41
|
-
if (containsUnsafeConfigurationReviewControl(value)) {
|
|
42
|
-
context.addIssue({
|
|
43
|
-
code: "custom",
|
|
44
|
-
message: "Configuration proposal review text contains unsafe terminal or bidi controls.",
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
})
|
|
48
|
-
.transform((value) => value.trim())
|
|
49
|
-
.pipe(z.string().min(1).max(maxLength))
|
|
50
|
-
.describe(description);
|
|
51
|
-
}
|
|
52
|
-
export function configurationProposalChildSettingsFromEnv(env) {
|
|
53
|
-
const sinkPath = env[SINK_ENV]?.trim();
|
|
54
|
-
const baseVersion = env[BASE_VERSION_ENV]?.trim();
|
|
55
|
-
if (sinkPath === undefined || sinkPath.length === 0) {
|
|
56
|
-
throw new Error(`Missing ${SINK_ENV}.`);
|
|
57
|
-
}
|
|
58
|
-
if (baseVersion === undefined || baseVersion.length === 0) {
|
|
59
|
-
throw new Error(`Missing ${BASE_VERSION_ENV}.`);
|
|
60
|
-
}
|
|
61
|
-
return { sinkPath, baseVersion };
|
|
62
|
-
}
|
|
63
|
-
export function configurationProposalMcpServerSpec(settings, cwd) {
|
|
64
|
-
return {
|
|
65
|
-
type: "stdio",
|
|
66
|
-
command: process.execPath,
|
|
67
|
-
args: [fileURLToPath(new URL("./configuration-proposal-main.js", import.meta.url))],
|
|
68
|
-
cwd,
|
|
69
|
-
env: {
|
|
70
|
-
[SINK_ENV]: settings.sinkPath,
|
|
71
|
-
[BASE_VERSION_ENV]: settings.baseVersion,
|
|
72
|
-
},
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
export function createConfigurationProposalServer(settings) {
|
|
76
|
-
const server = new McpServer({ name: "agent-configuration", version: "1.0.0" });
|
|
77
|
-
let proposed = false;
|
|
78
|
-
server.registerTool(CONFIGURATION_PROPOSAL_TOOL_NAME, {
|
|
79
|
-
title: "Propose agent configuration",
|
|
80
|
-
description: "Propose, but never apply, a small local agent configuration change. The host validates the candidate and asks the operator to approve it outside the model conversation. Never include credentials or secret values.",
|
|
81
|
-
annotations: {
|
|
82
|
-
// This call records an inert, session-scoped proposal only. It cannot
|
|
83
|
-
// mutate the agent config or reach the network; the host owns the
|
|
84
|
-
// separate validation and approval transaction. Marking that boundary
|
|
85
|
-
// explicitly also prevents unattended MCP clients from inserting a
|
|
86
|
-
// second, provider-owned approval prompt before our review card.
|
|
87
|
-
readOnlyHint: true,
|
|
88
|
-
destructiveHint: false,
|
|
89
|
-
openWorldHint: false,
|
|
90
|
-
},
|
|
91
|
-
inputSchema: proposalInputSchema,
|
|
92
|
-
}, async (args) => {
|
|
93
|
-
if (args.patch.length === 0 && args.role === undefined) {
|
|
94
|
-
return {
|
|
95
|
-
isError: true,
|
|
96
|
-
content: [{ type: "text", text: "A configuration proposal must change config, the configured identity document's ## Role, or both." }],
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
if (proposed) {
|
|
100
|
-
return {
|
|
101
|
-
isError: true,
|
|
102
|
-
content: [{ type: "text", text: "Only one configuration proposal is accepted per turn." }],
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
if (containsUnsafeConfigurationReviewControl(args.rationale)
|
|
106
|
-
|| (args.role !== undefined && containsUnsafeConfigurationReviewControl(args.role))) {
|
|
107
|
-
return {
|
|
108
|
-
isError: true,
|
|
109
|
-
content: [{
|
|
110
|
-
type: "text",
|
|
111
|
-
text: "Configuration proposal review text may contain printable characters and LF newlines only; unsafe terminal or bidi controls were rejected.",
|
|
112
|
-
}],
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
if (args.patch.some((operation) => secretBearingPointer(operation.path)
|
|
116
|
-
|| (operation.from !== undefined && secretBearingPointer(operation.from))
|
|
117
|
-
|| containsSecretLike(operation.value))
|
|
118
|
-
|| containsSecretLike(args.rationale)
|
|
119
|
-
|| (args.role !== undefined && containsSecretLike(args.role))) {
|
|
120
|
-
return {
|
|
121
|
-
isError: true,
|
|
122
|
-
content: [{
|
|
123
|
-
type: "text",
|
|
124
|
-
text: "Secret-bearing values and fields cannot enter a configuration proposal. Hand off to the masked mono-agent auth or owner-only .env flow.",
|
|
125
|
-
}],
|
|
126
|
-
};
|
|
127
|
-
}
|
|
128
|
-
proposed = true;
|
|
129
|
-
const proposal = {
|
|
130
|
-
schema: "mono-agent.configuration-proposal.v1",
|
|
131
|
-
id: randomUUID(),
|
|
132
|
-
baseVersion: settings.baseVersion,
|
|
133
|
-
rationale: args.rationale,
|
|
134
|
-
patch: args.patch,
|
|
135
|
-
...(args.role === undefined ? {} : { role: args.role }),
|
|
136
|
-
createdAt: new Date().toISOString(),
|
|
137
|
-
};
|
|
138
|
-
await writeProposal(settings.sinkPath, proposal);
|
|
139
|
-
return {
|
|
140
|
-
content: [{
|
|
141
|
-
type: "text",
|
|
142
|
-
text: "Proposal recorded. Explain it briefly, but do not claim it was applied; the host will validate it and ask the operator separately.",
|
|
143
|
-
}],
|
|
144
|
-
structuredContent: { proposalId: proposal.id, status: "pending_host_validation" },
|
|
145
|
-
};
|
|
146
|
-
});
|
|
147
|
-
return server;
|
|
148
|
-
}
|
|
149
|
-
function secretBearingPointer(pointer) {
|
|
150
|
-
return pointer.slice(1).split("/").some((raw) => {
|
|
151
|
-
const segment = raw.replaceAll("~1", "/").replaceAll("~0", "~");
|
|
152
|
-
return /(?:api.?key|credential|password|secret|token)/iu.test(segment) && !/(?:env|path)$/iu.test(segment);
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
function containsSecretLike(value) {
|
|
156
|
-
if (typeof value === "string") {
|
|
157
|
-
return containsSecretLikeValue(value);
|
|
158
|
-
}
|
|
159
|
-
if (Array.isArray(value))
|
|
160
|
-
return value.some(containsSecretLike);
|
|
161
|
-
if (typeof value === "object" && value !== null) {
|
|
162
|
-
return Object.entries(value).some(([key, entry]) => (/(?:api.?key|credential|password|secret|token)/iu.test(key) && !/(?:env|path)$/iu.test(key))
|
|
163
|
-
|| containsSecretLike(entry));
|
|
164
|
-
}
|
|
165
|
-
return false;
|
|
166
|
-
}
|
|
167
|
-
async function writeProposal(path, proposal) {
|
|
168
|
-
// The owner-local TUI pre-creates the capability directory. Never recreate
|
|
169
|
-
// it here: removing that directory on console exit must revoke late tool
|
|
170
|
-
// calls from an abort-ignoring provider rather than resurrect the session.
|
|
171
|
-
const temporary = `${path}.tmp-${process.pid}-${Date.now()}`;
|
|
172
|
-
try {
|
|
173
|
-
await writeFile(temporary, `${JSON.stringify(proposal)}\n`, { flag: "wx", mode: 0o600 });
|
|
174
|
-
await rename(temporary, path);
|
|
175
|
-
}
|
|
176
|
-
finally {
|
|
177
|
-
await rm(temporary, { force: true });
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
//# sourceMappingURL=configuration-proposal-tool.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"configuration-proposal-tool.js","sourceRoot":"","sources":["../src/configuration-proposal-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import type { AgentResponder } from "@mono-agent/agent-contracts";
|
|
2
|
-
import { type MonoAgentConfig, type MonoAgentConfigJson } from "@mono-agent/config";
|
|
3
|
-
import type { AgentHarnessRuntimeOptionsExtension, AgentHarnessRuntimeOptionsInput } from "@mono-agent/agent-harness";
|
|
4
|
-
import type { ConfigurationProposalCard, ConfigurationProposalResult, TuiConfigurationController } from "@mono-agent/tui";
|
|
5
|
-
import type { BackgroundSnapshot } from "./background-snapshot.js";
|
|
6
|
-
import { type AgentConfigurationProposal, type JsonPatchOperation } from "./configuration-proposal-tool.js";
|
|
7
|
-
export declare const LOCAL_CONFIGURATION_PROMPT = "Begin the dedicated self-configuration session. This is not ordinary chat. Read the mono-agent-configure skill. In the first assistant message, identify the session as SELF-CONFIG and show one compact, user-led map of every capability area: identity and knowledge; runtime and models; skills, tools, MCP servers, and plugins; memory; channels, APIs, and A2A; automation and proactive work; security, sandboxing, and secrets; observability and operations; and acceptance criteria. Explain that the conversation can build a workflow from trigger \u2192 context/data \u2192 tools/actions \u2192 delivery \u2192 memory \u2192 safety/operations \u2192 success checks. State that secrets must never be entered, every file change requires a separate host-owned approval, and approval, rejection, done, or no changes keeps SELF-CONFIG active. Only /quit, /exit, or ctrl+c twice exits this session; quitting never sends a background stop request. Invite the operator to choose an area or describe the workflow they want, using one concise question. Do not repeat the setup wizard and do not overwhelm the operator with a questionnaire. The session may use multiple turns: ask one focused question at a time, and record one minimal coherent proposal with ProposeAgentConfiguration only when enough information is available. It is valid to explain or ask the next question without proposing a change. Never execute ordinary tasks with configuration authority or claim a proposal was applied; the local host validates proposals and asks for separate approval.";
|
|
8
|
-
export declare const LOCAL_CONFIGURATION_OPERATOR_PROMPT = "Continue the dedicated SELF-CONFIG conversation. The capability map and opening invitation were already shown: do not repeat them. Apply the mono-agent-configure skill instructions already in this conversation, loading them with ReadSkill only if they are absent, and use the existing conversation plus any host outcome below. Help the operator shape a usable workflow across trigger \u2192 context/data \u2192 tools/actions \u2192 delivery \u2192 memory \u2192 safety/operations \u2192 success checks. Take one conversational step: ask at most one focused question, explain the relevant supported or guided path, or, when the request is decision-complete, record one minimal coherent proposal with ProposeAgentConfiguration. A turn without a proposal is expected while exploring. After a host-applied or rejected proposal, continue with the next relevant area instead of handing off to ordinary chat. Never ask for secrets, execute an ordinary task with configuration authority, or claim a proposal was applied.";
|
|
9
|
-
export interface ConfigurationBackgroundConnection {
|
|
10
|
-
readonly baseUrl: string;
|
|
11
|
-
readonly apiKey?: string;
|
|
12
|
-
}
|
|
13
|
-
export type ConfigurationBackgroundRestartResult = {
|
|
14
|
-
readonly ok: true;
|
|
15
|
-
readonly connection: ConfigurationBackgroundConnection;
|
|
16
|
-
} | {
|
|
17
|
-
readonly ok: false;
|
|
18
|
-
readonly message: string;
|
|
19
|
-
};
|
|
20
|
-
export type RestartConfigurationBackground = (expectedSnapshot: BackgroundSnapshot) => Promise<ConfigurationBackgroundRestartResult>;
|
|
21
|
-
interface AppliedConfigurationChange {
|
|
22
|
-
readonly changeId: string;
|
|
23
|
-
readonly rollbackDir: string;
|
|
24
|
-
readonly snapshot: BackgroundSnapshot;
|
|
25
|
-
rollback(): Promise<BackgroundSnapshot>;
|
|
26
|
-
}
|
|
27
|
-
export interface LocalConfigurationSession {
|
|
28
|
-
readonly responder: AgentResponder;
|
|
29
|
-
readonly title: string;
|
|
30
|
-
dispose(): Promise<void>;
|
|
31
|
-
}
|
|
32
|
-
export interface CreateLocalConfigurationSessionOptions {
|
|
33
|
-
readonly cwd: string;
|
|
34
|
-
readonly configPath: string;
|
|
35
|
-
readonly env: Record<string, string | undefined>;
|
|
36
|
-
readonly configure?: boolean;
|
|
37
|
-
readonly envFile?: string;
|
|
38
|
-
/** Deterministic transaction-race seam for regression tests. */
|
|
39
|
-
readonly beforeSnapshotCapture?: (phase: "apply" | "rollback") => void | Promise<void>;
|
|
40
|
-
}
|
|
41
|
-
export interface CreateRemoteConfigurationSessionOptions extends CreateLocalConfigurationSessionOptions {
|
|
42
|
-
readonly restartBackground: RestartConfigurationBackground;
|
|
43
|
-
/** Deterministic failure seam for capability-rotation regression tests. */
|
|
44
|
-
readonly beforeRotateAttempt?: () => void | Promise<void>;
|
|
45
|
-
}
|
|
46
|
-
export interface RemoteConfigurationSession {
|
|
47
|
-
readonly configuration: TuiConfigurationController;
|
|
48
|
-
dispose(): Promise<void>;
|
|
49
|
-
}
|
|
50
|
-
/** Build a current-folder responder for ordinary embedded chat only. */
|
|
51
|
-
export declare function createLocalConfigurationSession(options: CreateLocalConfigurationSessionOptions): Promise<LocalConfigurationSession>;
|
|
52
|
-
/**
|
|
53
|
-
* Create the local host controller for a remote configuration conversation.
|
|
54
|
-
* The daemon only proposes; this process validates, confirms, writes, restarts,
|
|
55
|
-
* proves readiness, and rolls back on failure.
|
|
56
|
-
*/
|
|
57
|
-
export declare function createRemoteConfigurationSession(options: CreateRemoteConfigurationSessionOptions): Promise<RemoteConfigurationSession>;
|
|
58
|
-
export interface ConfigurationRuntimeExtensionOptions {
|
|
59
|
-
readonly cwd: string;
|
|
60
|
-
/** Canonical mutable path used only to authenticate this agent folder/capability root. */
|
|
61
|
-
readonly configPath: string;
|
|
62
|
-
/** Immutable worker copy used for route classification and proposal base version. */
|
|
63
|
-
readonly configReadPath?: string;
|
|
64
|
-
readonly env: Record<string, string | undefined>;
|
|
65
|
-
}
|
|
66
|
-
/** Install proposal-only authority on explicitly capability-marked TUI requests. */
|
|
67
|
-
export declare function createLocalConfigurationRuntimeExtension(options: ConfigurationRuntimeExtensionOptions): (input: AgentHarnessRuntimeOptionsInput) => Promise<AgentHarnessRuntimeOptionsExtension>;
|
|
68
|
-
export declare class LocalConfigurationManager {
|
|
69
|
-
private readonly options;
|
|
70
|
-
private readonly proposalRoot;
|
|
71
|
-
readonly currentConfig: MonoAgentConfig;
|
|
72
|
-
readonly roleLocation: string;
|
|
73
|
-
private readonly prepared;
|
|
74
|
-
private readonly cleanupPaths;
|
|
75
|
-
private currentSessionId;
|
|
76
|
-
private currentSessionDir;
|
|
77
|
-
private disabledReason;
|
|
78
|
-
private constructor();
|
|
79
|
-
get sessionId(): string;
|
|
80
|
-
static create(options: CreateLocalConfigurationSessionOptions): Promise<LocalConfigurationManager>;
|
|
81
|
-
/** Revoke the completed attempt's opaque filesystem capability before issuing the next one. */
|
|
82
|
-
rotateAttempt(): Promise<void>;
|
|
83
|
-
/** Poison the public capability id and best-effort remove every owned attempt path. */
|
|
84
|
-
disableConfigurationAttempts(error: unknown): Promise<void>;
|
|
85
|
-
private assertAttemptsEnabled;
|
|
86
|
-
takeProposal(): Promise<ConfigurationProposalCard | undefined>;
|
|
87
|
-
reject(id: string): Promise<ConfigurationProposalResult>;
|
|
88
|
-
prepareProposal(proposal: AgentConfigurationProposal): Promise<ConfigurationProposalCard>;
|
|
89
|
-
private prepare;
|
|
90
|
-
apply(id: string): Promise<AppliedConfigurationChange>;
|
|
91
|
-
private applyPrepared;
|
|
92
|
-
private captureCommittedSnapshot;
|
|
93
|
-
private validateCandidate;
|
|
94
|
-
dispose(): Promise<void>;
|
|
95
|
-
}
|
|
96
|
-
export declare function isLocalConfigurationRequest(metadata: Record<string, unknown> | undefined): boolean;
|
|
97
|
-
export declare function applyJsonPatch(input: MonoAgentConfigJson, operations: readonly JsonPatchOperation[]): MonoAgentConfigJson;
|
|
98
|
-
export {};
|
|
99
|
-
//# sourceMappingURL=local-configuration.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"local-configuration.d.ts","sourceRoot":"","sources":["../src/local-configuration.ts"],"names":[],"mappings":"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"}
|