@zhixuan92/multi-model-agent-core 4.6.0 → 4.7.1

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.
Files changed (320) hide show
  1. package/README.md +6 -8
  2. package/dist/bounded-execution/activity-tracker.d.ts +1 -0
  3. package/dist/bounded-execution/activity-tracker.d.ts.map +1 -1
  4. package/dist/bounded-execution/activity-tracker.js +5 -0
  5. package/dist/bounded-execution/activity-tracker.js.map +1 -1
  6. package/dist/bounded-execution/file-artifact-check.d.ts +4 -11
  7. package/dist/bounded-execution/file-artifact-check.d.ts.map +1 -1
  8. package/dist/bounded-execution/file-artifact-check.js +7 -22
  9. package/dist/bounded-execution/file-artifact-check.js.map +1 -1
  10. package/dist/bounded-execution/progress-events-subscriber.d.ts +41 -0
  11. package/dist/bounded-execution/progress-events-subscriber.d.ts.map +1 -0
  12. package/dist/bounded-execution/progress-events-subscriber.js +53 -0
  13. package/dist/bounded-execution/progress-events-subscriber.js.map +1 -0
  14. package/dist/bounded-execution/progress-watchdog.d.ts.map +1 -1
  15. package/dist/bounded-execution/progress-watchdog.js +60 -27
  16. package/dist/bounded-execution/progress-watchdog.js.map +1 -1
  17. package/dist/bounded-execution/stall-watchdog.d.ts.map +1 -1
  18. package/dist/bounded-execution/stall-watchdog.js +29 -12
  19. package/dist/bounded-execution/stall-watchdog.js.map +1 -1
  20. package/dist/bounded-execution/wall-clock-guard.d.ts +4 -0
  21. package/dist/bounded-execution/wall-clock-guard.d.ts.map +1 -1
  22. package/dist/bounded-execution/wall-clock-guard.js +1 -1
  23. package/dist/bounded-execution/wall-clock-guard.js.map +1 -1
  24. package/dist/config/canonical-model-identity.d.ts.map +1 -1
  25. package/dist/config/canonical-model-identity.js.map +1 -1
  26. package/dist/config/config-resolver.d.ts +1 -41
  27. package/dist/config/config-resolver.d.ts.map +1 -1
  28. package/dist/config/config-resolver.js +1 -43
  29. package/dist/config/config-resolver.js.map +1 -1
  30. package/dist/config/load.d.ts +0 -2
  31. package/dist/config/load.d.ts.map +1 -1
  32. package/dist/config/load.js +0 -4
  33. package/dist/config/load.js.map +1 -1
  34. package/dist/config/model-profile-registry.d.ts.map +1 -1
  35. package/dist/config/model-profile-registry.js +13 -7
  36. package/dist/config/model-profile-registry.js.map +1 -1
  37. package/dist/config/schema.d.ts +1 -19
  38. package/dist/config/schema.d.ts.map +1 -1
  39. package/dist/config/schema.js +12 -38
  40. package/dist/config/schema.js.map +1 -1
  41. package/dist/error-codes.d.ts +0 -1
  42. package/dist/error-codes.d.ts.map +1 -1
  43. package/dist/error-codes.js +0 -1
  44. package/dist/error-codes.js.map +1 -1
  45. package/dist/events/cloud-events.d.ts +0 -1
  46. package/dist/events/cloud-events.d.ts.map +1 -1
  47. package/dist/events/cloud-events.js +1 -1
  48. package/dist/events/cloud-events.js.map +1 -1
  49. package/dist/events/event-builder.js +1 -2
  50. package/dist/events/event-builder.js.map +1 -1
  51. package/dist/events/event-emitter.d.ts +2 -1
  52. package/dist/events/event-emitter.d.ts.map +1 -1
  53. package/dist/events/event-emitter.js +6 -1
  54. package/dist/events/event-emitter.js.map +1 -1
  55. package/dist/events/observability-events.d.ts +0 -26
  56. package/dist/events/observability-events.d.ts.map +1 -1
  57. package/dist/events/observability-events.js +1 -11
  58. package/dist/events/observability-events.js.map +1 -1
  59. package/dist/events/telemetry-types.d.ts +0 -7
  60. package/dist/events/telemetry-types.d.ts.map +1 -1
  61. package/dist/events/telemetry-types.js +1 -1
  62. package/dist/events/telemetry-types.js.map +1 -1
  63. package/dist/index.d.ts +4 -5
  64. package/dist/index.d.ts.map +1 -1
  65. package/dist/index.js +3 -3
  66. package/dist/index.js.map +1 -1
  67. package/dist/intake/resolve.d.ts.map +1 -1
  68. package/dist/intake/resolve.js +0 -1
  69. package/dist/intake/resolve.js.map +1 -1
  70. package/dist/lifecycle/handlers/{annotator.d.ts → annotate-stage.d.ts} +1 -1
  71. package/dist/lifecycle/handlers/annotate-stage.d.ts.map +1 -0
  72. package/dist/lifecycle/handlers/{annotator.js → annotate-stage.js} +1 -1
  73. package/dist/lifecycle/handlers/annotate-stage.js.map +1 -0
  74. package/dist/lifecycle/handlers/{task-executor.d.ts → implement-stage.d.ts} +1 -1
  75. package/dist/lifecycle/handlers/implement-stage.d.ts.map +1 -0
  76. package/dist/lifecycle/handlers/{task-executor.js → implement-stage.js} +31 -2
  77. package/dist/lifecycle/handlers/implement-stage.js.map +1 -0
  78. package/dist/lifecycle/handlers/{review-handler.d.ts → review-stage.d.ts} +1 -1
  79. package/dist/lifecycle/handlers/review-stage.d.ts.map +1 -0
  80. package/dist/lifecycle/handlers/{review-handler.js → review-stage.js} +1 -1
  81. package/dist/lifecycle/handlers/review-stage.js.map +1 -0
  82. package/dist/lifecycle/handlers/{rework-handler.d.ts → rework-stage.d.ts} +1 -1
  83. package/dist/lifecycle/handlers/rework-stage.d.ts.map +1 -0
  84. package/dist/lifecycle/handlers/{rework-handler.js → rework-stage.js} +1 -1
  85. package/dist/lifecycle/handlers/rework-stage.js.map +1 -0
  86. package/dist/lifecycle/lifecycle-context.d.ts +10 -4
  87. package/dist/lifecycle/lifecycle-context.d.ts.map +1 -1
  88. package/dist/lifecycle/lifecycle-dispatcher.d.ts +1 -1
  89. package/dist/lifecycle/lifecycle-dispatcher.d.ts.map +1 -1
  90. package/dist/lifecycle/lifecycle-dispatcher.js +1 -1
  91. package/dist/lifecycle/lifecycle-dispatcher.js.map +1 -1
  92. package/dist/lifecycle/lifecycle-driver.d.ts.map +1 -1
  93. package/dist/lifecycle/lifecycle-driver.js +77 -2
  94. package/dist/lifecycle/lifecycle-driver.js.map +1 -1
  95. package/dist/lifecycle/normalize-output-targets.d.ts +2 -0
  96. package/dist/lifecycle/normalize-output-targets.d.ts.map +1 -0
  97. package/dist/lifecycle/normalize-output-targets.js +14 -0
  98. package/dist/lifecycle/normalize-output-targets.js.map +1 -0
  99. package/dist/lifecycle/perform-implementation.d.ts.map +1 -1
  100. package/dist/lifecycle/perform-implementation.js +62 -26
  101. package/dist/lifecycle/perform-implementation.js.map +1 -1
  102. package/dist/lifecycle/rework-budget.d.ts +3 -0
  103. package/dist/lifecycle/rework-budget.d.ts.map +1 -0
  104. package/dist/lifecycle/rework-budget.js +9 -0
  105. package/dist/lifecycle/rework-budget.js.map +1 -0
  106. package/dist/lifecycle/stage-io.d.ts +3 -2
  107. package/dist/lifecycle/stage-io.d.ts.map +1 -1
  108. package/dist/lifecycle/stage-io.js.map +1 -1
  109. package/dist/lifecycle/stage-plan-builder.js +4 -4
  110. package/dist/lifecycle/stage-plan-builder.js.map +1 -1
  111. package/dist/lifecycle/stage-plan-types.d.ts +1 -4
  112. package/dist/lifecycle/stage-plan-types.d.ts.map +1 -1
  113. package/dist/lifecycle/task-completion-summary.d.ts.map +1 -1
  114. package/dist/lifecycle/task-completion-summary.js +0 -1
  115. package/dist/lifecycle/task-completion-summary.js.map +1 -1
  116. package/dist/lifecycle/task-executor.d.ts.map +1 -1
  117. package/dist/lifecycle/task-executor.js +2 -1
  118. package/dist/lifecycle/task-executor.js.map +1 -1
  119. package/dist/lifecycle/task-runner.d.ts +5 -1
  120. package/dist/lifecycle/task-runner.d.ts.map +1 -1
  121. package/dist/lifecycle/task-runner.js +102 -46
  122. package/dist/lifecycle/task-runner.js.map +1 -1
  123. package/dist/providers/agent-resolver.d.ts.map +1 -0
  124. package/dist/{escalation → providers}/agent-resolver.js +1 -1
  125. package/dist/providers/agent-resolver.js.map +1 -0
  126. package/dist/providers/assemble-run-result.js +0 -2
  127. package/dist/providers/assemble-run-result.js.map +1 -1
  128. package/dist/providers/claude-session.d.ts +12 -0
  129. package/dist/providers/claude-session.d.ts.map +1 -1
  130. package/dist/providers/claude-session.js +38 -1
  131. package/dist/providers/claude-session.js.map +1 -1
  132. package/dist/providers/codex-cli-session.d.ts +16 -1
  133. package/dist/providers/codex-cli-session.d.ts.map +1 -1
  134. package/dist/providers/codex-cli-session.js +75 -6
  135. package/dist/providers/codex-cli-session.js.map +1 -1
  136. package/dist/providers/normalize-claude.js +1 -1
  137. package/dist/providers/normalize-claude.js.map +1 -1
  138. package/dist/providers/provider-factory.d.ts +8 -0
  139. package/dist/providers/provider-factory.d.ts.map +1 -1
  140. package/dist/providers/provider-factory.js +64 -3
  141. package/dist/providers/provider-factory.js.map +1 -1
  142. package/dist/providers/run-annotator-turn.d.ts.map +1 -1
  143. package/dist/providers/run-annotator-turn.js +2 -1
  144. package/dist/providers/run-annotator-turn.js.map +1 -1
  145. package/dist/providers/run-worker-turn.d.ts +1 -1
  146. package/dist/providers/run-worker-turn.d.ts.map +1 -1
  147. package/dist/providers/run-worker-turn.js +0 -1
  148. package/dist/providers/run-worker-turn.js.map +1 -1
  149. package/dist/providers/runner-types.d.ts +5 -6
  150. package/dist/providers/runner-types.d.ts.map +1 -1
  151. package/dist/providers/stall-detector.d.ts +1 -1
  152. package/dist/providers/stall-detector.d.ts.map +1 -1
  153. package/dist/providers/stall-detector.js +1 -1
  154. package/dist/providers/stall-detector.js.map +1 -1
  155. package/dist/reporting/derive-investigate-status.d.ts +1 -1
  156. package/dist/reporting/derive-investigate-status.d.ts.map +1 -1
  157. package/dist/reporting/headline-templates/investigate.d.ts +1 -1
  158. package/dist/reporting/headline-templates/investigate.d.ts.map +1 -1
  159. package/dist/reporting/headline-templates/research.d.ts.map +1 -1
  160. package/dist/reporting/headline-templates/research.js +0 -1
  161. package/dist/reporting/headline-templates/research.js.map +1 -1
  162. package/dist/reporting/terminal-status-deriver.d.ts +1 -1
  163. package/dist/reporting/terminal-status-deriver.d.ts.map +1 -1
  164. package/dist/reporting/terminal-status-deriver.js +1 -4
  165. package/dist/reporting/terminal-status-deriver.js.map +1 -1
  166. package/dist/review/run-reviewer.d.ts.map +1 -1
  167. package/dist/review/run-reviewer.js +4 -3
  168. package/dist/review/run-reviewer.js.map +1 -1
  169. package/dist/stores/batch-registry.d.ts +15 -1
  170. package/dist/stores/batch-registry.d.ts.map +1 -1
  171. package/dist/stores/batch-registry.js +27 -0
  172. package/dist/stores/batch-registry.js.map +1 -1
  173. package/dist/tool-surface/tool-surface-registry.d.ts +1 -1
  174. package/dist/tool-surface/tool-surface-registry.d.ts.map +1 -1
  175. package/dist/tools/audit/tool-config.d.ts.map +1 -1
  176. package/dist/tools/audit/tool-config.js +0 -1
  177. package/dist/tools/audit/tool-config.js.map +1 -1
  178. package/dist/tools/debug/tool-config.d.ts.map +1 -1
  179. package/dist/tools/debug/tool-config.js +0 -1
  180. package/dist/tools/debug/tool-config.js.map +1 -1
  181. package/dist/tools/delegate/schema.d.ts +1 -1
  182. package/dist/tools/delegate/schema.d.ts.map +1 -1
  183. package/dist/tools/delegate/schema.js +2 -1
  184. package/dist/tools/delegate/schema.js.map +1 -1
  185. package/dist/tools/delegate/tool-config.d.ts +0 -1
  186. package/dist/tools/delegate/tool-config.d.ts.map +1 -1
  187. package/dist/tools/delegate/tool-config.js +0 -2
  188. package/dist/tools/delegate/tool-config.js.map +1 -1
  189. package/dist/tools/execute-plan/schema.d.ts +1 -1
  190. package/dist/tools/execute-plan/schema.d.ts.map +1 -1
  191. package/dist/tools/execute-plan/schema.js +2 -2
  192. package/dist/tools/execute-plan/schema.js.map +1 -1
  193. package/dist/tools/execute-plan/tool-config.d.ts.map +1 -1
  194. package/dist/tools/execute-plan/tool-config.js +0 -1
  195. package/dist/tools/execute-plan/tool-config.js.map +1 -1
  196. package/dist/tools/investigate/tool-config.d.ts.map +1 -1
  197. package/dist/tools/investigate/tool-config.js +0 -1
  198. package/dist/tools/investigate/tool-config.js.map +1 -1
  199. package/dist/tools/register-context-block/tool-config.d.ts.map +1 -1
  200. package/dist/tools/register-context-block/tool-config.js +0 -1
  201. package/dist/tools/register-context-block/tool-config.js.map +1 -1
  202. package/dist/tools/research/tool-config.d.ts.map +1 -1
  203. package/dist/tools/research/tool-config.js +0 -1
  204. package/dist/tools/research/tool-config.js.map +1 -1
  205. package/dist/tools/retry/tool-config.d.ts.map +1 -1
  206. package/dist/tools/retry/tool-config.js +0 -1
  207. package/dist/tools/retry/tool-config.js.map +1 -1
  208. package/dist/tools/review/tool-config.d.ts.map +1 -1
  209. package/dist/tools/review/tool-config.js +0 -1
  210. package/dist/tools/review/tool-config.js.map +1 -1
  211. package/dist/types/config.d.ts +0 -1
  212. package/dist/types/config.d.ts.map +1 -1
  213. package/dist/types/enums.d.ts +0 -3
  214. package/dist/types/enums.d.ts.map +1 -1
  215. package/dist/types/enums.js +3 -3
  216. package/dist/types/enums.js.map +1 -1
  217. package/dist/types/run-result.d.ts +14 -1
  218. package/dist/types/run-result.d.ts.map +1 -1
  219. package/dist/types/task-spec.d.ts +1 -1
  220. package/dist/types/task-spec.d.ts.map +1 -1
  221. package/package.json +1 -1
  222. package/dist/bounded-execution/cost-meter.d.ts +0 -20
  223. package/dist/bounded-execution/cost-meter.d.ts.map +0 -1
  224. package/dist/bounded-execution/cost-meter.js +0 -21
  225. package/dist/bounded-execution/cost-meter.js.map +0 -1
  226. package/dist/bounded-execution/error-classifier.d.ts +0 -11
  227. package/dist/bounded-execution/error-classifier.d.ts.map +0 -1
  228. package/dist/bounded-execution/error-classifier.js +0 -23
  229. package/dist/bounded-execution/error-classifier.js.map +0 -1
  230. package/dist/bounded-execution/idle-guard.d.ts +0 -8
  231. package/dist/bounded-execution/idle-guard.d.ts.map +0 -1
  232. package/dist/bounded-execution/idle-guard.js +0 -18
  233. package/dist/bounded-execution/idle-guard.js.map +0 -1
  234. package/dist/bounded-execution/index.d.ts +0 -10
  235. package/dist/bounded-execution/index.d.ts.map +0 -1
  236. package/dist/bounded-execution/index.js +0 -11
  237. package/dist/bounded-execution/index.js.map +0 -1
  238. package/dist/bounded-execution/safety-max-turns.d.ts +0 -17
  239. package/dist/bounded-execution/safety-max-turns.d.ts.map +0 -1
  240. package/dist/bounded-execution/safety-max-turns.js +0 -17
  241. package/dist/bounded-execution/safety-max-turns.js.map +0 -1
  242. package/dist/cleanup/batch-retention-sweeper.d.ts +0 -7
  243. package/dist/cleanup/batch-retention-sweeper.d.ts.map +0 -1
  244. package/dist/cleanup/batch-retention-sweeper.js +0 -10
  245. package/dist/cleanup/batch-retention-sweeper.js.map +0 -1
  246. package/dist/cleanup/context-block-gc-sweeper.d.ts +0 -8
  247. package/dist/cleanup/context-block-gc-sweeper.d.ts.map +0 -1
  248. package/dist/cleanup/context-block-gc-sweeper.js +0 -12
  249. package/dist/cleanup/context-block-gc-sweeper.js.map +0 -1
  250. package/dist/cleanup/index.d.ts +0 -5
  251. package/dist/cleanup/index.d.ts.map +0 -1
  252. package/dist/cleanup/index.js +0 -6
  253. package/dist/cleanup/index.js.map +0 -1
  254. package/dist/cleanup/project-idle-cleanup.d.ts +0 -7
  255. package/dist/cleanup/project-idle-cleanup.d.ts.map +0 -1
  256. package/dist/cleanup/project-idle-cleanup.js +0 -15
  257. package/dist/cleanup/project-idle-cleanup.js.map +0 -1
  258. package/dist/cleanup/shutdown-coordinator.d.ts +0 -7
  259. package/dist/cleanup/shutdown-coordinator.d.ts.map +0 -1
  260. package/dist/cleanup/shutdown-coordinator.js +0 -13
  261. package/dist/cleanup/shutdown-coordinator.js.map +0 -1
  262. package/dist/config/index.d.ts +0 -8
  263. package/dist/config/index.d.ts.map +0 -1
  264. package/dist/config/index.js +0 -9
  265. package/dist/config/index.js.map +0 -1
  266. package/dist/config/pricing-table.d.ts +0 -16
  267. package/dist/config/pricing-table.d.ts.map +0 -1
  268. package/dist/config/pricing-table.js +0 -51
  269. package/dist/config/pricing-table.js.map +0 -1
  270. package/dist/escalation/agent-resolver.d.ts.map +0 -1
  271. package/dist/escalation/agent-resolver.js.map +0 -1
  272. package/dist/escalation/delegate-with-escalation.d.ts +0 -52
  273. package/dist/escalation/delegate-with-escalation.d.ts.map +0 -1
  274. package/dist/escalation/delegate-with-escalation.js +0 -201
  275. package/dist/escalation/delegate-with-escalation.js.map +0 -1
  276. package/dist/escalation/escalation-policy.d.ts +0 -18
  277. package/dist/escalation/escalation-policy.d.ts.map +0 -1
  278. package/dist/escalation/escalation-policy.js +0 -33
  279. package/dist/escalation/escalation-policy.js.map +0 -1
  280. package/dist/escalation/fallback-helpers.d.ts +0 -22
  281. package/dist/escalation/fallback-helpers.d.ts.map +0 -1
  282. package/dist/escalation/fallback-helpers.js +0 -47
  283. package/dist/escalation/fallback-helpers.js.map +0 -1
  284. package/dist/escalation/fallback-types.d.ts +0 -60
  285. package/dist/escalation/fallback-types.d.ts.map +0 -1
  286. package/dist/escalation/fallback-types.js +0 -11
  287. package/dist/escalation/fallback-types.js.map +0 -1
  288. package/dist/escalation/fallback.d.ts +0 -5
  289. package/dist/escalation/fallback.d.ts.map +0 -1
  290. package/dist/escalation/fallback.js +0 -387
  291. package/dist/escalation/fallback.js.map +0 -1
  292. package/dist/escalation/index.d.ts +0 -3
  293. package/dist/escalation/index.d.ts.map +0 -1
  294. package/dist/escalation/index.js +0 -4
  295. package/dist/escalation/index.js.map +0 -1
  296. package/dist/escalation/policy.d.ts +0 -37
  297. package/dist/escalation/policy.d.ts.map +0 -1
  298. package/dist/escalation/policy.js +0 -67
  299. package/dist/escalation/policy.js.map +0 -1
  300. package/dist/escalation/types.d.ts +0 -15
  301. package/dist/escalation/types.d.ts.map +0 -1
  302. package/dist/escalation/types.js +0 -2
  303. package/dist/escalation/types.js.map +0 -1
  304. package/dist/events/running-headline-sink.d.ts +0 -27
  305. package/dist/events/running-headline-sink.d.ts.map +0 -1
  306. package/dist/events/running-headline-sink.js +0 -156
  307. package/dist/events/running-headline-sink.js.map +0 -1
  308. package/dist/lifecycle/handlers/annotator.d.ts.map +0 -1
  309. package/dist/lifecycle/handlers/annotator.js.map +0 -1
  310. package/dist/lifecycle/handlers/review-handler.d.ts.map +0 -1
  311. package/dist/lifecycle/handlers/review-handler.js.map +0 -1
  312. package/dist/lifecycle/handlers/rework-handler.d.ts.map +0 -1
  313. package/dist/lifecycle/handlers/rework-handler.js.map +0 -1
  314. package/dist/lifecycle/handlers/task-executor.d.ts.map +0 -1
  315. package/dist/lifecycle/handlers/task-executor.js.map +0 -1
  316. package/dist/lifecycle/metadata-repair.d.ts +0 -15
  317. package/dist/lifecycle/metadata-repair.d.ts.map +0 -1
  318. package/dist/lifecycle/metadata-repair.js +0 -33
  319. package/dist/lifecycle/metadata-repair.js.map +0 -1
  320. /package/dist/{escalation → providers}/agent-resolver.d.ts +0 -0
