dsh-llm-fallbacks 0.6.11 → 0.6.12
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/index.js +10 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -3305,6 +3305,11 @@ function apply(ctx, config = defaultFallbacksConfig) {
|
|
|
3305
3305
|
const states = new FallbackStateStore();
|
|
3306
3306
|
stateStores.set(ctx, states);
|
|
3307
3307
|
const dispatchInjected = new Set();
|
|
3308
|
+
const dispatchRoles = new Map();
|
|
3309
|
+
const rememberedRole = (agentId) => {
|
|
3310
|
+
const role = dispatchRoles.get(agentId);
|
|
3311
|
+
return role !== void 0 && roleIds.has(role.trim()) ? role : void 0;
|
|
3312
|
+
};
|
|
3308
3313
|
const slotWinners = new Map();
|
|
3309
3314
|
const lastKnownPolicySettings = new Map();
|
|
3310
3315
|
async function decide(agent, turn, step, current, reason, state, failureCode) {
|
|
@@ -3313,7 +3318,7 @@ function apply(ctx, config = defaultFallbacksConfig) {
|
|
|
3313
3318
|
states.syncStep(state, turn, step);
|
|
3314
3319
|
if (state.stepFailures.switchCount >= config.maxSwitchesPerStep) return null;
|
|
3315
3320
|
}
|
|
3316
|
-
const role = resolveRole(agent, config.roles.rules, roleIds, logger.warn, servedRouteFor(agent, config));
|
|
3321
|
+
const role = rememberedRole(agent.id) ?? resolveRole(agent, config.roles.rules, roleIds, logger.warn, servedRouteFor(agent, config));
|
|
3317
3322
|
const rootTail = agent.session?.header?.origin === "subagent" ? config.rootChain : resolveEffectiveChain(config, new Date(), config.tz ?? "Asia/Shanghai");
|
|
3318
3323
|
const { all, wildcard } = resolveChainViews(config.roles.list, rootTail, role, current.provider, current.model, logger.warn);
|
|
3319
3324
|
if (all.length === 0) return null;
|
|
@@ -3473,6 +3478,7 @@ function apply(ctx, config = defaultFallbacksConfig) {
|
|
|
3473
3478
|
servedRoute: servedRouteFor(agent, config)
|
|
3474
3479
|
});
|
|
3475
3480
|
if (role !== "inherit") {
|
|
3481
|
+
dispatchRoles.set(agent.id, role);
|
|
3476
3482
|
const { all, wildcard } = resolveChainViews(config.roles.list, config.rootChain, role, seed.provider, seed.model, logger.warn);
|
|
3477
3483
|
let to;
|
|
3478
3484
|
if (policy.state === "enabled") {
|
|
@@ -3529,6 +3535,7 @@ function apply(ctx, config = defaultFallbacksConfig) {
|
|
|
3529
3535
|
ctx.on("agent/disposed", ({ agent }) => {
|
|
3530
3536
|
states.delete(agent.id);
|
|
3531
3537
|
dispatchInjected.delete(agent.id);
|
|
3538
|
+
dispatchRoles.delete(agent.id);
|
|
3532
3539
|
slotWinners.delete(agent.id);
|
|
3533
3540
|
blockedAttemptMap.delete(agent.id);
|
|
3534
3541
|
chainHeadMap.delete(agent.id);
|
|
@@ -3553,6 +3560,7 @@ function apply(ctx, config = defaultFallbacksConfig) {
|
|
|
3553
3560
|
ctx.effect(() => () => {
|
|
3554
3561
|
states.clear();
|
|
3555
3562
|
dispatchInjected.clear();
|
|
3563
|
+
dispatchRoles.clear();
|
|
3556
3564
|
slotWinners.clear();
|
|
3557
3565
|
blockedAttemptMap.clear();
|
|
3558
3566
|
chainHeadMap.clear();
|
|
@@ -3564,7 +3572,7 @@ function apply(ctx, config = defaultFallbacksConfig) {
|
|
|
3564
3572
|
const fallbacksCommandController = {
|
|
3565
3573
|
getSnapshot(agent) {
|
|
3566
3574
|
const config = source();
|
|
3567
|
-
const role = resolveRole(agent, config.roles.rules, roleIds, logger.warn, servedRouteFor(agent, config));
|
|
3575
|
+
const role = rememberedRole(agent.id) ?? resolveRole(agent, config.roles.rules, roleIds, logger.warn, servedRouteFor(agent, config));
|
|
3568
3576
|
const state = states.peek(agent.id);
|
|
3569
3577
|
const recovery = config.recovery ?? "timer";
|
|
3570
3578
|
if (state !== void 0 && recovery === "half-open") states.syncRecovery(state, Date.now(), recovery);
|