@songsid/agend 2.1.5 → 2.1.6-beta.10
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/dist/agent-endpoint.d.ts +18 -0
- package/dist/agent-endpoint.js +53 -2
- package/dist/agent-endpoint.js.map +1 -1
- package/dist/apply-job.d.ts +114 -0
- package/dist/apply-job.js +214 -0
- package/dist/apply-job.js.map +1 -0
- package/dist/backend/claude-code.d.ts +25 -0
- package/dist/backend/claude-code.js +127 -0
- package/dist/backend/claude-code.js.map +1 -1
- package/dist/backend/codex.d.ts +57 -0
- package/dist/backend/codex.js +183 -0
- package/dist/backend/codex.js.map +1 -1
- package/dist/backend/credential-profile.d.ts +159 -0
- package/dist/backend/credential-profile.js +340 -0
- package/dist/backend/credential-profile.js.map +1 -0
- package/dist/backend/factory.js +4 -1
- package/dist/backend/factory.js.map +1 -1
- package/dist/backend/kiro-auth-store.d.ts +25 -0
- package/dist/backend/kiro-auth-store.js +61 -0
- package/dist/backend/kiro-auth-store.js.map +1 -0
- package/dist/backend/kiro.d.ts +8 -0
- package/dist/backend/kiro.js +31 -2
- package/dist/backend/kiro.js.map +1 -1
- package/dist/backend/muse.d.ts +90 -0
- package/dist/backend/muse.js +437 -0
- package/dist/backend/muse.js.map +1 -0
- package/dist/backend/types.d.ts +54 -0
- package/dist/backend/types.js.map +1 -1
- package/dist/channel/access-manager.d.ts +20 -0
- package/dist/channel/access-manager.js +25 -0
- package/dist/channel/access-manager.js.map +1 -1
- package/dist/channel/adapters/discord.d.ts +17 -0
- package/dist/channel/adapters/discord.js +72 -11
- package/dist/channel/adapters/discord.js.map +1 -1
- package/dist/channel/adapters/telegram.d.ts +6 -0
- package/dist/channel/adapters/telegram.js +36 -0
- package/dist/channel/adapters/telegram.js.map +1 -1
- package/dist/channel/markdown-chunk.d.ts +8 -3
- package/dist/channel/markdown-chunk.js +12 -3
- package/dist/channel/markdown-chunk.js.map +1 -1
- package/dist/channel/mcp-server.js +9 -12
- package/dist/channel/mcp-server.js.map +1 -1
- package/dist/channel/mcp-tools.d.ts +6 -2
- package/dist/channel/mcp-tools.js +6 -36
- package/dist/channel/mcp-tools.js.map +1 -1
- package/dist/channel/tool-router.js +32 -3
- package/dist/channel/tool-router.js.map +1 -1
- package/dist/channel/types.d.ts +18 -0
- package/dist/cli.js +113 -0
- package/dist/cli.js.map +1 -1
- package/dist/config-validator.js +45 -5
- package/dist/config-validator.js.map +1 -1
- package/dist/connection-secrets.d.ts +96 -0
- package/dist/connection-secrets.js +25 -0
- package/dist/connection-secrets.js.map +1 -0
- package/dist/daemon.d.ts +76 -0
- package/dist/daemon.js +489 -103
- package/dist/daemon.js.map +1 -1
- package/dist/event-log.d.ts +9 -0
- package/dist/event-log.js +21 -0
- package/dist/event-log.js.map +1 -1
- package/dist/fleet-level-config.d.ts +42 -0
- package/dist/fleet-level-config.js +78 -0
- package/dist/fleet-level-config.js.map +1 -0
- package/dist/fleet-lock.d.ts +21 -0
- package/dist/fleet-lock.js +42 -8
- package/dist/fleet-lock.js.map +1 -1
- package/dist/fleet-manager.d.ts +425 -2
- package/dist/fleet-manager.js +2055 -182
- package/dist/fleet-manager.js.map +1 -1
- package/dist/general-knowledge/skills/credential-profiles/SKILL.md +145 -0
- package/dist/general-knowledge/skills/worker-collaboration/SKILL.md +11 -1
- package/dist/instance-config-impact.d.ts +55 -0
- package/dist/instance-config-impact.js +152 -0
- package/dist/instance-config-impact.js.map +1 -0
- package/dist/instance-lifecycle.js +8 -4
- package/dist/instance-lifecycle.js.map +1 -1
- package/dist/locale.js +24 -0
- package/dist/locale.js.map +1 -1
- package/dist/logger.js +42 -25
- package/dist/logger.js.map +1 -1
- package/dist/muse-usage-relay.d.ts +72 -0
- package/dist/muse-usage-relay.js +419 -0
- package/dist/muse-usage-relay.js.map +1 -0
- package/dist/outbound-handlers.d.ts +5 -1
- package/dist/outbound-handlers.js +199 -1
- package/dist/outbound-handlers.js.map +1 -1
- package/dist/outbound-schemas.d.ts +7 -5
- package/dist/outbound-schemas.js +3 -2
- package/dist/outbound-schemas.js.map +1 -1
- package/dist/provider-probe.d.ts +48 -0
- package/dist/provider-probe.js +121 -0
- package/dist/provider-probe.js.map +1 -0
- package/dist/provider-secret-registry.d.ts +98 -0
- package/dist/provider-secret-registry.js +334 -0
- package/dist/provider-secret-registry.js.map +1 -0
- package/dist/quickstart-api.d.ts +164 -0
- package/dist/quickstart-api.js +351 -0
- package/dist/quickstart-api.js.map +1 -0
- package/dist/quickstart.js +23 -50
- package/dist/quickstart.js.map +1 -1
- package/dist/scheduler/db.js +17 -5
- package/dist/scheduler/db.js.map +1 -1
- package/dist/scheduler/db.test.js +34 -1
- package/dist/scheduler/db.test.js.map +1 -1
- package/dist/scheduler/types.d.ts +4 -0
- package/dist/scheduler/types.js.map +1 -1
- package/dist/secret-store.d.ts +25 -0
- package/dist/secret-store.js +165 -0
- package/dist/secret-store.js.map +1 -0
- package/dist/self-restart-limit.d.ts +21 -0
- package/dist/self-restart-limit.js +129 -0
- package/dist/self-restart-limit.js.map +1 -0
- package/dist/settings-api.d.ts +116 -0
- package/dist/settings-api.js +530 -5
- package/dist/settings-api.js.map +1 -1
- package/dist/setup-auth.d.ts +113 -0
- package/dist/setup-auth.js +181 -0
- package/dist/setup-auth.js.map +1 -0
- package/dist/setup-form.d.ts +18 -0
- package/dist/setup-form.js +315 -0
- package/dist/setup-form.js.map +1 -0
- package/dist/setup-host.d.ts +162 -0
- package/dist/setup-host.js +496 -0
- package/dist/setup-host.js.map +1 -0
- package/dist/setup-marker.d.ts +8 -0
- package/dist/setup-marker.js +39 -0
- package/dist/setup-marker.js.map +1 -0
- package/dist/setup-tunnel-consent.d.ts +53 -0
- package/dist/setup-tunnel-consent.js +82 -0
- package/dist/setup-tunnel-consent.js.map +1 -0
- package/dist/setup-wizard.js +4 -0
- package/dist/setup-wizard.js.map +1 -1
- package/dist/steer-capability.js +4 -1
- package/dist/steer-capability.js.map +1 -1
- package/dist/tips.js +1 -1
- package/dist/tips.js.map +1 -1
- package/dist/tmux-manager.js +29 -4
- package/dist/tmux-manager.js.map +1 -1
- package/dist/tool-permissions-notice.d.ts +38 -0
- package/dist/tool-permissions-notice.js +92 -0
- package/dist/tool-permissions-notice.js.map +1 -0
- package/dist/tool-permissions.d.ts +120 -0
- package/dist/tool-permissions.js +277 -0
- package/dist/tool-permissions.js.map +1 -0
- package/dist/topic-commands.js +1 -0
- package/dist/topic-commands.js.map +1 -1
- package/dist/transcript-sources.d.ts +12 -1
- package/dist/transcript-sources.js +19 -3
- package/dist/transcript-sources.js.map +1 -1
- package/dist/tunnel/cloudflared.d.ts +71 -0
- package/dist/tunnel/cloudflared.js +447 -0
- package/dist/tunnel/cloudflared.js.map +1 -0
- package/dist/tunnel/lease.d.ts +75 -0
- package/dist/tunnel/lease.js +209 -0
- package/dist/tunnel/lease.js.map +1 -0
- package/dist/tunnel/manager.d.ts +56 -0
- package/dist/tunnel/manager.js +167 -0
- package/dist/tunnel/manager.js.map +1 -0
- package/dist/tunnel/types.d.ts +119 -0
- package/dist/tunnel/types.js +33 -0
- package/dist/tunnel/types.js.map +1 -0
- package/dist/types.d.ts +2 -0
- package/dist/ui/dashboard.html +4 -3
- package/dist/ui/settings.html +808 -156
- package/dist/ui/view.html +2 -2
- package/dist/usage/i18n-keys.d.ts +1 -1
- package/dist/usage/i18n-keys.js +1 -1
- package/dist/usage/i18n-keys.js.map +1 -1
- package/dist/usage/providers.d.ts +23 -14
- package/dist/usage/providers.js +220 -58
- package/dist/usage/providers.js.map +1 -1
- package/dist/usage/usage-api.d.ts +13 -0
- package/dist/usage/usage-api.js +69 -1
- package/dist/usage/usage-api.js.map +1 -1
- package/dist/web-api.js +8 -5
- package/dist/web-api.js.map +1 -1
- package/dist/web-auth.d.ts +75 -0
- package/dist/web-auth.js +208 -2
- package/dist/web-auth.js.map +1 -1
- package/dist/web-terminal.d.ts +30 -1
- package/dist/web-terminal.js +86 -3
- package/dist/web-terminal.js.map +1 -1
- package/package.json +2 -1
|
@@ -186,6 +186,74 @@ export function claudeResumeMenuState(pane) {
|
|
|
186
186
|
}
|
|
187
187
|
const resumeDefaultActive = (pane) => { const s = claudeResumeMenuState(pane); return s.active && s.defaultCursor; };
|
|
188
188
|
const resumeMenuActive = (pane) => claudeResumeMenuState(pane).active;
|
|
189
|
+
/**
|
|
190
|
+
* Claude Code's destructive shell-command confirmation menu. Claude renders
|
|
191
|
+
* the dangerous-operation warning and the question on separate rows; the
|
|
192
|
+
* question row is the stable identity. The active-region predicate below
|
|
193
|
+
* adds the stronger bottom anchor and option/footer checks before any key can
|
|
194
|
+
* be sent.
|
|
195
|
+
*/
|
|
196
|
+
export const CLAUDE_DANGEROUS_COMMAND_PROMPT = /^[ \t]*Do you want to proceed\?[ \t]*$/im;
|
|
197
|
+
const DANGER_OPTION_ROW = /^[ \t]*([❯›])?[ \t]*([12])\.[ \t]*(Yes|No)\b[^\n]*$/i;
|
|
198
|
+
const DANGER_FOOTER = /Esc(?:ape)?[ \t]+to[ \t]+cancel/i;
|
|
199
|
+
/**
|
|
200
|
+
* Return the current interactive danger menu shape. The menu must have the
|
|
201
|
+
* question immediately followed by exactly the canonical two options and be
|
|
202
|
+
* bottom-anchored: after the two option rows there may only be its footer and
|
|
203
|
+
* blank rows. This rejects normal output, the three-option permissions menu,
|
|
204
|
+
* and transcript/code snippets that happen to contain the same words.
|
|
205
|
+
* Unknown cursor/order is deliberately a positive detection but is never
|
|
206
|
+
* auto-answered.
|
|
207
|
+
*/
|
|
208
|
+
export function claudeDangerousCommandPromptState(pane) {
|
|
209
|
+
const rows = pane.replace(/\r/g, "").split("\n");
|
|
210
|
+
let question = -1;
|
|
211
|
+
for (let i = rows.length - 1; i >= 0; i--) {
|
|
212
|
+
if (/^[ \t]*Do you want to proceed\?[ \t]*$/i.test(rows[i])) {
|
|
213
|
+
question = i;
|
|
214
|
+
break;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
if (question < 0)
|
|
218
|
+
return { active: false, cursor: "unknown" };
|
|
219
|
+
const optionStart = question + 1;
|
|
220
|
+
if (optionStart + 1 >= rows.length || !DANGER_OPTION_ROW.test(rows[optionStart]) || !DANGER_OPTION_ROW.test(rows[optionStart + 1])) {
|
|
221
|
+
return { active: false, cursor: "unknown" };
|
|
222
|
+
}
|
|
223
|
+
const first = DANGER_OPTION_ROW.exec(rows[optionStart]);
|
|
224
|
+
const second = DANGER_OPTION_ROW.exec(rows[optionStart + 1]);
|
|
225
|
+
if (!first || !second)
|
|
226
|
+
return { active: false, cursor: "unknown" };
|
|
227
|
+
const trailing = rows.slice(optionStart + 2).filter(row => row.trim().length > 0);
|
|
228
|
+
const active = trailing.length > 0 && trailing.length <= 2 && trailing.every(row => DANGER_FOOTER.test(row));
|
|
229
|
+
if (!active)
|
|
230
|
+
return { active: false, cursor: "unknown" };
|
|
231
|
+
// Only the canonical 1. Yes / 2. No order is safe to navigate. A missing
|
|
232
|
+
// or duplicated cursor is an unknown variant and must remain human-held.
|
|
233
|
+
const canonical = first[2] === "1" && first[3].toLowerCase() === "yes"
|
|
234
|
+
&& second[2] === "2" && second[3].toLowerCase() === "no";
|
|
235
|
+
if (!canonical)
|
|
236
|
+
return { active: true, cursor: "unknown" };
|
|
237
|
+
const firstCursor = first[1] !== undefined;
|
|
238
|
+
const secondCursor = second[1] !== undefined;
|
|
239
|
+
if (firstCursor === secondCursor)
|
|
240
|
+
return { active: true, cursor: "unknown" };
|
|
241
|
+
return { active: true, cursor: firstCursor ? "yes" : "no" };
|
|
242
|
+
}
|
|
243
|
+
const dangerPromptOnYes = (pane) => {
|
|
244
|
+
const state = claudeDangerousCommandPromptState(pane);
|
|
245
|
+
return state.active && state.cursor === "yes";
|
|
246
|
+
};
|
|
247
|
+
const dangerPromptOnNo = (pane) => {
|
|
248
|
+
const state = claudeDangerousCommandPromptState(pane);
|
|
249
|
+
return state.active && state.cursor === "no";
|
|
250
|
+
};
|
|
251
|
+
const dangerPromptUnknown = (pane) => {
|
|
252
|
+
const state = claudeDangerousCommandPromptState(pane);
|
|
253
|
+
return state.active && state.cursor === "unknown";
|
|
254
|
+
};
|
|
255
|
+
/** This text is code-owned and intentionally never includes the command. */
|
|
256
|
+
export const CLAUDE_DANGEROUS_COMMAND_BLOCKED_NOTICE = "[system:dangerous-command-blocked]\nThe previous command was classified as dangerous and was automatically denied. Do not retry it. Use a safe form instead (for example `${VAR:?}` validation, a literal path, or skip the destructive operation).";
|
|
189
257
|
/** Startup budget for a resuming claude-code launch (fresh starts keep the default). */
|
|
190
258
|
export const CLAUDE_RESUME_STARTUP_BUDGET_MS = 60_000;
|
|
191
259
|
export class ClaudeCodeBackend {
|
|
@@ -388,6 +456,30 @@ export class ClaudeCodeBackend {
|
|
|
388
456
|
message: "Selected Claude model unavailable — Claude Code may be using a fallback; use /model to choose another",
|
|
389
457
|
},
|
|
390
458
|
{ pattern: /API Error: Overloaded/i, type: "rate_limit", action: "notify", message: "API overloaded" },
|
|
459
|
+
// Claude Code pauses its own turn (rather than merely warning) when the
|
|
460
|
+
// current usage window is exhausted. Keep this as a complete line match:
|
|
461
|
+
// the warning is also visible in pane scrollback, and prose discussing
|
|
462
|
+
// only part of it must not turn into a pause notification. Claude has
|
|
463
|
+
// used both `●` and `⚠` prefixes and both cancel-wordings over time.
|
|
464
|
+
// The time is deliberately captured so the channel notice tells the
|
|
465
|
+
// operator when Claude is expected to continue.
|
|
466
|
+
{
|
|
467
|
+
pattern: /^[ \t]*(?:[●⚠](?:\uFE0F)?[ \t]+)?Usage limit reached[ \t]*·[ \t]*continuing automatically at[ \t]+((?:(?:[01]?\d|2[0-3]):[0-5]\d(?:[ \t]*[ap]m)?|(?:0?[1-9]|1[0-2])(?::[0-5]\d)?[ \t]*[ap]m|(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[ \t]+(?:[12]?\d|3[01]),[ \t]*(?:[01]?\d|2[0-3])(?::[0-5]\d)?[ \t]*[ap]m))[ \t]*·[ \t]*esc(?: or type)?[ \t]+to[ \t]+cancel[ \t]*$/im,
|
|
468
|
+
type: "quota",
|
|
469
|
+
action: "notify",
|
|
470
|
+
message: "Claude Code usage limit reached — paused until the next usage window",
|
|
471
|
+
formatMessage: match => `Claude Code usage limit reached — paused; continuing automatically at ${match[1].trim()}`,
|
|
472
|
+
verifyQuota: true,
|
|
473
|
+
// Count-based occurrence tracking still suppresses the same line while
|
|
474
|
+
// it remains visible, but a later pause is a distinct incident even if
|
|
475
|
+
// it happens within the generic five-minute error cooldown.
|
|
476
|
+
skipCooldown: true,
|
|
477
|
+
// The pane stays on this line until the provider's window opens. It
|
|
478
|
+
// is a self-recovering pause, so do not arm the generic recovery
|
|
479
|
+
// deadline (which would otherwise re-emit the same visible line every
|
|
480
|
+
// five minutes while the wait is still in progress).
|
|
481
|
+
skipRecoveryWait: true,
|
|
482
|
+
},
|
|
391
483
|
{ pattern: /credit balance is too low/i, type: "quota", action: "pause", message: "Insufficient API credits" },
|
|
392
484
|
];
|
|
393
485
|
}
|
|
@@ -452,6 +544,41 @@ export class ClaudeCodeBackend {
|
|
|
452
544
|
blocksDelivery: true,
|
|
453
545
|
description: "Claude session resume prompt (unrecognised variant) — holding for a human, never auto-selecting",
|
|
454
546
|
},
|
|
547
|
+
// Claude's shell-command safety menu is the one runtime prompt AgEnD is
|
|
548
|
+
// allowed to answer automatically. Keep cursor-known entries ahead of
|
|
549
|
+
// the hold-only guard; unknown shapes are always held for a human.
|
|
550
|
+
{
|
|
551
|
+
pattern: CLAUDE_DANGEROUS_COMMAND_PROMPT,
|
|
552
|
+
isActive: dangerPromptOnYes,
|
|
553
|
+
keys: ["Down", "Enter"],
|
|
554
|
+
description: "Claude dangerous-command prompt — select No",
|
|
555
|
+
blocksDelivery: true,
|
|
556
|
+
inputBlocked: true,
|
|
557
|
+
verifyAfterKeys: true,
|
|
558
|
+
postDismissNotice: { text: CLAUDE_DANGEROUS_COMMAND_BLOCKED_NOTICE, label: "dangerous-command-blocked" },
|
|
559
|
+
autoResolutionKey: "claude-dangerous-command-yes",
|
|
560
|
+
},
|
|
561
|
+
{
|
|
562
|
+
pattern: CLAUDE_DANGEROUS_COMMAND_PROMPT,
|
|
563
|
+
isActive: dangerPromptOnNo,
|
|
564
|
+
keys: ["Enter"],
|
|
565
|
+
description: "Claude dangerous-command prompt — confirm No",
|
|
566
|
+
blocksDelivery: true,
|
|
567
|
+
inputBlocked: true,
|
|
568
|
+
verifyAfterKeys: true,
|
|
569
|
+
postDismissNotice: { text: CLAUDE_DANGEROUS_COMMAND_BLOCKED_NOTICE, label: "dangerous-command-blocked" },
|
|
570
|
+
autoResolutionKey: "claude-dangerous-command-no",
|
|
571
|
+
},
|
|
572
|
+
{
|
|
573
|
+
pattern: CLAUDE_DANGEROUS_COMMAND_PROMPT,
|
|
574
|
+
isActive: dangerPromptUnknown,
|
|
575
|
+
keys: [],
|
|
576
|
+
holdOnly: true,
|
|
577
|
+
blocksDelivery: true,
|
|
578
|
+
inputBlocked: true,
|
|
579
|
+
description: "Claude dangerous-command prompt (unknown cursor) — holding for a human, never auto-selecting",
|
|
580
|
+
autoResolutionKey: "claude-dangerous-command",
|
|
581
|
+
},
|
|
455
582
|
];
|
|
456
583
|
}
|
|
457
584
|
getQuitCommand() { return "/exit"; }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../src/backend/claude-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC3I,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAqG,yBAAyB,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEzN,2EAA2E;AAC3E,SAAS,gBAAgB,CAAC,GAAW;IACnC,IAAI,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC;QAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,4DAA4D,CAAC,CAAC;IAEnH,wEAAwE;IACxE,uEAAuE;IACvE,6EAA6E;IAC7E,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;IAC1D,IAAI,SAAS,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,SAAS,CAAC;IAE9C,4EAA4E;IAC5E,+DAA+D;IAC/D,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;AACrE,CAAC;AAED,uEAAuE;AACvE,SAAS,cAAc;IACrB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC;IACxD,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;AACvF,CAAC;AAED,SAAS,SAAS,CAAC,EAAU;IAC3B,OAAO,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACnE,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAgB,EAAE,WAAW,GAAG,EAAE;IACtE,MAAM,KAAK,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5D,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QACvD,IAAI,CAAC;YACH,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9D,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,MAAM,CAAC,CAAC,qDAAqD,CAAC,CAAC;QAEjE,IAAI,QAAQ,GAAkB,IAAI,CAAC;QACnC,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,CAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAuB,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;QACpG,CAAC;QAAC,MAAM,CAAC;YAAC,SAAS,CAAC,wEAAwE;QAAC,CAAC;QAC9F,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC5B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,mEAAmE;gBACnE,sEAAsE;gBACtE,IAAK,GAA6B,CAAC,IAAI,KAAK,OAAO;oBAAE,OAAO,IAAI,CAAC;YACnE,CAAC;QACH,CAAC;QACD,SAAS,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,qBAAqB,CAAC,QAAgB,EAAE,KAAa;IACnE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAwB,CAAC;QAClF,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK;YAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC,CAAC,2DAA2D,CAAC,CAAC;AACzE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,gBAAgB,CAAC,MAAiD;IACzE,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAC9B,0EAA0E;IAC1E,6EAA6E;IAC7E,qEAAqE;IACrE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,GAAG,IAAI,aAAa,CAAC;IACtC,MAAM,KAAK,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO;IAC3B,IAAI,CAAC;QACH,IAAI,GAAG,GAA4B,EAAE,CAAC;QACtC,IAAI,GAAG,GAAkB,IAAI,CAAC;QAC9B,IAAI,CAAC;YAAC,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,yCAAyC,CAAC,CAAC;QAC9F,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACxC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;oBAAE,OAAO;gBAC3E,GAAG,GAAG,MAAiC,CAAC;YAC1C,CAAC;YAAC,MAAM,CAAC;gBAAC,OAAO;YAAC,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;YAAE,OAAO;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,gBAAgB,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC/G,IAAI,CAAC;YACH,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACnF,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,yDAAyD;YACrF,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC7B,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC;gBAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;YAAS,CAAC;QACT,qBAAqB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAGD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,gEAAgE,CAAC;AAC7G;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sJAAsJ,CAAC;AAEhM,MAAM,iBAAiB,GAAG,wEAAwE,CAAC;AACnG,MAAM,oBAAoB,GAAG,0DAA0D,CAAC;AAExF;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAAC,KAAK,GAAG,CAAC,CAAC;YAAC,MAAM;QAAC,CAAC;IACnG,CAAC;IACD,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;IAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACzF,MAAM,aAAa,GAAG,+DAA+D,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACxG,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;AACnC,CAAC;AACD,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAW,EAAE,GAAG,MAAM,CAAC,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AACtI,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AAEvF,wFAAwF;AACxF,MAAM,CAAC,MAAM,+BAA+B,GAAG,MAAM,CAAC;AAEtD,MAAM,OAAO,iBAAiB;IAgBR;IAfX,UAAU,GAAG,QAAQ,CAAC;IACtB,4BAA4B,GAAG,IAAI,CAAC;IACpC,oBAAoB,GAAG,IAAI,CAAC;IAErC;;;;;OAKG;IACH,kBAAkB,CAAC,GAAwB;QACzC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,SAAS,CAAC;IAClE,CAAC;IACO,UAAU,CAAS;IAE3B,YAAoB,WAAmB;QAAnB,gBAAW,GAAX,WAAW,CAAQ;QACrC,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,YAAY,CAAC,MAAwB;QACnC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC;QACpE,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;QAChE,MAAM,SAAS,GAAG,CAAC,8BAA8B,EAAE,wCAAwC,CAAC,CAAC;QAC7F,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB;YAAE,SAAS,CAAC,IAAI,CAAC,sBAAsB,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QACvH,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;YAC7D,SAAS,CAAC,IAAI,CAAC,qBAAqB,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QACnF,CAAC;QACD,IAAI,GAAG,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,eAAe,YAAY,iBAAiB,aAAa,EAAE,CAAC;QAC/G,IAAI,MAAM,CAAC,eAAe,KAAK,KAAK;YAAE,GAAG,IAAI,iCAAiC,CAAC;QAE/E,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAC3D,0EAA0E;QAC1E,2EAA2E;QAC3E,2EAA2E;QAC3E,0EAA0E;QAC1E,uEAAuE;QACvE,yEAAyE;QACzE,kDAAkD;QAClD,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,UAAU,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACvG,GAAG,IAAI,aAAa,CAAC;QACvB,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1C,mBAAmB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;YAC1C,GAAG,IAAI,YAAY,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACzC,CAAC;QAED,gGAAgG;QAChG,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;QAClE,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,GAAG,IAAI,gCAAgC,SAAS,EAAE,CAAC;QACrD,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,iBAAiB,CAAC,gBAAwB;QAChD,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,GAAG;YAAE,OAAO,KAAK,CAAC;QACvB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;QACtF,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC;YACH,OAAO,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;iBACjF,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QACpE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,WAAW,CAAC,MAAwB;QAClC,qEAAqE;QACrE,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;QAChE,MAAM,SAAS,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;QACpD,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAEjE,6BAA6B;QAC7B,MAAM,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAEvD,wFAAwF;QACxF,MAAM,QAAQ,GAA4B;YACxC,UAAU,EAAE;gBACV,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,iBAAiB;aAC3B;SACF,CAAC;QACF,aAAa,CACX,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,sBAAsB,CAAC,EAC9C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CACzB,CAAC;QAEF,+DAA+D;QAC/D,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAE9B,4EAA4E;QAC5E,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACxB,IAAI,CAAC;gBAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,uBAAuB,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAC1H,CAAC;IACH,CAAC;IAED;;;;;;;;;;;OAWG;IACH,eAAe;QACb,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6CG;IACH,cAAc;QACZ,OAAO,sEAAsE,CAAC;IAChF,CAAC;IAED,eAAe;QACb,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;YACrD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC,cAAc,EAAE,eAAe,IAAI,IAAI,CAAC;QACtD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,4EAA4E;YAC5E,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,YAAY;QACV,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;YACrD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,gBAAgB;QACd,OAAO;YACL,EAAE,OAAO,EAAE,wBAAwB,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,wBAAwB,EAAE;YAChH,2EAA2E;YAC3E,oEAAoE;YACpE,4EAA4E;YAC5E,EAAE,OAAO,EAAE,iDAAiD,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,gDAAgD,EAAE;YAC9J,EAAE,OAAO,EAAE,4BAA4B,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,sBAAsB,EAAE;YAC/G,0EAA0E;YAC1E,sEAAsE;YACtE,+DAA+D;YAC/D;gBACE,kEAAkE;gBAClE,gEAAgE;gBAChE,qEAAqE;gBACrE,sEAAsE;gBACtE,OAAO,EAAE,gLAAgL;gBACzL,IAAI,EAAE,aAAa;gBACnB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,uGAAuG;aACjH;YACD,EAAE,OAAO,EAAE,wBAAwB,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAE;YACtG,EAAE,OAAO,EAAE,4BAA4B,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,0BAA0B,EAAE;SAC/G,CAAC;IACJ,CAAC;IAED,iBAAiB;QACf,OAAO;YACL,0EAA0E;YAC1E,0EAA0E;YAC1E,sEAAsE;YACtE,sEAAsE;YACtE,sEAAsE;YACtE,wEAAwE;YACxE,wDAAwD;YACxD;gBACE,OAAO,EAAE,wDAAwD;gBACjE,IAAI,EAAE,EAAE;gBACR,WAAW,EAAE,uEAAuE;gBACpF,KAAK,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,+JAA+J,EAAE;aAC3N;YACD,2EAA2E;YAC3E,wEAAwE;YACxE,oEAAoE;YACpE,sEAAsE;YACtE,mEAAmE;YACnE,EAAE,OAAO,EAAE,4BAA4B,EAAE,QAAQ,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,mEAAmE,EAAE,cAAc,EAAE,IAAI,EAAE;YACzM,oEAAoE;YACpE,oEAAoE;YACpE,uEAAuE;YACvE,4EAA4E;YAC5E,EAAE,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE,iGAAiG,EAAE;YAClO,EAAE,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,kDAAkD,EAAE;YAC3H,0EAA0E;YAC1E,yEAAyE;YACzE,wEAAwE;YACxE,2EAA2E;YAC3E,0EAA0E;YAC1E,0EAA0E;YAC1E,+DAA+D;YAC/D,EAAE,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,wEAAwE,EAAE;YAC/I,EAAE,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,qCAAqC,EAAE;YACrG,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,4CAA4C,EAAE;SAC5G,CAAC;IACJ,CAAC;IAED,iBAAiB;QACf,OAAO;YACL;gBACE,wEAAwE;gBACxE,wEAAwE;gBACxE,qEAAqE;gBACrE,wEAAwE;gBACxE,OAAO,EAAE,4BAA4B;gBACrC,QAAQ,EAAE,mBAAmB;gBAC7B,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;gBACvB,WAAW,EAAE,mEAAmE;gBAChF,cAAc,EAAE,IAAI;aACrB;YACD,kFAAkF;YAClF;gBACE,OAAO,EAAE,yBAAyB;gBAClC,QAAQ,EAAE,gBAAgB;gBAC1B,IAAI,EAAE,EAAE;gBACR,QAAQ,EAAE,IAAI;gBACd,cAAc,EAAE,IAAI;gBACpB,WAAW,EAAE,iGAAiG;aAC/G;SACF,CAAC;IACJ,CAAC;IAED,cAAc,KAAa,OAAO,OAAO,CAAC,CAAC,CAAC;IAE5C,iBAAiB,KAAa,OAAO,UAAU,CAAC,CAAC,CAAC;IAClD,eAAe,KAAa,OAAO,QAAQ,CAAC,CAAC,CAAC;IAE9C,YAAY,KAAa,OAAO,QAAQ,CAAC,CAAC,CAAC;IAE3C,4EAA4E;IAC5E,0EAA0E;IAC1E,iBAAiB,KAA4C,OAAO,SAAS,CAAC,CAAC,CAAC;IAChF,eAAe,KAAe,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAEjF,gFAAgF;IAChF,sBAAsB,KAA4B,OAAO,SAAS,CAAC,CAAC,CAAC;IAErE,KAAK,CAAC,UAAU;QACd,OAAO;YACL,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE;YACnE,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;YACjC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;YAC7B,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAC/B,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,6BAA6B,EAAE;YACjF,6DAA6D;YAC7D,8DAA8D;YAC9D,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE;SAC/D,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC;YACH,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;YACtE,MAAM,KAAK,GAAG,MAAM,mBAAmB,EAAE,CAAC;YAC1C,IAAI,CAAC,KAAK;gBAAE,OAAO,EAAE,CAAC;YACtB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,yBAAyB,CAAC,CAAC;YAC9E,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;YAChB,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,+CAA+C,EAAE;gBACvE,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,KAAK,EAAE;oBAChC,mBAAmB,EAAE,YAAY;oBACjC,gBAAgB,EAAE,kBAAkB;iBACrC;gBACD,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;YACH,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,OAAO,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA8D,CAAC;YAC1F,MAAM,OAAO,GAAuC,EAAE,CAAC;YACvD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;gBACpC,IAAI,CAAC,KAAK,CAAC,EAAE;oBAAE,SAAS;gBACxB,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACpH,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,6BAA6B,EAAE,CAAC,CAAC;YAChH,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QACvD,OAAO;YACL,OAAO,EAAE,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC;YACzC,MAAM,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE;YAC/B,SAAS,EAAE,MAAM,IAAI,CAAC,aAAa,EAAE;SACtC,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,OAAyB;QAC/B,0EAA0E;IAC5E,CAAC;IAED;;;;;;;OAOG;IACH,QAAQ,CAAC,gBAAwB;QAC/B,MAAM,GAAG,GAAG,gBAAgB,EAAE,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,SAAS,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC;YAAC,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,8CAA8C,CAAC,CAAC;QACnG,2EAA2E;QAC3E,+DAA+D;QAC/D,0EAA0E;QAC1E,yBAAyB;QACzB,MAAM,KAAK,GAAG,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACzE,IAAI,CAAC;YACH,gBAAgB,CAAC,GAAG,CAAC,EAAE;gBACrB,IAAI,QAAQ,GAAG,GAAG,CAAC,QAA+C,CAAC;gBACnE,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACzE,QAAQ,GAAG,EAAE,CAAC;oBACd,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBAC1B,CAAC;gBACD,IAAI,OAAO,GAAG,KAAK,CAAC;gBACpB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;oBACtB,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAC7B,MAAM,KAAK,GAAG,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;wBAChF,CAAC,CAAC,QAAmC;wBACrC,CAAC,CAAC,EAAE,CAAC;oBACP,IAAI,KAAK,CAAC,sBAAsB,KAAK,IAAI;wBAAE,SAAS;oBACpD,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC;oBACpC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;oBACpB,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;gBACD,OAAO,OAAO,CAAC;YACjB,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC,CAAC,oEAAoE,CAAC,CAAC;IAClF,CAAC;IAED,kFAAkF;IAC1E,gBAAgB,CAAC,OAAyB;QAChD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAC7C,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACpE,IAAI,CAAC;YACH,gBAAgB,CAAC,GAAG,CAAC,EAAE;gBACrB,MAAM,QAAQ,GAAG,GAAG,CAAC,qBAAiF,CAAC;gBACvG,MAAM,QAAQ,GAAG,QAAQ,EAAE,QAAQ,IAAI,EAAE,CAAC;gBAC1C,IAAI,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACjD,GAAG,CAAC,qBAAqB,GAAG;oBAC1B,QAAQ,EAAE,CAAC,GAAG,QAAQ,EAAE,WAAW,CAAC;oBACpC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,IAAI,EAAE;iBACnC,CAAC;gBACF,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC,CAAC,2DAA2D,CAAC,CAAC;IACzE,CAAC;IAED,+DAA+D;IACvD,eAAe;QACrB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;YAChE,OAAO,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAEO,qBAAqB;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;QAC7D,oFAAoF;QACpF,MAAM,MAAM,GAAG;YACb,qBAAqB;YACrB,2BAA2B;YAC3B,iBAAiB;YACjB,4CAA4C;YAC5C,oDAAoD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,kCAAkC;SACjH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QAC3D,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACnD,OAAO,UAAU,CAAC;IACpB,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../src/backend/claude-code.ts"],"names":[],"mappings":"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"}
|
package/dist/backend/codex.d.ts
CHANGED
|
@@ -5,6 +5,8 @@ export declare class CodexBackend implements CliBackend {
|
|
|
5
5
|
private binaryPath;
|
|
6
6
|
private readonly sharedCodexHome;
|
|
7
7
|
private readonly isolatedCodexHome;
|
|
8
|
+
/** Which subscription this instance runs on, or null for the shared login. */
|
|
9
|
+
private credentialProfile;
|
|
8
10
|
constructor(instanceDir: string);
|
|
9
11
|
supportsQueuedInput(): boolean;
|
|
10
12
|
/**
|
|
@@ -24,6 +26,22 @@ export declare class CodexBackend implements CliBackend {
|
|
|
24
26
|
* (updatePickerDialog) before any delivery path reads this pattern.
|
|
25
27
|
*/
|
|
26
28
|
getBottomReadyPattern(): RegExp | null;
|
|
29
|
+
/** Live status chrome that must veto the broad prompt/context ready match. */
|
|
30
|
+
getBusyPattern(): RegExp;
|
|
31
|
+
/**
|
|
32
|
+
* Codex 0.154's Astra theme can keep animating a star field around the input
|
|
33
|
+
* box (and its terminal title) after the TUI has returned to the prompt.
|
|
34
|
+
* Those cosmetic redraws keep tmux control mode noisy, so the daemon cannot
|
|
35
|
+
* wait for two seconds of output silence.
|
|
36
|
+
*
|
|
37
|
+
* Do not use getReadyPattern() here: the Codex header, context meter and
|
|
38
|
+
* input chrome all remain visible while a turn is running. Instead require
|
|
39
|
+
* the live, empty prompt followed by the context footer at the bottom of the
|
|
40
|
+
* viewport, and reject a live status row immediately above it. Transcript
|
|
41
|
+
* quotes are indented by the TUI and, more importantly, cannot replace the
|
|
42
|
+
* final live prompt/footer pair.
|
|
43
|
+
*/
|
|
44
|
+
isPeriodicRedrawIdlePane(pane: string): boolean;
|
|
27
45
|
/**
|
|
28
46
|
* The row codex paints for input it has taken into its own queue instead of
|
|
29
47
|
* submitting: `↳ <message>` under "Messages to be submitted after next tool
|
|
@@ -62,6 +80,16 @@ export declare class CodexBackend implements CliBackend {
|
|
|
62
80
|
* ~/.codex/config.toml (no toml dependency); other settings untouched.
|
|
63
81
|
*/
|
|
64
82
|
private enableContextStatusLine;
|
|
83
|
+
/** Null when the instance did not ask for a profile — today's behaviour. */
|
|
84
|
+
private readProfile;
|
|
85
|
+
/**
|
|
86
|
+
* Where this instance's `auth.json` comes from.
|
|
87
|
+
*
|
|
88
|
+
* The shared home unless a profile says otherwise. A profile owns the file
|
|
89
|
+
* itself — not a copy, not a link — so codex refreshing the token writes
|
|
90
|
+
* into that subscription and no other.
|
|
91
|
+
*/
|
|
92
|
+
private authSourceDir;
|
|
65
93
|
preTrust(workDir: string): void;
|
|
66
94
|
/**
|
|
67
95
|
* Preserve Codex login/session/cache behavior while isolating config.toml.
|
|
@@ -72,6 +100,18 @@ export declare class CodexBackend implements CliBackend {
|
|
|
72
100
|
/** Session dirs every instance must share with the terminal CLI (#506). */
|
|
73
101
|
private static readonly SHARED_SESSION_DIRS;
|
|
74
102
|
private prepareIsolatedHome;
|
|
103
|
+
/**
|
|
104
|
+
* Point this home's `auth.json` at whichever login it should use.
|
|
105
|
+
*
|
|
106
|
+
* Codex refreshes the token by writing through the link rather than replacing
|
|
107
|
+
* it — observed across every instance home on a machine that has been running
|
|
108
|
+
* this arrangement for months, with the shared file's mtime moving. That is
|
|
109
|
+
* behaviour, though, not a contract: a release that starts renaming over the
|
|
110
|
+
* file would leave a real file here and quietly fork the login, with refreshes
|
|
111
|
+
* landing somewhere the profile never sees. So a real file where a link
|
|
112
|
+
* belongs is treated as exactly that — reported, and put back.
|
|
113
|
+
*/
|
|
114
|
+
private linkAuthFile;
|
|
75
115
|
/**
|
|
76
116
|
* One-time heal for an instance whose isolated home grew a REAL session dir
|
|
77
117
|
* (#506): merge it into the shared home without overwriting anything, and
|
|
@@ -131,6 +171,23 @@ export declare class CodexBackend implements CliBackend {
|
|
|
131
171
|
* fallback keeps `/model` usable before the first TUI catalog refresh.
|
|
132
172
|
*/
|
|
133
173
|
listModels(): Promise<ModelOption[]>;
|
|
174
|
+
/**
|
|
175
|
+
* Make codex refetch its account catalog into models_cache.json.
|
|
176
|
+
*
|
|
177
|
+
* listModels() only reads that file; codex writes it. Measured on 0.156.0:
|
|
178
|
+
* `codex debug models` fetches the catalog when the cache is older than
|
|
179
|
+
* codex's own TTL (about five minutes — a 4-minute-old cache was served as
|
|
180
|
+
* is, a 6-minute-old one was refetched) and rewrites the file with a new
|
|
181
|
+
* `fetched_at`. `--bundled` would skip the fetch, so it is not passed.
|
|
182
|
+
*
|
|
183
|
+
* What this does NOT force: a cache codex fetched in the last ~5 minutes is
|
|
184
|
+
* trusted by codex and returned unchanged. There is no flag to bypass that,
|
|
185
|
+
* and a list at most five minutes old is not the staleness this exists for.
|
|
186
|
+
*
|
|
187
|
+
* Targets the same CODEX_HOME listModels() reads, so the refetch lands in the
|
|
188
|
+
* file that is read next.
|
|
189
|
+
*/
|
|
190
|
+
refreshModelCatalog(): Promise<void>;
|
|
134
191
|
probeCLIEnv(): Promise<{
|
|
135
192
|
version?: string;
|
|
136
193
|
models: ModelOption[];
|
package/dist/backend/codex.js
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { chmodSync, closeSync, cpSync, existsSync, lstatSync, mkdirSync, openSync, readFileSync, readlinkSync, readdirSync, renameSync, rmSync, statSync, symlinkSync, unlinkSync, writeFileSync, } from "node:fs";
|
|
2
2
|
import { homedir } from "node:os";
|
|
3
|
+
import { execFile } from "node:child_process";
|
|
4
|
+
import { promisify } from "node:util";
|
|
3
5
|
import { lastNonBlankRow } from "../pane-input-residue.js";
|
|
4
6
|
import { basename, dirname, join, resolve } from "node:path";
|
|
5
7
|
import { probeCliVersion, resolveBinary, shellQuote, validateModel, validateProvider, warnIfModelMismatch } from "./types.js";
|
|
8
|
+
import { credentialHomeSpec, credentialProfileHome, prepareCredentialProfileHome, resolveCredentialProfile, } from "./credential-profile.js";
|
|
9
|
+
import { getAgendHome } from "../paths.js";
|
|
6
10
|
import { appendWithMarker, removeMarker } from "./marker-utils.js";
|
|
7
11
|
import { t } from "../locale.js";
|
|
8
12
|
const CODEX_PROJECT_DOC_MAX_BYTES = 32_768;
|
|
@@ -95,6 +99,11 @@ function atomicWritePrivate(path, content) {
|
|
|
95
99
|
}
|
|
96
100
|
// Account-aware models_cache.json is preferred. These documented Codex models
|
|
97
101
|
// are only a last-resort menu when the TUI has not populated its cache yet.
|
|
102
|
+
/** The whole of a codex identity, and the only file a profile owns. */
|
|
103
|
+
const CODEX_AUTH_FILE = "auth.json";
|
|
104
|
+
/** Upper bound on `codex debug models`; it is one HTTPS round trip plus startup. */
|
|
105
|
+
const CODEX_CATALOG_REFRESH_TIMEOUT_MS = 20_000;
|
|
106
|
+
const execFileAsync = promisify(execFile);
|
|
98
107
|
const CODEX_FALLBACK_MODELS = [
|
|
99
108
|
{ id: "gpt-5.6-sol", label: "GPT-5.6 Sol", description: "frontier agentic coding" },
|
|
100
109
|
{ id: "gpt-5.6-terra", label: "GPT-5.6 Terra", description: "balanced agentic coding" },
|
|
@@ -106,6 +115,8 @@ export class CodexBackend {
|
|
|
106
115
|
binaryPath;
|
|
107
116
|
sharedCodexHome;
|
|
108
117
|
isolatedCodexHome;
|
|
118
|
+
/** Which subscription this instance runs on, or null for the shared login. */
|
|
119
|
+
credentialProfile = null;
|
|
109
120
|
constructor(instanceDir) {
|
|
110
121
|
this.instanceDir = instanceDir;
|
|
111
122
|
this.binaryPath = resolveBinary("codex");
|
|
@@ -134,6 +145,56 @@ export class CodexBackend {
|
|
|
134
145
|
getBottomReadyPattern() {
|
|
135
146
|
return /^\s*›\s?/;
|
|
136
147
|
}
|
|
148
|
+
/** Live status chrome that must veto the broad prompt/context ready match. */
|
|
149
|
+
getBusyPattern() {
|
|
150
|
+
return /(?:^|\n)•\s+Working\b[^\n]*\besc to interrupt\b/i;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Codex 0.154's Astra theme can keep animating a star field around the input
|
|
154
|
+
* box (and its terminal title) after the TUI has returned to the prompt.
|
|
155
|
+
* Those cosmetic redraws keep tmux control mode noisy, so the daemon cannot
|
|
156
|
+
* wait for two seconds of output silence.
|
|
157
|
+
*
|
|
158
|
+
* Do not use getReadyPattern() here: the Codex header, context meter and
|
|
159
|
+
* input chrome all remain visible while a turn is running. Instead require
|
|
160
|
+
* the live, empty prompt followed by the context footer at the bottom of the
|
|
161
|
+
* viewport, and reject a live status row immediately above it. Transcript
|
|
162
|
+
* quotes are indented by the TUI and, more importantly, cannot replace the
|
|
163
|
+
* final live prompt/footer pair.
|
|
164
|
+
*/
|
|
165
|
+
isPeriodicRedrawIdlePane(pane) {
|
|
166
|
+
// Astra's 0.154 theme animates U+22C6 star points across otherwise-stable
|
|
167
|
+
// idle chrome. Remove only that observed decorative glyph; broader
|
|
168
|
+
// punctuation stripping could turn real tool output into a false prompt.
|
|
169
|
+
const rows = pane.replace(/\r/g, "").split("\n").map(row => row.replace(/⋆/gu, ""));
|
|
170
|
+
let prompt = -1;
|
|
171
|
+
for (let i = rows.length - 1; i >= 0; i--) {
|
|
172
|
+
if (/^[>›]\s*Ask Codex to do anything\s*$/.test(rows[i])) {
|
|
173
|
+
prompt = i;
|
|
174
|
+
break;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
if (prompt < 0)
|
|
178
|
+
return false;
|
|
179
|
+
let footer = -1;
|
|
180
|
+
for (let i = prompt + 1; i < Math.min(rows.length, prompt + 7); i++) {
|
|
181
|
+
if (/^\s*Context\s+\d+%\s+(?:left|used)\s*$/i.test(rows[i])) {
|
|
182
|
+
footer = i;
|
|
183
|
+
break;
|
|
184
|
+
}
|
|
185
|
+
// Only blank/star-only animation rows may separate prompt and footer.
|
|
186
|
+
if (rows[i].trim() !== "")
|
|
187
|
+
return false;
|
|
188
|
+
}
|
|
189
|
+
if (footer < 0 || rows.slice(footer + 1).some(row => row.trim() !== ""))
|
|
190
|
+
return false;
|
|
191
|
+
// A real Codex status row is column-zero TUI chrome. Quoted examples in a
|
|
192
|
+
// user/assistant message are indented and therefore fail closed here.
|
|
193
|
+
const activeRegion = rows.slice(Math.max(0, prompt - 8), prompt);
|
|
194
|
+
if (activeRegion.some(row => /^•\s+\S.*\besc to interrupt\b/i.test(row)))
|
|
195
|
+
return false;
|
|
196
|
+
return true;
|
|
197
|
+
}
|
|
137
198
|
/**
|
|
138
199
|
* The row codex paints for input it has taken into its own queue instead of
|
|
139
200
|
* submitting: `↳ <message>` under "Messages to be submitted after next tool
|
|
@@ -144,6 +205,7 @@ export class CodexBackend {
|
|
|
144
205
|
}
|
|
145
206
|
buildCommand(config) {
|
|
146
207
|
this.lastKnownModel = config.model?.trim() || null;
|
|
208
|
+
this.credentialProfile = this.readProfile(config);
|
|
147
209
|
const approvalFlag = config.skipPermissions !== false
|
|
148
210
|
? "--dangerously-bypass-approvals-and-sandbox"
|
|
149
211
|
: "--full-auto";
|
|
@@ -177,6 +239,9 @@ export class CodexBackend {
|
|
|
177
239
|
return `CODEX_HOME=${shellQuote(this.isolatedCodexHome)} ${cmd}`;
|
|
178
240
|
}
|
|
179
241
|
writeConfig(config) {
|
|
242
|
+
// Set before the home is prepared: which login this instance gets is a
|
|
243
|
+
// property of the home, and the home is built here.
|
|
244
|
+
this.credentialProfile = this.readProfile(config);
|
|
180
245
|
this.prepareIsolatedHome();
|
|
181
246
|
this.cleanSharedConfig();
|
|
182
247
|
// Copy all user settings but no AgEnD MCP entries into a private base
|
|
@@ -306,6 +371,35 @@ export class CodexBackend {
|
|
|
306
371
|
}
|
|
307
372
|
catch { /* best effort — never block launch on statusline config */ }
|
|
308
373
|
}
|
|
374
|
+
/** Null when the instance did not ask for a profile — today's behaviour. */
|
|
375
|
+
readProfile(config) {
|
|
376
|
+
try {
|
|
377
|
+
return resolveCredentialProfile(config.backendOptions);
|
|
378
|
+
}
|
|
379
|
+
catch {
|
|
380
|
+
// A malformed name is refused where it is written; launching is not the
|
|
381
|
+
// place to discover it, and falling back to the shared login is the
|
|
382
|
+
// behaviour every instance had before profiles existed.
|
|
383
|
+
return null;
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Where this instance's `auth.json` comes from.
|
|
388
|
+
*
|
|
389
|
+
* The shared home unless a profile says otherwise. A profile owns the file
|
|
390
|
+
* itself — not a copy, not a link — so codex refreshing the token writes
|
|
391
|
+
* into that subscription and no other.
|
|
392
|
+
*/
|
|
393
|
+
authSourceDir() {
|
|
394
|
+
if (!this.credentialProfile)
|
|
395
|
+
return this.sharedCodexHome;
|
|
396
|
+
const spec = credentialHomeSpec(this.binaryName);
|
|
397
|
+
if (!spec)
|
|
398
|
+
return this.sharedCodexHome;
|
|
399
|
+
const home = credentialProfileHome(getAgendHome(), this.binaryName, this.credentialProfile);
|
|
400
|
+
prepareCredentialProfileHome(spec, home);
|
|
401
|
+
return home;
|
|
402
|
+
}
|
|
309
403
|
preTrust(workDir) {
|
|
310
404
|
const configPath = join(this.isolatedCodexHome, "config.toml");
|
|
311
405
|
let content = "";
|
|
@@ -373,9 +467,16 @@ export class CodexBackend {
|
|
|
373
467
|
if (healedSidecars.length > 0) {
|
|
374
468
|
console.warn(`[agend] removed unsafe Codex SQLite sidecar links: ${healedSidecars.join(", ")}`);
|
|
375
469
|
}
|
|
470
|
+
// One file, possibly from somewhere else. Everything below is unchanged:
|
|
471
|
+
// sessions, the thread/state/memory databases and every cache still come
|
|
472
|
+
// from the shared home, which is why switching subscription does not throw
|
|
473
|
+
// the conversation away.
|
|
474
|
+
this.linkAuthFile();
|
|
376
475
|
for (const name of readdirSync(this.sharedCodexHome)) {
|
|
377
476
|
if (name === "config.toml" || name === AGEND_MCP_CLEANUP_LOCK || name.startsWith(".config.toml."))
|
|
378
477
|
continue;
|
|
478
|
+
if (name === CODEX_AUTH_FILE)
|
|
479
|
+
continue; // handled above, possibly from a profile
|
|
379
480
|
// SQLite resolves a symlinked base DB to the shared path and creates its
|
|
380
481
|
// own adjacent sidecars there. Linking sidecars separately is redundant
|
|
381
482
|
// for shared bases and corrupts the file set for private bases.
|
|
@@ -395,6 +496,62 @@ export class CodexBackend {
|
|
|
395
496
|
}
|
|
396
497
|
}
|
|
397
498
|
}
|
|
499
|
+
/**
|
|
500
|
+
* Point this home's `auth.json` at whichever login it should use.
|
|
501
|
+
*
|
|
502
|
+
* Codex refreshes the token by writing through the link rather than replacing
|
|
503
|
+
* it — observed across every instance home on a machine that has been running
|
|
504
|
+
* this arrangement for months, with the shared file's mtime moving. That is
|
|
505
|
+
* behaviour, though, not a contract: a release that starts renaming over the
|
|
506
|
+
* file would leave a real file here and quietly fork the login, with refreshes
|
|
507
|
+
* landing somewhere the profile never sees. So a real file where a link
|
|
508
|
+
* belongs is treated as exactly that — reported, and put back.
|
|
509
|
+
*/
|
|
510
|
+
linkAuthFile() {
|
|
511
|
+
const source = join(this.authSourceDir(), CODEX_AUTH_FILE);
|
|
512
|
+
const target = join(this.isolatedCodexHome, CODEX_AUTH_FILE);
|
|
513
|
+
let existing = null;
|
|
514
|
+
try {
|
|
515
|
+
existing = lstatSync(target);
|
|
516
|
+
}
|
|
517
|
+
catch { /* absent */ }
|
|
518
|
+
if (existing?.isSymbolicLink()) {
|
|
519
|
+
let current = "";
|
|
520
|
+
try {
|
|
521
|
+
current = resolve(dirname(target), readlinkSync(target));
|
|
522
|
+
}
|
|
523
|
+
catch { /* unreadable */ }
|
|
524
|
+
if (current === source)
|
|
525
|
+
return;
|
|
526
|
+
try {
|
|
527
|
+
unlinkSync(target);
|
|
528
|
+
}
|
|
529
|
+
catch { /* raced */ }
|
|
530
|
+
}
|
|
531
|
+
else if (existing) {
|
|
532
|
+
// Not a link: codex replaced it, or an older AgEnD copied it. Either way
|
|
533
|
+
// the refreshes it has been collecting are stranded in this instance's
|
|
534
|
+
// home, so say so rather than deleting them silently.
|
|
535
|
+
const stranded = `${target}.replaced-${Date.now()}`;
|
|
536
|
+
try {
|
|
537
|
+
renameSync(target, stranded);
|
|
538
|
+
console.warn(`[agend] codex replaced ${CODEX_AUTH_FILE} in ${this.isolatedCodexHome} with a real file — `
|
|
539
|
+
+ `its login was no longer shared. Kept a copy at ${stranded} and re-linked to ${source}.`);
|
|
540
|
+
}
|
|
541
|
+
catch {
|
|
542
|
+
return; // cannot move it; leave the instance working on what it has
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
if (!existsSync(source))
|
|
546
|
+
return; // not logged in yet; codex will create it
|
|
547
|
+
try {
|
|
548
|
+
symlinkSync(source, target, "file");
|
|
549
|
+
}
|
|
550
|
+
catch {
|
|
551
|
+
// EEXIST from a concurrent start is the ordinary case and means the link
|
|
552
|
+
// is already there.
|
|
553
|
+
}
|
|
554
|
+
}
|
|
398
555
|
/**
|
|
399
556
|
* One-time heal for an instance whose isolated home grew a REAL session dir
|
|
400
557
|
* (#506): merge it into the shared home without overwriting anything, and
|
|
@@ -798,6 +955,32 @@ export class CodexBackend {
|
|
|
798
955
|
catch { /* missing/stale/unknown cache format — use documented fallback */ }
|
|
799
956
|
return CODEX_FALLBACK_MODELS.map(model => ({ ...model }));
|
|
800
957
|
}
|
|
958
|
+
/**
|
|
959
|
+
* Make codex refetch its account catalog into models_cache.json.
|
|
960
|
+
*
|
|
961
|
+
* listModels() only reads that file; codex writes it. Measured on 0.156.0:
|
|
962
|
+
* `codex debug models` fetches the catalog when the cache is older than
|
|
963
|
+
* codex's own TTL (about five minutes — a 4-minute-old cache was served as
|
|
964
|
+
* is, a 6-minute-old one was refetched) and rewrites the file with a new
|
|
965
|
+
* `fetched_at`. `--bundled` would skip the fetch, so it is not passed.
|
|
966
|
+
*
|
|
967
|
+
* What this does NOT force: a cache codex fetched in the last ~5 minutes is
|
|
968
|
+
* trusted by codex and returned unchanged. There is no flag to bypass that,
|
|
969
|
+
* and a list at most five minutes old is not the staleness this exists for.
|
|
970
|
+
*
|
|
971
|
+
* Targets the same CODEX_HOME listModels() reads, so the refetch lands in the
|
|
972
|
+
* file that is read next.
|
|
973
|
+
*/
|
|
974
|
+
async refreshModelCatalog() {
|
|
975
|
+
const home = existsSync(join(this.isolatedCodexHome, "models_cache.json"))
|
|
976
|
+
? this.isolatedCodexHome
|
|
977
|
+
: this.sharedCodexHome;
|
|
978
|
+
await execFileAsync(this.binaryPath, ["debug", "models"], {
|
|
979
|
+
env: { ...process.env, CODEX_HOME: home },
|
|
980
|
+
timeout: CODEX_CATALOG_REFRESH_TIMEOUT_MS,
|
|
981
|
+
maxBuffer: CODEX_MODELS_CACHE_MAX_BYTES * 2,
|
|
982
|
+
});
|
|
983
|
+
}
|
|
801
984
|
async probeCLIEnv() {
|
|
802
985
|
// The configured model is readable from the isolated base config. Fall
|
|
803
986
|
// back to the shared user config before this instance has been prepared.
|