@@ -1,47 +0,0 @@
1
- /** Two providers are "identical" iff they resolve to the same effective backend
2
- * (type + model + baseUrl + apiKey wiring). When an operator points both tiers
3
- * at the same backend (one-provider deployment), cross-tier fallback is
4
- * structurally pointless — alt would just hit the same place. Comparing the
5
- * serialized config catches this without a new operator-facing flag. */
6
- export function providersIdentical(a, b) {
7
- return JSON.stringify(a.config) === JSON.stringify(b.config);
8
- }
9
- /** Lifecycle helper: builds the synthetic RuntimeRunResult expected when both tiers are
10
- * unavailable. Status is the new 'unavailable' value (NOT 'api_error') so
11
- * re-passing the synthetic into runWithFallback's isTransportFailure cannot
12
- * retrigger fallback.
13
- *
14
- * IMPORTANT: This shape MUST satisfy `RuntimeRunResult` (see types.ts). Confirmed
15
- * required fields: output, status, usage, turns, filesRead, filesWritten,
16
- * toolCalls, outputIsDiagnostic, escalationLog. All other RuntimeRunResult fields
17
- * are optional. */
18
- export function makeSyntheticRunResult(assigned, errorCode) {
19
- return {
20
- status: 'unavailable',
21
- output: '',
22
- outputIsDiagnostic: true,
23
- error: `runWithFallback: both tiers unavailable (assigned=${assigned})`,
24
- errorCode,
25
- retryable: false,
26
- turns: 0,
27
- usage: { inputTokens: 0, outputTokens: 0, cachedReadTokens: 0, cachedNonReadTokens: 0 },
28
- filesRead: [],
29
- filesWritten: [],
30
- toolCalls: [],
31
- escalationLog: [],
32
- actualCostUSD: 0,
33
- directoriesListed: [],
34
- };
35
- }
36
- export function isReviewTransportFailure(r) {
37
- return r.status === 'api_error' || r.status === 'provider_transport_failure' || r.status === 'timeout';
38
- }
39
- export function scoreWork(r) {
40
- if (!r)
41
- return 0;
42
- const usage = r.usage ?? {};
43
- const turns = r.turns ?? 0;
44
- const filesWritten = (r.filesWritten ?? []).length ?? 0;
45
- return turns + filesWritten + (usage.inputTokens ?? 0) / 1000;
46
- }
47
- //# sourceMappingURL=fallback-helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fallback-helpers.js","sourceRoot":"","sources":["../../src/escalation/fallback-helpers.ts"],"names":[],"mappings":"AAEA;;;;yEAIyE;AACzE,MAAM,UAAU,kBAAkB,CAAC,CAAW,EAAE,CAAW;IACzD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;;;;oBAQoB;AACpB,MAAM,UAAU,sBAAsB,CAAC,QAAmB,EAAE,SAAiB;IAC3E,OAAO;QACL,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,EAAE;QACV,kBAAkB,EAAE,IAAI;QACxB,KAAK,EAAE,qDAAqD,QAAQ,GAAG;QACvE,SAAS;QACT,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,mBAAmB,EAAE,CAAC,EAAE;QACvF,SAAS,EAAE,EAAE;QACb,YAAY,EAAE,EAAE;QAChB,SAAS,EAAE,EAAE;QACb,aAAa,EAAE,EAAE;QACjB,aAAa,EAAE,CAAC;QAChB,iBAAiB,EAAE,EAAE;KACtB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,CAAsB;IAEtB,OAAO,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC,MAAM,KAAK,4BAA4B,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC;AACzG,CAAC;AAED,MAAM,UAAU,SAAS,CAAI,CAAgB;IAC3C,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACjB,MAAM,KAAK,GAAI,CAA0C,CAAC,KAAK,IAAI,EAAE,CAAC;IACtE,MAAM,KAAK,GAAI,CAAwB,CAAC,KAAK,IAAI,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,CAAE,CAAkC,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;IAC1F,OAAO,KAAK,GAAG,YAAY,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;AAChE,CAAC"}
@@ -1,60 +0,0 @@
1
- import type { RunStatus } from '../providers/runner-types.js';
2
- import type { AgentType, Provider } from '../types.js';
3
- import type { CanonicalIdentity } from '../config/canonical-model-identity.js';
4
- export declare const TRANSPORT_FAILURES: ReadonlySet<RunStatus>;
5
- export type FallbackReason = 'transport_failure' | 'not_configured';
6
- export type UnavailableMap = Map<AgentType, FallbackReason>;
7
- /** First-write-wins. Preserves root cause across the loop. */
8
- export declare function markUnavailable(map: UnavailableMap, tier: AgentType, reason: FallbackReason): void;
9
- export interface RunWithFallbackInput<T> {
10
- assigned: AgentType;
11
- providerFor: (tier: AgentType) => Provider | undefined;
12
- unavailableTiers: UnavailableMap;
13
- isTransportFailure: (result: T) => boolean;
14
- /** Caller-supplied status extractor. Replaces unsafe `(result as any).status` casts.
15
- * Returns undefined for results that don't carry a status field (custom T types). */
16
- getStatus?: (result: T) => RunStatus | undefined;
17
- makeSyntheticFailure: (assigned: AgentType) => T;
18
- call: (provider: Provider, tier: AgentType) => Promise<T>;
19
- /** Canonical identities to exclude from candidate selection. When a candidate
20
- * provider's resolved identity matches one in this set, the candidate is skipped
21
- * as a separation violation. If identity resolution throws on a successfully-constructed
22
- * provider, the candidate is also skipped (fail-closed). Provider construction
23
- * failures (providerFor throws/returns undefined) follow the existing unavailable path. */
24
- forbiddenIdentities?: CanonicalIdentity[];
25
- }
26
- export interface RunWithFallbackResult<T> {
27
- result: T;
28
- usedTier: AgentType | 'none';
29
- /** True iff an alternate tier was actually USED for a provider call (not just considered).
30
- * False when both tiers were unavailable up-front (no provider call made).
31
- * Used by lifecycle to decide whether to emit a `fallback` event (yes iff fallbackFired).
32
- * Distinct from `bothUnavailable` (which means "no usable result"). */
33
- fallbackFired: boolean;
34
- /** Why the substitution was attempted. Present iff fallbackFired or assignedUnavailableReason set. */
35
- fallbackReason?: FallbackReason;
36
- /** Status of the call that triggered the substitution (assigned-tier failure). Present iff
37
- * fallbackReason === 'transport_failure' AND a real call occurred. */
38
- fallbackTriggeringStatus?: RunStatus;
39
- /** True iff the wrapper could not produce a usable result. */
40
- bothUnavailable: boolean;
41
- /** Why the FINAL tier (alt or assigned) was unavailable. Present iff bothUnavailable. */
42
- unavailableReason?: FallbackReason;
43
- /** Status of the alt-tier failure that produced bothUnavailable mid-call. Present iff
44
- * bothUnavailable AND mid-call double-failure path AND alt was actually called. */
45
- unavailableTriggeringStatus?: RunStatus;
46
- /** Why the assigned tier was unavailable up-front (sticky or not-configured). Present iff
47
- * fallbackReason set without calling assigned. Distinct from `fallbackReason` so callers
48
- * can tell "we substituted at the start" vs "we substituted because the assigned call failed". */
49
- assignedUnavailableReason?: FallbackReason;
50
- /** True iff the final used tier differs in canonical identity from all forbiddenIdentities.
51
- * Set only when forbiddenIdentities was provided. */
52
- fallbackSeparationRespected?: boolean;
53
- /** Canonical identity of the assigned tier's provider (resolved at selection time). */
54
- assignedIdentity?: CanonicalIdentity;
55
- /** Canonical identity of the actually-used tier's provider. */
56
- usedIdentity?: CanonicalIdentity;
57
- /** Higher-work-score of firstResult/altResult on bothUnavailable; null when both have zero work. */
58
- salvageResult: T | null;
59
- }
60
- //# sourceMappingURL=fallback-types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fallback-types.d.ts","sourceRoot":"","sources":["../../src/escalation/fallback-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAE/E,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,SAAS,CAIpD,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,mBAAmB,GAAG,gBAAgB,CAAC;AACpE,MAAM,MAAM,cAAc,GAAG,GAAG,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;AAE5D,8DAA8D;AAC9D,wBAAgB,eAAe,CAC7B,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,cAAc,GACrB,IAAI,CAEN;AAED,MAAM,WAAW,oBAAoB,CAAC,CAAC;IACrC,QAAQ,EAAE,SAAS,CAAC;IACpB,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,QAAQ,GAAG,SAAS,CAAC;IACvD,gBAAgB,EAAE,cAAc,CAAC;IACjC,kBAAkB,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,OAAO,CAAC;IAC3C;0FACsF;IACtF,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,SAAS,GAAG,SAAS,CAAC;IACjD,oBAAoB,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,CAAC,CAAC;IACjD,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1D;;;;gGAI4F;IAC5F,mBAAmB,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC,MAAM,EAAE,CAAC,CAAC;IACV,QAAQ,EAAE,SAAS,GAAG,MAAM,CAAC;IAE7B;;;4EAGwE;IACxE,aAAa,EAAE,OAAO,CAAC;IACvB,sGAAsG;IACtG,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC;2EACuE;IACvE,wBAAwB,CAAC,EAAE,SAAS,CAAC;IAErC,8DAA8D;IAC9D,eAAe,EAAE,OAAO,CAAC;IACzB,yFAAyF;IACzF,iBAAiB,CAAC,EAAE,cAAc,CAAC;IACnC;wFACoF;IACpF,2BAA2B,CAAC,EAAE,SAAS,CAAC;IAExC;;uGAEmG;IACnG,yBAAyB,CAAC,EAAE,cAAc,CAAC;IAE3C;0DACsD;IACtD,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,uFAAuF;IACvF,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IACrC,+DAA+D;IAC/D,YAAY,CAAC,EAAE,iBAAiB,CAAC;IAEjC,oGAAoG;IACpG,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC;CACzB"}
@@ -1,11 +0,0 @@
1
- export const TRANSPORT_FAILURES = new Set([
2
- 'api_error',
3
- 'provider_transport_failure',
4
- 'timeout',
5
- ]);
6
- /** First-write-wins. Preserves root cause across the loop. */
7
- export function markUnavailable(map, tier, reason) {
8
- if (!map.has(tier))
9
- map.set(tier, reason);
10
- }
11
- //# sourceMappingURL=fallback-types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fallback-types.js","sourceRoot":"","sources":["../../src/escalation/fallback-types.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,kBAAkB,GAA2B,IAAI,GAAG,CAAC;IAChE,WAAW;IACX,4BAA4B;IAC5B,SAAS;CACV,CAAC,CAAC;AAKH,8DAA8D;AAC9D,MAAM,UAAU,eAAe,CAC7B,GAAmB,EACnB,IAAe,EACf,MAAsB;IAEtB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC5C,CAAC"}
@@ -1,5 +0,0 @@
1
- import { type RunWithFallbackInput, type RunWithFallbackResult } from './fallback-types.js';
2
- export { providersIdentical, makeSyntheticRunResult, isReviewTransportFailure } from './fallback-helpers.js';
3
- export { TRANSPORT_FAILURES, type FallbackReason, type UnavailableMap, type RunWithFallbackInput, type RunWithFallbackResult } from './fallback-types.js';
4
- export declare function runWithFallback<T>(input: RunWithFallbackInput<T>): Promise<RunWithFallbackResult<T>>;
5
- //# sourceMappingURL=fallback.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fallback.d.ts","sourceRoot":"","sources":["../../src/escalation/fallback.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiF,KAAK,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE3K,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAC7G,OAAO,EAAE,kBAAkB,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE1J,wBAAsB,eAAe,CAAC,CAAC,EACrC,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAC7B,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAwVnC"}
@@ -1,387 +0,0 @@
1
- import { canonicalIdentity, identityEquals } from '../config/canonical-model-identity.js';
2
- import { otherTier } from '../config/tier-policy-registry.js';
3
- import { providersIdentical, scoreWork } from './fallback-helpers.js';
4
- import { markUnavailable } from './fallback-types.js';
5
- export { providersIdentical, makeSyntheticRunResult, isReviewTransportFailure } from './fallback-helpers.js';
6
- export { TRANSPORT_FAILURES } from './fallback-types.js';
7
- export async function runWithFallback(input) {
8
- const { assigned, providerFor, unavailableTiers, isTransportFailure, makeSyntheticFailure, call } = input;
9
- const getStatus = input.getStatus ?? (() => undefined);
10
- const forbidden = input.forbiddenIdentities ?? [];
11
- // Returns { skip: true } when the tier should be skipped due to identity separation.
12
- // providerFor throws/returns undefined → { skip: false }; canonicalIdentity throws → { skip: true } (fail-closed).
13
- const checkSeparation = (tier) => {
14
- if (forbidden.length === 0)
15
- return { skip: false };
16
- let p;
17
- try {
18
- p = providerFor(tier);
19
- }
20
- catch {
21
- return { skip: false };
22
- }
23
- if (!p)
24
- return { skip: false };
25
- try {
26
- const id = canonicalIdentity(p.config);
27
- if (forbidden.some(f => identityEquals(f, id)))
28
- return { skip: true, identity: id };
29
- return { skip: false, identity: id };
30
- }
31
- catch {
32
- return { skip: true };
33
- }
34
- };
35
- const resolveProviderIdentity = (tier) => {
36
- let p;
37
- try {
38
- p = providerFor(tier);
39
- }
40
- catch {
41
- return null;
42
- }
43
- if (!p)
44
- return null;
45
- try {
46
- return canonicalIdentity(p.config);
47
- }
48
- catch {
49
- return null;
50
- }
51
- };
52
- const assignedIdentity = resolveProviderIdentity(assigned) ?? undefined;
53
- // Resolve assigned tier (sticky check first, then not-configured)
54
- let usedTier = assigned;
55
- let fallbackFired = false;
56
- let fallbackReason;
57
- let assignedUnavailableReason;
58
- let skippedDueToSeparation = false;
59
- let usedIdentity = assignedIdentity;
60
- if (unavailableTiers.has(assigned)) {
61
- assignedUnavailableReason = unavailableTiers.get(assigned);
62
- fallbackReason = assignedUnavailableReason;
63
- }
64
- else {
65
- let assignedProvider;
66
- try {
67
- assignedProvider = providerFor(assigned);
68
- }
69
- catch { /* construction failure → treat as unavailable below */ }
70
- if (assignedProvider === undefined) {
71
- markUnavailable(unavailableTiers, assigned, 'not_configured');
72
- assignedUnavailableReason = 'not_configured';
73
- fallbackReason = 'not_configured';
74
- }
75
- else {
76
- const sep = checkSeparation(assigned);
77
- if (sep.skip) {
78
- skippedDueToSeparation = true;
79
- fallbackReason = 'not_configured';
80
- }
81
- else if (sep.identity) {
82
- usedIdentity = sep.identity;
83
- }
84
- }
85
- }
86
- if (fallbackReason !== undefined) {
87
- // Assigned is unavailable up-front (or forbidden). Try the alt tier.
88
- const alt = otherTier(assigned);
89
- let altUnavailableReason;
90
- if (unavailableTiers.has(alt)) {
91
- altUnavailableReason = unavailableTiers.get(alt);
92
- }
93
- else {
94
- let altProv;
95
- try {
96
- altProv = providerFor(alt);
97
- }
98
- catch { /* construction failure */ }
99
- if (altProv === undefined) {
100
- markUnavailable(unavailableTiers, alt, 'not_configured');
101
- altUnavailableReason = 'not_configured';
102
- }
103
- else {
104
- const altSep = checkSeparation(alt);
105
- if (altSep.skip) {
106
- skippedDueToSeparation = true;
107
- altUnavailableReason = 'not_configured';
108
- }
109
- else if (altSep.identity) {
110
- usedIdentity = altSep.identity;
111
- }
112
- }
113
- }
114
- if (altUnavailableReason !== undefined) {
115
- // Both unavailable up-front. If separation was the blocking reason,
116
- // surface it as the unavailableReason so callers like
117
- // adaptForAllTiersUnavailable can map to the correct errorCode.
118
- if (skippedDueToSeparation) {
119
- return {
120
- result: makeSyntheticFailure(assigned),
121
- usedTier: 'none',
122
- fallbackFired: false,
123
- bothUnavailable: true,
124
- fallbackReason,
125
- assignedUnavailableReason,
126
- unavailableReason: altUnavailableReason,
127
- fallbackSeparationRespected: true,
128
- assignedIdentity,
129
- usedIdentity: undefined,
130
- salvageResult: null,
131
- };
132
- }
133
- return {
134
- result: makeSyntheticFailure(assigned),
135
- usedTier: 'none',
136
- fallbackFired: false,
137
- bothUnavailable: true,
138
- fallbackReason,
139
- assignedUnavailableReason,
140
- unavailableReason: altUnavailableReason,
141
- salvageResult: null,
142
- };
143
- }
144
- usedTier = alt;
145
- fallbackFired = true;
146
- }
147
- // Call the chosen provider
148
- let provider;
149
- try {
150
- provider = providerFor(usedTier);
151
- }
152
- catch {
153
- // providerFor threw — construction failure on the chosen tier.
154
- if (!fallbackFired) {
155
- const alt = otherTier(usedTier);
156
- fallbackFired = true;
157
- usedTier = alt;
158
- try {
159
- provider = providerFor(alt);
160
- }
161
- catch {
162
- return {
163
- result: makeSyntheticFailure(assigned),
164
- usedTier: 'none',
165
- fallbackFired: true,
166
- bothUnavailable: true,
167
- fallbackReason: 'not_configured',
168
- assignedUnavailableReason,
169
- unavailableReason: 'not_configured',
170
- salvageResult: null,
171
- ...(forbidden.length > 0 ? {
172
- fallbackSeparationRespected: skippedDueToSeparation || undefined,
173
- assignedIdentity,
174
- usedIdentity: undefined,
175
- } : {}),
176
- };
177
- }
178
- }
179
- else {
180
- return {
181
- result: makeSyntheticFailure(assigned),
182
- usedTier: 'none',
183
- fallbackFired: true,
184
- bothUnavailable: true,
185
- fallbackReason,
186
- assignedUnavailableReason,
187
- unavailableReason: 'not_configured',
188
- salvageResult: null,
189
- ...(forbidden.length > 0 ? {
190
- fallbackSeparationRespected: skippedDueToSeparation || undefined,
191
- assignedIdentity,
192
- usedIdentity: undefined,
193
- } : {}),
194
- };
195
- }
196
- }
197
- const result = await call(provider, usedTier);
198
- if (!isTransportFailure(result)) {
199
- if (!usedIdentity) {
200
- try {
201
- usedIdentity = canonicalIdentity(provider.config) ?? undefined;
202
- }
203
- catch { /* leave undefined */ }
204
- }
205
- return {
206
- result,
207
- usedTier,
208
- fallbackFired,
209
- fallbackReason,
210
- assignedUnavailableReason,
211
- bothUnavailable: false,
212
- salvageResult: null,
213
- ...(forbidden.length > 0 ? {
214
- fallbackSeparationRespected: skippedDueToSeparation || undefined,
215
- assignedIdentity,
216
- usedIdentity,
217
- } : {}),
218
- };
219
- }
220
- // Transport failure on the called tier
221
- const calledStatus = getStatus(result);
222
- markUnavailable(unavailableTiers, usedTier, 'transport_failure');
223
- if (!usedIdentity) {
224
- try {
225
- usedIdentity = canonicalIdentity(provider.config) ?? undefined;
226
- }
227
- catch { /* leave undefined */ }
228
- }
229
- // If the called tier WAS the alt (already substituted), no further alt to try
230
- if (fallbackFired) {
231
- return {
232
- result,
233
- usedTier,
234
- fallbackFired: true,
235
- fallbackReason,
236
- fallbackTriggeringStatus: calledStatus,
237
- assignedUnavailableReason,
238
- bothUnavailable: true,
239
- unavailableReason: 'transport_failure',
240
- unavailableTriggeringStatus: calledStatus,
241
- salvageResult: null,
242
- ...(forbidden.length > 0 ? {
243
- fallbackSeparationRespected: skippedDueToSeparation || undefined,
244
- assignedIdentity,
245
- usedIdentity,
246
- } : {}),
247
- };
248
- }
249
- // Assigned tier just failed. Promote to fallback path.
250
- fallbackReason = 'transport_failure';
251
- const fallbackTriggeringStatus = calledStatus;
252
- const altOfUsed = otherTier(usedTier);
253
- // Same-provider short-circuit: if alt points at the same backend as assigned,
254
- // fallback is structurally pointless — skip the doomed call.
255
- const altProviderForSameCheck = providerFor(altOfUsed);
256
- if (altProviderForSameCheck !== undefined && providersIdentical(provider, altProviderForSameCheck)) {
257
- const sameProviderSep = forbidden.length > 0 ? checkSeparation(usedTier) : { skip: false };
258
- return {
259
- result,
260
- usedTier,
261
- fallbackFired: false,
262
- bothUnavailable: false,
263
- salvageResult: null,
264
- ...(forbidden.length > 0 ? {
265
- fallbackSeparationRespected: sameProviderSep.skip || skippedDueToSeparation || undefined,
266
- assignedIdentity,
267
- usedIdentity,
268
- } : {}),
269
- };
270
- }
271
- // Check alt availability (sticky first, then not-configured, then separation)
272
- let altUnavailableReason;
273
- let altSeparation = false;
274
- if (unavailableTiers.has(altOfUsed)) {
275
- altUnavailableReason = unavailableTiers.get(altOfUsed);
276
- }
277
- else {
278
- let altProv2;
279
- try {
280
- altProv2 = providerFor(altOfUsed);
281
- }
282
- catch { /* construction failure */ }
283
- if (altProv2 === undefined) {
284
- markUnavailable(unavailableTiers, altOfUsed, 'not_configured');
285
- altUnavailableReason = 'not_configured';
286
- }
287
- else {
288
- const altSep = checkSeparation(altOfUsed);
289
- if (altSep.skip) {
290
- altSeparation = true;
291
- altUnavailableReason = 'not_configured';
292
- }
293
- else if (altSep.identity) {
294
- usedIdentity = altSep.identity;
295
- }
296
- }
297
- }
298
- if (altUnavailableReason !== undefined) {
299
- return {
300
- result,
301
- usedTier,
302
- fallbackFired: true,
303
- fallbackReason,
304
- fallbackTriggeringStatus,
305
- bothUnavailable: true,
306
- unavailableReason: altUnavailableReason,
307
- salvageResult: null,
308
- ...(forbidden.length > 0 ? {
309
- fallbackSeparationRespected: altSeparation || skippedDueToSeparation || undefined,
310
- assignedIdentity,
311
- usedIdentity,
312
- } : {}),
313
- };
314
- }
315
- // Try alt
316
- let altProvider;
317
- try {
318
- altProvider = providerFor(altOfUsed);
319
- }
320
- catch {
321
- return {
322
- result,
323
- usedTier,
324
- fallbackFired: true,
325
- fallbackReason,
326
- fallbackTriggeringStatus,
327
- bothUnavailable: true,
328
- unavailableReason: 'not_configured',
329
- salvageResult: null,
330
- ...(forbidden.length > 0 ? {
331
- fallbackSeparationRespected: skippedDueToSeparation || undefined,
332
- assignedIdentity,
333
- usedIdentity,
334
- } : {}),
335
- };
336
- }
337
- const altResult = await call(altProvider, altOfUsed);
338
- if (!usedIdentity) {
339
- try {
340
- usedIdentity = canonicalIdentity(altProvider.config) ?? undefined;
341
- }
342
- catch { /* leave undefined */ }
343
- }
344
- const altStatus = getStatus(altResult);
345
- if (isTransportFailure(altResult)) {
346
- // Both transport-failed mid-call — preserve BOTH triggering statuses
347
- markUnavailable(unavailableTiers, altOfUsed, 'transport_failure');
348
- const firstWork = scoreWork(result);
349
- const altWork = scoreWork(altResult);
350
- const maxWork = Math.max(firstWork, altWork);
351
- const salvageResult = maxWork > 0
352
- ? (firstWork >= altWork ? result : altResult)
353
- : null;
354
- return {
355
- result: altResult,
356
- usedTier: altOfUsed,
357
- fallbackFired: true,
358
- fallbackReason,
359
- fallbackTriggeringStatus,
360
- bothUnavailable: true,
361
- unavailableReason: 'transport_failure',
362
- unavailableTriggeringStatus: altStatus,
363
- salvageResult,
364
- ...(forbidden.length > 0 ? {
365
- fallbackSeparationRespected: skippedDueToSeparation || undefined,
366
- assignedIdentity,
367
- usedIdentity,
368
- } : {}),
369
- };
370
- }
371
- // Alt succeeded
372
- return {
373
- result: altResult,
374
- usedTier: altOfUsed,
375
- fallbackFired: true,
376
- fallbackReason,
377
- fallbackTriggeringStatus,
378
- bothUnavailable: false,
379
- salvageResult: null,
380
- ...(forbidden.length > 0 ? {
381
- fallbackSeparationRespected: skippedDueToSeparation || undefined,
382
- assignedIdentity,
383
- usedIdentity,
384
- } : {}),
385
- };
386
- }
387
- //# sourceMappingURL=fallback.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fallback.js","sourceRoot":"","sources":["../../src/escalation/fallback.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- export * from './agent-resolver.js';
2
- export * from './escalation-policy.js';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/escalation/index.ts"],"names":[],"mappings":"AAEA,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC"}
@@ -1,4 +0,0 @@
1
- // escalation/index.ts — public surface barrel; per architecture.md:262-275.
2
- export * from './agent-resolver.js';
3
- export * from './escalation-policy.js';
4
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/escalation/index.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAE5E,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC"}
@@ -1,37 +0,0 @@
1
- import type { AgentType } from '../types.js';
2
- export type ReworkLoop = 'spec' | 'quality';
3
- /** A single attempt's tier assignments. `null` impl means review-only row
4
- * (only used for quality loop's index 0). */
5
- export interface AttemptAssignment {
6
- impl: AgentType | null;
7
- reviewer: AgentType;
8
- }
9
- export interface EscalationDecision {
10
- /** Tier of the implementer for this attempt. */
11
- impl: AgentType;
12
- /** Tier of the reviewer for the review that follows this impl. */
13
- reviewer: AgentType;
14
- /** True when this attempt swaps off the base tier (used for diagnostics). */
15
- isEscalated: boolean;
16
- }
17
- export declare const SPEC_LOOP_STANDARD: AttemptAssignment[];
18
- export declare const QUALITY_LOOP_STANDARD: AttemptAssignment[];
19
- export declare const SPEC_LOOP_COMPLEX: AttemptAssignment[];
20
- export declare const QUALITY_LOOP_COMPLEX: AttemptAssignment[];
21
- export declare function pickEscalation(input: {
22
- loop: ReworkLoop;
23
- attemptIndex: number;
24
- baseTier: AgentType;
25
- }): EscalationDecision;
26
- export declare function pickReviewer(input: {
27
- loop: ReworkLoop;
28
- attemptIndex: number;
29
- baseTier: AgentType;
30
- }): AgentType;
31
- /** Total number of policy rows in the loop (includes review-only rows). Returns 3. */
32
- export declare function maxRowsFor(_loop: ReworkLoop): number;
33
- /** Number of reworks (impl attempts after initial). Returns 2 for both loops.
34
- * Loop-aware: spec excludes the initial-impl row (length - 1); quality has no
35
- * initial-impl row, so reworks = total impl rows. */
36
- export declare function maxReworksFor(loop: ReworkLoop): number;
37
- //# sourceMappingURL=policy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/escalation/policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;AAK5C;8CAC8C;AAC9C,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,gDAAgD;IAChD,IAAI,EAAE,SAAS,CAAC;IAChB,kEAAkE;IAClE,QAAQ,EAAE,SAAS,CAAC;IACpB,6EAA6E;IAC7E,WAAW,EAAE,OAAO,CAAC;CACtB;AAGD,eAAO,MAAM,kBAAkB,EAAE,iBAAiB,EAIjD,CAAC;AAIF,eAAO,MAAM,qBAAqB,EAAE,iBAAiB,EAIpD,CAAC;AAGF,eAAO,MAAM,iBAAiB,EAAE,iBAAiB,EAIhD,CAAC;AACF,eAAO,MAAM,oBAAoB,EAAE,iBAAiB,EAInD,CAAC;AAOF,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACpC,IAAI,EAAE,UAAU,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,SAAS,CAAC;CACrB,GAAG,kBAAkB,CAoBrB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE;IAClC,IAAI,EAAE,UAAU,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,SAAS,CAAC;CACrB,GAAG,SAAS,CASZ;AAED,sFAAsF;AACtF,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAEpD;AAED;;sDAEsD;AACtD,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAItD"}