@mono-agent/agent-app 0.6.2 → 0.8.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 +210 -19
- package/dist/adapter-send-proxy.d.ts +18 -0
- package/dist/adapter-send-proxy.d.ts.map +1 -0
- package/dist/adapter-send-proxy.js +229 -0
- package/dist/adapter-send-proxy.js.map +1 -0
- package/dist/adapter-send-tools-main.js +62 -4
- package/dist/adapter-send-tools-main.js.map +1 -1
- package/dist/adapter-send-tools.d.ts +33 -6
- package/dist/adapter-send-tools.d.ts.map +1 -1
- package/dist/adapter-send-tools.js +485 -87
- package/dist/adapter-send-tools.js.map +1 -1
- package/dist/app-config.d.ts.map +1 -1
- package/dist/app-config.js +8 -0
- package/dist/app-config.js.map +1 -1
- package/dist/app.d.ts +2 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +528 -135
- package/dist/app.js.map +1 -1
- package/dist/broadcast-recorder.d.ts.map +1 -1
- package/dist/broadcast-recorder.js +24 -2
- package/dist/broadcast-recorder.js.map +1 -1
- package/dist/channels.d.ts.map +1 -1
- package/dist/channels.js +16 -6
- package/dist/channels.js.map +1 -1
- package/dist/cli.d.ts +76 -4
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +2102 -102
- package/dist/cli.js.map +1 -1
- package/dist/config-reference.d.ts.map +1 -1
- package/dist/config-reference.js +195 -6
- package/dist/config-reference.js.map +1 -1
- package/dist/configuration-proposal-main.d.ts +3 -0
- package/dist/configuration-proposal-main.d.ts.map +1 -0
- package/dist/configuration-proposal-main.js +13 -0
- package/dist/configuration-proposal-main.js.map +1 -0
- package/dist/configuration-proposal-tool.d.ts +26 -0
- package/dist/configuration-proposal-tool.d.ts.map +1 -0
- package/dist/configuration-proposal-tool.js +139 -0
- package/dist/configuration-proposal-tool.js.map +1 -0
- package/dist/configured-agent.d.ts +12 -0
- package/dist/configured-agent.d.ts.map +1 -1
- package/dist/configured-agent.js +150 -18
- package/dist/configured-agent.js.map +1 -1
- package/dist/consumer-contract.d.ts +3 -0
- package/dist/consumer-contract.d.ts.map +1 -1
- package/dist/consumer-contract.js +44 -1
- package/dist/consumer-contract.js.map +1 -1
- package/dist/doctor.d.ts +27 -5
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +1197 -101
- package/dist/doctor.js.map +1 -1
- package/dist/first-run-managed-memory.d.ts +39 -0
- package/dist/first-run-managed-memory.d.ts.map +1 -0
- package/dist/first-run-managed-memory.js +521 -0
- package/dist/first-run-managed-memory.js.map +1 -0
- package/dist/first-run-readiness.d.ts +111 -0
- package/dist/first-run-readiness.d.ts.map +1 -0
- package/dist/first-run-readiness.js +757 -0
- package/dist/first-run-readiness.js.map +1 -0
- package/dist/index.d.ts +8 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +88 -3
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +1212 -23
- package/dist/init.js.map +1 -1
- package/dist/interaction-bridge.d.ts +25 -1
- package/dist/interaction-bridge.d.ts.map +1 -1
- package/dist/interaction-bridge.js +281 -19
- package/dist/interaction-bridge.js.map +1 -1
- package/dist/local-configuration.d.ts +56 -0
- package/dist/local-configuration.d.ts.map +1 -0
- package/dist/local-configuration.js +914 -0
- package/dist/local-configuration.js.map +1 -0
- package/dist/memory-command.d.ts +4 -0
- package/dist/memory-command.d.ts.map +1 -1
- package/dist/memory-command.js +751 -27
- package/dist/memory-command.js.map +1 -1
- package/dist/memory-recall.d.ts +38 -10
- package/dist/memory-recall.d.ts.map +1 -1
- package/dist/memory-recall.js +82 -25
- package/dist/memory-recall.js.map +1 -1
- package/dist/memory-retrieval.d.ts +66 -0
- package/dist/memory-retrieval.d.ts.map +1 -0
- package/dist/memory-retrieval.js +332 -0
- package/dist/memory-retrieval.js.map +1 -0
- package/dist/modules/base.d.ts +6 -5
- package/dist/modules/base.d.ts.map +1 -1
- package/dist/modules/base.js +11 -7
- package/dist/modules/base.js.map +1 -1
- package/dist/modules/catalog.d.ts.map +1 -1
- package/dist/modules/catalog.js +54 -20
- package/dist/modules/catalog.js.map +1 -1
- package/dist/modules/index.d.ts +2 -2
- package/dist/modules/index.d.ts.map +1 -1
- package/dist/modules/index.js +1 -1
- package/dist/modules/index.js.map +1 -1
- package/dist/modules/known-tools.d.ts +3 -0
- package/dist/modules/known-tools.d.ts.map +1 -1
- package/dist/modules/known-tools.js +11 -1
- package/dist/modules/known-tools.js.map +1 -1
- package/dist/modules/types.d.ts +20 -6
- package/dist/modules/types.d.ts.map +1 -1
- package/dist/modules/types.js.map +1 -1
- package/dist/package-version.d.ts +3 -0
- package/dist/package-version.d.ts.map +1 -0
- package/dist/package-version.js +14 -0
- package/dist/package-version.js.map +1 -0
- package/dist/pi-auth-store-inspection.d.ts +21 -0
- package/dist/pi-auth-store-inspection.d.ts.map +1 -0
- package/dist/pi-auth-store-inspection.js +120 -0
- package/dist/pi-auth-store-inspection.js.map +1 -0
- package/dist/pi-oauth-login-main.d.ts +3 -0
- package/dist/pi-oauth-login-main.d.ts.map +1 -0
- package/dist/pi-oauth-login-main.js +14 -0
- package/dist/pi-oauth-login-main.js.map +1 -0
- package/dist/pi-oauth-login.d.ts +22 -0
- package/dist/pi-oauth-login.d.ts.map +1 -0
- package/dist/pi-oauth-login.js +79 -0
- package/dist/pi-oauth-login.js.map +1 -0
- package/dist/project-skills.d.ts +40 -0
- package/dist/project-skills.d.ts.map +1 -0
- package/dist/project-skills.js +573 -0
- package/dist/project-skills.js.map +1 -0
- package/dist/provider-setup.d.ts +117 -2
- package/dist/provider-setup.d.ts.map +1 -1
- package/dist/provider-setup.js +1505 -49
- package/dist/provider-setup.js.map +1 -1
- package/dist/readiness-probe-worker.d.ts +12 -0
- package/dist/readiness-probe-worker.d.ts.map +1 -0
- package/dist/readiness-probe-worker.js +276 -0
- package/dist/readiness-probe-worker.js.map +1 -0
- package/dist/readiness-probe.d.ts +100 -0
- package/dist/readiness-probe.d.ts.map +1 -0
- package/dist/readiness-probe.js +780 -0
- package/dist/readiness-probe.js.map +1 -0
- package/dist/request-model-override.d.ts +43 -1
- package/dist/request-model-override.d.ts.map +1 -1
- package/dist/request-model-override.js +178 -19
- package/dist/request-model-override.js.map +1 -1
- package/dist/run-history.d.ts +32 -0
- package/dist/run-history.d.ts.map +1 -0
- package/dist/run-history.js +859 -0
- package/dist/run-history.js.map +1 -0
- package/dist/runs-health.d.ts.map +1 -1
- package/dist/runs-health.js +12 -4
- package/dist/runs-health.js.map +1 -1
- package/dist/runtime-option-extensions.d.ts +14 -0
- package/dist/runtime-option-extensions.d.ts.map +1 -0
- package/dist/runtime-option-extensions.js +98 -0
- package/dist/runtime-option-extensions.js.map +1 -0
- package/dist/runtime-routes.d.ts +9 -0
- package/dist/runtime-routes.d.ts.map +1 -0
- package/dist/runtime-routes.js +13 -0
- package/dist/runtime-routes.js.map +1 -0
- package/dist/sandbox-manager.d.ts +69 -0
- package/dist/sandbox-manager.d.ts.map +1 -0
- package/dist/sandbox-manager.js +856 -0
- package/dist/sandbox-manager.js.map +1 -0
- package/dist/supermemory-plugin.d.ts +54 -0
- package/dist/supermemory-plugin.d.ts.map +1 -0
- package/dist/supermemory-plugin.js +136 -0
- package/dist/supermemory-plugin.js.map +1 -0
- package/dist/tui-command.d.ts +15 -0
- package/dist/tui-command.d.ts.map +1 -1
- package/dist/tui-command.js +46 -6
- package/dist/tui-command.js.map +1 -1
- package/dist/web-command.d.ts +8 -0
- package/dist/web-command.d.ts.map +1 -1
- package/dist/web-command.js +174 -17
- package/dist/web-command.js.map +1 -1
- package/dist/wizard/answers.d.ts +31 -4
- package/dist/wizard/answers.d.ts.map +1 -1
- package/dist/wizard/answers.js +145 -16
- package/dist/wizard/answers.js.map +1 -1
- package/dist/wizard/from-flags.d.ts +7 -0
- package/dist/wizard/from-flags.d.ts.map +1 -1
- package/dist/wizard/from-flags.js +36 -2
- package/dist/wizard/from-flags.js.map +1 -1
- package/dist/wizard/index.d.ts +4 -4
- package/dist/wizard/index.d.ts.map +1 -1
- package/dist/wizard/index.js +2 -2
- package/dist/wizard/index.js.map +1 -1
- package/dist/wizard/model-discovery.d.ts +33 -2
- package/dist/wizard/model-discovery.d.ts.map +1 -1
- package/dist/wizard/model-discovery.js +826 -108
- package/dist/wizard/model-discovery.js.map +1 -1
- package/dist/wizard/presets.d.ts +1 -1
- package/dist/wizard/presets.d.ts.map +1 -1
- package/dist/wizard/presets.js +7 -12
- package/dist/wizard/presets.js.map +1 -1
- package/dist/wizard/prompts.d.ts +56 -9
- package/dist/wizard/prompts.d.ts.map +1 -1
- package/dist/wizard/prompts.js +172 -20
- package/dist/wizard/prompts.js.map +1 -1
- package/dist/wizard/run.d.ts +59 -3
- package/dist/wizard/run.d.ts.map +1 -1
- package/dist/wizard/run.js +1133 -191
- package/dist/wizard/run.js.map +1 -1
- package/package.json +21 -16
- package/resources/srt/package-lock.json +66 -0
- package/resources/srt/package.json +9 -0
- package/schema/mono-agent.config.schema.json +381 -17
- package/skills/mono-agent-composer/SKILL.md +4 -4
- package/skills/mono-agent-composer/references/config-blueprint.md +5 -4
- package/skills/mono-agent-composer/references/discovery-questions.md +8 -8
- package/skills/mono-agent-composer/references/feature-coverage.md +8 -6
- package/skills/mono-agent-composer/references/package-map.md +1 -1
- package/skills/mono-agent-composer/references/playbooks.md +8 -7
- package/skills/mono-agent-composer/references/validation.md +1 -1
package/dist/web-command.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { networkInterfaces } from "node:os";
|
|
1
2
|
import { resolve } from "node:path";
|
|
2
3
|
import { pruneTraceSources } from "@mono-agent/observability";
|
|
3
4
|
import { startSessionWebServer } from "@mono-agent/session-web";
|
|
4
|
-
import { generateBearerToken, isLoopbackHost } from "@mono-agent/agent-contracts";
|
|
5
|
+
import { generateBearerToken, hostForUrl, isLoopbackHost, isWildcardHost, normalizeHostForBind, normalizeOptionalString, } from "@mono-agent/agent-contracts";
|
|
5
6
|
import { resolveAppTraceRegistryDir, resolveGlobalTraceRegistryDir } from "./app-config.js";
|
|
6
7
|
export const DEFAULT_WEB_PORT = 4599;
|
|
8
|
+
const WEB_AUTH_TOKEN_ENV = "MONO_AGENT_WEB_AUTH_TOKEN";
|
|
7
9
|
/**
|
|
8
10
|
* `mono-agent web`: discover every running agent on this machine (trace-source
|
|
9
11
|
* registry, the same mechanism as `mono-agent tui`) and serve the read-only
|
|
@@ -21,7 +23,15 @@ export async function runWeb(options, deps = {}) {
|
|
|
21
23
|
const globalRegistryDir = resolveGlobalTraceRegistryDir(options.env);
|
|
22
24
|
const registryDirs = dedupePaths([configuredRegistryDir, globalRegistryDir]);
|
|
23
25
|
await Promise.all(registryDirs.map((registryDir) => pruneTraceSources({ registryDir })));
|
|
24
|
-
const
|
|
26
|
+
const authRequired = requiresServerAuth(options.host);
|
|
27
|
+
const interactive = deps.interactive ?? process.stdout.isTTY === true;
|
|
28
|
+
const configuredAuthToken = normalizeOptionalString(options.env.MONO_AGENT_WEB_AUTH_TOKEN);
|
|
29
|
+
if (authRequired && configuredAuthToken === undefined && !interactive) {
|
|
30
|
+
stderr.write(`Non-interactive non-loopback web serving requires ${WEB_AUTH_TOKEN_ENV}; refusing to generate a bearer secret into logs.\n`);
|
|
31
|
+
return 1;
|
|
32
|
+
}
|
|
33
|
+
const authToken = configuredAuthToken ?? (authRequired ? generateBearerToken() : undefined);
|
|
34
|
+
const generatedAuthToken = authToken !== undefined && configuredAuthToken === undefined;
|
|
25
35
|
const port = options.port ?? DEFAULT_WEB_PORT;
|
|
26
36
|
const startServer = deps.startServer ?? startSessionWebServer;
|
|
27
37
|
let handle;
|
|
@@ -41,19 +51,38 @@ export async function runWeb(options, deps = {}) {
|
|
|
41
51
|
stderr.write(`mono-agent web failed to start: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
42
52
|
return 1;
|
|
43
53
|
}
|
|
44
|
-
const
|
|
45
|
-
|
|
54
|
+
const wildcardBind = isWildcardUrl(handle.url)
|
|
55
|
+
|| (handle.boundAddress !== undefined && isWildcardHost(handle.boundAddress));
|
|
56
|
+
const networkAddresses = wildcardBind
|
|
57
|
+
? bestEffortNetworkAddresses(deps.discoverNetworkAddresses)
|
|
58
|
+
: [];
|
|
59
|
+
const advertisedUrls = resolveAdvertisedUrls(handle.url, networkAddresses, handle.boundAddress);
|
|
60
|
+
const primaryUrl = advertisedUrls[0]?.url ?? handle.url;
|
|
61
|
+
const mayPrintConfiguredToken = configuredAuthToken !== undefined
|
|
62
|
+
&& options.showAuthUrl === true
|
|
63
|
+
&& interactive;
|
|
64
|
+
const printableToken = generatedAuthToken || mayPrintConfiguredToken ? authToken : undefined;
|
|
65
|
+
printAdvertisedUrls(stdout, advertisedUrls, printableToken);
|
|
66
|
+
if (configuredAuthToken !== undefined && printableToken === undefined) {
|
|
67
|
+
stdout.write(`Authentication: ${WEB_AUTH_TOKEN_ENV} is configured (token redacted).\n`);
|
|
68
|
+
}
|
|
69
|
+
if (configuredAuthToken !== undefined && options.showAuthUrl === true && !mayPrintConfiguredToken) {
|
|
70
|
+
stderr.write("--show-auth-url was ignored because stdout is not an interactive terminal.\n");
|
|
71
|
+
}
|
|
46
72
|
stdout.write(`Watching ${registryDirs.length} registr${registryDirs.length === 1 ? "y" : "ies"} for agents. Press Ctrl-C to stop.\n`);
|
|
47
|
-
stdout.write(`${reverseProxyHint(
|
|
48
|
-
stdout.write(`${reachabilityHint(handle.url)}\n`);
|
|
49
|
-
if (options.open ?? true) {
|
|
73
|
+
stdout.write(`${reverseProxyHint(primaryUrl)}\n`);
|
|
74
|
+
stdout.write(`${reachabilityHint(handle.url, handle.boundAddress)}\n`);
|
|
75
|
+
if ((options.open ?? true) && authToken === undefined) {
|
|
50
76
|
try {
|
|
51
|
-
(deps.openUrl ?? openInBrowser)(
|
|
77
|
+
(deps.openUrl ?? openInBrowser)(primaryUrl);
|
|
52
78
|
}
|
|
53
79
|
catch {
|
|
54
80
|
// Best-effort: a headless host without a browser is fine — the URL is printed.
|
|
55
81
|
}
|
|
56
82
|
}
|
|
83
|
+
else if ((options.open ?? true) && authToken !== undefined) {
|
|
84
|
+
stdout.write("Browser launch skipped in authenticated mode so the bearer token never enters process arguments.\n");
|
|
85
|
+
}
|
|
57
86
|
deps.onReady?.(handle);
|
|
58
87
|
await (deps.waitForShutdown ?? waitForSignal)();
|
|
59
88
|
await handle.stop();
|
|
@@ -61,12 +90,10 @@ export async function runWeb(options, deps = {}) {
|
|
|
61
90
|
return 0;
|
|
62
91
|
}
|
|
63
92
|
/**
|
|
64
|
-
* A one-line hint about who can reach the server
|
|
65
|
-
*
|
|
66
|
-
* MagicDNS name, keeping the PWA installable). Non-loopback → note it is already
|
|
67
|
-
* reachable over the LAN/tailnet at this port.
|
|
93
|
+
* A one-line hint about who can reach the server. Direct HTTP never depends on
|
|
94
|
+
* Tailscale Serve; Serve is only an optional HTTPS/PWA-installability layer.
|
|
68
95
|
*/
|
|
69
|
-
function reachabilityHint(url) {
|
|
96
|
+
function reachabilityHint(url, boundAddress) {
|
|
70
97
|
let port = "";
|
|
71
98
|
let host = "";
|
|
72
99
|
try {
|
|
@@ -77,10 +104,11 @@ function reachabilityHint(url) {
|
|
|
77
104
|
catch {
|
|
78
105
|
/* leave blank */
|
|
79
106
|
}
|
|
80
|
-
|
|
81
|
-
|
|
107
|
+
const effectiveHost = boundAddress ?? host;
|
|
108
|
+
if (effectiveHost.length > 0 && !isLoopbackHost(effectiveHost)) {
|
|
109
|
+
return "Bound non-loopback: direct HTTP is available over your LAN/Tailnet at the URLs above. Tailscale Serve is optional and only needed for HTTPS + installable/offline PWA behavior.";
|
|
82
110
|
}
|
|
83
|
-
return `Loopback only.
|
|
111
|
+
return `Loopback only. Re-run with --host 0.0.0.0 --allow-non-loopback for direct LAN/Tailnet HTTP. Tailscale Serve is optional for HTTPS + installable/offline PWA behavior (port ${port || "<port>"}).`;
|
|
84
112
|
}
|
|
85
113
|
function reverseProxyHint(url) {
|
|
86
114
|
let target = url;
|
|
@@ -102,9 +130,138 @@ function requiresServerAuth(host) {
|
|
|
102
130
|
}
|
|
103
131
|
function withAuthToken(url, token) {
|
|
104
132
|
const parsed = new URL(url);
|
|
105
|
-
parsed.
|
|
133
|
+
const fragment = new URLSearchParams(parsed.hash.startsWith("#") ? parsed.hash.slice(1) : parsed.hash);
|
|
134
|
+
fragment.set("token", token);
|
|
135
|
+
parsed.hash = fragment.toString();
|
|
106
136
|
return parsed.toString();
|
|
107
137
|
}
|
|
138
|
+
function printAdvertisedUrls(stdout, urls, authToken) {
|
|
139
|
+
const printable = urls.map((entry) => ({
|
|
140
|
+
...entry,
|
|
141
|
+
url: authToken === undefined ? entry.url : withAuthToken(entry.url, authToken),
|
|
142
|
+
}));
|
|
143
|
+
const primary = printable[0];
|
|
144
|
+
if (primary === undefined) {
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
stdout.write(`mono-agent web → ${primary.url}\n`);
|
|
148
|
+
for (const entry of printable.slice(1)) {
|
|
149
|
+
stdout.write(`${entry.label.padEnd(9)} → ${entry.url}\n`);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
function resolveAdvertisedUrls(url, networkAddresses, boundAddress) {
|
|
153
|
+
const requestedWildcard = isWildcardUrl(url) ? new URL(url).hostname : undefined;
|
|
154
|
+
const actualWildcard = boundAddress !== undefined && isWildcardHost(boundAddress)
|
|
155
|
+
? boundAddress
|
|
156
|
+
: undefined;
|
|
157
|
+
if (requestedWildcard === undefined && actualWildcard === undefined) {
|
|
158
|
+
return [{ label: isLoopbackUrl(url) ? "Loopback" : "Web", url }];
|
|
159
|
+
}
|
|
160
|
+
const wildcardHost = requestedWildcard ?? actualWildcard ?? new URL(url).hostname;
|
|
161
|
+
const loopbackHost = loopbackForWildcardHost(wildcardHost);
|
|
162
|
+
const urls = [{ label: "Loopback", url: replaceUrlHost(url, loopbackHost) }];
|
|
163
|
+
for (const entry of networkAddresses) {
|
|
164
|
+
urls.push({
|
|
165
|
+
label: entry.kind === "tailscale" ? "Tailscale" : "LAN",
|
|
166
|
+
url: replaceUrlHost(url, entry.address),
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
return urls;
|
|
170
|
+
}
|
|
171
|
+
function loopbackForWildcardHost(host) {
|
|
172
|
+
const normalized = normalizeHostForBind(host).toLowerCase();
|
|
173
|
+
if (normalized === "0.0.0.0") {
|
|
174
|
+
return "127.0.0.1";
|
|
175
|
+
}
|
|
176
|
+
try {
|
|
177
|
+
const canonical = new URL(`http://[${normalized}]/`).hostname.slice(1, -1);
|
|
178
|
+
if (canonical === "::ffff:0:0") {
|
|
179
|
+
return "127.0.0.1";
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
// isWildcardHost already validated the caller; fall through defensively.
|
|
184
|
+
}
|
|
185
|
+
return "::1";
|
|
186
|
+
}
|
|
187
|
+
function replaceUrlHost(url, host) {
|
|
188
|
+
const parsed = new URL(url);
|
|
189
|
+
parsed.hostname = hostForUrl(host);
|
|
190
|
+
return parsed.toString();
|
|
191
|
+
}
|
|
192
|
+
function isWildcardUrl(url) {
|
|
193
|
+
try {
|
|
194
|
+
const host = new URL(url).hostname;
|
|
195
|
+
return isWildcardHost(host);
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
return false;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
function isLoopbackUrl(url) {
|
|
202
|
+
try {
|
|
203
|
+
return isLoopbackHost(new URL(url).hostname);
|
|
204
|
+
}
|
|
205
|
+
catch {
|
|
206
|
+
return false;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
function bestEffortNetworkAddresses(injected) {
|
|
210
|
+
try {
|
|
211
|
+
return dedupeNetworkAddresses(injected?.() ?? discoverNetworkAddresses());
|
|
212
|
+
}
|
|
213
|
+
catch {
|
|
214
|
+
return [];
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
function discoverNetworkAddresses() {
|
|
218
|
+
const addresses = [];
|
|
219
|
+
for (const interfaces of Object.values(networkInterfaces())) {
|
|
220
|
+
for (const info of interfaces ?? []) {
|
|
221
|
+
if (info.internal || info.family !== "IPv4") {
|
|
222
|
+
continue;
|
|
223
|
+
}
|
|
224
|
+
const kind = classifyIpv4Address(info.address);
|
|
225
|
+
if (kind !== undefined) {
|
|
226
|
+
addresses.push({ address: info.address, kind });
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
return addresses;
|
|
231
|
+
}
|
|
232
|
+
function classifyIpv4Address(address) {
|
|
233
|
+
const octets = address.split(".").map((part) => Number.parseInt(part, 10));
|
|
234
|
+
if (octets.length !== 4 || octets.some((part) => !Number.isInteger(part) || part < 0 || part > 255)) {
|
|
235
|
+
return undefined;
|
|
236
|
+
}
|
|
237
|
+
const [first = -1, second = -1] = octets;
|
|
238
|
+
if (first === 100 && second >= 64 && second <= 127) {
|
|
239
|
+
return "tailscale";
|
|
240
|
+
}
|
|
241
|
+
if (first === 10
|
|
242
|
+
|| (first === 172 && second >= 16 && second <= 31)
|
|
243
|
+
|| (first === 192 && second === 168)) {
|
|
244
|
+
return "lan";
|
|
245
|
+
}
|
|
246
|
+
return undefined;
|
|
247
|
+
}
|
|
248
|
+
function dedupeNetworkAddresses(addresses) {
|
|
249
|
+
const seen = new Set();
|
|
250
|
+
return [...addresses]
|
|
251
|
+
.filter((entry) => {
|
|
252
|
+
if (seen.has(entry.address)) {
|
|
253
|
+
return false;
|
|
254
|
+
}
|
|
255
|
+
seen.add(entry.address);
|
|
256
|
+
return true;
|
|
257
|
+
})
|
|
258
|
+
.sort((left, right) => {
|
|
259
|
+
if (left.kind !== right.kind) {
|
|
260
|
+
return left.kind === "lan" ? -1 : 1;
|
|
261
|
+
}
|
|
262
|
+
return left.address.localeCompare(right.address);
|
|
263
|
+
});
|
|
264
|
+
}
|
|
108
265
|
/** Resolve + dedupe registry dirs, preserving precedence order. */
|
|
109
266
|
function dedupePaths(dirs) {
|
|
110
267
|
const seen = new Set();
|
package/dist/web-command.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-command.js","sourceRoot":"","sources":["../src/web-command.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"web-command.js","sourceRoot":"","sources":["../src/web-command.ts"],"names":[],"mappings":"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"}
|
package/dist/wizard/answers.d.ts
CHANGED
|
@@ -1,15 +1,30 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type MonoAgentConfigJson, type RouteSafetyMode } from "@mono-agent/config";
|
|
2
2
|
import { type CapabilityModule, type GeneratedFile, type ModuleInputValues, type ModuleValidateExpectation } from "../modules/index.js";
|
|
3
3
|
/**
|
|
4
4
|
* The complete set of choices the wizard (or a preset) makes. This is the single
|
|
5
5
|
* input to {@link composeWizardPlan}: everything the composer needs to emit a full
|
|
6
6
|
* `mono-agent.config.json`, `.env.example`, and follow-up files is derived from it.
|
|
7
7
|
*/
|
|
8
|
+
export interface WizardFallback {
|
|
9
|
+
readonly model: string;
|
|
10
|
+
readonly effort?: string;
|
|
11
|
+
}
|
|
8
12
|
export interface WizardAnswers {
|
|
13
|
+
/** Public display identity. Omitted only by legacy/programmatic callers. */
|
|
14
|
+
readonly name?: string;
|
|
15
|
+
/** Concise role statement used to generate the initial Identity. */
|
|
16
|
+
readonly purpose?: string;
|
|
9
17
|
readonly model: string;
|
|
10
|
-
|
|
11
|
-
/** Optional runtime reasoning effort (`runtime.effort`), omitted for default provider behavior. */
|
|
18
|
+
/** Optional primary-route effort; omitted means provider default. */
|
|
12
19
|
readonly effort?: string;
|
|
20
|
+
/** Canonical ordered fallback routes; omitted effort means provider default. */
|
|
21
|
+
readonly fallbacks: readonly WizardFallback[];
|
|
22
|
+
/**
|
|
23
|
+
* Deprecated compatibility input. {@link defaultAnswers} converts these to
|
|
24
|
+
* canonical routes, inheriting the legacy global effort when it is present.
|
|
25
|
+
*/
|
|
26
|
+
readonly fallbackModels?: readonly string[];
|
|
27
|
+
readonly routeSafety: RouteSafetyMode;
|
|
13
28
|
/** Channel module ids, e.g. `["channel:webhook","channel:telegram"]`. */
|
|
14
29
|
readonly channels: readonly string[];
|
|
15
30
|
/** Memory module id, or `undefined` for no memory section. */
|
|
@@ -35,6 +50,7 @@ export interface SecretChecklistItem {
|
|
|
35
50
|
readonly label: string;
|
|
36
51
|
readonly envVar: string;
|
|
37
52
|
readonly description: string;
|
|
53
|
+
readonly required: boolean;
|
|
38
54
|
}
|
|
39
55
|
/**
|
|
40
56
|
* The single artifact of config generation: the JSON to write (with `$schema`),
|
|
@@ -51,6 +67,13 @@ export interface WizardPlan {
|
|
|
51
67
|
readonly validateExpectations: readonly ModuleValidateExpectation[];
|
|
52
68
|
readonly warnings: readonly string[];
|
|
53
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* Every model/service reference that provider setup must account for. Runtime
|
|
72
|
+
* refs come first, followed by memory-owned refs in execution order. Local
|
|
73
|
+
* memory services use synthetic Pi refs so the existing setup planner can run
|
|
74
|
+
* the matching Ollama/LM Studio preflight without learning a second shape.
|
|
75
|
+
*/
|
|
76
|
+
export declare function referencedSetupModelRefs(plan: WizardPlan): readonly string[];
|
|
54
77
|
/**
|
|
55
78
|
* The recommended `allowedTools` for these answers: the read-only safe defaults
|
|
56
79
|
* plus every selected module's `recommendedTools`, deduped and ordered by the
|
|
@@ -61,7 +84,7 @@ export declare function recommendedToolSelection(answers: WizardAnswers): readon
|
|
|
61
84
|
* The tools this agent auto-provisions regardless of `tools.allowedTools` — the
|
|
62
85
|
* "always on" set the wizard surfaces so the operator understands they are NOT gated
|
|
63
86
|
* by the allow-list choice. Today that is `MemoryRecall` when the memory tier enables
|
|
64
|
-
* recall (journal/bujo/supermemory). `ReadSkill` (skills configured) and MCP-server
|
|
87
|
+
* recall (lite/journal/bujo/supermemory). `ReadSkill` (skills configured) and MCP-server
|
|
65
88
|
* tools are also always-on when present, but the basic wizard authors neither, so they
|
|
66
89
|
* never appear here.
|
|
67
90
|
*/
|
|
@@ -74,6 +97,10 @@ export declare function alwaysOnTools(answers: WizardAnswers): readonly string[]
|
|
|
74
97
|
* verbatim: `["*"]`, a specific list, or `[]` (the chat-only case).
|
|
75
98
|
*/
|
|
76
99
|
export declare function defaultAnswers(overrides?: Partial<WizardAnswers>): WizardAnswers;
|
|
100
|
+
/** Canonicalize old answer objects at the single composition boundary. */
|
|
101
|
+
export declare function effectiveFallbacks(answers: WizardAnswers): readonly WizardFallback[];
|
|
102
|
+
/** Folder basenames become readable public identities without affecting paths. */
|
|
103
|
+
export declare function humanizeAgentName(dirBasename: string): string;
|
|
77
104
|
/** Overrides for one module: the shared model plus its non-secret input values. */
|
|
78
105
|
export declare function moduleOverrides(module: CapabilityModule, answers: WizardAnswers): Record<string, string | undefined>;
|
|
79
106
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"answers.d.ts","sourceRoot":"","sources":["../../src/wizard/answers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"answers.d.ts","sourceRoot":"","sources":["../../src/wizard/answers.ts"],"names":[],"mappings":"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"}
|
package/dist/wizard/answers.js
CHANGED
|
@@ -1,7 +1,60 @@
|
|
|
1
|
+
import { MAX_AGENT_NAME_LENGTH, } from "@mono-agent/config";
|
|
1
2
|
import { monoAgentConfigWithSchema } from "../config-reference.js";
|
|
2
|
-
import { ADAPTER_SEND_TOOL_NAMES, ALLOW_ALL_TOOLS, baseConfig, BUILTIN_TOOL_NAMES, DEFAULT_MODEL, DEFAULT_SAFE_TOOLS, findModule, resolveModuleInputs, } from "../modules/index.js";
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
import { ADAPTER_SEND_TOOL_NAMES, APP_TOOL_NAMES, ALLOW_ALL_TOOLS, baseConfig, BUILTIN_TOOL_NAMES, DEFAULT_MODEL, DEFAULT_SAFE_TOOLS, findModule, resolveModuleInputs, } from "../modules/index.js";
|
|
4
|
+
import { managedProjectSkillFiles } from "../project-skills.js";
|
|
5
|
+
/**
|
|
6
|
+
* Every model/service reference that provider setup must account for. Runtime
|
|
7
|
+
* refs come first, followed by memory-owned refs in execution order. Local
|
|
8
|
+
* memory services use synthetic Pi refs so the existing setup planner can run
|
|
9
|
+
* the matching Ollama/LM Studio preflight without learning a second shape.
|
|
10
|
+
*/
|
|
11
|
+
export function referencedSetupModelRefs(plan) {
|
|
12
|
+
const refs = [];
|
|
13
|
+
const seen = new Set();
|
|
14
|
+
const add = (value) => {
|
|
15
|
+
if (typeof value === "string" && value.length > 0 && !seen.has(value)) {
|
|
16
|
+
seen.add(value);
|
|
17
|
+
refs.push(value);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
add(plan.configJson.runtime?.model);
|
|
21
|
+
for (const fallback of plan.configJson.runtime?.fallbacks ?? []) {
|
|
22
|
+
add(fallback.model);
|
|
23
|
+
}
|
|
24
|
+
// A hand-authored legacy plan can still enter this helper; generated plans
|
|
25
|
+
// always use the canonical structured form.
|
|
26
|
+
for (const fallback of plan.configJson.runtime?.fallbackModels ?? []) {
|
|
27
|
+
add(fallback);
|
|
28
|
+
}
|
|
29
|
+
const memory = plan.configJson.memory;
|
|
30
|
+
if (memory?.llm?.provider === "agent-host") {
|
|
31
|
+
add(memory.llm.model);
|
|
32
|
+
}
|
|
33
|
+
else if (memory?.llm?.provider === "ollama" || memory?.llm?.provider === "lmstudio") {
|
|
34
|
+
add(localServiceModelRef(memory.llm.provider, memory.llm.model));
|
|
35
|
+
}
|
|
36
|
+
const embeddings = memory?.embeddings;
|
|
37
|
+
if (embeddings?.provider === "ollama" || embeddings?.provider === "lmstudio") {
|
|
38
|
+
add(localServiceModelRef(embeddings.provider, embeddings.model));
|
|
39
|
+
}
|
|
40
|
+
return refs;
|
|
41
|
+
}
|
|
42
|
+
/** Convert a local memory service into the model-ref shape understood by setup. */
|
|
43
|
+
function localServiceModelRef(provider, model) {
|
|
44
|
+
return typeof model === "string" && model.length > 0 ? `pi:${provider}:${model}` : undefined;
|
|
45
|
+
}
|
|
46
|
+
/** True when a referenced backend requires credentials rather than a local service. */
|
|
47
|
+
function modelRefNeedsCredentials(modelRef) {
|
|
48
|
+
return modelRef.startsWith("codex:")
|
|
49
|
+
|| modelRef.startsWith("claude:")
|
|
50
|
+
|| (modelRef.startsWith("pi:") && !/^pi:(?:ollama|lmstudio):/u.test(modelRef));
|
|
51
|
+
}
|
|
52
|
+
/** Tools ordered canonically: runtime built-ins, app-owned tools, then adapter send tools. */
|
|
53
|
+
const ORDERED_TOOL_NAMES = [
|
|
54
|
+
...BUILTIN_TOOL_NAMES,
|
|
55
|
+
...APP_TOOL_NAMES,
|
|
56
|
+
...ADAPTER_SEND_TOOL_NAMES,
|
|
57
|
+
];
|
|
5
58
|
const ZERO_TOOLS_WARNING = "Zero tools selected — the agent will be chat-only: it cannot read files, run commands, or send proactive messages.";
|
|
6
59
|
/**
|
|
7
60
|
* The module ids selected by these answers, in composer order: auto-derived
|
|
@@ -10,7 +63,7 @@ const ZERO_TOOLS_WARNING = "Zero tools selected — the agent will be chat-only:
|
|
|
10
63
|
*/
|
|
11
64
|
function selectedModuleIds(answers) {
|
|
12
65
|
const ids = [];
|
|
13
|
-
const modelRefs = [answers.model, ...answers.
|
|
66
|
+
const modelRefs = [answers.model, ...effectiveFallbacks(answers).map((fallback) => fallback.model)];
|
|
14
67
|
if (modelRefs.some((model) => /^pi:ollama:/u.test(model))) {
|
|
15
68
|
ids.push("provider:ollama");
|
|
16
69
|
}
|
|
@@ -61,8 +114,8 @@ const MEMORY_RECALL_TOOL = "MemoryRecall";
|
|
|
61
114
|
/**
|
|
62
115
|
* True when the selected memory tier auto-provisions the read-only `MemoryRecall`
|
|
63
116
|
* tool (its fragment sets `memory.recallTool.enabled`). Derived from the catalog so
|
|
64
|
-
* it never drifts from the memory modules themselves — journal/bujo/supermemory
|
|
65
|
-
*
|
|
117
|
+
* it never drifts from the memory modules themselves — lite/journal/bujo/supermemory
|
|
118
|
+
* all do (Lite is FTS-only).
|
|
66
119
|
*/
|
|
67
120
|
function memoryProvisionsRecall(memoryId) {
|
|
68
121
|
if (memoryId === undefined) {
|
|
@@ -79,12 +132,12 @@ function memoryProvisionsRecall(memoryId) {
|
|
|
79
132
|
* The tools this agent auto-provisions regardless of `tools.allowedTools` — the
|
|
80
133
|
* "always on" set the wizard surfaces so the operator understands they are NOT gated
|
|
81
134
|
* by the allow-list choice. Today that is `MemoryRecall` when the memory tier enables
|
|
82
|
-
* recall (journal/bujo/supermemory). `ReadSkill` (skills configured) and MCP-server
|
|
135
|
+
* recall (lite/journal/bujo/supermemory). `ReadSkill` (skills configured) and MCP-server
|
|
83
136
|
* tools are also always-on when present, but the basic wizard authors neither, so they
|
|
84
137
|
* never appear here.
|
|
85
138
|
*/
|
|
86
139
|
export function alwaysOnTools(answers) {
|
|
87
|
-
const tools = [];
|
|
140
|
+
const tools = ["ReadSkill"];
|
|
88
141
|
if (memoryProvisionsRecall(answers.memory)) {
|
|
89
142
|
tools.push(MEMORY_RECALL_TOOL);
|
|
90
143
|
}
|
|
@@ -92,7 +145,8 @@ export function alwaysOnTools(answers) {
|
|
|
92
145
|
}
|
|
93
146
|
const BASE_ANSWERS = {
|
|
94
147
|
model: DEFAULT_MODEL,
|
|
95
|
-
|
|
148
|
+
fallbacks: [],
|
|
149
|
+
routeSafety: "uniform",
|
|
96
150
|
channels: ["channel:webhook"],
|
|
97
151
|
// `memory` is intentionally omitted (no memory section) — with
|
|
98
152
|
// exactOptionalPropertyTypes an optional key must be absent, not `undefined`.
|
|
@@ -109,9 +163,53 @@ const BASE_ANSWERS = {
|
|
|
109
163
|
* verbatim: `["*"]`, a specific list, or `[]` (the chat-only case).
|
|
110
164
|
*/
|
|
111
165
|
export function defaultAnswers(overrides) {
|
|
112
|
-
const
|
|
166
|
+
const { fallbacks: canonicalFallbacks, fallbackModels: legacyFallbackModels, ...otherOverrides } = overrides ?? {};
|
|
167
|
+
const merged = { ...BASE_ANSWERS, ...otherOverrides };
|
|
168
|
+
const fallbacks = canonicalFallbacks !== undefined
|
|
169
|
+
? canonicalFallbacks.map((fallback) => ({ ...fallback }))
|
|
170
|
+
: (legacyFallbackModels ?? []).map((model) => ({
|
|
171
|
+
model,
|
|
172
|
+
...(merged.effort === undefined ? {} : { effort: merged.effort }),
|
|
173
|
+
}));
|
|
113
174
|
const allowedTools = overrides?.allowedTools ?? [ALLOW_ALL_TOOLS];
|
|
114
|
-
return {
|
|
175
|
+
return {
|
|
176
|
+
...merged,
|
|
177
|
+
fallbacks,
|
|
178
|
+
// Keep a legacy input visible only when that compatibility surface was
|
|
179
|
+
// actually used. New wizard/canonical callers carry structured routes only.
|
|
180
|
+
...(legacyFallbackModels === undefined
|
|
181
|
+
? {}
|
|
182
|
+
: { fallbackModels: [...legacyFallbackModels] }),
|
|
183
|
+
allowedTools,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
/** Canonicalize old answer objects at the single composition boundary. */
|
|
187
|
+
export function effectiveFallbacks(answers) {
|
|
188
|
+
const canonical = answers.fallbacks ?? [];
|
|
189
|
+
if (canonical.length > 0 || (answers.fallbackModels?.length ?? 0) === 0) {
|
|
190
|
+
return canonical;
|
|
191
|
+
}
|
|
192
|
+
return (answers.fallbackModels ?? []).map((model) => ({
|
|
193
|
+
model,
|
|
194
|
+
...(answers.effort === undefined ? {} : { effort: answers.effort }),
|
|
195
|
+
}));
|
|
196
|
+
}
|
|
197
|
+
/** Folder basenames become readable public identities without affecting paths. */
|
|
198
|
+
export function humanizeAgentName(dirBasename) {
|
|
199
|
+
const words = dirBasename
|
|
200
|
+
.trim()
|
|
201
|
+
.replace(/[-_]+/gu, " ")
|
|
202
|
+
.replace(/\s+/gu, " ")
|
|
203
|
+
.split(" ")
|
|
204
|
+
.filter(Boolean);
|
|
205
|
+
const name = words
|
|
206
|
+
.map((word) => {
|
|
207
|
+
const [first = "", ...rest] = Array.from(word);
|
|
208
|
+
return `${first.toLocaleUpperCase()}${rest.join("")}`;
|
|
209
|
+
})
|
|
210
|
+
.join(" ");
|
|
211
|
+
const fallback = name.length > 0 ? name : "Mono Agent";
|
|
212
|
+
return Array.from(fallback).slice(0, MAX_AGENT_NAME_LENGTH).join("").trimEnd();
|
|
115
213
|
}
|
|
116
214
|
/** Overrides for one module: the shared model plus its non-secret input values. */
|
|
117
215
|
export function moduleOverrides(module, answers) {
|
|
@@ -167,10 +265,12 @@ function applyFragment(config, fragment) {
|
|
|
167
265
|
*/
|
|
168
266
|
export function composeWizardPlan(answers, ctx) {
|
|
169
267
|
const modules = selectedModules(answers);
|
|
268
|
+
const agentName = answers.name?.trim() || humanizeAgentName(ctx.dirBasename);
|
|
269
|
+
const fallbacks = effectiveFallbacks(answers);
|
|
170
270
|
const config = {
|
|
171
|
-
...baseConfig(ctx, answers.model, answers.
|
|
271
|
+
...baseConfig(ctx, agentName, answers.model, fallbacks, answers.routeSafety, answers.effort),
|
|
172
272
|
};
|
|
173
|
-
const files = [];
|
|
273
|
+
const files = [...managedProjectSkillFiles()];
|
|
174
274
|
const secrets = [];
|
|
175
275
|
const envLines = [];
|
|
176
276
|
const validateExpectations = [{ sectionId: "runtime", mustBe: "ok" }];
|
|
@@ -188,12 +288,13 @@ export function composeWizardPlan(answers, ctx) {
|
|
|
188
288
|
files.push(file);
|
|
189
289
|
}
|
|
190
290
|
for (const input of module.inputs) {
|
|
191
|
-
if (input.secret === true
|
|
291
|
+
if (input.secret === true) {
|
|
192
292
|
secrets.push({
|
|
193
293
|
moduleId: module.id,
|
|
194
294
|
label: input.label,
|
|
195
295
|
envVar: input.envVar,
|
|
196
296
|
description: input.description,
|
|
297
|
+
required: input.required === true,
|
|
197
298
|
});
|
|
198
299
|
}
|
|
199
300
|
}
|
|
@@ -206,6 +307,7 @@ export function composeWizardPlan(answers, ctx) {
|
|
|
206
307
|
allowedTools: [...answers.allowedTools],
|
|
207
308
|
disallowedTools: [],
|
|
208
309
|
};
|
|
310
|
+
applyDefaultA2AAgentName(config, agentName);
|
|
209
311
|
// The local-ollama endpoint mirrors the old recipe: only when the ollama
|
|
210
312
|
// provider is present AND memory embeddings actually target ollama.
|
|
211
313
|
const memory = config.memory;
|
|
@@ -218,15 +320,42 @@ export function composeWizardPlan(answers, ctx) {
|
|
|
218
320
|
const configJson = monoAgentConfigWithSchema(config);
|
|
219
321
|
const envExample = envLines.length > 0 ? `${envLines.join("\n")}\n` : undefined;
|
|
220
322
|
const warnings = answers.allowedTools.length === 0 ? [ZERO_TOOLS_WARNING] : [];
|
|
221
|
-
|
|
323
|
+
const planWithoutExpectations = {
|
|
222
324
|
configJson,
|
|
223
325
|
...(envExample === undefined ? {} : { envExample }),
|
|
224
326
|
files,
|
|
225
327
|
secrets,
|
|
226
328
|
selectedModules: modules,
|
|
227
|
-
validateExpectations:
|
|
329
|
+
validateExpectations: [],
|
|
228
330
|
warnings,
|
|
229
331
|
};
|
|
332
|
+
if (referencedSetupModelRefs(planWithoutExpectations).some(modelRefNeedsCredentials)) {
|
|
333
|
+
validateExpectations.push({
|
|
334
|
+
sectionId: "credentials",
|
|
335
|
+
mustBe: "ok",
|
|
336
|
+
note: "Authenticate every configured cloud model before describing the agent as ready.",
|
|
337
|
+
});
|
|
338
|
+
}
|
|
339
|
+
return {
|
|
340
|
+
...planWithoutExpectations,
|
|
341
|
+
validateExpectations: dedupeExpectations(validateExpectations),
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
/** Use the public identity for generated A2A metadata without changing explicit user config. */
|
|
345
|
+
function applyDefaultA2AAgentName(config, agentName) {
|
|
346
|
+
const channels = config.channels;
|
|
347
|
+
for (const plugin of channels?.plugins ?? []) {
|
|
348
|
+
if (typeof plugin !== "object" || plugin === null)
|
|
349
|
+
continue;
|
|
350
|
+
const entry = plugin;
|
|
351
|
+
if (entry.package !== "@mono-agent/a2a-adapter" || typeof entry.config !== "object" || entry.config === null)
|
|
352
|
+
continue;
|
|
353
|
+
const pluginConfig = entry.config;
|
|
354
|
+
const agent = typeof pluginConfig.agent === "object" && pluginConfig.agent !== null
|
|
355
|
+
? pluginConfig.agent
|
|
356
|
+
: {};
|
|
357
|
+
pluginConfig.agent = { ...agent, name: agentName };
|
|
358
|
+
}
|
|
230
359
|
}
|
|
231
360
|
/** Dedupe validate expectations by `sectionId`, keeping the first occurrence. */
|
|
232
361
|
function dedupeExpectations(expectations) {
|