@mono-agent/agent-app 0.6.2 → 0.9.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 +259 -19
- package/dist/account-home.d.ts +6 -0
- package/dist/account-home.d.ts.map +1 -0
- package/dist/account-home.js +9 -0
- package/dist/account-home.js.map +1 -0
- 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 +3 -1
- package/dist/app-config.d.ts.map +1 -1
- package/dist/app-config.js +16 -5
- package/dist/app-config.js.map +1 -1
- package/dist/app.d.ts +27 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +761 -147
- package/dist/app.js.map +1 -1
- package/dist/background-environment.d.ts +16 -0
- package/dist/background-environment.d.ts.map +1 -0
- package/dist/background-environment.js +68 -0
- package/dist/background-environment.js.map +1 -0
- package/dist/background-runtime.d.ts +62 -0
- package/dist/background-runtime.d.ts.map +1 -0
- package/dist/background-runtime.js +1115 -0
- package/dist/background-runtime.js.map +1 -0
- package/dist/background-snapshot-key.d.ts +13 -0
- package/dist/background-snapshot-key.d.ts.map +1 -0
- package/dist/background-snapshot-key.js +194 -0
- package/dist/background-snapshot-key.js.map +1 -0
- package/dist/background-snapshot.d.ts +96 -0
- package/dist/background-snapshot.d.ts.map +1 -0
- package/dist/background-snapshot.js +450 -0
- package/dist/background-snapshot.js.map +1 -0
- package/dist/background-worker-lease.d.ts +39 -0
- package/dist/background-worker-lease.d.ts.map +1 -0
- package/dist/background-worker-lease.js +356 -0
- package/dist/background-worker-lease.js.map +1 -0
- package/dist/background.d.ts +74 -2
- package/dist/background.d.ts.map +1 -1
- package/dist/background.js +815 -73
- package/dist/background.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/channel-plugins.d.ts +2 -0
- package/dist/channel-plugins.d.ts.map +1 -1
- package/dist/channel-plugins.js +8 -0
- package/dist/channel-plugins.js.map +1 -1
- package/dist/channels.d.ts +10 -0
- package/dist/channels.d.ts.map +1 -1
- package/dist/channels.js +87 -9
- package/dist/channels.js.map +1 -1
- package/dist/cli.d.ts +86 -4
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +2421 -143
- package/dist/cli.js.map +1 -1
- package/dist/config-reference.d.ts.map +1 -1
- package/dist/config-reference.js +448 -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 +33 -0
- package/dist/configuration-proposal-tool.d.ts.map +1 -0
- package/dist/configuration-proposal-tool.js +188 -0
- package/dist/configuration-proposal-tool.js.map +1 -0
- package/dist/configured-agent.d.ts +16 -0
- package/dist/configured-agent.d.ts.map +1 -1
- package/dist/configured-agent.js +165 -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/continuation-command.d.ts +15 -0
- package/dist/continuation-command.d.ts.map +1 -0
- package/dist/continuation-command.js +170 -0
- package/dist/continuation-command.js.map +1 -0
- package/dist/continuation-config.d.ts +25 -0
- package/dist/continuation-config.d.ts.map +1 -0
- package/dist/continuation-config.js +236 -0
- package/dist/continuation-config.js.map +1 -0
- package/dist/continuation-service.d.ts +99 -0
- package/dist/continuation-service.d.ts.map +1 -0
- package/dist/continuation-service.js +1313 -0
- package/dist/continuation-service.js.map +1 -0
- package/dist/continuation-store.d.ts +104 -0
- package/dist/continuation-store.d.ts.map +1 -0
- package/dist/continuation-store.js +688 -0
- package/dist/continuation-store.js.map +1 -0
- package/dist/continuations.d.ts +167 -0
- package/dist/continuations.d.ts.map +1 -0
- package/dist/continuations.js +71 -0
- package/dist/continuations.js.map +1 -0
- package/dist/doctor.d.ts +29 -5
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +1611 -116
- 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 +584 -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 +728 -0
- package/dist/first-run-readiness.js.map +1 -0
- package/dist/index.d.ts +17 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +95 -3
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +1218 -24
- 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/launchd.d.ts +16 -6
- package/dist/launchd.d.ts.map +1 -1
- package/dist/launchd.js +30 -15
- package/dist/launchd.js.map +1 -1
- package/dist/local-configuration.d.ts +99 -0
- package/dist/local-configuration.d.ts.map +1 -0
- package/dist/local-configuration.js +1299 -0
- package/dist/local-configuration.js.map +1 -0
- package/dist/managed-runtime-packages.d.ts +9 -0
- package/dist/managed-runtime-packages.d.ts.map +1 -0
- package/dist/managed-runtime-packages.js +56 -0
- package/dist/managed-runtime-packages.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-embedding-service.d.ts +33 -0
- package/dist/memory-embedding-service.d.ts.map +1 -0
- package/dist/memory-embedding-service.js +207 -0
- package/dist/memory-embedding-service.js.map +1 -0
- package/dist/memory-recall.d.ts +43 -14
- package/dist/memory-recall.d.ts.map +1 -1
- package/dist/memory-recall.js +103 -33
- 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 +141 -25
- 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/notify-runtime.d.ts +26 -0
- package/dist/notify-runtime.d.ts.map +1 -0
- package/dist/notify-runtime.js +27 -0
- package/dist/notify-runtime.js.map +1 -0
- package/dist/notify-tool.d.ts +51 -0
- package/dist/notify-tool.d.ts.map +1 -0
- package/dist/notify-tool.js +182 -0
- package/dist/notify-tool.js.map +1 -0
- 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/proactive-notify.d.ts +2 -0
- package/dist/proactive-notify.d.ts.map +1 -1
- package/dist/proactive-notify.js +1 -0
- package/dist/proactive-notify.js.map +1 -1
- package/dist/process-incarnation.d.ts +23 -0
- package/dist/process-incarnation.d.ts.map +1 -0
- package/dist/process-incarnation.js +208 -0
- package/dist/process-incarnation.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/recipes/base.d.ts +15 -0
- package/dist/recipes/base.d.ts.map +1 -0
- package/dist/recipes/base.js +51 -0
- package/dist/recipes/base.js.map +1 -0
- package/dist/recipes/catalog.d.ts +4 -0
- package/dist/recipes/catalog.d.ts.map +1 -0
- package/dist/recipes/catalog.js +525 -0
- package/dist/recipes/catalog.js.map +1 -0
- package/dist/recipes/index.d.ts +11 -0
- package/dist/recipes/index.d.ts.map +1 -0
- package/dist/recipes/index.js +14 -0
- package/dist/recipes/index.js.map +1 -0
- package/dist/recipes/types.d.ts +70 -0
- package/dist/recipes/types.d.ts.map +1 -0
- package/dist/recipes/types.js +15 -0
- package/dist/recipes/types.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 +86 -0
- package/dist/sandbox-manager.d.ts.map +1 -0
- package/dist/sandbox-manager.js +1402 -0
- package/dist/sandbox-manager.js.map +1 -0
- package/dist/setup.d.ts +29 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +97 -0
- package/dist/setup.js.map +1 -0
- package/dist/supermemory-plugin.d.ts +56 -0
- package/dist/supermemory-plugin.d.ts.map +1 -0
- package/dist/supermemory-plugin.js +142 -0
- package/dist/supermemory-plugin.js.map +1 -0
- package/dist/tui-command.d.ts +56 -0
- package/dist/tui-command.d.ts.map +1 -1
- package/dist/tui-command.js +305 -31
- 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 +141 -29
- 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 +1290 -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 +587 -20
- package/skills/mono-agent-composer/SKILL.md +6 -6
- package/skills/mono-agent-composer/references/config-blueprint.md +11 -10
- package/skills/mono-agent-composer/references/discovery-questions.md +33 -18
- package/skills/mono-agent-composer/references/feature-coverage.md +14 -12
- package/skills/mono-agent-composer/references/package-map.md +2 -2
- package/skills/mono-agent-composer/references/playbooks.md +8 -7
- package/skills/mono-agent-composer/references/validation.md +3 -3
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** Resolve declared input defaults, then layer CLI overrides on top. */
|
|
2
|
+
export function resolveRecipeInputs(recipe, overrides = {}) {
|
|
3
|
+
const values = {};
|
|
4
|
+
for (const input of recipe.inputs) {
|
|
5
|
+
values[input.id] = overrides[input.id] ?? input.default;
|
|
6
|
+
}
|
|
7
|
+
// Preserve overrides that don't correspond to a declared input (forward-compat).
|
|
8
|
+
for (const [key, value] of Object.entries(overrides)) {
|
|
9
|
+
if (!(key in values)) {
|
|
10
|
+
values[key] = value;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
return values;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/recipes/types.ts"],"names":[],"mappings":"AA0EA,wEAAwE;AACxE,MAAM,UAAU,mBAAmB,CACjC,MAAmB,EACnB,YAA+B,EAAE;IAEjC,MAAM,MAAM,GAAuC,EAAE,CAAC;IACtD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC;IAC1D,CAAC;IACD,iFAAiF;IACjF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACrD,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { LocalProviderDefinition, LocalProviderRuntimeOptions, RuntimeModelReference } from "@mono-agent/runtime-adapter";
|
|
1
|
+
import type { LocalProviderDefinition, LocalProviderRuntimeOptions, RuntimeModelReference, SandboxPolicy } from "@mono-agent/runtime-adapter";
|
|
2
2
|
/**
|
|
3
3
|
* Per-request runtime-options extension that applies a per-turn model/effort
|
|
4
4
|
* override carried on webhook (`metadata.webhook`), cron (`metadata.cron`), or
|
|
@@ -10,6 +10,15 @@ import type { LocalProviderDefinition, LocalProviderRuntimeOptions, RuntimeModel
|
|
|
10
10
|
* harness default) rather than failing — a bad dynamic webhook `model` must not
|
|
11
11
|
* 500 the request.
|
|
12
12
|
*
|
|
13
|
+
* The extension ALSO scans every turn's message text for effort trigger
|
|
14
|
+
* phrases ("think"/"extra think"/"ultra think") and escalates the turn's
|
|
15
|
+
* effort — see `applyEffortKeywordEscalation`. This lives here rather than in
|
|
16
|
+
* a sibling extension because siblings compose later-wins in parallel: only
|
|
17
|
+
* this extension knows the metadata effort the keyword must be compared
|
|
18
|
+
* against (escalation-only), and it already owns the direct-OpenCode guard.
|
|
19
|
+
* Effort-only writes keep the shared session (the harness isolates on MODEL
|
|
20
|
+
* overrides only).
|
|
21
|
+
*
|
|
13
22
|
* Execution mode is NOT set here: the harness derives it from the effective model
|
|
14
23
|
* plus the host's configured executionMode (keeping a compatible host mode, e.g.
|
|
15
24
|
* claude in `cli`, and only falling back to the model default for an incompatible
|
|
@@ -35,9 +44,33 @@ import type { LocalProviderDefinition, LocalProviderRuntimeOptions, RuntimeModel
|
|
|
35
44
|
*/
|
|
36
45
|
export interface RequestModelOverrideLogger {
|
|
37
46
|
warn?(message: string, metadata?: Record<string, unknown>): void;
|
|
47
|
+
info?(message: string, metadata?: Record<string, unknown>): void;
|
|
38
48
|
}
|
|
39
49
|
export interface RequestModelOverrideOptions {
|
|
40
50
|
readonly logger?: RequestModelOverrideLogger;
|
|
51
|
+
/** Host primary used to prevent unsafe direct-Codex ↔ non-Codex family changes. */
|
|
52
|
+
readonly baseModel?: RuntimeModelReference;
|
|
53
|
+
/** Host fallback chain retained behind a request-level primary override. */
|
|
54
|
+
readonly fallbackModels?: readonly RuntimeModelReference[];
|
|
55
|
+
/** Host effort inherited by model-only overrides unless the override supplies one. */
|
|
56
|
+
readonly baseEffort?: string;
|
|
57
|
+
/** Host hard turn cap inherited by request-level model overrides. */
|
|
58
|
+
readonly baseMaxTurns?: number;
|
|
59
|
+
/** Effective configured/auto-provisioned MCP sources inherited by the turn. */
|
|
60
|
+
readonly mcpSources?: readonly string[];
|
|
61
|
+
/** Whether progressive index disclosure would inject runtime skill metadata. */
|
|
62
|
+
readonly indexSkillsActive?: boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Host mono-agent sandbox policy. Claude and direct OpenCode provider-owned
|
|
65
|
+
* tool loops do not consume this policy, so a request cannot dynamically
|
|
66
|
+
* switch to either runtime while a non-off policy is active.
|
|
67
|
+
*/
|
|
68
|
+
readonly sandboxPolicy?: Pick<SandboxPolicy, "mode">;
|
|
69
|
+
/** Effective host tool policy used to reject direct OpenCode overrides it cannot enforce. */
|
|
70
|
+
readonly toolPolicy?: {
|
|
71
|
+
readonly allowedTools: readonly string[];
|
|
72
|
+
readonly disallowedTools: readonly string[];
|
|
73
|
+
};
|
|
41
74
|
/**
|
|
42
75
|
* Configured local providers (`config.providers?.local`). When an override
|
|
43
76
|
* names a model one of these serves, the extension recomputes the provider
|
|
@@ -49,6 +82,7 @@ export interface RequestModelOverrideOptions {
|
|
|
49
82
|
interface RequestModelOverrideInput {
|
|
50
83
|
readonly request: {
|
|
51
84
|
readonly metadata?: Record<string, unknown>;
|
|
85
|
+
readonly userMessage?: string;
|
|
52
86
|
};
|
|
53
87
|
}
|
|
54
88
|
interface RequestModelOverrideResult {
|
|
@@ -63,5 +97,13 @@ interface RequestModelOverrideResult {
|
|
|
63
97
|
readonly cleanup: () => Promise<void>;
|
|
64
98
|
}
|
|
65
99
|
export declare function createRequestModelOverrideRuntimeExtension(options?: RequestModelOverrideOptions): (input: RequestModelOverrideInput) => Promise<RequestModelOverrideResult>;
|
|
100
|
+
/**
|
|
101
|
+
* Whether the request-level override will actually switch this turn to direct
|
|
102
|
+
* OpenCode under the supplied host constraints. Adapter MCP injection uses the
|
|
103
|
+
* same decision as the model extension: a merely parseable OpenCode string is
|
|
104
|
+
* not enough, because a sandbox/tool/MCP/effort/turn-cap rejection must retain
|
|
105
|
+
* both the Pi model and its interaction tools.
|
|
106
|
+
*/
|
|
107
|
+
export declare function requestModelOverrideTargetsDirectOpenCode(metadata: Record<string, unknown> | undefined, options?: RequestModelOverrideOptions): boolean;
|
|
66
108
|
export {};
|
|
67
109
|
//# sourceMappingURL=request-model-override.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-model-override.d.ts","sourceRoot":"","sources":["../src/request-model-override.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,uBAAuB,EACvB,2BAA2B,EAC3B,qBAAqB,
|
|
1
|
+
{"version":3,"file":"request-model-override.d.ts","sourceRoot":"","sources":["../src/request-model-override.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,uBAAuB,EACvB,2BAA2B,EAC3B,qBAAqB,EACrB,aAAa,EACd,MAAM,6BAA6B,CAAC;AAErC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,WAAW,0BAA0B;IACzC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACjE,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAClE;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,0BAA0B,CAAC;IAC7C,mFAAmF;IACnF,QAAQ,CAAC,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAC3C,4EAA4E;IAC5E,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAC3D,sFAAsF;IACtF,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,qEAAqE;IACrE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,+EAA+E;IAC/E,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,gFAAgF;IAChF,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IACrC;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACrD,6FAA6F;IAC7F,QAAQ,CAAC,UAAU,CAAC,EAAE;QACpB,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;QACzC,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;KAC7C,CAAC;IACF;;;;;OAKG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,uBAAuB,EAAE,CAAC;CAC9D;AAED,UAAU,yBAAyB;IACjC,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;KAC/B,CAAC;CACH;AAED,UAAU,0BAA0B;IAClC,QAAQ,CAAC,cAAc,EAAE;QACvB,KAAK,CAAC,EAAE,qBAAqB,CAAC;QAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;QAIhB,cAAc,CAAC,EAAE,2BAA2B,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;QACtE,WAAW,CAAC,EAAE,2BAA2B,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;QAChE,iBAAiB,CAAC,EAAE,2BAA2B,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAAC;QAC5E,iBAAiB,CAAC,EAAE,2BAA2B,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAAC;KAC7E,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAID,wBAAgB,0CAA0C,CACxD,OAAO,CAAC,EAAE,2BAA2B,GACpC,CAAC,KAAK,EAAE,yBAAyB,KAAK,OAAO,CAAC,0BAA0B,CAAC,CAoD3E;AAiDD;;;;;;GAMG;AACH,wBAAgB,yCAAyC,CACvD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC7C,OAAO,CAAC,EAAE,2BAA2B,GACpC,OAAO,CAET"}
|
|
@@ -1,31 +1,35 @@
|
|
|
1
|
-
import { EFFORT_LEVELS } from "@mono-agent/config";
|
|
1
|
+
import { detectEffortKeyword, EFFORT_LEVELS, effortRank } from "@mono-agent/config";
|
|
2
2
|
import { parseMonoRuntimeModelReference, runtimeOptionsForLocalProvider } from "@mono-agent/runtime-adapter";
|
|
3
3
|
const EFFORT_SET = new Set(EFFORT_LEVELS);
|
|
4
4
|
export function createRequestModelOverrideRuntimeExtension(options) {
|
|
5
5
|
const logger = options?.logger;
|
|
6
6
|
const localProviders = options?.localProviders;
|
|
7
|
+
const baseModel = options?.baseModel;
|
|
8
|
+
const fallbackModels = options?.fallbackModels ?? [];
|
|
7
9
|
return async (input) => {
|
|
8
|
-
const {
|
|
10
|
+
const { rawModel, rawEffort, model } = resolveAcceptedModelOverride(input.request.metadata, options, logger);
|
|
9
11
|
const runtimeOptions = {};
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
reason: error instanceof Error ? error.message : String(error),
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
if (parsed !== undefined) {
|
|
22
|
-
runtimeOptions.model = parsed;
|
|
23
|
-
applyLocalProviderBlock(runtimeOptions, parsed, rawModel, localProviders, logger);
|
|
24
|
-
}
|
|
12
|
+
const effectiveModelForEffort = model ?? baseModel;
|
|
13
|
+
// Shared by the metadata effort override AND keyword escalation below: any
|
|
14
|
+
// direct OpenCode model in the resulting chain means no run-level effort.
|
|
15
|
+
const directOpenCodeModels = [effectiveModelForEffort, ...fallbackModels]
|
|
16
|
+
.filter((entry) => entry?.sdk === "opencode");
|
|
17
|
+
if (model !== undefined && rawModel !== undefined) {
|
|
18
|
+
runtimeOptions.model = model;
|
|
19
|
+
applyLocalProviderBlock(runtimeOptions, model, rawModel, localProviders, logger);
|
|
25
20
|
}
|
|
26
21
|
if (rawEffort !== undefined) {
|
|
27
22
|
if (EFFORT_SET.has(rawEffort)) {
|
|
28
|
-
|
|
23
|
+
if (directOpenCodeModels.length > 0) {
|
|
24
|
+
logger?.warn?.("Ignoring per-request effort override for direct OpenCode anywhere in the resulting model chain.", {
|
|
25
|
+
effort: rawEffort,
|
|
26
|
+
reason: "The direct OpenCode SDK does not expose runtime effort control.",
|
|
27
|
+
directOpenCodeModels: directOpenCodeModels.map(runtimeModelReferenceLabel),
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
runtimeOptions.effort = rawEffort;
|
|
32
|
+
}
|
|
29
33
|
}
|
|
30
34
|
else {
|
|
31
35
|
logger?.warn?.("Ignoring invalid per-request effort override.", {
|
|
@@ -34,9 +38,164 @@ export function createRequestModelOverrideRuntimeExtension(options) {
|
|
|
34
38
|
});
|
|
35
39
|
}
|
|
36
40
|
}
|
|
41
|
+
applyEffortKeywordEscalation(runtimeOptions, input.request.userMessage, options?.baseEffort, directOpenCodeModels, logger);
|
|
37
42
|
return { runtimeOptions, cleanup: async () => { } };
|
|
38
43
|
};
|
|
39
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Always-on background escalation: a trigger phrase in the turn's message text
|
|
47
|
+
* ("think" → high, "extra think" → xhigh, "ultra think" → max) RAISES this
|
|
48
|
+
* turn's effort, never lowers it. The baseline is the effort the turn would
|
|
49
|
+
* otherwise run at — an accepted metadata override, else the host default — so
|
|
50
|
+
* a webhook `effort:"max"` survives a bare "think" and an equal-or-lower
|
|
51
|
+
* keyword writes nothing (no spurious `run_config.overridden`). Direct
|
|
52
|
+
* OpenCode anywhere in the effective chain skips escalation (same reason as
|
|
53
|
+
* the metadata effort guard above: the SDK has no runtime effort control), and
|
|
54
|
+
* the warn fires only when the keyword would actually have escalated. The
|
|
55
|
+
* message text itself is never mutated — trigger words reach the model.
|
|
56
|
+
*/
|
|
57
|
+
function applyEffortKeywordEscalation(runtimeOptions, userMessage, baseEffort, directOpenCodeModels, logger) {
|
|
58
|
+
if (typeof userMessage !== "string" || userMessage.length === 0) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const match = detectEffortKeyword(userMessage);
|
|
62
|
+
if (match === undefined) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const resolvedEffort = runtimeOptions.effort ?? baseEffort;
|
|
66
|
+
if (effortRank(match.effort) <= effortRank(resolvedEffort)) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
if (directOpenCodeModels.length > 0) {
|
|
70
|
+
logger?.warn?.("Skipping keyword effort escalation for direct OpenCode anywhere in the resulting model chain.", {
|
|
71
|
+
keyword: match.keyword,
|
|
72
|
+
effort: match.effort,
|
|
73
|
+
reason: "The direct OpenCode SDK does not expose runtime effort control.",
|
|
74
|
+
directOpenCodeModels: directOpenCodeModels.map(runtimeModelReferenceLabel),
|
|
75
|
+
});
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
runtimeOptions.effort = match.effort;
|
|
79
|
+
logger?.info?.("Escalating per-turn effort from message keyword.", {
|
|
80
|
+
keyword: match.keyword,
|
|
81
|
+
from: resolvedEffort ?? null,
|
|
82
|
+
to: match.effort,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Whether the request-level override will actually switch this turn to direct
|
|
87
|
+
* OpenCode under the supplied host constraints. Adapter MCP injection uses the
|
|
88
|
+
* same decision as the model extension: a merely parseable OpenCode string is
|
|
89
|
+
* not enough, because a sandbox/tool/MCP/effort/turn-cap rejection must retain
|
|
90
|
+
* both the Pi model and its interaction tools.
|
|
91
|
+
*/
|
|
92
|
+
export function requestModelOverrideTargetsDirectOpenCode(metadata, options) {
|
|
93
|
+
return resolveAcceptedModelOverride(metadata, options, undefined).model?.sdk === "opencode";
|
|
94
|
+
}
|
|
95
|
+
function resolveAcceptedModelOverride(metadata, options, logger) {
|
|
96
|
+
const { model: rawModel, effort: rawEffort } = readOverride(metadata);
|
|
97
|
+
if (rawModel === undefined) {
|
|
98
|
+
return { ...(rawEffort === undefined ? {} : { rawEffort }) };
|
|
99
|
+
}
|
|
100
|
+
let parsed;
|
|
101
|
+
try {
|
|
102
|
+
parsed = parseMonoRuntimeModelReference(rawModel);
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
logger?.warn?.("Ignoring invalid per-request model override.", {
|
|
106
|
+
model: rawModel,
|
|
107
|
+
reason: error instanceof Error ? error.message : String(error),
|
|
108
|
+
});
|
|
109
|
+
return { rawModel, ...(rawEffort === undefined ? {} : { rawEffort }) };
|
|
110
|
+
}
|
|
111
|
+
const baseModel = options?.baseModel;
|
|
112
|
+
const baseEffort = options?.baseEffort;
|
|
113
|
+
const baseMaxTurns = options?.baseMaxTurns;
|
|
114
|
+
const mcpSources = options?.mcpSources ?? [];
|
|
115
|
+
const sandboxPolicy = options?.sandboxPolicy;
|
|
116
|
+
const toolPolicy = options?.toolPolicy;
|
|
117
|
+
const sandboxBypassRuntime = monoSandboxBypassRuntime(parsed);
|
|
118
|
+
const directOpenCodeWouldReceiveEffort = parsed.sdk === "opencode"
|
|
119
|
+
&& (baseEffort !== undefined || (rawEffort !== undefined && EFFORT_SET.has(rawEffort)));
|
|
120
|
+
const directOpenCodeWouldReceiveTurnCap = parsed.sdk === "opencode"
|
|
121
|
+
&& Number.isFinite(Number(baseMaxTurns))
|
|
122
|
+
&& Number(baseMaxTurns) > 0;
|
|
123
|
+
const directOpenCodeWouldReceiveMcp = parsed.sdk === "opencode" && mcpSources.length > 0;
|
|
124
|
+
const directOpenCodeWouldReceiveIndexSkills = parsed.sdk === "opencode" && options?.indexSkillsActive === true;
|
|
125
|
+
if (baseModel !== undefined && isDirectCodex(parsed) !== isDirectCodex(baseModel)) {
|
|
126
|
+
logger?.warn?.("Ignoring per-request model override across the direct-Codex runtime boundary.", {
|
|
127
|
+
model: rawModel,
|
|
128
|
+
baseModel: baseModel.reference ?? `${baseModel.sdk}:${baseModel.model}`,
|
|
129
|
+
reason: "Direct Codex and non-Codex runtimes use different tool and sandbox contracts.",
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
else if (sandboxBypassRuntime !== undefined && sandboxPolicy?.mode !== undefined && sandboxPolicy.mode !== "off") {
|
|
133
|
+
logger?.warn?.(`Ignoring per-request ${sandboxBypassRuntime} model override while the mono-agent sandbox is active.`, {
|
|
134
|
+
model: rawModel,
|
|
135
|
+
sandboxMode: sandboxPolicy.mode,
|
|
136
|
+
reason: `${sandboxBypassRuntime}'s provider-owned tool loop does not consume the mono-agent sandbox policy.`,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
else if (parsed.sdk === "opencode" && toolPolicy !== undefined && !isExactAllowAllToolPolicy(toolPolicy)) {
|
|
140
|
+
logger?.warn?.("Ignoring per-request direct OpenCode model override under a restrictive tool policy.", {
|
|
141
|
+
model: rawModel,
|
|
142
|
+
reason: "Direct OpenCode does not consume mono-agent allowedTools/disallowedTools.",
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
else if (directOpenCodeWouldReceiveMcp) {
|
|
146
|
+
logger?.warn?.("Ignoring per-request direct OpenCode model override because MCP runtime options are unsupported.", {
|
|
147
|
+
model: rawModel,
|
|
148
|
+
mcpSources,
|
|
149
|
+
reason: "Direct OpenCode cannot safely receive configured or auto-provisioned MCP servers.",
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
else if (directOpenCodeWouldReceiveIndexSkills) {
|
|
153
|
+
logger?.warn?.("Ignoring per-request direct OpenCode model override because index skill disclosure is unsupported.", {
|
|
154
|
+
model: rawModel,
|
|
155
|
+
reason: "Direct OpenCode disables runtime/external skills; use full disclosure or a Pi runtime.",
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
else if (directOpenCodeWouldReceiveEffort) {
|
|
159
|
+
logger?.warn?.("Ignoring per-request direct OpenCode model override because runtime effort is unsupported.", {
|
|
160
|
+
model: rawModel,
|
|
161
|
+
...(baseEffort === undefined ? {} : { baseEffort }),
|
|
162
|
+
...(rawEffort === undefined || !EFFORT_SET.has(rawEffort) ? {} : { requestedEffort: rawEffort }),
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
else if (directOpenCodeWouldReceiveTurnCap) {
|
|
166
|
+
logger?.warn?.("Ignoring per-request direct OpenCode model override because runtime.maxTurns is unsupported.", {
|
|
167
|
+
model: rawModel,
|
|
168
|
+
baseMaxTurns,
|
|
169
|
+
reason: "Direct OpenCode does not expose an enforceable hard turn cap.",
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
return {
|
|
174
|
+
rawModel,
|
|
175
|
+
...(rawEffort === undefined ? {} : { rawEffort }),
|
|
176
|
+
model: parsed,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
return { rawModel, ...(rawEffort === undefined ? {} : { rawEffort }) };
|
|
180
|
+
}
|
|
181
|
+
function isDirectCodex(model) {
|
|
182
|
+
return model.sdk === "codex";
|
|
183
|
+
}
|
|
184
|
+
function runtimeModelReferenceLabel(model) {
|
|
185
|
+
return model.reference ?? `${model.sdk}:${model.provider === undefined ? "" : `${model.provider}:`}${model.model}`;
|
|
186
|
+
}
|
|
187
|
+
function monoSandboxBypassRuntime(model) {
|
|
188
|
+
if (model.sdk === "claude")
|
|
189
|
+
return "Claude";
|
|
190
|
+
if (model.sdk === "opencode")
|
|
191
|
+
return "direct OpenCode";
|
|
192
|
+
return undefined;
|
|
193
|
+
}
|
|
194
|
+
function isExactAllowAllToolPolicy(policy) {
|
|
195
|
+
return policy.allowedTools.length === 1
|
|
196
|
+
&& policy.allowedTools[0] === "*"
|
|
197
|
+
&& policy.disallowedTools.length === 0;
|
|
198
|
+
}
|
|
40
199
|
/**
|
|
41
200
|
* OWN the endpoint block for a valid model override. For a model served by a
|
|
42
201
|
* configured LOCAL provider, `runtimeOptionsForLocalProvider` yields the block and
|
|
@@ -69,7 +228,7 @@ function applyLocalProviderBlock(runtimeOptions, model, rawModel, localProviders
|
|
|
69
228
|
* Read model/effort from webhook, cron, or TUI request metadata. Webhook takes
|
|
70
229
|
* precedence, then cron, then an interactive TUI per-session override — a turn
|
|
71
230
|
* is only ever one of the three. A turn carrying none of these blocks (e.g. an
|
|
72
|
-
* ordinary chat turn) returns `{}
|
|
231
|
+
* ordinary chat turn) returns `{}`, leaving only the keyword escalation scan.
|
|
73
232
|
*/
|
|
74
233
|
function readOverride(metadata) {
|
|
75
234
|
if (!isRecord(metadata)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-model-override.js","sourceRoot":"","sources":["../src/request-model-override.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"request-model-override.js","sourceRoot":"","sources":["../src/request-model-override.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import type { ToolPolicyInput } from "@mono-agent/agent-harness";
|
|
3
|
+
import type { RuntimeOptionsExtension } from "./runtime-option-extensions.js";
|
|
4
|
+
export declare const RUN_HISTORY_MCP_SERVER_NAME = "mono-agent-run-history";
|
|
5
|
+
export declare const RUN_HISTORY_TOOL_NAME = "RunHistory";
|
|
6
|
+
export interface RunHistoryBinding {
|
|
7
|
+
readonly artifactDir: string;
|
|
8
|
+
/** Exact, already-bucketed conversation id for the active request. */
|
|
9
|
+
readonly conversationId: string;
|
|
10
|
+
/** Run id for the active request. It is never listable or inspectable. */
|
|
11
|
+
readonly runId: string;
|
|
12
|
+
}
|
|
13
|
+
export interface RunHistoryRuntimeExtensionOptions {
|
|
14
|
+
readonly artifactDir: string;
|
|
15
|
+
/** Best-effort diagnostic when the loopback MCP endpoint cannot start. */
|
|
16
|
+
readonly onUnavailable?: (error: unknown) => void;
|
|
17
|
+
}
|
|
18
|
+
export interface RunHistoryRuntimeExtension {
|
|
19
|
+
readonly runtimeOptions: {
|
|
20
|
+
readonly mcpServers: Record<string, unknown>;
|
|
21
|
+
};
|
|
22
|
+
readonly cleanup: () => Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
type RunHistoryToolPolicy = Pick<ToolPolicyInput, "allowedTools" | "disallowedTools">;
|
|
25
|
+
/** Resolve the canonical, legacy, MCP-prefixed, and server-wildcard policy spellings. */
|
|
26
|
+
export declare function isRunHistoryToolAllowed(policy: RunHistoryToolPolicy | undefined): boolean;
|
|
27
|
+
/** Build a read-only RunHistory server bound to one exact conversation bucket and active run. */
|
|
28
|
+
export declare function createRunHistoryServer(binding: RunHistoryBinding): McpServer;
|
|
29
|
+
/** Create a per-request loopback MCP endpoint bound to the harness's bucketed conversation id. */
|
|
30
|
+
export declare function createRunHistoryRuntimeExtension(options: RunHistoryRuntimeExtensionOptions): RuntimeOptionsExtension;
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=run-history.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-history.d.ts","sourceRoot":"","sources":["../src/run-history.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAWjE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAE9E,eAAO,MAAM,2BAA2B,2BAA2B,CAAC;AACpE,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAiDlD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,sEAAsE;IACtE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,0EAA0E;IAC1E,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACnD;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,cAAc,EAAE;QACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC9C,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAED,KAAK,oBAAoB,GAAG,IAAI,CAAC,eAAe,EAAE,cAAc,GAAG,iBAAiB,CAAC,CAAC;AAEtF,yFAAyF;AACzF,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,oBAAoB,GAAG,SAAS,GAAG,OAAO,CAOzF;AAED,iGAAiG;AACjG,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,GAAG,SAAS,CAc5E;AAED,kGAAkG;AAClG,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,iCAAiC,GACzC,uBAAuB,CA2EzB"}
|