@mono-agent/agent-app 0.11.2 → 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/LICENSE +674 -0
- 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 +34 -8
- 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 +92 -13
- 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 +10 -5
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +629 -58
- 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 +54 -58
- 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 +30 -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 +22 -17
- package/schema/mono-agent.config.schema.json +45 -10
- package/skills/mono-agent-composer/SKILL.md +3 -3
- package/skills/mono-agent-composer/references/config-blueprint.md +123 -29
- package/skills/mono-agent-composer/references/discovery-questions.md +10 -8
- package/skills/mono-agent-composer/references/feature-coverage.md +90 -76
- package/skills/mono-agent-composer/references/package-map.md +6 -4
- package/skills/mono-agent-composer/references/playbooks.md +48 -27
- package/skills/mono-agent-composer/references/validation.md +16 -3
- package/dist/notify-runtime.d.ts +0 -26
- package/dist/notify-runtime.d.ts.map +0 -1
- package/dist/notify-runtime.js +0 -27
- package/dist/notify-runtime.js.map +0 -1
- package/dist/notify-tool.d.ts +0 -51
- package/dist/notify-tool.d.ts.map +0 -1
- package/dist/notify-tool.js +0 -182
- package/dist/notify-tool.js.map +0 -1
- package/dist/recipes/base.d.ts +0 -15
- package/dist/recipes/base.d.ts.map +0 -1
- package/dist/recipes/base.js +0 -51
- package/dist/recipes/base.js.map +0 -1
- package/dist/recipes/catalog.d.ts +0 -4
- package/dist/recipes/catalog.d.ts.map +0 -1
- package/dist/recipes/catalog.js +0 -525
- package/dist/recipes/catalog.js.map +0 -1
- package/dist/recipes/index.d.ts +0 -11
- package/dist/recipes/index.d.ts.map +0 -1
- package/dist/recipes/index.js +0 -14
- package/dist/recipes/index.js.map +0 -1
- package/dist/recipes/types.d.ts +0 -70
- package/dist/recipes/types.d.ts.map +0 -1
- package/dist/recipes/types.js +0 -15
- package/dist/recipes/types.js.map +0 -1
- package/dist/setup.d.ts +0 -29
- package/dist/setup.d.ts.map +0 -1
- package/dist/setup.js +0 -97
- package/dist/setup.js.map +0 -1
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
import { basename, resolve } from "node:path";
|
|
2
|
+
import process from "node:process";
|
|
3
|
+
import { buildMonoAgentConfigView, findJsonSecretConfigWarnings, findRemovedConfigWarnings, readMonoAgentConfigJson, redactMonoAgentConfig, } from "@mono-agent/config";
|
|
4
|
+
import { isAppCoreConfigError, loadAppCoreConfig, } from "./app-config.js";
|
|
5
|
+
import { collectChannelConfigViews } from "./channel-config-view.js";
|
|
6
|
+
import { resolveChannelDrivers } from "./channels.js";
|
|
7
|
+
import { findUnknownAppConfigWarnings } from "./config-reference.js";
|
|
8
|
+
import { validateMonoAgentFolder } from "./doctor.js";
|
|
9
|
+
import { composeWizardPlan } from "./wizard/answers.js";
|
|
10
|
+
import { findPreset, PRESET_CATALOG, presetAnswers, presetIds, RECIPE_TO_PRESET, } from "./wizard/presets.js";
|
|
11
|
+
import * as ui from "./ui.js";
|
|
12
|
+
function resolveValidateContext(args, invocationCwd) {
|
|
13
|
+
const cwd = resolve(invocationCwd, args.consumerPath ?? ".");
|
|
14
|
+
return {
|
|
15
|
+
cwd,
|
|
16
|
+
configPath: resolve(cwd, args.configPath ?? "mono-agent.config.json"),
|
|
17
|
+
envFilePath: resolve(cwd, args.envFile ?? ".env"),
|
|
18
|
+
allowFilesystemWrites: args.consumerPath === undefined,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export async function runValidate(args) {
|
|
22
|
+
const context = resolveValidateContext(args, process.cwd());
|
|
23
|
+
const report = await validateMonoAgentFolder({
|
|
24
|
+
env: process.env,
|
|
25
|
+
cwd: context.cwd,
|
|
26
|
+
configPath: context.configPath,
|
|
27
|
+
allowFilesystemWrites: context.allowFilesystemWrites,
|
|
28
|
+
});
|
|
29
|
+
const preset = resolveValidatePreset(args);
|
|
30
|
+
if (preset === "unknown") {
|
|
31
|
+
if (args.json === true) {
|
|
32
|
+
process.stdout.write(`${JSON.stringify({ ok: false, sections: report.sections })}\n`);
|
|
33
|
+
}
|
|
34
|
+
return 1;
|
|
35
|
+
}
|
|
36
|
+
let presetResult;
|
|
37
|
+
if (preset !== undefined) {
|
|
38
|
+
const plan = composeWizardPlan(presetAnswers(preset), {
|
|
39
|
+
dirBasename: basename(context.cwd),
|
|
40
|
+
skillsRootExists: false,
|
|
41
|
+
});
|
|
42
|
+
presetResult = {
|
|
43
|
+
id: preset.id,
|
|
44
|
+
expectations: plan.validateExpectations.map((expectation) => {
|
|
45
|
+
const actual = report.sections.find((entry) => entry.id === expectation.sectionId)?.status ?? "missing";
|
|
46
|
+
return {
|
|
47
|
+
sectionId: expectation.sectionId,
|
|
48
|
+
expected: expectation.mustBe,
|
|
49
|
+
actual,
|
|
50
|
+
met: actual === expectation.mustBe,
|
|
51
|
+
};
|
|
52
|
+
}),
|
|
53
|
+
};
|
|
54
|
+
if (args.json === true) {
|
|
55
|
+
process.stdout.write(`${JSON.stringify({
|
|
56
|
+
ok: report.ok,
|
|
57
|
+
sections: report.sections,
|
|
58
|
+
preset: presetResult,
|
|
59
|
+
})}\n`);
|
|
60
|
+
return report.ok ? 0 : 1;
|
|
61
|
+
}
|
|
62
|
+
for (const section of report.sections) {
|
|
63
|
+
process.stdout.write(formatSection(section));
|
|
64
|
+
}
|
|
65
|
+
process.stdout.write(renderPlanCompleteness(plan.validateExpectations, `Preset: ${preset.id}`, report));
|
|
66
|
+
}
|
|
67
|
+
else if (args.json === true) {
|
|
68
|
+
process.stdout.write(`${JSON.stringify({ ok: report.ok, sections: report.sections })}\n`);
|
|
69
|
+
return report.ok ? 0 : 1;
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
for (const section of report.sections) {
|
|
73
|
+
process.stdout.write(formatSection(section));
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
const hasWaitingSections = report.sections.some((section) => section.status === "waiting");
|
|
77
|
+
process.stdout.write(report.ok
|
|
78
|
+
? hasWaitingSections
|
|
79
|
+
? `\n${ui.style.yellow("⚠ Config is structurally valid, but needs attention before start.")}\n${ui.style.dim("Review the waiting sections above, then re-run mono-agent validate.")}\n`
|
|
80
|
+
: `\n${ui.style.green("✓ Config is ready to start.")}\n${ui.style.dim("Run `mono-agent config` for the full field-by-field view.")}\n`
|
|
81
|
+
: `\n${ui.hint("Fix the errors above, then re-run mono-agent validate.")}`);
|
|
82
|
+
process.stdout.write(ui.style.dim("Core sections activate by presence; channels need `enabled: true` — see docs/config (How sections activate).\n"));
|
|
83
|
+
return report.ok ? 0 : 1;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Resolve the preset to check `validate` against: `--preset` wins, `--recipe` is a
|
|
87
|
+
* deprecated alias removed in v2.0.0. Returns the preset, `undefined` (no
|
|
88
|
+
* capability check), or `"unknown"` after emitting the error/hint.
|
|
89
|
+
*/
|
|
90
|
+
function resolveValidatePreset(args) {
|
|
91
|
+
if (args.preset !== undefined) {
|
|
92
|
+
const preset = findPreset(args.preset);
|
|
93
|
+
if (preset === undefined) {
|
|
94
|
+
process.stderr.write(ui.errorLine(`Unknown preset \`${args.preset}\`.`));
|
|
95
|
+
process.stderr.write(ui.hint(`Available presets: ${presetIds().join(", ")}. Run \`mono-agent presets list\`.`));
|
|
96
|
+
return "unknown";
|
|
97
|
+
}
|
|
98
|
+
return preset;
|
|
99
|
+
}
|
|
100
|
+
if (args.recipe !== undefined) {
|
|
101
|
+
const preset = RECIPE_TO_PRESET.get(args.recipe);
|
|
102
|
+
if (preset === undefined) {
|
|
103
|
+
process.stderr.write(ui.errorLine(`Recipe \`${args.recipe}\` was retired; validate against a preset instead.`));
|
|
104
|
+
process.stderr.write(ui.hint(`Available presets: ${presetIds().join(", ")}. Run \`mono-agent presets list\`.`));
|
|
105
|
+
return "unknown";
|
|
106
|
+
}
|
|
107
|
+
process.stderr.write(ui.hint(`Using replacement preset ${preset.id}. See \`mono-agent presets list\`.`));
|
|
108
|
+
return preset;
|
|
109
|
+
}
|
|
110
|
+
return undefined;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Capability-aware completeness check: for each capability a preset (or module
|
|
114
|
+
* set) promises, report whether the matching doctor section reached the expected
|
|
115
|
+
* status. `waiting` stays non-fatal (it never changes the validate exit code) but
|
|
116
|
+
* is surfaced as "incomplete" so the operator knows what is left to wire up.
|
|
117
|
+
*/
|
|
118
|
+
export function renderPlanCompleteness(expectations, label, report) {
|
|
119
|
+
let out = "\n" + ui.heading(label);
|
|
120
|
+
let incomplete = 0;
|
|
121
|
+
for (const expectation of expectations) {
|
|
122
|
+
const section = report.sections.find((entry) => entry.id === expectation.sectionId);
|
|
123
|
+
const status = section?.status ?? "missing";
|
|
124
|
+
const met = status === expectation.mustBe;
|
|
125
|
+
if (!met) {
|
|
126
|
+
incomplete += 1;
|
|
127
|
+
}
|
|
128
|
+
const badge = met ? ui.badge("ok") : ui.badge(status === "error" ? "error" : "waiting");
|
|
129
|
+
out += `${badge}${ui.style.bold(expectation.sectionId)} ${ui.style.dim(`(${status}, expected ${expectation.mustBe})`)}\n`;
|
|
130
|
+
if (!met && expectation.note !== undefined) {
|
|
131
|
+
out += ` ${ui.style.dim(expectation.note)}\n`;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
out += incomplete === 0
|
|
135
|
+
? `${ui.style.green(`✓ ${label} is fully configured.`)}\n`
|
|
136
|
+
: ui.style.yellow(`⚠ ${label} incomplete: ${incomplete} capability(ies) not yet live.\n`);
|
|
137
|
+
return out;
|
|
138
|
+
}
|
|
139
|
+
export function riskColor(risk) {
|
|
140
|
+
if (risk === "high") {
|
|
141
|
+
return ui.style.red(risk);
|
|
142
|
+
}
|
|
143
|
+
if (risk === "medium") {
|
|
144
|
+
return ui.style.yellow(risk);
|
|
145
|
+
}
|
|
146
|
+
return ui.style.green(risk);
|
|
147
|
+
}
|
|
148
|
+
/** `mono-agent presets list` — one block per preset. */
|
|
149
|
+
export function renderPresetList() {
|
|
150
|
+
let out = ui.banner("mono-agent", "presets") + "\n";
|
|
151
|
+
for (const preset of PRESET_CATALOG) {
|
|
152
|
+
out += `${ui.style.bold(ui.style.cyan(preset.id))} ${ui.style.dim(`[${riskColor(preset.riskLevel)}]`)}\n`;
|
|
153
|
+
out += ` ${preset.title}\n`;
|
|
154
|
+
out += ` ${ui.style.dim(preset.description)}\n`;
|
|
155
|
+
}
|
|
156
|
+
out += "\n" + ui.style.dim("Scaffold one with: mono-agent init --preset <id>\n");
|
|
157
|
+
out += ui.style.dim("Build interactively with: mono-agent init\n");
|
|
158
|
+
return out;
|
|
159
|
+
}
|
|
160
|
+
/** `mono-agent presets show <id>` — description, composed JSON, env example, checklist. */
|
|
161
|
+
export function renderPresetShow(preset) {
|
|
162
|
+
const plan = composeWizardPlan(presetAnswers(preset), { dirBasename: "your-agent", skillsRootExists: false });
|
|
163
|
+
let out = ui.banner("mono-agent", `preset: ${preset.id}`) + "\n";
|
|
164
|
+
out += `${ui.style.bold(preset.title)} ${ui.style.dim(`(risk: ${riskColor(preset.riskLevel)})`)}\n`;
|
|
165
|
+
out += `${preset.description}\n`;
|
|
166
|
+
if (preset.playbook !== undefined) {
|
|
167
|
+
out += ui.style.dim(`Playbook: docs/playbooks/${preset.playbook}\n`);
|
|
168
|
+
}
|
|
169
|
+
out += "\n" + ui.heading("Generated mono-agent.config.json");
|
|
170
|
+
out += JSON.stringify(plan.configJson, null, 2) + "\n";
|
|
171
|
+
const envExample = plan.envExample;
|
|
172
|
+
if (envExample !== undefined && envExample.trim().length > 0) {
|
|
173
|
+
out += "\n" + ui.heading(".env.example");
|
|
174
|
+
out += envExample.endsWith("\n") ? envExample : envExample + "\n";
|
|
175
|
+
}
|
|
176
|
+
if (plan.files.length > 0) {
|
|
177
|
+
out += "\n" + ui.heading("Scaffolded files");
|
|
178
|
+
for (const file of plan.files) {
|
|
179
|
+
out += ` ${ui.style.cyan(file.path)}\n`;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
if (plan.validateExpectations.length > 0) {
|
|
183
|
+
out += "\n" + ui.heading("Follow-up checklist");
|
|
184
|
+
for (const expectation of plan.validateExpectations) {
|
|
185
|
+
const note = expectation.note === undefined ? "" : ` — ${expectation.note}`;
|
|
186
|
+
out += ` ${ui.style.gray("•")} ${expectation.sectionId} ${ui.style.dim(`must be ${expectation.mustBe}`)}${ui.style.dim(note)}\n`;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
return out;
|
|
190
|
+
}
|
|
191
|
+
/** Dispatch `mono-agent presets list|show <id>`. */
|
|
192
|
+
export function runPresets(args) {
|
|
193
|
+
const [sub, id] = args.positionals;
|
|
194
|
+
if (sub === undefined || sub === "list") {
|
|
195
|
+
process.stdout.write(renderPresetList());
|
|
196
|
+
return 0;
|
|
197
|
+
}
|
|
198
|
+
if (sub === "show") {
|
|
199
|
+
if (id === undefined) {
|
|
200
|
+
process.stderr.write(ui.errorLine("Usage: mono-agent presets show <id>."));
|
|
201
|
+
process.stderr.write(ui.hint(`Available: ${presetIds().join(", ")}.`));
|
|
202
|
+
return 2;
|
|
203
|
+
}
|
|
204
|
+
const preset = findPreset(id);
|
|
205
|
+
if (preset === undefined) {
|
|
206
|
+
process.stderr.write(ui.errorLine(`Unknown preset \`${id}\`.`));
|
|
207
|
+
process.stderr.write(ui.hint(`Available: ${presetIds().join(", ")}. Run \`mono-agent presets list\`.`));
|
|
208
|
+
return 1;
|
|
209
|
+
}
|
|
210
|
+
process.stdout.write(renderPresetShow(preset));
|
|
211
|
+
return 0;
|
|
212
|
+
}
|
|
213
|
+
process.stderr.write(ui.errorLine(`Unknown presets subcommand \`${sub}\`. Expected list or show.`));
|
|
214
|
+
return 2;
|
|
215
|
+
}
|
|
216
|
+
const SOURCE_TAG = {
|
|
217
|
+
env: ui.style.green("[env]"),
|
|
218
|
+
json: ui.style.cyan("[json]"),
|
|
219
|
+
default: ui.style.dim("[default]"),
|
|
220
|
+
};
|
|
221
|
+
/**
|
|
222
|
+
* Render the complete, source-annotated config view: every core section and
|
|
223
|
+
* field with its resolved value and whether it came from an env var, the JSON
|
|
224
|
+
* file, or the built-in default. This is the single discovery surface that
|
|
225
|
+
* replaced the old partial config panes.
|
|
226
|
+
*/
|
|
227
|
+
export function renderConfigView(sections) {
|
|
228
|
+
let out = "";
|
|
229
|
+
for (const section of sections) {
|
|
230
|
+
const badgeStatus = section.status === "active" ? "ok" : "disabled";
|
|
231
|
+
out += `${ui.badge(badgeStatus)}${ui.style.bold(section.label)}\n`;
|
|
232
|
+
const width = section.fields.reduce((max, field) => Math.max(max, field.label.length), 0);
|
|
233
|
+
for (const field of section.fields) {
|
|
234
|
+
const tag = SOURCE_TAG[field.source];
|
|
235
|
+
const lock = field.redacted === true ? ` ${ui.style.dim("(secret)")}` : "";
|
|
236
|
+
const defaultRestatement = field.restatesDefault === true ? ` ${ui.style.dim("(same as default)")}` : "";
|
|
237
|
+
out += ` ${ui.style.gray(field.label.padEnd(width))} ${field.value}${lock}${defaultRestatement} ${tag}\n`;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
return out;
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* `mono-agent config`: print the resolved configuration field-by-field with the
|
|
244
|
+
* source (env / json / default) of every value, then the channel summary. Read
|
|
245
|
+
* only — edits go in mono-agent.config.json and take effect on the next restart.
|
|
246
|
+
*/
|
|
247
|
+
export async function runConfig(args) {
|
|
248
|
+
const cwd = process.cwd();
|
|
249
|
+
const configPath = resolve(cwd, args.configPath ?? "mono-agent.config.json");
|
|
250
|
+
const env = process.env;
|
|
251
|
+
const jsonResult = await readMonoAgentConfigJson(configPath);
|
|
252
|
+
let config;
|
|
253
|
+
try {
|
|
254
|
+
config = await loadAppCoreConfig({ env, cwd, configPath });
|
|
255
|
+
}
|
|
256
|
+
catch (error) {
|
|
257
|
+
if (isAppCoreConfigError(error)) {
|
|
258
|
+
process.stderr.write(ui.errorLine(error.message));
|
|
259
|
+
if (jsonResult.missing) {
|
|
260
|
+
process.stderr.write(ui.hint(`No mono-agent config found at ${configPath}. Run \`mono-agent init\` to scaffold one.`));
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
process.stderr.write(ui.hint("Fix the config above, then re-run `mono-agent config`."));
|
|
264
|
+
}
|
|
265
|
+
return 1;
|
|
266
|
+
}
|
|
267
|
+
throw error;
|
|
268
|
+
}
|
|
269
|
+
const sections = buildMonoAgentConfigView({
|
|
270
|
+
redacted: redactMonoAgentConfig(config),
|
|
271
|
+
json: jsonResult.json,
|
|
272
|
+
env,
|
|
273
|
+
});
|
|
274
|
+
const drivers = await resolveChannelDrivers({ env, cwd, configPath });
|
|
275
|
+
const channelViews = await collectChannelConfigViews(drivers, { env, cwd, configPath });
|
|
276
|
+
process.stdout.write(ui.banner("mono-agent", "resolved config") + "\n");
|
|
277
|
+
process.stdout.write(renderConfigView(sections));
|
|
278
|
+
if (channelViews.length > 0) {
|
|
279
|
+
process.stdout.write("\n" + ui.heading("Channels"));
|
|
280
|
+
process.stdout.write(renderConfigView(channelViews));
|
|
281
|
+
}
|
|
282
|
+
for (const warning of [
|
|
283
|
+
...findUnknownAppConfigWarnings(jsonResult.json),
|
|
284
|
+
...findJsonSecretConfigWarnings([...sections, ...channelViews]),
|
|
285
|
+
...findRemovedConfigWarnings({ json: jsonResult.json, env }),
|
|
286
|
+
]) {
|
|
287
|
+
process.stdout.write(`${ui.style.yellow(warning)}\n`);
|
|
288
|
+
}
|
|
289
|
+
const report = await validateMonoAgentFolder({ env, cwd, configPath, liveness: false, drivers });
|
|
290
|
+
const channels = report.sections.filter((section) => section.id.startsWith("channel:"));
|
|
291
|
+
if (channels.length > 0) {
|
|
292
|
+
process.stdout.write("\n" + ui.heading("Channel status"));
|
|
293
|
+
for (const section of channels) {
|
|
294
|
+
process.stdout.write(formatSection(section));
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
process.stdout.write("\n" + ui.style.dim("Source precedence: [env] > [json] > [default]. Edit mono-agent.config.json and run `mono-agent restart` to apply.") + "\n");
|
|
298
|
+
return 0;
|
|
299
|
+
}
|
|
300
|
+
/** Render one validation section: a status badge, a bold label, and its details. */
|
|
301
|
+
export function formatSection(section) {
|
|
302
|
+
let out = `${ui.badge(section.status)}${ui.style.bold(section.label)}\n`;
|
|
303
|
+
for (const detail of section.details) {
|
|
304
|
+
out += ` ${colorDetail(section.status, detail)}\n`;
|
|
305
|
+
}
|
|
306
|
+
return out;
|
|
307
|
+
}
|
|
308
|
+
function colorDetail(status, detail) {
|
|
309
|
+
if (status === "error") {
|
|
310
|
+
return ui.style.red(detail);
|
|
311
|
+
}
|
|
312
|
+
if (detail.startsWith("[WARN]") || detail.startsWith("WARNING:")) {
|
|
313
|
+
return ui.style.yellow(detail);
|
|
314
|
+
}
|
|
315
|
+
return ui.style.dim(detail);
|
|
316
|
+
}
|
|
317
|
+
//# sourceMappingURL=cli-validate-config-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-validate-config-command.js","sourceRoot":"","sources":["../src/cli-validate-config-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,yBAAyB,EACzB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAOtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EACL,UAAU,EACV,cAAc,EACd,aAAa,EACb,SAAS,EACT,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAS9B,SAAS,sBAAsB,CAAC,IAAmB,EAAE,aAAqB;IACxE,MAAM,GAAG,GAAG,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC,CAAC;IAC7D,OAAO;QACL,GAAG;QACH,UAAU,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,IAAI,wBAAwB,CAAC;QACrE,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC;QACjD,qBAAqB,EAAE,IAAI,CAAC,YAAY,KAAK,SAAS;KACvD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAmB;IACnD,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC;QAC3C,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;KACrD,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC;QACxF,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,YAUS,CAAC;IACd,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,iBAAiB,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;YACpD,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC;YAClC,gBAAgB,EAAE,KAAK;SACxB,CAAC,CAAC;QACH,YAAY,GAAG;YACb,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,YAAY,EAAE,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE;gBAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC;gBACxG,OAAO;oBACL,SAAS,EAAE,WAAW,CAAC,SAAS;oBAChC,QAAQ,EAAE,WAAW,CAAC,MAAM;oBAC5B,MAAM;oBACN,GAAG,EAAE,MAAM,KAAK,WAAW,CAAC,MAAM;iBACnC,CAAC;YACJ,CAAC,CAAC;SACH,CAAC;QACF,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;gBACrC,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,MAAM,EAAE,YAAY;aACrB,CAAC,IAAI,CAAC,CAAC;YACR,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,IAAI,CAAC,oBAAoB,EAAE,WAAW,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1G,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC;QAC1F,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,MAAM,kBAAkB,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IAC3F,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,MAAM,CAAC,EAAE;QACP,CAAC,CAAC,kBAAkB;YAClB,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,mEAAmE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,qEAAqE,CAAC,IAAI;YACvL,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,6BAA6B,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,2DAA2D,CAAC,IAAI;QACxI,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,wDAAwD,CAAC,EAAE,CAC7E,CAAC;IACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,gHAAgH,CAAC,CAC/H,CAAC;IACF,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,IAAmB;IAChD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,oBAAoB,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;YACzE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,sBAAsB,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;YAChH,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,YAAY,IAAI,CAAC,MAAM,oDAAoD,CAAC,CAAC,CAAC;YAChH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,sBAAsB,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;YAChH,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,4BAA4B,MAAM,CAAC,EAAE,oCAAoC,CAAC,CAAC,CAAC;QACzG,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,YAAkD,EAClD,KAAa,EACb,MAAwB;IAExB,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,WAAW,CAAC,SAAS,CAAC,CAAC;QACpF,MAAM,MAAM,GAAiC,OAAO,EAAE,MAAM,IAAI,SAAS,CAAC;QAC1E,MAAM,GAAG,GAAG,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC;QAC1C,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,UAAU,IAAI,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACxF,GAAG,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,cAAc,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC;QAC1H,IAAI,CAAC,GAAG,IAAI,WAAW,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC3C,GAAG,IAAI,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;QACnD,CAAC;IACH,CAAC;IACD,GAAG,IAAI,UAAU,KAAK,CAAC;QACrB,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,uBAAuB,CAAC,IAAI;QAC1D,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,gBAAgB,UAAU,kCAAkC,CAAC,CAAC;IAC5F,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAA+B;IACvD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,OAAO,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,gBAAgB;IAC9B,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC;IACpD,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;QACpC,GAAG,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;QAC1G,GAAG,IAAI,OAAO,MAAM,CAAC,KAAK,IAAI,CAAC;QAC/B,GAAG,IAAI,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;IACrD,CAAC;IACD,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;IACjF,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;IACnE,OAAO,GAAG,CAAC;AACb,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,gBAAgB,CAAC,MAAoB;IACnD,MAAM,IAAI,GAAG,iBAAiB,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9G,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC;IACjE,GAAG,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;IACpG,GAAG,IAAI,GAAG,MAAM,CAAC,WAAW,IAAI,CAAC;IACjC,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAClC,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;IACvE,CAAC;IACD,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC;IAC7D,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IAEvD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACnC,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7D,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACzC,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC;IACpE,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAC7C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,GAAG,IAAI,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QAChD,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACpD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;YAC5E,GAAG,IAAI,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,SAAS,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;QACpI,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,UAAU,CAAC,IAAmB;IAC5C,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;IACnC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACzC,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACnB,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,sCAAsC,CAAC,CAAC,CAAC;YAC3E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACvE,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC,CAAC;YAChE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;YACxG,OAAO,CAAC,CAAC;QACX,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,gCAAgC,GAAG,4BAA4B,CAAC,CAAC,CAAC;IACpG,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,GAAkE;IAChF,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;IAC5B,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC7B,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;CACnC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAsC;IACrE,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;QACpE,GAAG,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;QACnE,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1F,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,MAAM,kBAAkB,GAAG,KAAK,CAAC,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzG,GAAG,IAAI,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,GAAG,IAAI,GAAG,kBAAkB,KAAK,GAAG,IAAI,CAAC;QACjH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAmB;IACjD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,IAAI,wBAAwB,CAAC,CAAC;IAC7E,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAExB,MAAM,UAAU,GAAG,MAAM,uBAAuB,CAAC,UAAU,CAAC,CAAC;IAC7D,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,iBAAiB,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;IAC7D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAClD,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;gBACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,iCAAiC,UAAU,4CAA4C,CAAC,CAAC,CAAC;YACzH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC,CAAC;YAC1F,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,wBAAwB,CAAC;QACxC,QAAQ,EAAE,qBAAqB,CAAC,MAAM,CAAC;QACvC,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,GAAG;KACJ,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;IACtE,MAAM,YAAY,GAAG,MAAM,yBAAyB,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;IAExF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,iBAAiB,CAAC,GAAG,IAAI,CAAC,CAAC;IACxE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjD,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,KAAK,MAAM,OAAO,IAAI;QACpB,GAAG,4BAA4B,CAAC,UAAU,CAAC,IAAI,CAAC;QAChD,GAAG,4BAA4B,CAAC,CAAC,GAAG,QAAQ,EAAE,GAAG,YAAY,CAAC,CAAC;QAC/D,GAAG,yBAAyB,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;KAC7D,EAAE,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACjG,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IACxF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC1D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,mHAAmH,CAAC,GAAG,IAAI,CAChJ,CAAC;IACF,OAAO,CAAC,CAAC;AACX,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,aAAa,CAAC,OAA0B;IACtD,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;IACzE,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACrC,GAAG,IAAI,OAAO,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;IACxD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,WAAW,CAAC,MAAwB,EAAE,MAAc;IAC3D,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACjE,OAAO,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,252 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import type { ConfigViewSection } from "@mono-agent/config";
|
|
3
|
-
import type { EffortLevel, RouteSafetyMode } from "@mono-agent/config";
|
|
4
|
-
import { listRecordedRuns } from "@mono-agent/observability";
|
|
5
|
-
import type { MonoAgentApp } from "./app.js";
|
|
6
|
-
import type { ChannelStatus } from "./channels.js";
|
|
7
|
-
import type { ValidationReport } from "./doctor.js";
|
|
8
|
-
import type { InitMonoAgentFolderResult } from "./init.js";
|
|
9
|
-
import type { InstallSkillTarget } from "./install-skill.js";
|
|
10
|
-
import type { SecretChecklistItem } from "./wizard/answers.js";
|
|
11
|
-
import type { WizardPreset } from "./wizard/presets.js";
|
|
12
|
-
import type { CodexLoginMode, ProviderCredentialState, ProviderSetupPlan, ProviderSetupResult } from "./provider-setup.js";
|
|
13
|
-
import { checkSandboxRuntime, sandboxRuntimeStatus, setupManagedSrt } from "./sandbox-manager.js";
|
|
14
|
-
declare const KNOWN_COMMANDS: readonly ["init", "setup", "validate", "doctor", "auth", "sandbox", "config", "recipes", "presets", "start", "restart", "stop", "status", "logs", "tui", "web", "install-skill", "backfill", "audit-runs", "metrics", "memory", "continuations"];
|
|
15
|
-
type CliCommand = Exclude<(typeof KNOWN_COMMANDS)[number], "doctor" | "setup" | "recipes"> | "help" | "version";
|
|
16
|
-
interface ParsedCliArgs {
|
|
17
|
-
readonly command: CliCommand;
|
|
18
|
-
readonly configPath?: string;
|
|
19
|
-
readonly name?: string;
|
|
20
|
-
readonly model?: string;
|
|
21
|
-
readonly fallbackModels?: readonly string[];
|
|
22
|
-
readonly fallbacks?: readonly CliFallbackArg[];
|
|
23
|
-
readonly routeSafety?: RouteSafetyMode;
|
|
24
|
-
readonly effort?: string;
|
|
25
|
-
readonly memory?: "lite" | "journal" | "bujo";
|
|
26
|
-
/** init/validate: build/check against this preset id. */
|
|
27
|
-
readonly preset?: string;
|
|
28
|
-
/** init/validate: deprecated alias — maps to the preset that replaced the recipe. */
|
|
29
|
-
readonly recipe?: string;
|
|
30
|
-
/** init: additional channels to enable on top of the preset/default config. */
|
|
31
|
-
readonly withChannels?: readonly string[];
|
|
32
|
-
/** init: skip the interactive wizard and write the default/preset scaffold. */
|
|
33
|
-
readonly yes?: boolean;
|
|
34
|
-
/** init: opt in to running provider auth/preflight commands before writing files. */
|
|
35
|
-
readonly auth?: boolean;
|
|
36
|
-
/** auth: explicit destination for the Pi auth store. */
|
|
37
|
-
readonly piAuthPath?: string;
|
|
38
|
-
/** auth: explicitly read one API key from redirected standard input. */
|
|
39
|
-
readonly apiKeyStdin?: boolean;
|
|
40
|
-
/** init/auth: direct Codex browser callback or headless device-code flow. */
|
|
41
|
-
readonly codexAuthMode?: CodexLoginMode;
|
|
42
|
-
/** Non-flag arguments (e.g. `presets show <id>`). */
|
|
43
|
-
readonly positionals: readonly string[];
|
|
44
|
-
readonly envFile?: string;
|
|
45
|
-
/** Internal owner-private launchd transport; never a public start option. */
|
|
46
|
-
readonly expectedBackgroundSnapshot?: string;
|
|
47
|
-
readonly target?: InstallSkillTarget;
|
|
48
|
-
readonly force: boolean;
|
|
49
|
-
/** start: run the blocking foreground worker instead of backgrounding. */
|
|
50
|
-
readonly foreground: boolean;
|
|
51
|
-
/** logs: keep streaming new output (tail -F). */
|
|
52
|
-
readonly follow: boolean;
|
|
53
|
-
/** logs: number of trailing lines to print. */
|
|
54
|
-
readonly lines?: number;
|
|
55
|
-
/** backfill: export exactly this run id. */
|
|
56
|
-
readonly run?: string;
|
|
57
|
-
/** backfill: export every recorded run. */
|
|
58
|
-
readonly all: boolean;
|
|
59
|
-
/** backfill: only runs whose startedAt is >= this ISO instant. */
|
|
60
|
-
readonly since?: string;
|
|
61
|
-
/** backfill: only runs whose startedAt is <= this ISO instant. */
|
|
62
|
-
readonly until?: string;
|
|
63
|
-
/** backfill: map + serialize but do not POST. */
|
|
64
|
-
readonly dryRun: boolean;
|
|
65
|
-
/** audit-runs/metrics/backfill/web: include memory-run artifacts. */
|
|
66
|
-
readonly includeMemory: boolean;
|
|
67
|
-
/** audit-runs: read this artifact directory directly. */
|
|
68
|
-
readonly artifactDir?: string;
|
|
69
|
-
/** metrics: group totals by this summary dimension. */
|
|
70
|
-
readonly groupBy?: "model" | "channel" | "failureKind";
|
|
71
|
-
/** validate/audit-runs: resolve config, env, artifacts, and checks relative to this consumer folder. */
|
|
72
|
-
readonly consumerPath?: string;
|
|
73
|
-
/** tui: connect to this running agent (label or sourceId) directly. */
|
|
74
|
-
readonly agent?: string;
|
|
75
|
-
/** tui: conversation id to chat under. */
|
|
76
|
-
readonly conversation?: string;
|
|
77
|
-
/** tui: build the current-folder responder in-process. */
|
|
78
|
-
readonly local?: boolean;
|
|
79
|
-
/** tui: start with the conversational configuration invitation. */
|
|
80
|
-
readonly configure?: boolean;
|
|
81
|
-
/** install-skill: operate on the current agent's managed project skills. */
|
|
82
|
-
readonly project?: boolean;
|
|
83
|
-
/** install-skill --project: report drift without writing. */
|
|
84
|
-
readonly check?: boolean;
|
|
85
|
-
/** install-skill --project: safely update unchanged managed copies. */
|
|
86
|
-
readonly update?: boolean;
|
|
87
|
-
/** audit-runs: override the stale-running cutoff interval. */
|
|
88
|
-
readonly staleAfterMs?: number;
|
|
89
|
-
/** audit-runs: print the full machine-readable report. */
|
|
90
|
-
readonly json?: boolean;
|
|
91
|
-
/** memory audit: fail closed on degraded or unknown health. */
|
|
92
|
-
readonly strict?: boolean;
|
|
93
|
-
/** memory: max rows for search/top/entity preview. */
|
|
94
|
-
readonly limit?: number;
|
|
95
|
-
/** continuations list: opaque keyset cursor from the previous page. */
|
|
96
|
-
readonly cursor?: string;
|
|
97
|
-
/** memory forget prepare: newline-delimited explicit memory ids. */
|
|
98
|
-
readonly idsFile?: string;
|
|
99
|
-
/** memory forget prepare: lowercase operator reason slug. */
|
|
100
|
-
readonly reason?: string;
|
|
101
|
-
/** memory forget prepare/apply: owner-private plan artifact. */
|
|
102
|
-
readonly planPath?: string;
|
|
103
|
-
/** memory forget restore: owner-private backup directory. */
|
|
104
|
-
readonly backupPath?: string;
|
|
105
|
-
/** web: bind host (default 127.0.0.1). */
|
|
106
|
-
readonly host?: string;
|
|
107
|
-
/** web: bind port (default 4599). */
|
|
108
|
-
readonly port?: number;
|
|
109
|
-
/** web: `--no-open` sets this false to suppress the browser launch. */
|
|
110
|
-
readonly open?: boolean;
|
|
111
|
-
/** web: `--allow-non-loopback` permits a non-loopback bind. */
|
|
112
|
-
readonly allowNonLoopback?: boolean;
|
|
113
|
-
/** web: reveal a configured auth token only to an interactive terminal. */
|
|
114
|
-
readonly showAuthUrl?: boolean;
|
|
115
|
-
/** web: `--max-runs` caps the per-instance in-memory working set (default 200). */
|
|
116
|
-
readonly maxRunsPerInstance?: number;
|
|
117
|
-
}
|
|
118
|
-
interface CliFallbackArg {
|
|
119
|
-
readonly model: string;
|
|
120
|
-
readonly effort?: EffortLevel;
|
|
121
|
-
}
|
|
122
|
-
export declare function parseCliArgs(argv: readonly string[]): ParsedCliArgs;
|
|
123
2
|
/**
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
*
|
|
3
|
+
* Stable public and executable CLI surface.
|
|
4
|
+
*
|
|
5
|
+
* Command routing and implementations live in `cli-commands.ts`; keeping this
|
|
6
|
+
* facade deliberately tiny lets callers continue importing `./cli.js` while
|
|
7
|
+
* command families are extracted behind that boundary in reviewable steps.
|
|
127
8
|
*/
|
|
128
|
-
export
|
|
129
|
-
/** Build the colorized help screen (plain text when color is disabled). */
|
|
130
|
-
export declare function renderHelp(): string;
|
|
131
|
-
/**
|
|
132
|
-
* The published CLI version, read from this package's own package.json at
|
|
133
|
-
* runtime. `../package.json` resolves the same from both `src/cli.ts` (tests) and
|
|
134
|
-
* the built `dist/cli.js` (one level below the package root in both layouts), and
|
|
135
|
-
* npm always ships package.json in the tarball. Best-effort: a read failure yields
|
|
136
|
-
* "unknown" rather than crashing `--version`.
|
|
137
|
-
*/
|
|
138
|
-
export declare function monoAgentVersion(): string;
|
|
139
|
-
export declare function runCli(argv: readonly string[]): Promise<number>;
|
|
140
|
-
export interface SandboxCommandDependencies {
|
|
141
|
-
readonly status: typeof sandboxRuntimeStatus;
|
|
142
|
-
readonly setup: typeof setupManagedSrt;
|
|
143
|
-
readonly check: typeof checkSandboxRuntime;
|
|
144
|
-
}
|
|
145
|
-
/** App-owned sandbox lifecycle surface; safe to inject in focused CLI tests. */
|
|
146
|
-
export declare function runSandboxCommand(args: Pick<ParsedCliArgs, "positionals">, dependencies?: SandboxCommandDependencies): Promise<number>;
|
|
147
|
-
export declare function shouldRunInitWizard(args: ParsedCliArgs, stdinIsTty: boolean, stdoutIsTty: boolean): boolean;
|
|
148
|
-
export type InitProviderSetupStatus = "ok" | "failed" | "skipped" | "interrupted" | "fatal";
|
|
149
|
-
export interface RunProviderSetupBeforeInitOptions {
|
|
150
|
-
readonly modelRefs: readonly string[];
|
|
151
|
-
readonly cwd: string;
|
|
152
|
-
readonly auth: boolean;
|
|
153
|
-
readonly dryRun: boolean;
|
|
154
|
-
readonly piAuthPath?: string;
|
|
155
|
-
readonly apiKeys?: Readonly<Record<string, string | undefined>>;
|
|
156
|
-
readonly codexAuthMode?: CodexLoginMode;
|
|
157
|
-
readonly forceAuthentication?: boolean;
|
|
158
|
-
readonly credentialStates?: Readonly<Record<string, ProviderCredentialState | undefined>>;
|
|
159
|
-
/** Values parsed from the destination `.env`; ambient shell credentials are intentionally excluded. */
|
|
160
|
-
readonly persistedEnv?: Readonly<Record<string, string | undefined>>;
|
|
161
|
-
readonly piApiKeyPersistenceByProvider?: Readonly<Record<string, "secure-store" | "environment" | undefined>>;
|
|
162
|
-
readonly abortSignal?: AbortSignal;
|
|
163
|
-
readonly execute?: (plan: ProviderSetupPlan) => Promise<readonly ProviderSetupResult[]>;
|
|
164
|
-
}
|
|
165
|
-
export declare function runProviderSetupBeforeInit(options: RunProviderSetupBeforeInitOptions): Promise<InitProviderSetupStatus>;
|
|
166
|
-
/**
|
|
167
|
-
* Read one explicitly redirected API key without consulting ambient provider
|
|
168
|
-
* environment variables. A single trailing line ending from `echo` is accepted;
|
|
169
|
-
* embedded newlines, NUL bytes, empty input, and unbounded input fail closed.
|
|
170
|
-
*/
|
|
171
|
-
export declare function readApiKeyFromStdin(input: NodeJS.ReadableStream): Promise<string>;
|
|
172
|
-
export declare function resolvePiAuthPathForLogin(options: {
|
|
173
|
-
readonly piAuthPath?: string;
|
|
174
|
-
readonly envPath?: string;
|
|
175
|
-
readonly configPath: string;
|
|
176
|
-
readonly cwd?: string;
|
|
177
|
-
}): Promise<string>;
|
|
178
|
-
export interface InitChangeDisplayRow {
|
|
179
|
-
readonly label: "created" | "updated" | "kept" | "would create" | "would update";
|
|
180
|
-
readonly path: string;
|
|
181
|
-
readonly unchanged: boolean;
|
|
182
|
-
}
|
|
183
|
-
/** Safe reporting rows: paths and outcomes only, never secret contents. */
|
|
184
|
-
export declare function initChangeDisplayRows(result: InitMonoAgentFolderResult): readonly InitChangeDisplayRow[];
|
|
185
|
-
/** Human-readable, value-free proof of where the wizard Role did (or did not) land. */
|
|
186
|
-
export declare function identityRoleDisplayLine(identityRole: InitMonoAgentFolderResult["identityRole"]): string;
|
|
187
|
-
export interface SecretChecklistDisplayRow {
|
|
188
|
-
readonly envVar: string;
|
|
189
|
-
readonly label: string;
|
|
190
|
-
readonly description: string;
|
|
191
|
-
readonly status: "configured" | "missing" | "optional";
|
|
192
|
-
}
|
|
193
|
-
export declare function secretChecklistDisplayRows(secrets: readonly SecretChecklistItem[], configured: ReadonlySet<string>): readonly SecretChecklistDisplayRow[];
|
|
194
|
-
/** `mono-agent presets list` — one block per preset. */
|
|
195
|
-
export declare function renderPresetList(): string;
|
|
196
|
-
/** `mono-agent presets show <id>` — description, composed JSON, env example, checklist. */
|
|
197
|
-
export declare function renderPresetShow(preset: WizardPreset): string;
|
|
198
|
-
/**
|
|
199
|
-
* Render the complete, source-annotated config view: every core section and
|
|
200
|
-
* field with its resolved value and whether it came from an env var, the JSON
|
|
201
|
-
* file, or the built-in default. This is the single discovery surface that
|
|
202
|
-
* replaced the old partial config panes.
|
|
203
|
-
*/
|
|
204
|
-
export declare function renderConfigView(sections: readonly ConfigViewSection[]): string;
|
|
205
|
-
/**
|
|
206
|
-
* Outcome of the start/restart preflight. `code` is the process exit status to
|
|
207
|
-
* return when refusing: 2 for a missing config file (a usage problem, matching
|
|
208
|
-
* the arg-parse convention) and 1 for a config that loads but has errors.
|
|
209
|
-
*/
|
|
210
|
-
export type PreflightResult = {
|
|
211
|
-
readonly ok: true;
|
|
212
|
-
} | {
|
|
213
|
-
readonly ok: false;
|
|
214
|
-
readonly code: 2;
|
|
215
|
-
readonly kind: "missing-config";
|
|
216
|
-
readonly configPath: string;
|
|
217
|
-
} | {
|
|
218
|
-
readonly ok: false;
|
|
219
|
-
readonly code: 1;
|
|
220
|
-
readonly kind: "validation";
|
|
221
|
-
readonly report: ValidationReport;
|
|
222
|
-
};
|
|
223
|
-
/**
|
|
224
|
-
* Gate for `start`/`restart`: refuse unless the directory has a present, valid
|
|
225
|
-
* config. First the config FILE must exist (env vars alone are not enough — a
|
|
226
|
-
* folder without a config is not a configured agent). Then run the structural
|
|
227
|
-
* validation with `liveness:false` (network probes only yield `waiting`, never
|
|
228
|
-
* `error`, so skipping them keeps the verdict but avoids ~6s of timeouts) and
|
|
229
|
-
* refuse on any `error` section. `waiting` (e.g. Ollama/Phoenix not up yet) is
|
|
230
|
-
* runtime-soft and never blocks.
|
|
231
|
-
*/
|
|
232
|
-
export declare function ensureStartable(args: ParsedCliArgs, env?: Record<string, string | undefined>, options?: {
|
|
233
|
-
readonly cwd?: string;
|
|
234
|
-
readonly configPath?: string;
|
|
235
|
-
readonly preferAppPluginInstall?: boolean;
|
|
236
|
-
}): Promise<PreflightResult>;
|
|
237
|
-
export interface PrintAppStatusOptions {
|
|
238
|
-
readonly listRecordedRuns?: typeof listRecordedRuns;
|
|
239
|
-
readonly nowMs?: number;
|
|
240
|
-
}
|
|
241
|
-
export declare function printAppStatus(app: MonoAgentApp, options?: PrintAppStatusOptions): Promise<void>;
|
|
242
|
-
export declare function describeChannelStatus(status: ChannelStatus): string;
|
|
243
|
-
/**
|
|
244
|
-
* Block the foreground process until SIGINT/SIGTERM, then stop the app and
|
|
245
|
-
* resolve the exit code. A referenced no-op timer owns the event loop so the
|
|
246
|
-
* process stays alive even with no channel handle (signal listeners alone do
|
|
247
|
-
* NOT keep Node running, and the trace heartbeat is unref'd). Cleared on stop so
|
|
248
|
-
* the loop drains cleanly without a forceful `process.exit`. Exported for tests.
|
|
249
|
-
*/
|
|
250
|
-
export declare function waitForShutdownSignal(app: Pick<MonoAgentApp, "stop">): Promise<number>;
|
|
251
|
-
export {};
|
|
9
|
+
export * from "./cli-commands.js";
|
|
252
10
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG;AACH,cAAc,mBAAmB,CAAC"}
|