@mono-agent/agent-app 0.11.3 → 0.11.4
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 +222 -26
- package/dist/adapter-send-tools-main.js +7 -1
- package/dist/adapter-send-tools-main.js.map +1 -1
- package/dist/adapter-send-tools.d.ts +19 -1
- package/dist/adapter-send-tools.d.ts.map +1 -1
- package/dist/adapter-send-tools.js +127 -13
- package/dist/adapter-send-tools.js.map +1 -1
- package/dist/app-config.d.ts.map +1 -1
- package/dist/app-config.js +15 -2
- package/dist/app-config.js.map +1 -1
- package/dist/app-controller-channels.d.ts +8 -0
- package/dist/app-controller-channels.d.ts.map +1 -0
- package/dist/app-controller-channels.js +207 -0
- package/dist/app-controller-channels.js.map +1 -0
- package/dist/app-controller-continuation.d.ts +26 -0
- package/dist/app-controller-continuation.d.ts.map +1 -0
- package/dist/app-controller-continuation.js +198 -0
- package/dist/app-controller-continuation.js.map +1 -0
- package/dist/app-controller-lifecycle.d.ts +6 -0
- package/dist/app-controller-lifecycle.d.ts.map +1 -0
- package/dist/app-controller-lifecycle.js +81 -0
- package/dist/app-controller-lifecycle.js.map +1 -0
- package/dist/app-controller-maintenance.d.ts +13 -0
- package/dist/app-controller-maintenance.d.ts.map +1 -0
- package/dist/app-controller-maintenance.js +180 -0
- package/dist/app-controller-maintenance.js.map +1 -0
- package/dist/app-controller-memory-health.d.ts +12 -0
- package/dist/app-controller-memory-health.d.ts.map +1 -0
- package/dist/app-controller-memory-health.js +160 -0
- package/dist/app-controller-memory-health.js.map +1 -0
- package/dist/app-controller-memory.d.ts +9 -0
- package/dist/app-controller-memory.d.ts.map +1 -0
- package/dist/app-controller-memory.js +83 -0
- package/dist/app-controller-memory.js.map +1 -0
- package/dist/app-controller-responder.d.ts +20 -0
- package/dist/app-controller-responder.d.ts.map +1 -0
- package/dist/app-controller-responder.js +246 -0
- package/dist/app-controller-responder.js.map +1 -0
- package/dist/app-controller-traceability.d.ts +25 -0
- package/dist/app-controller-traceability.d.ts.map +1 -0
- package/dist/app-controller-traceability.js +418 -0
- package/dist/app-controller-traceability.js.map +1 -0
- package/dist/app-controller-utils.d.ts +38 -0
- package/dist/app-controller-utils.d.ts.map +1 -0
- package/dist/app-controller-utils.js +185 -0
- package/dist/app-controller-utils.js.map +1 -0
- package/dist/app-controller.d.ts +400 -0
- package/dist/app-controller.d.ts.map +1 -0
- package/dist/app-controller.js +336 -0
- package/dist/app-controller.js.map +1 -0
- package/dist/app.d.ts +7 -115
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +6 -1912
- package/dist/app.js.map +1 -1
- package/dist/artifact-retention.d.ts +4 -0
- package/dist/artifact-retention.d.ts.map +1 -1
- package/dist/artifact-retention.js +38 -0
- package/dist/artifact-retention.js.map +1 -1
- package/dist/backfill.d.ts +3 -1
- package/dist/backfill.d.ts.map +1 -1
- package/dist/backfill.js +5 -1
- package/dist/backfill.js.map +1 -1
- package/dist/background-runtime.d.ts +27 -0
- package/dist/background-runtime.d.ts.map +1 -1
- package/dist/background-runtime.js +383 -205
- package/dist/background-runtime.js.map +1 -1
- package/dist/background-worker-lease.d.ts.map +1 -1
- package/dist/background-worker-lease.js +41 -241
- package/dist/background-worker-lease.js.map +1 -1
- package/dist/background.d.ts +31 -9
- package/dist/background.d.ts.map +1 -1
- package/dist/background.js +543 -272
- package/dist/background.js.map +1 -1
- package/dist/channel-drivers/cron.d.ts +11 -0
- package/dist/channel-drivers/cron.d.ts.map +1 -0
- package/dist/channel-drivers/cron.js +168 -0
- package/dist/channel-drivers/cron.js.map +1 -0
- package/dist/channel-drivers/live.d.ts +11 -0
- package/dist/channel-drivers/live.d.ts.map +1 -0
- package/dist/channel-drivers/live.js +47 -0
- package/dist/channel-drivers/live.js.map +1 -0
- package/dist/channel-drivers/native-notify.d.ts +27 -0
- package/dist/channel-drivers/native-notify.d.ts.map +1 -0
- package/dist/channel-drivers/native-notify.js +94 -0
- package/dist/channel-drivers/native-notify.js.map +1 -0
- package/dist/channel-drivers/openai-api.d.ts +7 -0
- package/dist/channel-drivers/openai-api.d.ts.map +1 -0
- package/dist/channel-drivers/openai-api.js +63 -0
- package/dist/channel-drivers/openai-api.js.map +1 -0
- package/dist/channel-drivers/shared.d.ts +4 -0
- package/dist/channel-drivers/shared.d.ts.map +1 -0
- package/dist/channel-drivers/shared.js +5 -0
- package/dist/channel-drivers/shared.js.map +1 -0
- package/dist/channel-drivers/slack.d.ts +14 -0
- package/dist/channel-drivers/slack.d.ts.map +1 -0
- package/dist/channel-drivers/slack.js +227 -0
- package/dist/channel-drivers/slack.js.map +1 -0
- package/dist/channel-drivers/telegram.d.ts +11 -0
- package/dist/channel-drivers/telegram.d.ts.map +1 -0
- package/dist/channel-drivers/telegram.js +244 -0
- package/dist/channel-drivers/telegram.js.map +1 -0
- package/dist/channel-drivers/tui.d.ts +15 -0
- package/dist/channel-drivers/tui.d.ts.map +1 -0
- package/dist/channel-drivers/tui.js +108 -0
- package/dist/channel-drivers/tui.js.map +1 -0
- package/dist/channel-drivers/webhook.d.ts +7 -0
- package/dist/channel-drivers/webhook.d.ts.map +1 -0
- package/dist/channel-drivers/webhook.js +115 -0
- package/dist/channel-drivers/webhook.js.map +1 -0
- package/dist/channels.d.ts +21 -81
- package/dist/channels.d.ts.map +1 -1
- package/dist/channels.js +11 -1174
- package/dist/channels.js.map +1 -1
- package/dist/cli-args.d.ts +121 -0
- package/dist/cli-args.d.ts.map +1 -0
- package/dist/cli-args.js +532 -0
- package/dist/cli-args.js.map +1 -0
- package/dist/cli-background-command.d.ts +59 -0
- package/dist/cli-background-command.d.ts.map +1 -0
- package/dist/cli-background-command.js +475 -0
- package/dist/cli-background-command.js.map +1 -0
- package/dist/cli-cancellation.d.ts +6 -0
- package/dist/cli-cancellation.d.ts.map +1 -0
- package/dist/cli-cancellation.js +23 -0
- package/dist/cli-cancellation.js.map +1 -0
- package/dist/cli-commands.d.ts +12 -0
- package/dist/cli-commands.d.ts.map +1 -0
- package/dist/cli-commands.js +306 -0
- package/dist/cli-commands.js.map +1 -0
- package/dist/cli-help.d.ts +11 -0
- package/dist/cli-help.d.ts.map +1 -0
- package/dist/cli-help.js +262 -0
- package/dist/cli-help.js.map +1 -0
- package/dist/cli-init-command.d.ts +60 -0
- package/dist/cli-init-command.d.ts.map +1 -0
- package/dist/cli-init-command.js +1910 -0
- package/dist/cli-init-command.js.map +1 -0
- package/dist/cli-install-skill-command.d.ts +3 -0
- package/dist/cli-install-skill-command.d.ts.map +1 -0
- package/dist/cli-install-skill-command.js +51 -0
- package/dist/cli-install-skill-command.js.map +1 -0
- package/dist/cli-sandbox-command.d.ts +10 -0
- package/dist/cli-sandbox-command.d.ts.map +1 -0
- package/dist/cli-sandbox-command.js +100 -0
- package/dist/cli-sandbox-command.js.map +1 -0
- package/dist/cli-validate-config-command.d.ts +36 -0
- package/dist/cli-validate-config-command.d.ts.map +1 -0
- package/dist/cli-validate-config-command.js +317 -0
- package/dist/cli-validate-config-command.js.map +1 -0
- package/dist/cli.d.ts +6 -248
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +6 -3792
- package/dist/cli.js.map +1 -1
- package/dist/config-reference.d.ts +2 -1
- package/dist/config-reference.d.ts.map +1 -1
- package/dist/config-reference.js +14 -3
- package/dist/config-reference.js.map +1 -1
- package/dist/configured-agent.d.ts +23 -0
- package/dist/configured-agent.d.ts.map +1 -1
- package/dist/configured-agent.js +89 -12
- package/dist/configured-agent.js.map +1 -1
- package/dist/continuation-dispatch-worker.d.ts +21 -0
- package/dist/continuation-dispatch-worker.d.ts.map +1 -0
- package/dist/continuation-dispatch-worker.js +425 -0
- package/dist/continuation-dispatch-worker.js.map +1 -0
- package/dist/continuation-http-routes.d.ts +15 -0
- package/dist/continuation-http-routes.d.ts.map +1 -0
- package/dist/continuation-http-routes.js +265 -0
- package/dist/continuation-http-routes.js.map +1 -0
- package/dist/continuation-operator-api.d.ts +18 -0
- package/dist/continuation-operator-api.d.ts.map +1 -0
- package/dist/continuation-operator-api.js +164 -0
- package/dist/continuation-operator-api.js.map +1 -0
- package/dist/continuation-origin-store.d.ts +19 -0
- package/dist/continuation-origin-store.d.ts.map +1 -0
- package/dist/continuation-origin-store.js +273 -0
- package/dist/continuation-origin-store.js.map +1 -0
- package/dist/continuation-service-errors.d.ts +18 -0
- package/dist/continuation-service-errors.d.ts.map +1 -0
- package/dist/continuation-service-errors.js +35 -0
- package/dist/continuation-service-errors.js.map +1 -0
- package/dist/continuation-service-helpers.d.ts +39 -0
- package/dist/continuation-service-helpers.d.ts.map +1 -0
- package/dist/continuation-service-helpers.js +308 -0
- package/dist/continuation-service-helpers.js.map +1 -0
- package/dist/continuation-service-origin.d.ts +55 -0
- package/dist/continuation-service-origin.d.ts.map +1 -0
- package/dist/continuation-service-origin.js +325 -0
- package/dist/continuation-service-origin.js.map +1 -0
- package/dist/continuation-service-types.d.ts +110 -0
- package/dist/continuation-service-types.d.ts.map +1 -0
- package/dist/continuation-service-types.js +11 -0
- package/dist/continuation-service-types.js.map +1 -0
- package/dist/continuation-service.d.ts +4 -97
- package/dist/continuation-service.d.ts.map +1 -1
- package/dist/continuation-service.js +9 -1525
- package/dist/continuation-service.js.map +1 -1
- package/dist/continuation-store-fs.d.ts +15 -0
- package/dist/continuation-store-fs.d.ts.map +1 -0
- package/dist/continuation-store-fs.js +247 -0
- package/dist/continuation-store-fs.js.map +1 -0
- package/dist/continuation-store-policy.d.ts +21 -0
- package/dist/continuation-store-policy.d.ts.map +1 -0
- package/dist/continuation-store-policy.js +278 -0
- package/dist/continuation-store-policy.js.map +1 -0
- package/dist/continuation-store-records.d.ts +9 -0
- package/dist/continuation-store-records.d.ts.map +1 -0
- package/dist/continuation-store-records.js +221 -0
- package/dist/continuation-store-records.js.map +1 -0
- package/dist/continuation-store-types.d.ts +173 -0
- package/dist/continuation-store-types.d.ts.map +1 -0
- package/dist/continuation-store-types.js +26 -0
- package/dist/continuation-store-types.js.map +1 -0
- package/dist/continuation-store.d.ts +4 -138
- package/dist/continuation-store.d.ts.map +1 -1
- package/dist/continuation-store.js +145 -1049
- package/dist/continuation-store.js.map +1 -1
- package/dist/doctor.d.ts +5 -0
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +575 -38
- package/dist/doctor.js.map +1 -1
- package/dist/init.d.ts +2 -0
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +92 -239
- package/dist/init.js.map +1 -1
- package/dist/interaction-bridge.d.ts +19 -0
- package/dist/interaction-bridge.d.ts.map +1 -1
- package/dist/interaction-bridge.js +130 -0
- package/dist/interaction-bridge.js.map +1 -1
- package/dist/launchd-logs.d.ts +91 -0
- package/dist/launchd-logs.d.ts.map +1 -0
- package/dist/launchd-logs.js +1499 -0
- package/dist/launchd-logs.js.map +1 -0
- package/dist/launchd.d.ts +27 -0
- package/dist/launchd.d.ts.map +1 -1
- package/dist/launchd.js +89 -10
- package/dist/launchd.js.map +1 -1
- package/dist/memory-command.d.ts +2 -0
- package/dist/memory-command.d.ts.map +1 -1
- package/dist/memory-command.js +161 -48
- package/dist/memory-command.js.map +1 -1
- package/dist/memory-recall-settings.d.ts +64 -0
- package/dist/memory-recall-settings.d.ts.map +1 -0
- package/dist/memory-recall-settings.js +51 -0
- package/dist/memory-recall-settings.js.map +1 -0
- package/dist/memory-recall.d.ts +7 -95
- package/dist/memory-recall.d.ts.map +1 -1
- package/dist/memory-recall.js +8 -143
- package/dist/memory-recall.js.map +1 -1
- package/dist/memory-rituals.d.ts +3 -3
- package/dist/memory-rituals.d.ts.map +1 -1
- package/dist/memory-rituals.js +16 -111
- package/dist/memory-rituals.js.map +1 -1
- package/dist/modules/catalog.js +2 -2
- package/dist/modules/catalog.js.map +1 -1
- package/dist/modules/known-tools.d.ts +8 -6
- package/dist/modules/known-tools.d.ts.map +1 -1
- package/dist/modules/known-tools.js +8 -6
- package/dist/modules/known-tools.js.map +1 -1
- package/dist/notify-destinations.d.ts +5 -0
- package/dist/notify-destinations.d.ts.map +1 -1
- package/dist/notify-destinations.js +7 -1
- package/dist/notify-destinations.js.map +1 -1
- package/dist/owner-private-lock.d.ts +95 -0
- package/dist/owner-private-lock.d.ts.map +1 -0
- package/dist/owner-private-lock.js +566 -0
- package/dist/owner-private-lock.js.map +1 -0
- package/dist/pi-oauth-login.d.ts +2 -0
- package/dist/pi-oauth-login.d.ts.map +1 -1
- package/dist/pi-oauth-login.js +39 -5
- package/dist/pi-oauth-login.js.map +1 -1
- package/dist/posted-message-index.d.ts +35 -16
- package/dist/posted-message-index.d.ts.map +1 -1
- package/dist/posted-message-index.js +1068 -52
- package/dist/posted-message-index.js.map +1 -1
- package/dist/posted-reply-history.d.ts +17 -0
- package/dist/posted-reply-history.d.ts.map +1 -0
- package/dist/posted-reply-history.js +169 -0
- package/dist/posted-reply-history.js.map +1 -0
- package/dist/proactive-notify.d.ts.map +1 -1
- package/dist/proactive-notify.js +6 -4
- package/dist/proactive-notify.js.map +1 -1
- package/dist/project-skills.d.ts +4 -0
- package/dist/project-skills.d.ts.map +1 -1
- package/dist/project-skills.js +99 -130
- package/dist/project-skills.js.map +1 -1
- package/dist/provider-setup.d.ts +0 -1
- package/dist/provider-setup.d.ts.map +1 -1
- package/dist/provider-setup.js +0 -3
- package/dist/provider-setup.js.map +1 -1
- package/dist/readiness-probe-worker.d.ts +61 -1
- package/dist/readiness-probe-worker.d.ts.map +1 -1
- package/dist/readiness-probe-worker.js +49 -56
- package/dist/readiness-probe-worker.js.map +1 -1
- package/dist/readiness-probe.d.ts +6 -9
- package/dist/readiness-probe.d.ts.map +1 -1
- package/dist/readiness-probe.js +23 -56
- package/dist/readiness-probe.js.map +1 -1
- package/dist/redact-secrets.d.ts +15 -0
- package/dist/redact-secrets.d.ts.map +1 -0
- package/dist/redact-secrets.js +65 -0
- package/dist/redact-secrets.js.map +1 -0
- package/dist/run-history.js +34 -24
- package/dist/run-history.js.map +1 -1
- package/dist/runtime-provenance.d.ts +8 -0
- package/dist/runtime-provenance.d.ts.map +1 -0
- package/dist/runtime-provenance.js +225 -0
- package/dist/runtime-provenance.js.map +1 -0
- package/dist/sandbox-manager.d.ts +4 -1
- package/dist/sandbox-manager.d.ts.map +1 -1
- package/dist/sandbox-manager.js +114 -273
- package/dist/sandbox-manager.js.map +1 -1
- package/dist/secure-file-replace.d.ts +49 -0
- package/dist/secure-file-replace.d.ts.map +1 -0
- package/dist/secure-file-replace.js +270 -0
- package/dist/secure-file-replace.js.map +1 -0
- package/dist/seen-conversations.d.ts +32 -5
- package/dist/seen-conversations.d.ts.map +1 -1
- package/dist/seen-conversations.js +145 -15
- package/dist/seen-conversations.js.map +1 -1
- package/dist/sessions.d.ts +20 -0
- package/dist/sessions.d.ts.map +1 -1
- package/dist/sessions.js +41 -6
- package/dist/sessions.js.map +1 -1
- package/dist/wizard/index.d.ts +2 -2
- package/dist/wizard/index.d.ts.map +1 -1
- package/dist/wizard/index.js +1 -1
- package/dist/wizard/index.js.map +1 -1
- package/dist/wizard/presets.d.ts +2 -1
- package/dist/wizard/presets.d.ts.map +1 -1
- package/dist/wizard/presets.js +2 -1
- package/dist/wizard/presets.js.map +1 -1
- package/dist/wizard/run.d.ts +0 -26
- package/dist/wizard/run.d.ts.map +1 -1
- package/dist/wizard/run.js +0 -53
- package/dist/wizard/run.js.map +1 -1
- package/package.json +21 -16
- package/schema/mono-agent.config.schema.json +17 -6
- package/skills/mono-agent-composer/SKILL.md +3 -3
- package/skills/mono-agent-composer/references/config-blueprint.md +41 -22
- package/skills/mono-agent-composer/references/discovery-questions.md +4 -4
- package/skills/mono-agent-composer/references/feature-coverage.md +14 -14
- package/skills/mono-agent-composer/references/package-map.md +3 -3
- package/skills/mono-agent-composer/references/playbooks.md +38 -20
- package/skills/mono-agent-composer/references/validation.md +16 -3
package/README.md
CHANGED
|
@@ -6,6 +6,8 @@ channel plus traceability. Ships the
|
|
|
6
6
|
`mono-agent` CLI (`init`, `auth`, `sandbox`, `validate`, `memory`, `tui`, `start`) so an agent folder works without
|
|
7
7
|
hand-written composition code.
|
|
8
8
|
|
|
9
|
+
Setup has two deliberate wall-clock paths: flags or non-TTY input use the fast scaffold-only path (unless explicit `--auth` adds provider setup) and never claim readiness. Bare `mono-agent init` on a TTY makes one real no-tool model call per selected route before committing the scaffold, with timeouts of 90s for each cloud route and 240s for each local route.
|
|
10
|
+
|
|
9
11
|
## Category
|
|
10
12
|
|
|
11
13
|
Category: `app`
|
|
@@ -109,7 +111,8 @@ paths, stale locks, invalid dotenv, conflicts, and Windows fail closed to manual
|
|
|
109
111
|
interactive wizard can start the background agent it requires one disposable no-tool
|
|
110
112
|
response from every selected runtime route and a complete validation report with
|
|
111
113
|
every selected expectation ready. Cancellation, provider failure, timeout (90s
|
|
112
|
-
cloud
|
|
114
|
+
for each cloud route and 240s for each local route), empty output, or any tool
|
|
115
|
+
action fails the check.
|
|
113
116
|
Escape or Ctrl-C interrupts preflight; recovery can resume verified routes when
|
|
114
117
|
the non-secret plan fingerprint still matches, restart all checks, edit choices,
|
|
115
118
|
or cancel. Authentication repair clears every prior route proof because it can
|
|
@@ -177,6 +180,34 @@ name the canonical config. Readiness requires one live launchd-owned trace PID,
|
|
|
177
180
|
the exact durable snapshot, and, for configuration, a reachable TUI endpoint.
|
|
178
181
|
Stop succeeds only after both launchd unload and worker death are proven.
|
|
179
182
|
|
|
183
|
+
`mono-agent validate` (and its `doctor` alias) reports the provenance of the CLI
|
|
184
|
+
producing the report in its Runtime provenance section: a private managed marker
|
|
185
|
+
whose freshly recomputed installed closure and coherent current manifest validate
|
|
186
|
+
names its full closure id plus sanitized install metadata; other executions report
|
|
187
|
+
`dev (unmanaged)`. With `--consumer`, this remains the validator CLI's provenance,
|
|
188
|
+
not an attestation of a separately running daemon.
|
|
189
|
+
|
|
190
|
+
Managed launchd stdout/stderr use a fixed automatic policy: each active file
|
|
191
|
+
and each of three retained generations is capped at 5 MiB. A separate one-shot
|
|
192
|
+
LaunchAgent checks every five minutes. When maintenance is needed it takes the
|
|
193
|
+
same per-config lifecycle lock, verifies the existing main plist, proves the
|
|
194
|
+
worker stopped, and commits owner-only bounded tails through per-agent,
|
|
195
|
+
fsynced deterministic stages plus a recoverable journal. A separate per-agent
|
|
196
|
+
lifecycle intent is atomically published as `stopping` before bootout, promoted
|
|
197
|
+
to `stopped` only after launchd unload and every observed PID's death, and
|
|
198
|
+
changed to `restoring` before bootstrap invalidates that old stop proof. It is
|
|
199
|
+
removed only after the exact plist is rechecked and its worker is live. An
|
|
200
|
+
interrupted pre-proof pass whose launchd PID is gone fails closed; durable
|
|
201
|
+
`stopped` rotation can resume without authorizing another agent or an intentionally
|
|
202
|
+
stopped service.
|
|
203
|
+
Start and restart perform
|
|
204
|
+
the same stopped-writer maintenance before loading helper then worker; stop
|
|
205
|
+
unloads the helper first and removes both definitions. Unsafe paths or a changed
|
|
206
|
+
plist fail closed without following links or resurrecting a stopped service.
|
|
207
|
+
`mono-agent validate` / `doctor` only inspect metadata and report exact active,
|
|
208
|
+
retained, and total bytes for safely inspected files; unsafe or unreadable byte
|
|
209
|
+
inventory is unavailable. They never rotate or chmod logs.
|
|
210
|
+
|
|
180
211
|
Guided readiness uses a worker-reproducible environment rather than the launching
|
|
181
212
|
shell: durable `.env` values, entered selected secrets, the resolved Pi auth path,
|
|
182
213
|
and operational values such as `PATH`/`HOME`. Shell-only provider credentials and
|
|
@@ -215,10 +246,20 @@ allow-all on MCP-capable routes; a restrictive `tools.allowedTools` must name
|
|
|
215
246
|
`disallowedTools` can remove it. Direct OpenCode and other MCP-incompatible
|
|
216
247
|
routes suppress it. Its `list` and `inspect` actions can read only completed
|
|
217
248
|
prior runs in the exact current conversation bucket and return bounded,
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
249
|
+
normalized evidence. Structured projected values first pass through the shared
|
|
250
|
+
observability redactor: non-numeric values under sensitive-looking object keys
|
|
251
|
+
are redacted; numeric values under matched keys are retained; free text is not
|
|
252
|
+
content-scanned or scrubbed. `RunHistory` then applies an additional projection
|
|
253
|
+
sanitizer. In that second pass, numeric values under `credential`, `private_key`,
|
|
254
|
+
and `bearer` can remain visible; numeric values under `apiKey`, `token`,
|
|
255
|
+
`client_secret`, `password`, `authorization`, and `cookie` are redacted.
|
|
256
|
+
Assignment-shaped password or secret prose is content-scanned and replaced with
|
|
257
|
+
the diagnostic or tool-result omission sentinel. An optionally quoted assignment
|
|
258
|
+
value is exempt only when its complete value is exactly `[redacted]`; any prefix
|
|
259
|
+
or suffix is omitted. Results exclude the
|
|
260
|
+
current/running run, other conversations or rollover buckets, system prompts,
|
|
261
|
+
reasoning, recalled memory, turn-context payloads, and raw artifact paths;
|
|
262
|
+
historical text is marked untrusted.
|
|
222
263
|
|
|
223
264
|
For missing context, the agent should use active conversation history first,
|
|
224
265
|
`MemoryRecall` for intentionally captured durable facts, and `RunHistory` for
|
|
@@ -311,27 +352,182 @@ await app.stop();
|
|
|
311
352
|
|
|
312
353
|
## Public API
|
|
313
354
|
|
|
314
|
-
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
355
|
+
<!-- public-api-inventory:start -->
|
|
356
|
+
<!-- Generated by scripts/generate-public-api-docs.mjs. Do not edit by hand. -->
|
|
357
|
+
|
|
358
|
+
Every symbol exported by each public code entrypoint is listed below.
|
|
359
|
+
|
|
360
|
+
**`@mono-agent/agent-app`**
|
|
361
|
+
|
|
362
|
+
```text
|
|
363
|
+
AppTraceDefaults
|
|
364
|
+
BroadcastRunContext
|
|
365
|
+
COMPOSER_SKILL_NAME
|
|
366
|
+
CONTINUATION_CLAIM_TOKEN_ENV
|
|
367
|
+
CONTINUATION_CLAIM_TOKEN_HEADER
|
|
368
|
+
CONTINUATION_CLAIM_URL_ENV
|
|
369
|
+
CONTINUATION_CLAIM_URL_HEADER
|
|
370
|
+
CONTINUATION_FINGERPRINT_ENV
|
|
371
|
+
CONTINUATION_FINGERPRINT_HEADER
|
|
372
|
+
CONTINUATION_MODE_ENV
|
|
373
|
+
CONTINUATION_MODE_HEADER
|
|
374
|
+
CONTINUATION_STATES
|
|
375
|
+
ChannelDriver
|
|
376
|
+
ChannelDriverOverrides
|
|
377
|
+
ChannelId
|
|
378
|
+
ChannelStartInput
|
|
379
|
+
ChannelStatus
|
|
380
|
+
ConfigApplyResult
|
|
381
|
+
ConfiguredAgentHarnessOptions
|
|
382
|
+
ConfiguredAgentResponderOptions
|
|
383
|
+
ConfiguredAgentRuntimeOptions
|
|
384
|
+
ConsumerContractFixtureOptions
|
|
385
|
+
ConsumerContractFixtureResult
|
|
386
|
+
ConsumerContractIssue
|
|
387
|
+
ConsumerContractName
|
|
388
|
+
ConsumerContractSectionStatus
|
|
389
|
+
ContinuationClaimCapability
|
|
390
|
+
ContinuationDeliveryReceipt
|
|
391
|
+
ContinuationHealthSnapshot
|
|
392
|
+
ContinuationHistoryRecordInput
|
|
393
|
+
ContinuationHistoryRecordResult
|
|
394
|
+
ContinuationLimits
|
|
395
|
+
ContinuationMode
|
|
396
|
+
ContinuationNativeDeliveryInput
|
|
397
|
+
ContinuationNativeDeliveryResult
|
|
398
|
+
ContinuationProtocolError
|
|
399
|
+
ContinuationRetentionOptions
|
|
400
|
+
ContinuationServiceHandle
|
|
401
|
+
ContinuationServiceLogger
|
|
402
|
+
ContinuationServiceOptions
|
|
403
|
+
ContinuationSettings
|
|
404
|
+
ContinuationState
|
|
405
|
+
ContinuationStatusSnapshot
|
|
406
|
+
ContinuationStoreStats
|
|
407
|
+
ContinuationSynthesisAvailability
|
|
408
|
+
ContinuationSynthesisInput
|
|
409
|
+
ContinuationSynthesisResult
|
|
410
|
+
ContinuationSynthesisUnavailableError
|
|
411
|
+
ContinuationTerminalState
|
|
412
|
+
CronChannelOverrides
|
|
413
|
+
DEFAULT_CONTINUATION_LIMITS
|
|
414
|
+
DEFAULT_CONTINUATION_SERVICE_PORT
|
|
415
|
+
ExporterStatus
|
|
416
|
+
InitFileChange
|
|
417
|
+
InitFileChangeKind
|
|
418
|
+
InitMonoAgentFolderOptions
|
|
419
|
+
InitMonoAgentFolderResult
|
|
420
|
+
InstallSkillOptions
|
|
421
|
+
InstallSkillResult
|
|
422
|
+
InstallSkillTarget
|
|
423
|
+
IssueContinuationCapabilityInput
|
|
424
|
+
MANAGED_SRT_LOCK_SHA256
|
|
425
|
+
MANAGED_SRT_PACKAGE
|
|
426
|
+
MANAGED_SRT_VERSION
|
|
427
|
+
ManagedSrtSetupOptions
|
|
428
|
+
ManagedSrtSetupResult
|
|
429
|
+
MemoryRitualSchedule
|
|
430
|
+
MonoAgentApp
|
|
431
|
+
MonoAgentAppConfigInput
|
|
432
|
+
MonoAgentAppLogger
|
|
433
|
+
MonoAgentAppOptions
|
|
434
|
+
NamedContinuationRoute
|
|
435
|
+
OpenAIApiChannelOverrides
|
|
436
|
+
PreflightResult
|
|
437
|
+
RUN_HISTORY_MCP_SERVER_NAME
|
|
438
|
+
RUN_HISTORY_TOOL_NAME
|
|
439
|
+
ResolvedExporter
|
|
440
|
+
RunContinuationCommandOptions
|
|
441
|
+
RunHistoryBinding
|
|
442
|
+
RunHistoryRuntimeExtension
|
|
443
|
+
RunHistoryRuntimeExtensionOptions
|
|
444
|
+
RunningChannel
|
|
445
|
+
RunningRituals
|
|
446
|
+
SandboxCheckResult
|
|
447
|
+
SandboxCommandDependencies
|
|
448
|
+
SandboxFunctionalCheck
|
|
449
|
+
SandboxManagerOptions
|
|
450
|
+
SandboxRuntimeStatus
|
|
451
|
+
SecretEnvRefusalCode
|
|
452
|
+
SecretPersistenceOutcome
|
|
453
|
+
SecretPersistenceStatus
|
|
454
|
+
SlackChannelOverrides
|
|
455
|
+
StartMemoryRitualsInput
|
|
456
|
+
TERMINAL_CONTINUATION_STATES
|
|
457
|
+
TelegramChannelOverrides
|
|
458
|
+
TraceabilityStatus
|
|
459
|
+
ValidateMonoAgentFolderOptions
|
|
460
|
+
ValidationReport
|
|
461
|
+
ValidationSection
|
|
462
|
+
ValidationStatus
|
|
463
|
+
WebhookChannelOverrides
|
|
464
|
+
badge
|
|
465
|
+
canonicalContinuationJson
|
|
466
|
+
channelBadge
|
|
467
|
+
checkSandboxRuntime
|
|
468
|
+
computeColorEnabled
|
|
469
|
+
configuredRuntimeFallbackModels
|
|
470
|
+
configuredRuntimeModels
|
|
471
|
+
consumerContractNames
|
|
472
|
+
consumerContractRunSummaryStatuses
|
|
473
|
+
continuationDigest
|
|
474
|
+
continuationOperatorToken
|
|
475
|
+
createBroadcastRunRecorder
|
|
476
|
+
createConfiguredAgentHarness
|
|
477
|
+
createConfiguredAgentResponder
|
|
478
|
+
createConfiguredAgentRuntime
|
|
479
|
+
createConfiguredMemory
|
|
480
|
+
createCronChannelDriver
|
|
481
|
+
createOpenAIApiChannelDriver
|
|
482
|
+
createRunHistoryRuntimeExtension
|
|
483
|
+
createRunHistoryServer
|
|
484
|
+
createSlackChannelDriver
|
|
485
|
+
createTelegramChannelDriver
|
|
486
|
+
createWebhookChannelDriver
|
|
487
|
+
defaultChannelDrivers
|
|
488
|
+
ensureStartable
|
|
489
|
+
hasConfiguredRuntimeFallbacks
|
|
490
|
+
healthBadge
|
|
491
|
+
initMonoAgentFolder
|
|
492
|
+
installComposerSkill
|
|
493
|
+
isAppCoreConfigError
|
|
494
|
+
isColorEnabled
|
|
495
|
+
isContinuationMode
|
|
496
|
+
isContinuationState
|
|
497
|
+
isRunHistoryToolAllowed
|
|
498
|
+
keyValue
|
|
499
|
+
loadAppCoreConfig
|
|
500
|
+
loadCliEnvFile
|
|
501
|
+
loadContinuationSettings
|
|
502
|
+
managedSrtInstallRoot
|
|
503
|
+
normalizeContinuationReplyTarget
|
|
504
|
+
parseCliArgs
|
|
505
|
+
phoenixAppBaseUrl
|
|
506
|
+
printAppStatus
|
|
507
|
+
renderHelp
|
|
508
|
+
resolveAppArtifactDir
|
|
509
|
+
resolveAppObservabilityExporters
|
|
510
|
+
resolveAppTraceHeartbeatMs
|
|
511
|
+
resolveAppTraceRegistryDir
|
|
512
|
+
resolveAppTraceSourceId
|
|
513
|
+
resolveAppTraceSourceLabel
|
|
514
|
+
resolveAppTraceStaleAfterMs
|
|
515
|
+
resolveChannelDrivers
|
|
516
|
+
rule
|
|
517
|
+
runCli
|
|
518
|
+
runContinuationCommand
|
|
519
|
+
runSandboxCommand
|
|
520
|
+
sandboxRuntimeStatus
|
|
521
|
+
setupManagedSrt
|
|
522
|
+
startContinuationService
|
|
523
|
+
startMemoryRituals
|
|
524
|
+
startMonoAgentApp
|
|
525
|
+
style
|
|
526
|
+
validateConsumerContractFixture
|
|
527
|
+
validateMonoAgentFolder
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
<!-- public-api-inventory:end -->
|
|
335
531
|
|
|
336
532
|
## Dependency Boundary
|
|
337
533
|
|
|
@@ -15,11 +15,17 @@ async function main() {
|
|
|
15
15
|
settings.telegram?.apiRoot,
|
|
16
16
|
settings.telegram?.askBridge?.bridgeUrl,
|
|
17
17
|
settings.askUser?.bridgeUrl,
|
|
18
|
+
childConfig.deliveryHistory?.bridgeUrl,
|
|
18
19
|
].filter((value) => value !== undefined),
|
|
19
20
|
});
|
|
20
21
|
const removeProxyLifecycle = proxy === undefined ? () => { } : installProxyLifecycle(proxy);
|
|
21
22
|
try {
|
|
22
|
-
const httpOptions =
|
|
23
|
+
const httpOptions = {
|
|
24
|
+
...(proxy === undefined ? {} : { fetchImpl: proxy.fetchImpl }),
|
|
25
|
+
...(childConfig.deliveryHistory === undefined
|
|
26
|
+
? {}
|
|
27
|
+
: { deliveryHistory: childConfig.deliveryHistory }),
|
|
28
|
+
};
|
|
23
29
|
const clients = await createAdapterSendToolsClients(settings, httpOptions);
|
|
24
30
|
const server = await createAdapterSendToolsServer(settings, clients, childConfig.indexing, httpOptions);
|
|
25
31
|
await server.connect(new StdioServerTransport());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter-send-tools-main.js","sourceRoot":"","sources":["../src/adapter-send-tools-main.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EACL,sBAAsB,EACtB,gCAAgC,GACjC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,kCAAkC,EAClC,6BAA6B,EAC7B,4BAA4B,EAC5B,+BAA+B,GAChC,MAAM,yBAAyB,CAAC;AAEjC,KAAK,UAAU,IAAI;IACjB,MAAM,WAAW,GAAG,kCAAkC,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACnF,MAAM,QAAQ,GAAG,MAAM,+BAA+B,CAAC,WAAW,CAAC,KAAK,EAAE;QACxE,YAAY,EAAE,WAAW,CAAC,YAAY;KACvC,CAAC,CAAC;IACH,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,KAAK,GAAG,sBAAsB,CAAC,OAAO,CAAC,GAAG,EAAE;QAChD,kBAAkB,EAAE;YAClB,QAAQ,CAAC,QAAQ,EAAE,OAAO;YAC1B,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS;YACvC,QAAQ,CAAC,OAAO,EAAE,SAAS;
|
|
1
|
+
{"version":3,"file":"adapter-send-tools-main.js","sourceRoot":"","sources":["../src/adapter-send-tools-main.ts"],"names":[],"mappings":"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"}
|
|
@@ -70,6 +70,22 @@ export interface AdapterSendToolsClients {
|
|
|
70
70
|
}
|
|
71
71
|
export interface AdapterSendToolsHttpOptions {
|
|
72
72
|
readonly fetchImpl?: typeof fetch;
|
|
73
|
+
readonly deliveryHistory?: AdapterSendToolsDeliveryHistory;
|
|
74
|
+
}
|
|
75
|
+
export interface AdapterSendToolsDeliveryHistory {
|
|
76
|
+
readonly bridgeUrl: string;
|
|
77
|
+
readonly bridgeToken: string;
|
|
78
|
+
}
|
|
79
|
+
export interface AdapterSendToolsDeliveryHistoryCapabilityIssuer {
|
|
80
|
+
issueDeliveryHistoryCapability(input: {
|
|
81
|
+
readonly runId: string;
|
|
82
|
+
readonly producerConversationId: string;
|
|
83
|
+
readonly allowedChannels: readonly ("slack" | "telegram")[];
|
|
84
|
+
}): {
|
|
85
|
+
readonly url: string;
|
|
86
|
+
readonly token: string;
|
|
87
|
+
release(): void;
|
|
88
|
+
};
|
|
73
89
|
}
|
|
74
90
|
export interface AdapterSendToolsRuntimeExtension {
|
|
75
91
|
readonly runtimeOptions: {
|
|
@@ -127,6 +143,7 @@ export interface AdapterSendToolsChildContext {
|
|
|
127
143
|
readonly indexPath?: string;
|
|
128
144
|
readonly runOutputDir?: string;
|
|
129
145
|
readonly runOutputIdentity?: FileIdentity;
|
|
146
|
+
readonly deliveryHistory?: AdapterSendToolsDeliveryHistory;
|
|
130
147
|
}
|
|
131
148
|
export interface AdapterSendToolsInteractionEnv {
|
|
132
149
|
readonly bridgeUrl: string;
|
|
@@ -138,6 +155,7 @@ export interface AdapterSendToolsChildConfig {
|
|
|
138
155
|
readonly input: MonoAgentAppConfigInput;
|
|
139
156
|
readonly allowedTools: readonly string[];
|
|
140
157
|
readonly indexing?: AdapterSendToolsIndexing;
|
|
158
|
+
readonly deliveryHistory?: AdapterSendToolsDeliveryHistory;
|
|
141
159
|
}
|
|
142
160
|
export declare function adapterSendToolsChildConfigFromEnv(env: Record<string, string | undefined>, cwd: string): AdapterSendToolsChildConfig;
|
|
143
161
|
export declare function adapterSendToolsMcpServerSpec(configPath: string, cwd: string, allowedTools: readonly string[], context?: AdapterSendToolsChildContext, interaction?: AdapterSendToolsInteractionEnv): Record<string, unknown>;
|
|
@@ -147,7 +165,7 @@ export declare function adapterSendToolsMcpServerSpec(configPath: string, cwd: s
|
|
|
147
165
|
* configured, forwards both to the child so a `SlackSendMessage` post is linked
|
|
148
166
|
* back to this conversation (so a later in-thread reply resumes it).
|
|
149
167
|
*/
|
|
150
|
-
export declare function createAdapterSendToolsRuntimeExtension(configPath: string, cwd: string, allowedTools: readonly string[], indexPath?: string, interaction?: AdapterSendToolsInteractionEnv, runOutputRoot?: string): (input: AdapterSendToolsRequestInput) => Promise<AdapterSendToolsRuntimeExtension>;
|
|
168
|
+
export declare function createAdapterSendToolsRuntimeExtension(configPath: string, cwd: string, allowedTools: readonly string[], indexPath?: string, interaction?: AdapterSendToolsInteractionEnv, runOutputRoot?: string, deliveryHistoryCapabilityIssuer?: AdapterSendToolsDeliveryHistoryCapabilityIssuer): (input: AdapterSendToolsRequestInput) => Promise<AdapterSendToolsRuntimeExtension>;
|
|
151
169
|
export declare function createAdapterSendToolsClients(settings: AdapterSendToolsSettings, options?: AdapterSendToolsHttpOptions): Promise<AdapterSendToolsClients>;
|
|
152
170
|
export declare function createAdapterSendToolsServer(settings: AdapterSendToolsSettings, clients: AdapterSendToolsClients, indexing?: AdapterSendToolsIndexing, options?: AdapterSendToolsHttpOptions): Promise<McpServer>;
|
|
153
171
|
interface FileIdentity {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter-send-tools.d.ts","sourceRoot":"","sources":["../src/adapter-send-tools.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,KAAK,EAEV,WAAW,EACZ,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAGV,qBAAqB,EAGtB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAkB/D;;;;;;;;;GASG;AAEH,eAAO,MAAM,kCAAkC,4BAA4B,CAAC;AAE5E,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9C,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,uFAAuF;IACvF,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,uFAAuF;IACvF,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,mFAAmF;IACnF,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;QACvB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;QACtB,8EAA8E;QAC9E,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;KACxB,CAAC;IACF,QAAQ,CAAC,SAAS,CAAC,EAAE,mBAAmB,CAAC;IACzC,QAAQ,CAAC,SAAS,CAAC,EAAE;QACnB,QAAQ,CAAC,KAAK,CAAC,EAAE,wBAAwB,CAAC;QAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC;KACnC,CAAC;IACF,4EAA4E;IAC5E,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAC1C,8EAA8E;IAC9E,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,8EAA8E;IAC9E,QAAQ,CAAC,iBAAiB,CAAC,EAAE,YAAY,CAAC;CAC3C;AAED;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,qBAAqB,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,wBAAwB,CAAC;IAC7C,QAAQ,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC;CACxC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;IACtD,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,qBAAqB,EAAE,aAAa,GAAG,cAAc,GAAG,WAAW,GAAG,iBAAiB,CAAC,CAAC;CACnH;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"adapter-send-tools.d.ts","sourceRoot":"","sources":["../src/adapter-send-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -133,6 +133,9 @@ export function adapterSendToolsMcpEnv(configPath, allowedTools, context, intera
|
|
|
133
133
|
MONO_AGENT_ADAPTER_TOOLS_RUN_OUTPUT_DEV: String(context.runOutputIdentity.dev),
|
|
134
134
|
MONO_AGENT_ADAPTER_TOOLS_RUN_OUTPUT_INO: String(context.runOutputIdentity.ino),
|
|
135
135
|
}),
|
|
136
|
+
// Reserved app-owned credentials must override inherited host environment.
|
|
137
|
+
MONO_AGENT_ADAPTER_TOOLS_HISTORY_BRIDGE_URL: context?.deliveryHistory?.bridgeUrl ?? "",
|
|
138
|
+
MONO_AGENT_ADAPTER_TOOLS_HISTORY_BRIDGE_TOKEN: context?.deliveryHistory?.bridgeToken ?? "",
|
|
136
139
|
...(interaction === undefined
|
|
137
140
|
? {}
|
|
138
141
|
: {
|
|
@@ -149,12 +152,20 @@ export function adapterSendToolsChildConfigFromEnv(env, cwd) {
|
|
|
149
152
|
}
|
|
150
153
|
const conversationId = optionalString(env.MONO_AGENT_ADAPTER_TOOLS_PRODUCING_CONVERSATION_ID);
|
|
151
154
|
const indexPath = optionalString(env.MONO_AGENT_ADAPTER_TOOLS_POST_INDEX_PATH);
|
|
155
|
+
const historyBridgeUrl = optionalString(env.MONO_AGENT_ADAPTER_TOOLS_HISTORY_BRIDGE_URL);
|
|
156
|
+
const historyBridgeToken = optionalString(env.MONO_AGENT_ADAPTER_TOOLS_HISTORY_BRIDGE_TOKEN);
|
|
157
|
+
if ((historyBridgeUrl === undefined) !== (historyBridgeToken === undefined)) {
|
|
158
|
+
throw new Error("adapter-send-tools: delivery-history bridge URL and token must either both be present or both be absent.");
|
|
159
|
+
}
|
|
152
160
|
// Both must be present to index; either alone is a misconfiguration we simply skip.
|
|
153
161
|
const indexing = conversationId !== undefined && indexPath !== undefined ? { conversationId, indexPath } : undefined;
|
|
154
162
|
return {
|
|
155
163
|
input: { env, cwd, configPath },
|
|
156
164
|
allowedTools: parseAllowedToolNames(env.MONO_AGENT_ADAPTER_TOOLS_ALLOWED_TOOLS),
|
|
157
165
|
...(indexing === undefined ? {} : { indexing }),
|
|
166
|
+
...(historyBridgeUrl === undefined || historyBridgeToken === undefined
|
|
167
|
+
? {}
|
|
168
|
+
: { deliveryHistory: { bridgeUrl: historyBridgeUrl, bridgeToken: historyBridgeToken } }),
|
|
158
169
|
};
|
|
159
170
|
}
|
|
160
171
|
export function adapterSendToolsMcpServerSpec(configPath, cwd, allowedTools, context, interaction) {
|
|
@@ -185,7 +196,7 @@ export function adapterSendToolsMcpServerSpec(configPath, cwd, allowedTools, con
|
|
|
185
196
|
* configured, forwards both to the child so a `SlackSendMessage` post is linked
|
|
186
197
|
* back to this conversation (so a later in-thread reply resumes it).
|
|
187
198
|
*/
|
|
188
|
-
export function createAdapterSendToolsRuntimeExtension(configPath, cwd, allowedTools, indexPath, interaction, runOutputRoot) {
|
|
199
|
+
export function createAdapterSendToolsRuntimeExtension(configPath, cwd, allowedTools, indexPath, interaction, runOutputRoot, deliveryHistoryCapabilityIssuer) {
|
|
189
200
|
return async (input) => {
|
|
190
201
|
const conversationId = input?.request?.conversationId;
|
|
191
202
|
const runId = input?.runId;
|
|
@@ -194,6 +205,20 @@ export function createAdapterSendToolsRuntimeExtension(configPath, cwd, allowedT
|
|
|
194
205
|
const runOutput = runOutputRoot === undefined || !hasRunId
|
|
195
206
|
? undefined
|
|
196
207
|
: await ensureAdapterRunOutputDir(runOutputRoot, runId);
|
|
208
|
+
const deliveryHistoryChannels = [
|
|
209
|
+
...(allowedTools.includes("SlackSendMessage") ? ["slack"] : []),
|
|
210
|
+
...(allowedTools.includes("TelegramSendMessage") ? ["telegram"] : []),
|
|
211
|
+
];
|
|
212
|
+
const deliveryHistory = !hasRunId
|
|
213
|
+
|| !hasConversation
|
|
214
|
+
|| deliveryHistoryCapabilityIssuer === undefined
|
|
215
|
+
|| deliveryHistoryChannels.length === 0
|
|
216
|
+
? undefined
|
|
217
|
+
: deliveryHistoryCapabilityIssuer.issueDeliveryHistoryCapability({
|
|
218
|
+
runId,
|
|
219
|
+
producerConversationId: conversationId,
|
|
220
|
+
allowedChannels: deliveryHistoryChannels,
|
|
221
|
+
});
|
|
197
222
|
// The conversation id is forwarded whenever known — AskUser targets it even
|
|
198
223
|
// without indexing; the index path additionally enables posted-message links.
|
|
199
224
|
const context = hasConversation || hasRunId
|
|
@@ -204,6 +229,14 @@ export function createAdapterSendToolsRuntimeExtension(configPath, cwd, allowedT
|
|
|
204
229
|
...(runOutput === undefined
|
|
205
230
|
? {}
|
|
206
231
|
: { runOutputDir: runOutput.path, runOutputIdentity: runOutput.identity }),
|
|
232
|
+
...(deliveryHistory === undefined
|
|
233
|
+
? {}
|
|
234
|
+
: {
|
|
235
|
+
deliveryHistory: {
|
|
236
|
+
bridgeUrl: deliveryHistory.url,
|
|
237
|
+
bridgeToken: deliveryHistory.token,
|
|
238
|
+
},
|
|
239
|
+
}),
|
|
207
240
|
}
|
|
208
241
|
: undefined;
|
|
209
242
|
return {
|
|
@@ -212,7 +245,9 @@ export function createAdapterSendToolsRuntimeExtension(configPath, cwd, allowedT
|
|
|
212
245
|
[ADAPTER_SEND_TOOLS_MCP_SERVER_NAME]: adapterSendToolsMcpServerSpec(configPath, cwd, allowedTools, context, interaction),
|
|
213
246
|
},
|
|
214
247
|
},
|
|
215
|
-
cleanup: async () => {
|
|
248
|
+
cleanup: async () => {
|
|
249
|
+
deliveryHistory?.release();
|
|
250
|
+
},
|
|
216
251
|
settleCleanup: async () => {
|
|
217
252
|
if (runOutput !== undefined) {
|
|
218
253
|
await removeOwnedDirectory(runOutput.path, runOutput.identity);
|
|
@@ -243,7 +278,7 @@ export async function createAdapterSendToolsServer(settings, clients, indexing,
|
|
|
243
278
|
const server = new McpServer({ name: "agent-adapter-send-tools", version: "0.3.0" });
|
|
244
279
|
if (settings.slack !== undefined && clients.slack !== undefined) {
|
|
245
280
|
const adapter = await loadSlackModule();
|
|
246
|
-
registerSlackSendTool(server, settings.slack, clients.slack, adapter.formatMarkdownForSlack, indexing);
|
|
281
|
+
registerSlackSendTool(server, settings.slack, clients.slack, adapter.formatMarkdownForSlack, indexing, options.deliveryHistory, options.fetchImpl ?? globalThis.fetch);
|
|
247
282
|
}
|
|
248
283
|
if (settings.telegram !== undefined && clients.telegram !== undefined) {
|
|
249
284
|
// Loaded once here (not per-register-call) because registerTelegramAskTool
|
|
@@ -251,7 +286,7 @@ export async function createAdapterSendToolsServer(settings, clients, indexing,
|
|
|
251
286
|
// schema, at registration time — not deferred into the request handler.
|
|
252
287
|
const adapter = await loadTelegramModule();
|
|
253
288
|
if (settings.telegram.tools.send) {
|
|
254
|
-
registerTelegramSendTool(server, settings.telegram, clients.telegram);
|
|
289
|
+
registerTelegramSendTool(server, settings.telegram, clients.telegram, options.deliveryHistory, options.fetchImpl ?? globalThis.fetch);
|
|
255
290
|
}
|
|
256
291
|
if (settings.telegram.tools.ask) {
|
|
257
292
|
registerTelegramAskTool(server, settings.telegram, clients.telegram, adapter, options.fetchImpl ?? globalThis.fetch);
|
|
@@ -404,7 +439,55 @@ async function sendAskProgress(extra, elapsedSeconds) {
|
|
|
404
439
|
// Keep-alive only; a lost notification must never fail the ask.
|
|
405
440
|
}
|
|
406
441
|
}
|
|
407
|
-
|
|
442
|
+
const DELIVERY_HISTORY_BRIDGE_TIMEOUT_MS = 2_000;
|
|
443
|
+
async function recordAdapterDeliveryHistory(input) {
|
|
444
|
+
if (input.settings === undefined)
|
|
445
|
+
return undefined;
|
|
446
|
+
try {
|
|
447
|
+
const response = await input.fetchImpl(new URL("/v1/delivery-history", input.settings.bridgeUrl), {
|
|
448
|
+
method: "POST",
|
|
449
|
+
headers: {
|
|
450
|
+
authorization: `Bearer ${input.settings.bridgeToken}`,
|
|
451
|
+
"content-type": "application/json",
|
|
452
|
+
},
|
|
453
|
+
body: JSON.stringify({
|
|
454
|
+
conversationId: input.conversationId,
|
|
455
|
+
text: input.text,
|
|
456
|
+
idempotencyKey: input.idempotencyKey,
|
|
457
|
+
}),
|
|
458
|
+
signal: AbortSignal.timeout(DELIVERY_HISTORY_BRIDGE_TIMEOUT_MS),
|
|
459
|
+
});
|
|
460
|
+
if (response.status === 202)
|
|
461
|
+
return { accepted: true, code: "queued" };
|
|
462
|
+
if (response.status === 400)
|
|
463
|
+
return { accepted: false, code: "history_record_invalid" };
|
|
464
|
+
if (response.status === 401)
|
|
465
|
+
return { accepted: false, code: "history_capability_rejected" };
|
|
466
|
+
if (response.status === 403)
|
|
467
|
+
return { accepted: false, code: "history_capability_scope_rejected" };
|
|
468
|
+
if (response.status === 501)
|
|
469
|
+
return { accepted: false, code: "history_record_unavailable" };
|
|
470
|
+
if (response.status === 503)
|
|
471
|
+
return { accepted: false, code: "history_record_failed" };
|
|
472
|
+
return { accepted: false, code: `history_bridge_http_${String(response.status)}` };
|
|
473
|
+
}
|
|
474
|
+
catch {
|
|
475
|
+
return { accepted: false, code: "history_bridge_unreachable" };
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
function deliveryHistorySummary(outcomes) {
|
|
479
|
+
const present = outcomes.filter((outcome) => outcome !== undefined);
|
|
480
|
+
if (present.length === 0)
|
|
481
|
+
return undefined;
|
|
482
|
+
const failed = present.find((outcome) => !outcome.accepted);
|
|
483
|
+
return failed ?? { accepted: true, code: "queued" };
|
|
484
|
+
}
|
|
485
|
+
function withDeliveryHistoryWarning(message, history) {
|
|
486
|
+
return history?.accepted === false
|
|
487
|
+
? `${message} Delivery succeeded, but destination history was not queued (${history.code}).`
|
|
488
|
+
: message;
|
|
489
|
+
}
|
|
490
|
+
function registerSlackSendTool(server, settings, client, formatMarkdownForSlack, indexing, deliveryHistory, fetchImpl = globalThis.fetch) {
|
|
408
491
|
server.registerTool("SlackSendMessage", {
|
|
409
492
|
title: "Send Slack message",
|
|
410
493
|
description: "Send a message to an allowed Slack channel or DM ID using the configured Slack adapter bot token.",
|
|
@@ -422,6 +505,7 @@ function registerSlackSendTool(server, settings, client, formatMarkdownForSlack,
|
|
|
422
505
|
const text = mrkdwn ? formatMarkdownForSlack(args.text) : args.text;
|
|
423
506
|
const chunks = splitTextByCodePoints(text, SLACK_SEND_MESSAGE_MAX_CHARS);
|
|
424
507
|
const results = [];
|
|
508
|
+
const historyOutcomes = [];
|
|
425
509
|
for (const chunk of chunks) {
|
|
426
510
|
const result = await client.chatPostMessage({
|
|
427
511
|
channel: args.channel.trim(),
|
|
@@ -432,9 +516,19 @@ function registerSlackSendTool(server, settings, client, formatMarkdownForSlack,
|
|
|
432
516
|
...(args.unfurl_media === undefined ? {} : { unfurl_media: args.unfurl_media }),
|
|
433
517
|
}, { signal: extra.signal });
|
|
434
518
|
results.push(result);
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
519
|
+
const historyOutcome = await recordAdapterDeliveryHistory({
|
|
520
|
+
settings: deliveryHistory,
|
|
521
|
+
fetchImpl,
|
|
522
|
+
conversationId: `slack:${result.channel}:${args.thread_ts?.trim() || result.ts}`,
|
|
523
|
+
text: chunk,
|
|
524
|
+
idempotencyKey: `adapter-send:slack:${result.channel}:${result.ts}`,
|
|
525
|
+
});
|
|
526
|
+
historyOutcomes.push(historyOutcome);
|
|
527
|
+
// Link every confirmed posted chunk back to its producing conversation.
|
|
528
|
+
// The history attempt always settles first; an accepted cross-conversation
|
|
529
|
+
// record is therefore durable before the alias appears. A rejected or
|
|
530
|
+
// unreachable best-effort history path remains visible in the tool result
|
|
531
|
+
// but must never regress the existing producer-reply routing contract.
|
|
438
532
|
if (indexing !== undefined) {
|
|
439
533
|
await appendPostedMessage(indexing.indexPath, {
|
|
440
534
|
channelId: result.channel,
|
|
@@ -451,21 +545,28 @@ function registerSlackSendTool(server, settings, client, formatMarkdownForSlack,
|
|
|
451
545
|
const message = results.length === 1
|
|
452
546
|
? `Sent Slack message to ${firstResult.channel} at ${firstResult.ts}.`
|
|
453
547
|
: `Sent ${String(results.length)} Slack messages to ${firstResult.channel} starting at ${firstResult.ts}.`;
|
|
548
|
+
const history = deliveryHistorySummary(historyOutcomes);
|
|
454
549
|
return {
|
|
455
|
-
content: [{ type: "text", text: message }],
|
|
550
|
+
content: [{ type: "text", text: withDeliveryHistoryWarning(message, history) }],
|
|
456
551
|
structuredContent: results.length === 1
|
|
457
|
-
? {
|
|
552
|
+
? {
|
|
553
|
+
ok: true,
|
|
554
|
+
channel: firstResult.channel,
|
|
555
|
+
ts: firstResult.ts,
|
|
556
|
+
...(history === undefined ? {} : { history }),
|
|
557
|
+
}
|
|
458
558
|
: {
|
|
459
559
|
ok: true,
|
|
460
560
|
channel: firstResult.channel,
|
|
461
561
|
ts: firstResult.ts,
|
|
462
562
|
chunkCount: results.length,
|
|
463
563
|
chunks: chunkRefs,
|
|
564
|
+
...(history === undefined ? {} : { history }),
|
|
464
565
|
},
|
|
465
566
|
};
|
|
466
567
|
});
|
|
467
568
|
}
|
|
468
|
-
function registerTelegramSendTool(server, settings, client) {
|
|
569
|
+
function registerTelegramSendTool(server, settings, client, deliveryHistory, fetchImpl = globalThis.fetch) {
|
|
469
570
|
server.registerTool("TelegramSendMessage", {
|
|
470
571
|
title: "Send Telegram message",
|
|
471
572
|
description: "Send a message to an allowed Telegram chat using the configured Telegram adapter bot token.",
|
|
@@ -485,9 +586,22 @@ function registerTelegramSendTool(server, settings, client) {
|
|
|
485
586
|
...(args.reply_to_message_id === undefined ? {} : { reply_to_message_id: args.reply_to_message_id }),
|
|
486
587
|
...(args.disable_web_page_preview === undefined ? {} : { disable_web_page_preview: args.disable_web_page_preview }),
|
|
487
588
|
}, { signal: extra.signal });
|
|
589
|
+
const history = await recordAdapterDeliveryHistory({
|
|
590
|
+
settings: deliveryHistory,
|
|
591
|
+
fetchImpl,
|
|
592
|
+
conversationId: `telegram:${String(result.chat.id)}`,
|
|
593
|
+
text: args.text,
|
|
594
|
+
idempotencyKey: `adapter-send:telegram:${String(result.chat.id)}:${String(result.message_id)}`,
|
|
595
|
+
});
|
|
596
|
+
const message = `Sent Telegram message ${result.message_id} to ${String(result.chat.id)}.`;
|
|
488
597
|
return {
|
|
489
|
-
content: [{ type: "text", text:
|
|
490
|
-
structuredContent: {
|
|
598
|
+
content: [{ type: "text", text: withDeliveryHistoryWarning(message, history) }],
|
|
599
|
+
structuredContent: {
|
|
600
|
+
ok: true,
|
|
601
|
+
chat_id: result.chat.id,
|
|
602
|
+
message_id: result.message_id,
|
|
603
|
+
...(history === undefined ? {} : { history }),
|
|
604
|
+
},
|
|
491
605
|
};
|
|
492
606
|
});
|
|
493
607
|
}
|