ocmm 0.5.4 → 0.6.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/.codex/agents/dw-builder.toml +1 -1
- package/.codex/agents/dw-clarifier.toml +1 -1
- package/.codex/agents/dw-code-search.toml +1 -1
- package/.codex/agents/dw-coding.toml +1 -1
- package/.codex/agents/dw-complex.toml +1 -1
- package/.codex/agents/dw-creative.toml +1 -1
- package/.codex/agents/dw-deep.toml +1 -1
- package/.codex/agents/dw-doc-search.toml +1 -1
- package/.codex/agents/dw-documenting.toml +1 -1
- package/.codex/agents/dw-explore.toml +1 -1
- package/.codex/agents/dw-frontend.toml +1 -1
- package/.codex/agents/dw-hard-reasoning.toml +1 -1
- package/.codex/agents/dw-media-reader.toml +1 -1
- package/.codex/agents/dw-normal-task.toml +1 -1
- package/.codex/agents/dw-oracle-2nd.toml +8 -0
- package/.codex/agents/dw-oracle.toml +1 -1
- package/.codex/agents/dw-orchestrator.toml +1 -1
- package/.codex/agents/dw-plan-critic.toml +1 -1
- package/.codex/agents/dw-planner.toml +1 -1
- package/.codex/agents/dw-quick.toml +1 -1
- package/.codex/agents/dw-research.toml +1 -1
- package/.codex/agents/dw-reviewer.toml +1 -1
- package/README.md +158 -13
- package/dist/cli/shim.d.ts +4 -2
- package/dist/cli/shim.js +26 -11
- package/dist/cli/shim.js.map +1 -1
- package/dist/codex/plugin-generator.js +82 -56
- package/dist/codex/plugin-generator.js.map +1 -1
- package/dist/config/load.d.ts +32 -23
- package/dist/config/load.js +384 -90
- package/dist/config/load.js.map +1 -1
- package/dist/config/merge.d.ts +18 -0
- package/dist/config/merge.js +46 -0
- package/dist/config/merge.js.map +1 -0
- package/dist/config/normalize.d.ts +1 -0
- package/dist/config/normalize.js +22 -16
- package/dist/config/normalize.js.map +1 -1
- package/dist/config/profile-aliases.d.ts +12 -0
- package/dist/config/profile-aliases.js +127 -0
- package/dist/config/profile-aliases.js.map +1 -0
- package/dist/config/profile-types.d.ts +13 -0
- package/dist/config/profile-types.js +2 -0
- package/dist/config/profile-types.js.map +1 -0
- package/dist/config/review-agent-migration.d.ts +89 -0
- package/dist/config/review-agent-migration.js +237 -0
- package/dist/config/review-agent-migration.js.map +1 -0
- package/dist/config/schema.d.ts +1364 -222
- package/dist/config/schema.js +169 -37
- package/dist/config/schema.js.map +1 -1
- package/dist/config/tolerant-parse.d.ts +41 -0
- package/dist/config/tolerant-parse.js +164 -0
- package/dist/config/tolerant-parse.js.map +1 -0
- package/dist/data/agents.d.ts +1 -1
- package/dist/data/agents.js +7 -7
- package/dist/data/agents.js.map +1 -1
- package/dist/hooks/chat-params.d.ts +2 -0
- package/dist/hooks/chat-params.js +113 -4
- package/dist/hooks/chat-params.js.map +1 -1
- package/dist/hooks/config.d.ts +14 -2
- package/dist/hooks/config.js +538 -60
- package/dist/hooks/config.js.map +1 -1
- package/dist/hooks/event.d.ts +3 -11
- package/dist/hooks/event.js +5 -9
- package/dist/hooks/event.js.map +1 -1
- package/dist/index.js +21 -14
- package/dist/index.js.map +1 -1
- package/dist/permissions/index.d.ts +3 -0
- package/dist/permissions/index.js +43 -28
- package/dist/permissions/index.js.map +1 -1
- package/dist/review-agents/expand.d.ts +36 -0
- package/dist/review-agents/expand.js +157 -0
- package/dist/review-agents/expand.js.map +1 -0
- package/dist/review-agents/names.d.ts +16 -0
- package/dist/review-agents/names.js +55 -0
- package/dist/review-agents/names.js.map +1 -0
- package/dist/routing/effective-route.d.ts +19 -0
- package/dist/routing/effective-route.js +133 -0
- package/dist/routing/effective-route.js.map +1 -0
- package/dist/routing/model-upgrades.d.ts +5 -0
- package/dist/routing/model-upgrades.js +59 -12
- package/dist/routing/model-upgrades.js.map +1 -1
- package/dist/routing/resolver.d.ts +8 -1
- package/dist/routing/resolver.js +29 -9
- package/dist/routing/resolver.js.map +1 -1
- package/dist/routing/route-registry.d.ts +13 -0
- package/dist/routing/route-registry.js +84 -0
- package/dist/routing/route-registry.js.map +1 -0
- package/dist/runtime-fallback/dispatcher.d.ts +1 -0
- package/dist/runtime-fallback/dispatcher.js +7 -5
- package/dist/runtime-fallback/dispatcher.js.map +1 -1
- package/dist/runtime-fallback/error-classifier.d.ts +3 -1
- package/dist/runtime-fallback/error-classifier.js +135 -1
- package/dist/runtime-fallback/error-classifier.js.map +1 -1
- package/dist/runtime-fallback/event-handler-generic-fallback.d.ts +26 -0
- package/dist/runtime-fallback/event-handler-generic-fallback.js +54 -0
- package/dist/runtime-fallback/event-handler-generic-fallback.js.map +1 -0
- package/dist/runtime-fallback/event-handler-idle-continuation.d.ts +9 -0
- package/dist/runtime-fallback/event-handler-idle-continuation.js +48 -0
- package/dist/runtime-fallback/event-handler-idle-continuation.js.map +1 -0
- package/dist/runtime-fallback/event-handler-support.d.ts +39 -0
- package/dist/runtime-fallback/event-handler-support.js +194 -0
- package/dist/runtime-fallback/event-handler-support.js.map +1 -0
- package/dist/runtime-fallback/event-handler-test-fixtures.d.ts +874 -0
- package/dist/runtime-fallback/event-handler-test-fixtures.js +150 -0
- package/dist/runtime-fallback/event-handler-test-fixtures.js.map +1 -0
- package/dist/runtime-fallback/event-handler.d.ts +13 -1
- package/dist/runtime-fallback/event-handler.js +334 -192
- package/dist/runtime-fallback/event-handler.js.map +1 -1
- package/dist/runtime-fallback/fallback-state.d.ts +8 -5
- package/dist/runtime-fallback/fallback-state.js +9 -6
- package/dist/runtime-fallback/fallback-state.js.map +1 -1
- package/dist/runtime-fallback/index.d.ts +21 -1
- package/dist/runtime-fallback/index.js +7 -1
- package/dist/runtime-fallback/index.js.map +1 -1
- package/dist/runtime-fallback/interruption-output-adapter.d.ts +7 -0
- package/dist/runtime-fallback/interruption-output-adapter.js +91 -0
- package/dist/runtime-fallback/interruption-output-adapter.js.map +1 -0
- package/dist/runtime-fallback/subagent-429-controller-fixture.d.ts +105 -0
- package/dist/runtime-fallback/subagent-429-controller-fixture.js +116 -0
- package/dist/runtime-fallback/subagent-429-controller-fixture.js.map +1 -0
- package/dist/runtime-fallback/subagent-429-controller.d.ts +167 -0
- package/dist/runtime-fallback/subagent-429-controller.js +334 -0
- package/dist/runtime-fallback/subagent-429-controller.js.map +1 -0
- package/dist/runtime-fallback/subagent-429-policy.d.ts +13 -0
- package/dist/runtime-fallback/subagent-429-policy.js +37 -0
- package/dist/runtime-fallback/subagent-429-policy.js.map +1 -0
- package/dist/runtime-fallback/subagent-429-session.d.ts +48 -0
- package/dist/runtime-fallback/subagent-429-session.js +316 -0
- package/dist/runtime-fallback/subagent-429-session.js.map +1 -0
- package/dist/shared/opencode-events.d.ts +22 -0
- package/dist/shared/opencode-events.js +75 -0
- package/dist/shared/opencode-events.js.map +1 -0
- package/dist/shared/types.d.ts +12 -1
- package/package.json +1 -1
- package/plugins/deepwork/.codex-plugin/plugin.json +1 -1
- package/plugins/deepwork/README.md +2 -1
- package/plugins/deepwork/agents/dw-builder.toml +1 -1
- package/plugins/deepwork/agents/dw-clarifier.toml +1 -1
- package/plugins/deepwork/agents/dw-code-search.toml +1 -1
- package/plugins/deepwork/agents/dw-coding.toml +1 -1
- package/plugins/deepwork/agents/dw-complex.toml +1 -1
- package/plugins/deepwork/agents/dw-creative.toml +1 -1
- package/plugins/deepwork/agents/dw-deep.toml +1 -1
- package/plugins/deepwork/agents/dw-doc-search.toml +1 -1
- package/plugins/deepwork/agents/dw-documenting.toml +1 -1
- package/plugins/deepwork/agents/dw-explore.toml +1 -1
- package/plugins/deepwork/agents/dw-frontend.toml +1 -1
- package/plugins/deepwork/agents/dw-hard-reasoning.toml +1 -1
- package/plugins/deepwork/agents/dw-media-reader.toml +1 -1
- package/plugins/deepwork/agents/dw-normal-task.toml +1 -1
- package/plugins/deepwork/agents/dw-oracle-2nd.toml +8 -0
- package/plugins/deepwork/agents/dw-oracle.toml +1 -1
- package/plugins/deepwork/agents/dw-orchestrator.toml +1 -1
- package/plugins/deepwork/agents/dw-plan-critic.toml +1 -1
- package/plugins/deepwork/agents/dw-planner.toml +1 -1
- package/plugins/deepwork/agents/dw-quick.toml +1 -1
- package/plugins/deepwork/agents/dw-research.toml +1 -1
- package/plugins/deepwork/agents/dw-reviewer.toml +1 -1
- package/plugins/deepwork/dist/cli/shim.d.ts +4 -2
- package/plugins/deepwork/dist/cli/shim.js +26 -11
- package/plugins/deepwork/dist/cli/shim.js.map +1 -1
- package/plugins/deepwork/dist/shared/opencode-events.d.ts +22 -0
- package/plugins/deepwork/dist/shared/opencode-events.js +75 -0
- package/plugins/deepwork/dist/shared/opencode-events.js.map +1 -0
- package/plugins/deepwork/dist/shared/types.d.ts +12 -1
- package/plugins/deepwork/package.json +1 -1
- package/plugins/deepwork/skills/deepwork/SKILL.md +30 -14
- package/plugins/deepwork/skills/deepwork-requesting-code-review/SKILL.md +53 -31
- package/plugins/deepwork/skills/deepwork-requesting-code-review/code-reviewer.md +11 -7
- package/plugins/deepwork/skills/deepwork-subagent-driven-development/SKILL.md +28 -19
- package/plugins/deepwork/skills/deepwork-subagent-driven-development/implementer-prompt.md +10 -3
- package/prompts/codex/agents/clarifier.md +4 -0
- package/prompts/codex/agents/orchestrator.md +12 -2
- package/prompts/codex/agents/plan-critic.md +4 -0
- package/prompts/codex/agents/planner.md +15 -10
- package/prompts/codex/agents/reviewer.md +8 -2
- package/prompts/codex/deepwork/gpt-5.6.md +20 -37
- package/prompts/omo/agents/clarifier.md +4 -0
- package/prompts/omo/agents/orchestrator.md +11 -0
- package/prompts/omo/agents/plan-critic.md +4 -0
- package/prompts/omo/agents/planner.md +15 -3
- package/prompts/omo/agents/reviewer.md +8 -2
- package/prompts/omo/deepwork/gpt-5.6.md +20 -37
- package/prompts/v1/agents/clarifier.md +4 -0
- package/prompts/v1/agents/orchestrator.md +12 -2
- package/prompts/v1/agents/plan-critic.md +4 -0
- package/prompts/v1/agents/planner.md +15 -10
- package/prompts/v1/agents/reviewer.md +8 -2
- package/prompts/v1/deepwork/gpt-5.6.md +20 -37
- package/skills/v1/requesting-code-review/SKILL.md +53 -31
- package/skills/v1/requesting-code-review/code-reviewer.md +11 -7
- package/skills/v1/subagent-driven-development/SKILL.md +28 -19
- package/skills/v1/subagent-driven-development/implementer-prompt.md +10 -3
- package/.codex/agents/dw-oracle-high.toml +0 -8
- package/plugins/deepwork/agents/dw-oracle-high.toml +0 -8
|
@@ -1,70 +1,102 @@
|
|
|
1
1
|
import { classifyError } from "./error-classifier.js";
|
|
2
|
-
import {
|
|
2
|
+
import { markModelFailed, modelKey, peekNextFallback, commitFallback, } from "./fallback-state.js";
|
|
3
3
|
import { dispatchFallbackRetry, isDispatchInFlight } from "./dispatcher.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { resolveEffectiveRequirement } from "../routing/resolver.js";
|
|
5
|
+
import { createEffectiveRouteRegistry } from "../routing/route-registry.js";
|
|
6
6
|
import { clearSessionIntent as defaultClearSessionIntent } from "../hooks/chat-message.js";
|
|
7
|
-
import {
|
|
8
|
-
import { hasUnfinishedTodos } from "./todo-reader.js";
|
|
7
|
+
import { markSessionAborted, clearSession } from "./idle-state.js";
|
|
9
8
|
import { isRecord, log } from "../shared/logger.js";
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
return true;
|
|
21
|
-
if (error.isAbort === true)
|
|
22
|
-
return true;
|
|
23
|
-
return false;
|
|
24
|
-
}
|
|
25
|
-
function resolveSessionID(props) {
|
|
26
|
-
if (!isRecord(props))
|
|
27
|
-
return "";
|
|
28
|
-
if (typeof props.sessionID === "string")
|
|
29
|
-
return props.sessionID;
|
|
30
|
-
if (isRecord(props.session) && typeof props.session.id === "string") {
|
|
31
|
-
return props.session.id;
|
|
32
|
-
}
|
|
33
|
-
return "";
|
|
34
|
-
}
|
|
35
|
-
function resolveAgent(props) {
|
|
36
|
-
if (!isRecord(props))
|
|
37
|
-
return undefined;
|
|
38
|
-
if (typeof props.agent === "string")
|
|
39
|
-
return props.agent;
|
|
40
|
-
if (isRecord(props.agent) && typeof props.agent.name === "string") {
|
|
41
|
-
return props.agent.name;
|
|
42
|
-
}
|
|
43
|
-
return undefined;
|
|
44
|
-
}
|
|
45
|
-
function resolveEventModel(props) {
|
|
46
|
-
if (!isRecord(props))
|
|
47
|
-
return null;
|
|
48
|
-
const model = props.model;
|
|
49
|
-
if (!isRecord(model))
|
|
50
|
-
return null;
|
|
51
|
-
const providerID = typeof model.providerID === "string" ? model.providerID : "";
|
|
52
|
-
const modelID = typeof model.modelID === "string" ? model.modelID : "";
|
|
53
|
-
if (!providerID || !modelID)
|
|
54
|
-
return null;
|
|
55
|
-
return { providerID, modelID };
|
|
56
|
-
}
|
|
57
|
-
function parseRegisteredModel(value) {
|
|
58
|
-
if (!value)
|
|
59
|
-
return null;
|
|
60
|
-
const slash = value.indexOf("/");
|
|
61
|
-
if (slash <= 0 || slash === value.length - 1)
|
|
62
|
-
return null;
|
|
63
|
-
return { providerID: value.slice(0, slash), modelID: value.slice(slash + 1) };
|
|
64
|
-
}
|
|
65
|
-
export function createRuntimeFallbackEventHandler(deps) {
|
|
9
|
+
import { createSubagent429Controller, } from "./subagent-429-controller.js";
|
|
10
|
+
import { applyRequirementDefaults, chainHeadIdentity, createRuntimeFallbackSessionLifecycle, isExplicitRuntimeFallbackAbort, getOrCreateFallbackState, isRuntimeFallbackAbort, parseModelIdentity, resolveParentSessionID, resolveEventModelIdentity, resolveRuntimeFallbackAgent, resolveRuntimeFallbackSessionID, resolveRetryTarget, } from "./event-handler-support.js";
|
|
11
|
+
import { runGenericFallback } from "./event-handler-generic-fallback.js";
|
|
12
|
+
import { handleIdleContinuation } from "./event-handler-idle-continuation.js";
|
|
13
|
+
import { canonicalizeReviewAgentName } from "../review-agents/names.js";
|
|
14
|
+
import { resolveSessionLineage, resolveTaskPartInterruption, } from "../shared/opencode-events.js";
|
|
15
|
+
import { createSubagentInterruptionOutputAdapter } from "./interruption-output-adapter.js";
|
|
16
|
+
export const SUPPRESSION_TOMBSTONE_GRACE_MS = 5 * 60_000;
|
|
17
|
+
export const MAX_SUPPRESSION_TOMBSTONES = 256;
|
|
18
|
+
export function createRuntimeFallbackRuntime(deps) {
|
|
66
19
|
const sessionStates = new Map();
|
|
67
|
-
|
|
20
|
+
const clock = deps.clock ?? Date.now;
|
|
21
|
+
const routeRegistry = deps.routeRegistry ?? createEffectiveRouteRegistry();
|
|
22
|
+
// The subagent-interruption-recovery hook gates only the durable correlation
|
|
23
|
+
// calls (recordSessionLineage, recordTaskPart, markExplicitAbort). It never
|
|
24
|
+
// gates the existing 429/generic fallback/lifecycle/idle behavior.
|
|
25
|
+
const interruptionRecoveryEnabled = () => !deps.getConfig().disabledHooks.includes("subagent-interruption-recovery");
|
|
26
|
+
const lifecycle = createRuntimeFallbackSessionLifecycle(deps.client);
|
|
27
|
+
// Lifecycle-scoped suppression tombstone: an explicit abort or session.deleted
|
|
28
|
+
// for a child blocks late retryable session.error events for the bounded grace
|
|
29
|
+
// window, even when controller state is absent (hook disabled, onDeleted
|
|
30
|
+
// already evicted the controller record) and runtime fallback is enabled.
|
|
31
|
+
// A subsequent legitimate session.created with the same ID clears the
|
|
32
|
+
// tombstone so delete->recreate can dispatch normally. A duplicate active
|
|
33
|
+
// creation (session still tracked by the lifecycle) does NOT clear it - that
|
|
34
|
+
// matches the existing idempotent duplicate-create semantics, where a new
|
|
35
|
+
// session.created for an already-active session is a replay, not a restart.
|
|
36
|
+
const suppressedSessions = new Map();
|
|
37
|
+
const pruneSuppressedSessions = () => {
|
|
38
|
+
const now = clock();
|
|
39
|
+
for (const [sessionID, suppressedAt] of suppressedSessions) {
|
|
40
|
+
if (now - suppressedAt >= SUPPRESSION_TOMBSTONE_GRACE_MS)
|
|
41
|
+
suppressedSessions.delete(sessionID);
|
|
42
|
+
}
|
|
43
|
+
if (suppressedSessions.size <= MAX_SUPPRESSION_TOMBSTONES)
|
|
44
|
+
return;
|
|
45
|
+
const oldest = [...suppressedSessions.entries()]
|
|
46
|
+
.sort(([, left], [, right]) => left - right)
|
|
47
|
+
.slice(0, suppressedSessions.size - MAX_SUPPRESSION_TOMBSTONES);
|
|
48
|
+
for (const [sessionID] of oldest)
|
|
49
|
+
suppressedSessions.delete(sessionID);
|
|
50
|
+
};
|
|
51
|
+
const suppressSession = (sessionID) => {
|
|
52
|
+
pruneSuppressedSessions();
|
|
53
|
+
suppressedSessions.set(sessionID, clock());
|
|
54
|
+
pruneSuppressedSessions();
|
|
55
|
+
};
|
|
56
|
+
const clearSuppression = (sessionID) => {
|
|
57
|
+
pruneSuppressedSessions();
|
|
58
|
+
suppressedSessions.delete(sessionID);
|
|
59
|
+
};
|
|
60
|
+
const isSuppressed = (sessionID) => {
|
|
61
|
+
pruneSuppressedSessions();
|
|
62
|
+
return suppressedSessions.has(sessionID);
|
|
63
|
+
};
|
|
64
|
+
const controller = createSubagent429Controller({
|
|
65
|
+
...(deps.scheduler === undefined ? {} : { scheduler: deps.scheduler }),
|
|
66
|
+
clock,
|
|
67
|
+
isCurrentSnapshot: routeRegistry.isCurrentSnapshot,
|
|
68
|
+
...(deps.random === undefined ? {} : { random: deps.random }),
|
|
69
|
+
logger: log,
|
|
70
|
+
...(deps.client === undefined
|
|
71
|
+
? {}
|
|
72
|
+
: {
|
|
73
|
+
dispatchRetry: async ({ sessionID, snapshotId, agent, target, reason }) => {
|
|
74
|
+
if (!routeRegistry.isCurrentSnapshot(snapshotId))
|
|
75
|
+
return false;
|
|
76
|
+
const generation = lifecycle.currentGeneration(sessionID);
|
|
77
|
+
await lifecycle.waitForStaleDispatches(sessionID, generation);
|
|
78
|
+
if (!lifecycle.isCurrent(sessionID, generation) || !routeRegistry.isCurrentSnapshot(snapshotId))
|
|
79
|
+
return false;
|
|
80
|
+
return lifecycle.trackDispatch(sessionID, generation, dispatchFallbackRetry({
|
|
81
|
+
client: lifecycle.guardedClient(sessionID, generation, () => routeRegistry.isCurrentSnapshot(snapshotId)),
|
|
82
|
+
sessionID,
|
|
83
|
+
...(deps.directory === undefined ? {} : { directory: deps.directory }),
|
|
84
|
+
...(agent === undefined ? {} : { agent }),
|
|
85
|
+
newEntry: target.entry,
|
|
86
|
+
reason,
|
|
87
|
+
abortBeforeDispatch: false,
|
|
88
|
+
}));
|
|
89
|
+
},
|
|
90
|
+
}),
|
|
91
|
+
});
|
|
92
|
+
const genericFallbackCtx = {
|
|
93
|
+
lifecycle,
|
|
94
|
+
isCurrentSnapshot: routeRegistry.isCurrentSnapshot,
|
|
95
|
+
...(deps.client === undefined ? {} : { client: deps.client }),
|
|
96
|
+
...(deps.directory === undefined ? {} : { directory: deps.directory }),
|
|
97
|
+
clock,
|
|
98
|
+
};
|
|
99
|
+
const event = async (raw) => {
|
|
68
100
|
if (!isRecord(raw))
|
|
69
101
|
return;
|
|
70
102
|
const event = isRecord(raw.event) ? raw.event : raw;
|
|
@@ -72,188 +104,298 @@ export function createRuntimeFallbackEventHandler(deps) {
|
|
|
72
104
|
if (!eventType)
|
|
73
105
|
return;
|
|
74
106
|
const props = isRecord(event.properties) ? event.properties : event;
|
|
75
|
-
const sessionID =
|
|
107
|
+
const sessionID = resolveRuntimeFallbackSessionID(props);
|
|
108
|
+
const routeSnapshot = routeRegistry.snapshot();
|
|
76
109
|
if (eventType === "session.created") {
|
|
77
|
-
|
|
78
|
-
|
|
110
|
+
// Decode lineage via the shared decoder so runtime fallback, permissions,
|
|
111
|
+
// and interruption correlation share one parent-ID spelling policy.
|
|
112
|
+
const lineage = resolveSessionLineage(raw);
|
|
113
|
+
if (lineage && lineage.sessionID) {
|
|
114
|
+
const childSessionID = lineage.sessionID;
|
|
115
|
+
if (!lifecycle.hasSession(childSessionID)) {
|
|
116
|
+
// Legitimate (re)creation: this is either a fresh session or a
|
|
117
|
+
// delete->recreate cycle. Either way, clear any prior suppression
|
|
118
|
+
// tombstone so a later retryable error can dispatch normally.
|
|
119
|
+
// A duplicate-active-create (session still tracked) skips this
|
|
120
|
+
// branch and preserves the tombstone, matching the idempotent
|
|
121
|
+
// duplicate-create semantics.
|
|
122
|
+
clearSuppression(childSessionID);
|
|
123
|
+
lifecycle.beginSession(childSessionID);
|
|
124
|
+
sessionStates.delete(childSessionID);
|
|
125
|
+
controller.onSessionCreated(childSessionID, lineage.parentSessionID !== undefined, routeSnapshot.snapshotId);
|
|
126
|
+
// When interruption recovery is enabled and a parent exists, record
|
|
127
|
+
// the durable lineage. This does NOT dispatch and is additive.
|
|
128
|
+
if (interruptionRecoveryEnabled() && lineage.parentSessionID !== undefined) {
|
|
129
|
+
controller.recordSessionLineage({
|
|
130
|
+
childSessionID,
|
|
131
|
+
parentSessionID: lineage.parentSessionID,
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
else if (sessionID) {
|
|
137
|
+
// Fallback: sessionID resolved through the legacy path even if the
|
|
138
|
+
// shared decoder did not produce a lineage. Preserve prior behavior.
|
|
139
|
+
if (!lifecycle.hasSession(sessionID)) {
|
|
140
|
+
clearSuppression(sessionID);
|
|
141
|
+
lifecycle.beginSession(sessionID);
|
|
142
|
+
sessionStates.delete(sessionID);
|
|
143
|
+
controller.onSessionCreated(sessionID, resolveParentSessionID(props) !== undefined, routeSnapshot.snapshotId);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
79
146
|
return;
|
|
80
147
|
}
|
|
81
148
|
if (eventType === "session.deleted") {
|
|
82
149
|
if (sessionID) {
|
|
150
|
+
// Call the existing controller.onDeleted() before other cache cleanup
|
|
151
|
+
// so the durable correlation is invalidated before any idle continuations.
|
|
152
|
+
lifecycle.invalidateSession(sessionID);
|
|
153
|
+
controller.onDeleted(sessionID);
|
|
83
154
|
(deps.clearSessionIntent ?? defaultClearSessionIntent)(sessionID);
|
|
84
155
|
sessionStates.delete(sessionID);
|
|
85
156
|
if (deps.idleState)
|
|
86
157
|
clearSession(deps.idleState, sessionID);
|
|
158
|
+
// Record a bounded lifecycle tombstone so late retryable session.error
|
|
159
|
+
// events cannot fall through to dedicated 429 or generic fallback. A
|
|
160
|
+
// legitimate session.created with the same ID clears it immediately.
|
|
161
|
+
suppressSession(sessionID);
|
|
87
162
|
}
|
|
88
163
|
return;
|
|
89
164
|
}
|
|
90
165
|
if (eventType === "session.idle") {
|
|
91
166
|
if (sessionID) {
|
|
167
|
+
const idleResult = controller.onIdle(sessionID, routeSnapshot.snapshotId);
|
|
92
168
|
(deps.clearSessionIntent ?? defaultClearSessionIntent)(sessionID);
|
|
93
|
-
// Do NOT delete sessionStates here
|
|
169
|
+
// Do NOT delete sessionStates here - the session may still be live
|
|
94
170
|
// and a later session.error must continue from existing fallback
|
|
95
171
|
// state (fallbackIndex, activeModel, attempts). Only session.deleted
|
|
96
172
|
// and session.created reset fallback state.
|
|
97
|
-
|
|
173
|
+
if (!idleResult.suppressIdleContinuation) {
|
|
174
|
+
await handleIdleContinuation(deps, sessionID);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
// Process parent-side task tool part interruptions BEFORE the generic
|
|
180
|
+
// session.error gate. This event must NEVER dispatch on its own - it
|
|
181
|
+
// only records durable evidence so a later retryable child error can
|
|
182
|
+
// be correlated and dispatched through the existing 429/generic paths.
|
|
183
|
+
if (eventType === "message.part.updated") {
|
|
184
|
+
if (interruptionRecoveryEnabled()) {
|
|
185
|
+
const evidence = resolveTaskPartInterruption(raw);
|
|
186
|
+
if (evidence) {
|
|
187
|
+
// Canonicalize the evidence agent (e.g. oracle-second -> oracle-2nd).
|
|
188
|
+
const canonicalAgent = evidence.agent === undefined
|
|
189
|
+
? undefined
|
|
190
|
+
: (canonicalizeReviewAgentName(evidence.agent) ?? evidence.agent);
|
|
191
|
+
controller.recordTaskPart({
|
|
192
|
+
childSessionID: evidence.childSessionID,
|
|
193
|
+
parentSessionID: evidence.parentSessionID,
|
|
194
|
+
...(evidence.parentPartID === undefined ? {} : { parentPartID: evidence.parentPartID }),
|
|
195
|
+
...(evidence.callID === undefined ? {} : { callID: evidence.callID }),
|
|
196
|
+
...(canonicalAgent === undefined ? {} : { agent: canonicalAgent }),
|
|
197
|
+
...(evidence.taskID === undefined ? {} : { taskID: evidence.taskID }),
|
|
198
|
+
terminalTaskErrorObserved: true,
|
|
199
|
+
});
|
|
200
|
+
}
|
|
98
201
|
}
|
|
99
202
|
return;
|
|
100
203
|
}
|
|
101
204
|
if (eventType !== "session.error")
|
|
102
205
|
return;
|
|
103
206
|
const cfg = deps.getConfig();
|
|
207
|
+
// Evaluate explicit abort BEFORE the runtimeFallback.enabled early return.
|
|
208
|
+
// This ensures that even when runtime fallback is disabled, an explicit
|
|
209
|
+
// abort cancels any pending 429 gate and records abort evidence so a
|
|
210
|
+
// misleading output notice cannot be produced for an aborted child.
|
|
211
|
+
const earlyError = props.error;
|
|
212
|
+
if (isRuntimeFallbackAbort(earlyError)) {
|
|
213
|
+
if (sessionID && isExplicitRuntimeFallbackAbort(earlyError)) {
|
|
214
|
+
if (interruptionRecoveryEnabled()) {
|
|
215
|
+
controller.markExplicitAbort(sessionID);
|
|
216
|
+
}
|
|
217
|
+
if (deps.idleState) {
|
|
218
|
+
markSessionAborted(deps.idleState, sessionID);
|
|
219
|
+
}
|
|
220
|
+
// Record a bounded lifecycle tombstone so late retryable session.error
|
|
221
|
+
// events cannot fall through to dedicated 429 or generic fallback. A
|
|
222
|
+
// legitimate session.created with the same ID clears it immediately.
|
|
223
|
+
suppressSession(sessionID);
|
|
224
|
+
}
|
|
225
|
+
log.debug(`session.error abort (likely our own); skipping`);
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
104
228
|
if (!cfg.runtimeFallback.enabled)
|
|
105
229
|
return;
|
|
106
230
|
if (!sessionID) {
|
|
107
231
|
log.debug("session.error without sessionID; skipping");
|
|
108
232
|
return;
|
|
109
233
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
}
|
|
118
|
-
if (isDispatchInFlight(sessionID)) {
|
|
119
|
-
log.debug(`session.error while retry in flight; skipping`);
|
|
234
|
+
// Lifecycle tombstone: an explicit abort or session.deleted blocks late
|
|
235
|
+
// retryable session.error events during its bounded grace window, even
|
|
236
|
+
// when controller state is absent (hook disabled, onDeleted already
|
|
237
|
+
// evicted the controller record). This blocks both fallback paths before
|
|
238
|
+
// any dispatch attempt.
|
|
239
|
+
if (isSuppressed(sessionID)) {
|
|
240
|
+
log.debug(`session.error for suppressed session=${sessionID.slice(0, 16)}…; skipping`);
|
|
120
241
|
return;
|
|
121
242
|
}
|
|
122
|
-
const
|
|
123
|
-
const
|
|
243
|
+
const error = props.error;
|
|
244
|
+
const classification = classifyError(error, cfg.runtimeFallback, clock());
|
|
245
|
+
// Resolve the child agent from the event payload; if absent, fall back to
|
|
246
|
+
// the durable correlation's recorded agent so a child session whose
|
|
247
|
+
// session.error omits the agent can still be matched for retry.
|
|
248
|
+
const eventAgent = resolveRuntimeFallbackAgent(props);
|
|
249
|
+
const correlationAgent = controller.getInterruptionCorrelation({ childSessionID: sessionID })?.agent;
|
|
250
|
+
const agent = eventAgent ?? correlationAgent;
|
|
124
251
|
log.info(`session.error: session=${sessionID.slice(0, 16)}… agent=${agent ?? "<none>"} ` +
|
|
125
252
|
`retryable=${classification.retryable} reason=${classification.reason}`);
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
253
|
+
const publishedRoute = routeSnapshot.published && agent
|
|
254
|
+
? routeSnapshot.routes.get(agent)
|
|
255
|
+
: undefined;
|
|
256
|
+
const effective = !routeSnapshot.published && agent
|
|
129
257
|
? resolveEffectiveRequirement({
|
|
130
258
|
agentName: agent,
|
|
131
259
|
agentsConfig: cfg.agents,
|
|
132
260
|
categoriesConfig: cfg.categories,
|
|
261
|
+
disabledAgents: cfg.disabledAgents,
|
|
133
262
|
})
|
|
134
263
|
: null;
|
|
135
|
-
const requirement =
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
264
|
+
const requirement = routeSnapshot.published
|
|
265
|
+
? publishedRoute?.requirement ?? null
|
|
266
|
+
: effective?.requirement ?? null;
|
|
267
|
+
const routeModel = routeSnapshot.published ? parseModelIdentity(publishedRoute?.model) : null;
|
|
268
|
+
// Once the classification is retryable and a known effective agent
|
|
269
|
+
// requirement exists, record durable retryable-child-error evidence. This
|
|
270
|
+
// does NOT dispatch - the existing on429()/generic fallback paths below
|
|
271
|
+
// remain the only dispatch paths. It only flips the retryableChildError
|
|
272
|
+
// boolean on the durable correlation so a parent-side task evidence
|
|
273
|
+
// already recorded (or arriving later) can be correlated.
|
|
274
|
+
if (interruptionRecoveryEnabled() && classification.retryable && requirement) {
|
|
275
|
+
controller.markRetryableChildError(sessionID);
|
|
139
276
|
}
|
|
140
|
-
const eventModel =
|
|
141
|
-
|
|
142
|
-
|
|
277
|
+
const eventModel = resolveEventModelIdentity(props);
|
|
278
|
+
const inFlight = isDispatchInFlight(sessionID);
|
|
279
|
+
const activeDispatchTarget = !eventModel && inFlight
|
|
280
|
+
? controller.getActiveDispatchTarget(sessionID, routeSnapshot.snapshotId)
|
|
281
|
+
: undefined;
|
|
282
|
+
const headModel = chainHeadIdentity(requirement);
|
|
143
283
|
let state = sessionStates.get(sessionID);
|
|
144
|
-
if (
|
|
145
|
-
const
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
if (!initialModel) {
|
|
154
|
-
log.info(`could not determine initial model for agent=${agent ?? "<none>"}; skipping`);
|
|
155
|
-
return;
|
|
284
|
+
if (classification.retryable && requirement && requirement.fallbackChain.length > 0) {
|
|
285
|
+
const initialModel = eventModel
|
|
286
|
+
?? (activeDispatchTarget
|
|
287
|
+
? { providerID: activeDispatchTarget.providerID, modelID: activeDispatchTarget.modelID }
|
|
288
|
+
: null)
|
|
289
|
+
?? routeModel
|
|
290
|
+
?? headModel;
|
|
291
|
+
if (initialModel) {
|
|
292
|
+
state = getOrCreateFallbackState(sessionStates, sessionID, requirement, initialModel, routeSnapshot.snapshotId);
|
|
156
293
|
}
|
|
157
|
-
const initialKey = modelKey(initialModel.providerID, initialModel.modelID);
|
|
158
|
-
state = createFallbackState(initialKey);
|
|
159
|
-
state.activeModel = initialKey;
|
|
160
|
-
state.fallbackIndex = requirement.fallbackChain.findIndex((entry) => entryExactlyMatchesModel(entry, initialModel.providerID, initialModel.modelID));
|
|
161
|
-
if (state.fallbackIndex < 0 && !matchRequirementSuccessor(requirement, initialModel.providerID, initialModel.modelID)) {
|
|
162
|
-
state.fallbackIndex = requirement.fallbackChain.findIndex((entry) => entryMatchesModel(entry, initialModel.providerID, initialModel.modelID));
|
|
163
|
-
}
|
|
164
|
-
sessionStates.set(sessionID, state);
|
|
165
|
-
}
|
|
166
|
-
// Priority order for the failed-model key:
|
|
167
|
-
// 1. Explicit model from the event payload.
|
|
168
|
-
// 2. The state's activeModel (previously dispatched fallback model).
|
|
169
|
-
// 3. The agent's primary fallback-chain entry (first entry).
|
|
170
|
-
let justFailedKey = null;
|
|
171
|
-
if (eventModel) {
|
|
172
|
-
justFailedKey = modelKey(eventModel.providerID, eventModel.modelID);
|
|
173
|
-
}
|
|
174
|
-
else if (state.activeModel) {
|
|
175
|
-
justFailedKey = state.activeModel;
|
|
176
|
-
}
|
|
177
|
-
else if (requirement.fallbackChain[0]) {
|
|
178
|
-
const primary = requirement.fallbackChain[0];
|
|
179
|
-
const primaryProvider = primary.providers[0] ?? "";
|
|
180
|
-
justFailedKey = modelKey(primaryProvider, primary.model);
|
|
181
|
-
}
|
|
182
|
-
if (!justFailedKey) {
|
|
183
|
-
log.info(`could not determine failed model for agent=${agent ?? "<none>"}; skipping`);
|
|
184
|
-
return;
|
|
185
294
|
}
|
|
186
|
-
|
|
187
|
-
const
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
295
|
+
const stateModel = parseModelIdentity(state?.activeModel);
|
|
296
|
+
const failedTarget = activeDispatchTarget
|
|
297
|
+
?? (eventModel ? resolveRetryTarget(requirement, eventModel) : undefined)
|
|
298
|
+
?? (stateModel ? resolveRetryTarget(requirement, stateModel) : undefined)
|
|
299
|
+
?? (headModel ? resolveRetryTarget(requirement, headModel) : undefined);
|
|
300
|
+
const genericInput = (target = failedTarget) => ({
|
|
301
|
+
sessionID,
|
|
302
|
+
generation: lifecycle.currentGeneration(sessionID),
|
|
303
|
+
...(agent === undefined ? {} : { agent }),
|
|
304
|
+
classification,
|
|
305
|
+
requirement,
|
|
306
|
+
...(state === undefined ? {} : { state }),
|
|
307
|
+
...(target === undefined ? {} : { failedTarget: target }),
|
|
308
|
+
snapshotId: routeSnapshot.snapshotId,
|
|
309
|
+
runtimeConfig: cfg.runtimeFallback,
|
|
310
|
+
});
|
|
311
|
+
const dedicated429 = classification.retryable && classification.statusCode === 429;
|
|
312
|
+
// A stale in-flight dispatch from an older generation may still hold the
|
|
313
|
+
// global sessionID lock. Let it settle, confirm this generation is still
|
|
314
|
+
// current, then re-read the lock; only a genuine in-flight dispatch skips.
|
|
315
|
+
const skipBecauseInFlight = async () => {
|
|
316
|
+
if (!inFlight)
|
|
317
|
+
return false;
|
|
318
|
+
const generation = lifecycle.currentGeneration(sessionID);
|
|
319
|
+
await lifecycle.waitForStaleDispatches(sessionID, generation);
|
|
320
|
+
if (!lifecycle.isCurrent(sessionID, generation))
|
|
321
|
+
return true;
|
|
322
|
+
return isDispatchInFlight(sessionID);
|
|
323
|
+
};
|
|
324
|
+
if (!dedicated429) {
|
|
325
|
+
const decision = controller.onOtherError({
|
|
326
|
+
sessionID,
|
|
327
|
+
snapshotId: routeSnapshot.snapshotId,
|
|
328
|
+
runGenericFallback: async (activeTarget) => {
|
|
329
|
+
if (!routeRegistry.isCurrentSnapshot(routeSnapshot.snapshotId))
|
|
330
|
+
return;
|
|
331
|
+
await runGenericFallback(genericFallbackCtx, genericInput(activeTarget));
|
|
332
|
+
},
|
|
333
|
+
});
|
|
334
|
+
if (decision.handled)
|
|
335
|
+
return;
|
|
336
|
+
if (await skipBecauseInFlight()) {
|
|
337
|
+
log.debug("session.error while generic retry is in flight; skipping");
|
|
338
|
+
return;
|
|
339
|
+
}
|
|
340
|
+
await runGenericFallback(genericFallbackCtx, genericInput());
|
|
196
341
|
return;
|
|
197
342
|
}
|
|
198
|
-
|
|
199
|
-
|
|
343
|
+
// Dedicated retries are meaningful even with a one-entry chain because
|
|
344
|
+
// they re-dispatch that exact model. They only need a non-empty chain to
|
|
345
|
+
// establish a target and later prepare a switch.
|
|
346
|
+
if (!requirement || requirement.fallbackChain.length === 0 || !state || !failedTarget) {
|
|
347
|
+
controller.onDeleted(sessionID);
|
|
200
348
|
return;
|
|
201
349
|
}
|
|
202
|
-
const
|
|
203
|
-
client: deps.client,
|
|
350
|
+
const decision = controller.on429({
|
|
204
351
|
sessionID,
|
|
205
|
-
|
|
206
|
-
...(agent
|
|
207
|
-
|
|
208
|
-
|
|
352
|
+
snapshotId: routeSnapshot.snapshotId,
|
|
353
|
+
...(agent === undefined ? {} : { agent }),
|
|
354
|
+
target: failedTarget,
|
|
355
|
+
classification: {
|
|
356
|
+
reason: classification.reason,
|
|
357
|
+
...(classification.recoveryDelayMs === undefined ? {} : { recoveryDelayMs: classification.recoveryDelayMs }),
|
|
358
|
+
},
|
|
359
|
+
runtimeConfig: cfg.runtimeFallback,
|
|
360
|
+
prepareSwitch: (failed, isCandidateBlocked) => {
|
|
361
|
+
const failedKey = modelKey(failed.providerID, failed.modelID);
|
|
362
|
+
markModelFailed(state, failedKey, clock());
|
|
363
|
+
const peek = peekNextFallback(state, requirement, failedKey, cfg.runtimeFallback.maxAttempts, cfg.runtimeFallback.cooldownSeconds, clock(), isCandidateBlocked);
|
|
364
|
+
if (!peek.ok)
|
|
365
|
+
return { ok: false, reason: peek.reason };
|
|
366
|
+
const providerID = peek.entry.providers[0] ?? "";
|
|
367
|
+
const entry = { ...applyRequirementDefaults(requirement, peek.entry), providers: [providerID] };
|
|
368
|
+
let committed = false;
|
|
369
|
+
return {
|
|
370
|
+
ok: true,
|
|
371
|
+
prepared: {
|
|
372
|
+
target: { providerID, modelID: entry.model, entry },
|
|
373
|
+
attempt: peek.nextAttempts,
|
|
374
|
+
snapshotId: routeSnapshot.snapshotId,
|
|
375
|
+
commit: () => {
|
|
376
|
+
if (committed || !routeRegistry.isCurrentSnapshot(routeSnapshot.snapshotId))
|
|
377
|
+
return;
|
|
378
|
+
committed = true;
|
|
379
|
+
commitFallback(state, entry, peek.index);
|
|
380
|
+
},
|
|
381
|
+
},
|
|
382
|
+
};
|
|
383
|
+
},
|
|
209
384
|
});
|
|
210
|
-
if (
|
|
211
|
-
|
|
385
|
+
if (decision.handled)
|
|
386
|
+
return;
|
|
387
|
+
if (await skipBecauseInFlight()) {
|
|
388
|
+
log.debug("session.error while retry in flight; dedicated controller did not handle");
|
|
389
|
+
return;
|
|
212
390
|
}
|
|
391
|
+
await runGenericFallback(genericFallbackCtx, genericInput());
|
|
392
|
+
};
|
|
393
|
+
return {
|
|
394
|
+
event,
|
|
395
|
+
afterTask: createSubagentInterruptionOutputAdapter({ getConfig: deps.getConfig, controller }),
|
|
213
396
|
};
|
|
214
397
|
}
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
if (!idleState)
|
|
218
|
-
return;
|
|
219
|
-
const data = idleState.sessionData.get(sessionID);
|
|
220
|
-
// ESC abort — never continue
|
|
221
|
-
if (data?.aborted) {
|
|
222
|
-
clearSession(idleState, sessionID);
|
|
223
|
-
return;
|
|
224
|
-
}
|
|
225
|
-
// Not enabled — clean up
|
|
226
|
-
if (!isIdleContinuationEnabled(idleState, sessionID)) {
|
|
227
|
-
clearSession(idleState, sessionID);
|
|
228
|
-
return;
|
|
229
|
-
}
|
|
230
|
-
const cfg = deps.getConfig();
|
|
231
|
-
const idleCfg = cfg.idleContinuation;
|
|
232
|
-
const maxContinuations = idleCfg?.maxContinuations ?? 20;
|
|
233
|
-
const count = data?.continuationCount ?? 0;
|
|
234
|
-
if (count >= maxContinuations) {
|
|
235
|
-
clearSession(idleState, sessionID);
|
|
236
|
-
return;
|
|
237
|
-
}
|
|
238
|
-
if (!deps.client)
|
|
239
|
-
return;
|
|
240
|
-
const hasUnfinished = await hasUnfinishedTodos(deps.client, sessionID);
|
|
241
|
-
if (!hasUnfinished) {
|
|
242
|
-
clearSession(idleState, sessionID);
|
|
243
|
-
return;
|
|
244
|
-
}
|
|
245
|
-
const prompt = idleCfg?.prompt ?? DEFAULT_CONTINUATION_PROMPT;
|
|
246
|
-
try {
|
|
247
|
-
await deps.client.session.prompt({
|
|
248
|
-
path: { id: sessionID },
|
|
249
|
-
body: { parts: [{ type: "text", text: prompt }] },
|
|
250
|
-
});
|
|
251
|
-
const sessionData = getSessionData(idleState, sessionID);
|
|
252
|
-
sessionData.continuationCount = count + 1;
|
|
253
|
-
}
|
|
254
|
-
catch (err) {
|
|
255
|
-
log.warn("idle continuation prompt failed", { sessionID, error: String(err) });
|
|
256
|
-
clearSession(idleState, sessionID);
|
|
257
|
-
}
|
|
398
|
+
export function createRuntimeFallbackEventHandler(deps) {
|
|
399
|
+
return createRuntimeFallbackRuntime(deps).event;
|
|
258
400
|
}
|
|
259
401
|
//# sourceMappingURL=event-handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-handler.js","sourceRoot":"","sources":["../../src/runtime-fallback/event-handler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"event-handler.js","sourceRoot":"","sources":["../../src/runtime-fallback/event-handler.ts"],"names":[],"mappings":"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"}
|