@zhixuan92/multi-model-agent-core 4.6.0 → 4.7.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.
Files changed (315) hide show
  1. package/README.md +7 -8
  2. package/dist/bounded-execution/file-artifact-check.d.ts +4 -11
  3. package/dist/bounded-execution/file-artifact-check.d.ts.map +1 -1
  4. package/dist/bounded-execution/file-artifact-check.js +7 -22
  5. package/dist/bounded-execution/file-artifact-check.js.map +1 -1
  6. package/dist/bounded-execution/progress-watchdog.d.ts.map +1 -1
  7. package/dist/bounded-execution/progress-watchdog.js +60 -27
  8. package/dist/bounded-execution/progress-watchdog.js.map +1 -1
  9. package/dist/bounded-execution/stall-watchdog.d.ts.map +1 -1
  10. package/dist/bounded-execution/stall-watchdog.js +29 -12
  11. package/dist/bounded-execution/stall-watchdog.js.map +1 -1
  12. package/dist/bounded-execution/wall-clock-guard.d.ts +4 -0
  13. package/dist/bounded-execution/wall-clock-guard.d.ts.map +1 -1
  14. package/dist/bounded-execution/wall-clock-guard.js +1 -1
  15. package/dist/bounded-execution/wall-clock-guard.js.map +1 -1
  16. package/dist/config/canonical-model-identity.d.ts.map +1 -1
  17. package/dist/config/canonical-model-identity.js.map +1 -1
  18. package/dist/config/config-resolver.d.ts +1 -41
  19. package/dist/config/config-resolver.d.ts.map +1 -1
  20. package/dist/config/config-resolver.js +1 -43
  21. package/dist/config/config-resolver.js.map +1 -1
  22. package/dist/config/load.d.ts +0 -2
  23. package/dist/config/load.d.ts.map +1 -1
  24. package/dist/config/load.js +0 -4
  25. package/dist/config/load.js.map +1 -1
  26. package/dist/config/model-profile-registry.d.ts.map +1 -1
  27. package/dist/config/model-profile-registry.js +13 -7
  28. package/dist/config/model-profile-registry.js.map +1 -1
  29. package/dist/config/schema.d.ts +1 -19
  30. package/dist/config/schema.d.ts.map +1 -1
  31. package/dist/config/schema.js +12 -38
  32. package/dist/config/schema.js.map +1 -1
  33. package/dist/error-codes.d.ts +0 -1
  34. package/dist/error-codes.d.ts.map +1 -1
  35. package/dist/error-codes.js +0 -1
  36. package/dist/error-codes.js.map +1 -1
  37. package/dist/events/cloud-events.d.ts +0 -1
  38. package/dist/events/cloud-events.d.ts.map +1 -1
  39. package/dist/events/cloud-events.js +1 -1
  40. package/dist/events/cloud-events.js.map +1 -1
  41. package/dist/events/event-builder.js +1 -2
  42. package/dist/events/event-builder.js.map +1 -1
  43. package/dist/events/event-emitter.d.ts +2 -1
  44. package/dist/events/event-emitter.d.ts.map +1 -1
  45. package/dist/events/event-emitter.js +6 -1
  46. package/dist/events/event-emitter.js.map +1 -1
  47. package/dist/events/observability-events.d.ts +0 -26
  48. package/dist/events/observability-events.d.ts.map +1 -1
  49. package/dist/events/observability-events.js +1 -11
  50. package/dist/events/observability-events.js.map +1 -1
  51. package/dist/events/telemetry-types.d.ts +0 -7
  52. package/dist/events/telemetry-types.d.ts.map +1 -1
  53. package/dist/events/telemetry-types.js +1 -1
  54. package/dist/events/telemetry-types.js.map +1 -1
  55. package/dist/index.d.ts +4 -5
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +3 -3
  58. package/dist/index.js.map +1 -1
  59. package/dist/intake/resolve.d.ts.map +1 -1
  60. package/dist/intake/resolve.js +0 -1
  61. package/dist/intake/resolve.js.map +1 -1
  62. package/dist/lifecycle/handlers/{annotator.d.ts → annotate-stage.d.ts} +1 -1
  63. package/dist/lifecycle/handlers/annotate-stage.d.ts.map +1 -0
  64. package/dist/lifecycle/handlers/{annotator.js → annotate-stage.js} +13 -1
  65. package/dist/lifecycle/handlers/annotate-stage.js.map +1 -0
  66. package/dist/lifecycle/handlers/git-commit-handler.d.ts.map +1 -1
  67. package/dist/lifecycle/handlers/git-commit-handler.js +15 -0
  68. package/dist/lifecycle/handlers/git-commit-handler.js.map +1 -1
  69. package/dist/lifecycle/handlers/{task-executor.d.ts → implement-stage.d.ts} +1 -1
  70. package/dist/lifecycle/handlers/implement-stage.d.ts.map +1 -0
  71. package/dist/lifecycle/handlers/{task-executor.js → implement-stage.js} +31 -2
  72. package/dist/lifecycle/handlers/implement-stage.js.map +1 -0
  73. package/dist/lifecycle/handlers/{review-handler.d.ts → review-stage.d.ts} +1 -1
  74. package/dist/lifecycle/handlers/review-stage.d.ts.map +1 -0
  75. package/dist/lifecycle/handlers/{review-handler.js → review-stage.js} +18 -1
  76. package/dist/lifecycle/handlers/review-stage.js.map +1 -0
  77. package/dist/lifecycle/handlers/{rework-handler.d.ts → rework-stage.d.ts} +1 -1
  78. package/dist/lifecycle/handlers/rework-stage.d.ts.map +1 -0
  79. package/dist/lifecycle/handlers/{rework-handler.js → rework-stage.js} +17 -1
  80. package/dist/lifecycle/handlers/rework-stage.js.map +1 -0
  81. package/dist/lifecycle/lifecycle-context.d.ts +10 -4
  82. package/dist/lifecycle/lifecycle-context.d.ts.map +1 -1
  83. package/dist/lifecycle/lifecycle-dispatcher.d.ts +1 -1
  84. package/dist/lifecycle/lifecycle-dispatcher.d.ts.map +1 -1
  85. package/dist/lifecycle/lifecycle-dispatcher.js +1 -1
  86. package/dist/lifecycle/lifecycle-dispatcher.js.map +1 -1
  87. package/dist/lifecycle/lifecycle-driver.d.ts.map +1 -1
  88. package/dist/lifecycle/lifecycle-driver.js +22 -2
  89. package/dist/lifecycle/lifecycle-driver.js.map +1 -1
  90. package/dist/lifecycle/normalize-output-targets.d.ts +2 -0
  91. package/dist/lifecycle/normalize-output-targets.d.ts.map +1 -0
  92. package/dist/lifecycle/normalize-output-targets.js +14 -0
  93. package/dist/lifecycle/normalize-output-targets.js.map +1 -0
  94. package/dist/lifecycle/perform-implementation.d.ts.map +1 -1
  95. package/dist/lifecycle/perform-implementation.js +63 -26
  96. package/dist/lifecycle/perform-implementation.js.map +1 -1
  97. package/dist/lifecycle/rework-budget.d.ts +3 -0
  98. package/dist/lifecycle/rework-budget.d.ts.map +1 -0
  99. package/dist/lifecycle/rework-budget.js +9 -0
  100. package/dist/lifecycle/rework-budget.js.map +1 -0
  101. package/dist/lifecycle/stage-io.d.ts +3 -2
  102. package/dist/lifecycle/stage-io.d.ts.map +1 -1
  103. package/dist/lifecycle/stage-io.js.map +1 -1
  104. package/dist/lifecycle/stage-plan-builder.js +4 -4
  105. package/dist/lifecycle/stage-plan-builder.js.map +1 -1
  106. package/dist/lifecycle/stage-plan-types.d.ts +1 -4
  107. package/dist/lifecycle/stage-plan-types.d.ts.map +1 -1
  108. package/dist/lifecycle/task-completion-summary.d.ts.map +1 -1
  109. package/dist/lifecycle/task-completion-summary.js +0 -1
  110. package/dist/lifecycle/task-completion-summary.js.map +1 -1
  111. package/dist/lifecycle/task-executor.d.ts.map +1 -1
  112. package/dist/lifecycle/task-executor.js +2 -1
  113. package/dist/lifecycle/task-executor.js.map +1 -1
  114. package/dist/lifecycle/task-runner.d.ts +5 -1
  115. package/dist/lifecycle/task-runner.d.ts.map +1 -1
  116. package/dist/lifecycle/task-runner.js +92 -46
  117. package/dist/lifecycle/task-runner.js.map +1 -1
  118. package/dist/providers/agent-resolver.d.ts.map +1 -0
  119. package/dist/{escalation → providers}/agent-resolver.js +1 -1
  120. package/dist/providers/agent-resolver.js.map +1 -0
  121. package/dist/providers/assemble-run-result.js +0 -2
  122. package/dist/providers/assemble-run-result.js.map +1 -1
  123. package/dist/providers/claude-session.d.ts +12 -0
  124. package/dist/providers/claude-session.d.ts.map +1 -1
  125. package/dist/providers/claude-session.js +38 -1
  126. package/dist/providers/claude-session.js.map +1 -1
  127. package/dist/providers/codex-cli-session.d.ts +16 -1
  128. package/dist/providers/codex-cli-session.d.ts.map +1 -1
  129. package/dist/providers/codex-cli-session.js +75 -6
  130. package/dist/providers/codex-cli-session.js.map +1 -1
  131. package/dist/providers/normalize-claude.js +1 -1
  132. package/dist/providers/normalize-claude.js.map +1 -1
  133. package/dist/providers/provider-factory.d.ts +8 -0
  134. package/dist/providers/provider-factory.d.ts.map +1 -1
  135. package/dist/providers/provider-factory.js +64 -3
  136. package/dist/providers/provider-factory.js.map +1 -1
  137. package/dist/providers/run-annotator-turn.d.ts.map +1 -1
  138. package/dist/providers/run-annotator-turn.js +2 -1
  139. package/dist/providers/run-annotator-turn.js.map +1 -1
  140. package/dist/providers/run-worker-turn.d.ts +1 -1
  141. package/dist/providers/run-worker-turn.d.ts.map +1 -1
  142. package/dist/providers/run-worker-turn.js +0 -1
  143. package/dist/providers/run-worker-turn.js.map +1 -1
  144. package/dist/providers/runner-types.d.ts +5 -6
  145. package/dist/providers/runner-types.d.ts.map +1 -1
  146. package/dist/providers/stall-detector.d.ts +1 -1
  147. package/dist/providers/stall-detector.d.ts.map +1 -1
  148. package/dist/providers/stall-detector.js +1 -1
  149. package/dist/providers/stall-detector.js.map +1 -1
  150. package/dist/reporting/derive-investigate-status.d.ts +1 -1
  151. package/dist/reporting/derive-investigate-status.d.ts.map +1 -1
  152. package/dist/reporting/headline-templates/investigate.d.ts +1 -1
  153. package/dist/reporting/headline-templates/investigate.d.ts.map +1 -1
  154. package/dist/reporting/headline-templates/research.d.ts.map +1 -1
  155. package/dist/reporting/headline-templates/research.js +0 -1
  156. package/dist/reporting/headline-templates/research.js.map +1 -1
  157. package/dist/reporting/terminal-status-deriver.d.ts +1 -1
  158. package/dist/reporting/terminal-status-deriver.d.ts.map +1 -1
  159. package/dist/reporting/terminal-status-deriver.js +1 -4
  160. package/dist/reporting/terminal-status-deriver.js.map +1 -1
  161. package/dist/review/run-reviewer.d.ts.map +1 -1
  162. package/dist/review/run-reviewer.js +4 -3
  163. package/dist/review/run-reviewer.js.map +1 -1
  164. package/dist/stores/batch-registry.d.ts +15 -1
  165. package/dist/stores/batch-registry.d.ts.map +1 -1
  166. package/dist/stores/batch-registry.js +27 -0
  167. package/dist/stores/batch-registry.js.map +1 -1
  168. package/dist/tool-surface/tool-surface-registry.d.ts +1 -1
  169. package/dist/tool-surface/tool-surface-registry.d.ts.map +1 -1
  170. package/dist/tools/audit/tool-config.d.ts.map +1 -1
  171. package/dist/tools/audit/tool-config.js +0 -1
  172. package/dist/tools/audit/tool-config.js.map +1 -1
  173. package/dist/tools/debug/tool-config.d.ts.map +1 -1
  174. package/dist/tools/debug/tool-config.js +0 -1
  175. package/dist/tools/debug/tool-config.js.map +1 -1
  176. package/dist/tools/delegate/schema.d.ts +1 -1
  177. package/dist/tools/delegate/schema.d.ts.map +1 -1
  178. package/dist/tools/delegate/schema.js +2 -1
  179. package/dist/tools/delegate/schema.js.map +1 -1
  180. package/dist/tools/delegate/tool-config.d.ts +0 -1
  181. package/dist/tools/delegate/tool-config.d.ts.map +1 -1
  182. package/dist/tools/delegate/tool-config.js +0 -2
  183. package/dist/tools/delegate/tool-config.js.map +1 -1
  184. package/dist/tools/execute-plan/schema.d.ts +1 -1
  185. package/dist/tools/execute-plan/schema.d.ts.map +1 -1
  186. package/dist/tools/execute-plan/schema.js +2 -2
  187. package/dist/tools/execute-plan/schema.js.map +1 -1
  188. package/dist/tools/execute-plan/tool-config.d.ts.map +1 -1
  189. package/dist/tools/execute-plan/tool-config.js +0 -1
  190. package/dist/tools/execute-plan/tool-config.js.map +1 -1
  191. package/dist/tools/investigate/tool-config.d.ts.map +1 -1
  192. package/dist/tools/investigate/tool-config.js +0 -1
  193. package/dist/tools/investigate/tool-config.js.map +1 -1
  194. package/dist/tools/register-context-block/tool-config.d.ts.map +1 -1
  195. package/dist/tools/register-context-block/tool-config.js +0 -1
  196. package/dist/tools/register-context-block/tool-config.js.map +1 -1
  197. package/dist/tools/research/tool-config.d.ts.map +1 -1
  198. package/dist/tools/research/tool-config.js +0 -1
  199. package/dist/tools/research/tool-config.js.map +1 -1
  200. package/dist/tools/retry/tool-config.d.ts.map +1 -1
  201. package/dist/tools/retry/tool-config.js +0 -1
  202. package/dist/tools/retry/tool-config.js.map +1 -1
  203. package/dist/tools/review/tool-config.d.ts.map +1 -1
  204. package/dist/tools/review/tool-config.js +0 -1
  205. package/dist/tools/review/tool-config.js.map +1 -1
  206. package/dist/types/config.d.ts +0 -1
  207. package/dist/types/config.d.ts.map +1 -1
  208. package/dist/types/enums.d.ts +0 -3
  209. package/dist/types/enums.d.ts.map +1 -1
  210. package/dist/types/enums.js +3 -3
  211. package/dist/types/enums.js.map +1 -1
  212. package/dist/types/run-result.d.ts +14 -1
  213. package/dist/types/run-result.d.ts.map +1 -1
  214. package/dist/types/task-spec.d.ts +1 -1
  215. package/dist/types/task-spec.d.ts.map +1 -1
  216. package/package.json +1 -1
  217. package/dist/bounded-execution/cost-meter.d.ts +0 -20
  218. package/dist/bounded-execution/cost-meter.d.ts.map +0 -1
  219. package/dist/bounded-execution/cost-meter.js +0 -21
  220. package/dist/bounded-execution/cost-meter.js.map +0 -1
  221. package/dist/bounded-execution/error-classifier.d.ts +0 -11
  222. package/dist/bounded-execution/error-classifier.d.ts.map +0 -1
  223. package/dist/bounded-execution/error-classifier.js +0 -23
  224. package/dist/bounded-execution/error-classifier.js.map +0 -1
  225. package/dist/bounded-execution/idle-guard.d.ts +0 -8
  226. package/dist/bounded-execution/idle-guard.d.ts.map +0 -1
  227. package/dist/bounded-execution/idle-guard.js +0 -18
  228. package/dist/bounded-execution/idle-guard.js.map +0 -1
  229. package/dist/bounded-execution/index.d.ts +0 -10
  230. package/dist/bounded-execution/index.d.ts.map +0 -1
  231. package/dist/bounded-execution/index.js +0 -11
  232. package/dist/bounded-execution/index.js.map +0 -1
  233. package/dist/bounded-execution/safety-max-turns.d.ts +0 -17
  234. package/dist/bounded-execution/safety-max-turns.d.ts.map +0 -1
  235. package/dist/bounded-execution/safety-max-turns.js +0 -17
  236. package/dist/bounded-execution/safety-max-turns.js.map +0 -1
  237. package/dist/cleanup/batch-retention-sweeper.d.ts +0 -7
  238. package/dist/cleanup/batch-retention-sweeper.d.ts.map +0 -1
  239. package/dist/cleanup/batch-retention-sweeper.js +0 -10
  240. package/dist/cleanup/batch-retention-sweeper.js.map +0 -1
  241. package/dist/cleanup/context-block-gc-sweeper.d.ts +0 -8
  242. package/dist/cleanup/context-block-gc-sweeper.d.ts.map +0 -1
  243. package/dist/cleanup/context-block-gc-sweeper.js +0 -12
  244. package/dist/cleanup/context-block-gc-sweeper.js.map +0 -1
  245. package/dist/cleanup/index.d.ts +0 -5
  246. package/dist/cleanup/index.d.ts.map +0 -1
  247. package/dist/cleanup/index.js +0 -6
  248. package/dist/cleanup/index.js.map +0 -1
  249. package/dist/cleanup/project-idle-cleanup.d.ts +0 -7
  250. package/dist/cleanup/project-idle-cleanup.d.ts.map +0 -1
  251. package/dist/cleanup/project-idle-cleanup.js +0 -15
  252. package/dist/cleanup/project-idle-cleanup.js.map +0 -1
  253. package/dist/cleanup/shutdown-coordinator.d.ts +0 -7
  254. package/dist/cleanup/shutdown-coordinator.d.ts.map +0 -1
  255. package/dist/cleanup/shutdown-coordinator.js +0 -13
  256. package/dist/cleanup/shutdown-coordinator.js.map +0 -1
  257. package/dist/config/index.d.ts +0 -8
  258. package/dist/config/index.d.ts.map +0 -1
  259. package/dist/config/index.js +0 -9
  260. package/dist/config/index.js.map +0 -1
  261. package/dist/config/pricing-table.d.ts +0 -16
  262. package/dist/config/pricing-table.d.ts.map +0 -1
  263. package/dist/config/pricing-table.js +0 -51
  264. package/dist/config/pricing-table.js.map +0 -1
  265. package/dist/escalation/agent-resolver.d.ts.map +0 -1
  266. package/dist/escalation/agent-resolver.js.map +0 -1
  267. package/dist/escalation/delegate-with-escalation.d.ts +0 -52
  268. package/dist/escalation/delegate-with-escalation.d.ts.map +0 -1
  269. package/dist/escalation/delegate-with-escalation.js +0 -201
  270. package/dist/escalation/delegate-with-escalation.js.map +0 -1
  271. package/dist/escalation/escalation-policy.d.ts +0 -18
  272. package/dist/escalation/escalation-policy.d.ts.map +0 -1
  273. package/dist/escalation/escalation-policy.js +0 -33
  274. package/dist/escalation/escalation-policy.js.map +0 -1
  275. package/dist/escalation/fallback-helpers.d.ts +0 -22
  276. package/dist/escalation/fallback-helpers.d.ts.map +0 -1
  277. package/dist/escalation/fallback-helpers.js +0 -47
  278. package/dist/escalation/fallback-helpers.js.map +0 -1
  279. package/dist/escalation/fallback-types.d.ts +0 -60
  280. package/dist/escalation/fallback-types.d.ts.map +0 -1
  281. package/dist/escalation/fallback-types.js +0 -11
  282. package/dist/escalation/fallback-types.js.map +0 -1
  283. package/dist/escalation/fallback.d.ts +0 -5
  284. package/dist/escalation/fallback.d.ts.map +0 -1
  285. package/dist/escalation/fallback.js +0 -387
  286. package/dist/escalation/fallback.js.map +0 -1
  287. package/dist/escalation/index.d.ts +0 -3
  288. package/dist/escalation/index.d.ts.map +0 -1
  289. package/dist/escalation/index.js +0 -4
  290. package/dist/escalation/index.js.map +0 -1
  291. package/dist/escalation/policy.d.ts +0 -37
  292. package/dist/escalation/policy.d.ts.map +0 -1
  293. package/dist/escalation/policy.js +0 -67
  294. package/dist/escalation/policy.js.map +0 -1
  295. package/dist/escalation/types.d.ts +0 -15
  296. package/dist/escalation/types.d.ts.map +0 -1
  297. package/dist/escalation/types.js +0 -2
  298. package/dist/escalation/types.js.map +0 -1
  299. package/dist/events/running-headline-sink.d.ts +0 -27
  300. package/dist/events/running-headline-sink.d.ts.map +0 -1
  301. package/dist/events/running-headline-sink.js +0 -156
  302. package/dist/events/running-headline-sink.js.map +0 -1
  303. package/dist/lifecycle/handlers/annotator.d.ts.map +0 -1
  304. package/dist/lifecycle/handlers/annotator.js.map +0 -1
  305. package/dist/lifecycle/handlers/review-handler.d.ts.map +0 -1
  306. package/dist/lifecycle/handlers/review-handler.js.map +0 -1
  307. package/dist/lifecycle/handlers/rework-handler.d.ts.map +0 -1
  308. package/dist/lifecycle/handlers/rework-handler.js.map +0 -1
  309. package/dist/lifecycle/handlers/task-executor.d.ts.map +0 -1
  310. package/dist/lifecycle/handlers/task-executor.js.map +0 -1
  311. package/dist/lifecycle/metadata-repair.d.ts +0 -15
  312. package/dist/lifecycle/metadata-repair.d.ts.map +0 -1
  313. package/dist/lifecycle/metadata-repair.js +0 -33
  314. package/dist/lifecycle/metadata-repair.js.map +0 -1
  315. /package/dist/{escalation → providers}/agent-resolver.d.ts +0 -0
@@ -1,51 +0,0 @@
1
- // packages/core/src/config/pricing-table.ts
2
- // Per-model pricing schema + lookup helpers per architecture.md:62.
3
- //
4
- // Pricing data is embedded in ModelProfile entries (model-profiles.json).
5
- // This module exposes:
6
- // - the Zod sub-schema for the pricing fields, composed by modelProfileSchema
7
- // - ModelPricing type
8
- // - priceFor(modelId) lookup that returns the pricing fields for a given
9
- // model, or undefined if the model is unknown
10
- //
11
- // `load.ts` carries a separate `Pricing` shape (`inputUSDPerMillion` etc.)
12
- // used by the main-agent pricing resolution path. The two shapes are
13
- // distinct: model-profile pricing is per-million-tokens (`*PerMTok`),
14
- // the main-agent shape uses `*USDPerMillion`. Both record the same
15
- // economic fact at different granularities.
16
- import { z } from 'zod';
17
- import { findModelProfile } from './model-profile-registry.js';
18
- export const modelPricingSchema = z.object({
19
- inputCostPerMTok: z.number().finite().nonnegative().optional(),
20
- outputCostPerMTok: z.number().finite().nonnegative().optional(),
21
- cachedReadCostPerMTok: z.number().finite().nonnegative().optional(),
22
- cachedNonReadCostPerMTok: z.number().finite().nonnegative().optional(),
23
- reasoningCostPerMTok: z.number().finite().nonnegative().optional(),
24
- rateSource: z.string().min(1).optional(),
25
- rateLookupDate: z.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional(),
26
- });
27
- /** Look up per-model pricing. Returns the pricing fields from the matching
28
- * ModelProfile, or undefined when the model id matches no profile or the
29
- * matched profile lacks pricing data. */
30
- export function priceFor(modelId) {
31
- const profile = findModelProfile(modelId);
32
- const pricing = {
33
- inputCostPerMTok: profile.inputCostPerMTok,
34
- outputCostPerMTok: profile.outputCostPerMTok,
35
- cachedReadCostPerMTok: profile.cachedReadCostPerMTok,
36
- cachedNonReadCostPerMTok: profile.cachedNonReadCostPerMTok,
37
- reasoningCostPerMTok: profile.reasoningCostPerMTok,
38
- rateSource: profile.rateSource,
39
- rateLookupDate: profile.rateLookupDate,
40
- };
41
- // Only return pricing when at least one rate field is set; otherwise the
42
- // profile carries no rate-card information and the caller should treat
43
- // the model as unpriced.
44
- const hasAnyRate = pricing.inputCostPerMTok !== undefined ||
45
- pricing.outputCostPerMTok !== undefined ||
46
- pricing.cachedReadCostPerMTok !== undefined ||
47
- pricing.cachedNonReadCostPerMTok !== undefined ||
48
- pricing.reasoningCostPerMTok !== undefined;
49
- return hasAnyRate ? pricing : undefined;
50
- }
51
- //# sourceMappingURL=pricing-table.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pricing-table.js","sourceRoot":"","sources":["../../src/config/pricing-table.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,oEAAoE;AACpE,EAAE;AACF,0EAA0E;AAC1E,uBAAuB;AACvB,gFAAgF;AAChF,wBAAwB;AACxB,2EAA2E;AAC3E,kDAAkD;AAClD,EAAE;AACF,2EAA2E;AAC3E,qEAAqE;AACrE,sEAAsE;AACtE,mEAAmE;AACnE,4CAA4C;AAC5C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAqB,MAAM,6BAA6B,CAAC;AAElF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,gBAAgB,EAAW,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IACvE,iBAAiB,EAAU,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IACvE,qBAAqB,EAAM,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IACvE,wBAAwB,EAAG,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IACvE,oBAAoB,EAAO,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IACvE,UAAU,EAAiB,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACvD,cAAc,EAAa,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE;CAC9E,CAAC,CAAC;AAIH;;0CAE0C;AAC1C,MAAM,UAAU,QAAQ,CAAC,OAAe;IACtC,MAAM,OAAO,GAAiB,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,OAAO,GAAiB;QAC5B,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;QAC5C,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;QACpD,wBAAwB,EAAE,OAAO,CAAC,wBAAwB;QAC1D,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;QAClD,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,cAAc,EAAE,OAAO,CAAC,cAAc;KACvC,CAAC;IACF,yEAAyE;IACzE,uEAAuE;IACvE,yBAAyB;IACzB,MAAM,UAAU,GACd,OAAO,CAAC,gBAAgB,KAAK,SAAS;QACtC,OAAO,CAAC,iBAAiB,KAAK,SAAS;QACvC,OAAO,CAAC,qBAAqB,KAAK,SAAS;QAC3C,OAAO,CAAC,wBAAwB,KAAK,SAAS;QAC9C,OAAO,CAAC,oBAAoB,KAAK,SAAS,CAAC;IAC7C,OAAO,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1C,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-resolver.d.ts","sourceRoot":"","sources":["../../src/escalation/agent-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGzE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,wBAAgB,YAAY,CAC1B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,gBAAgB,GACvB,aAAa,CAaf"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-resolver.js","sourceRoot":"","sources":["../../src/escalation/agent-resolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAOlE,MAAM,UAAU,YAAY,CAC1B,SAAoB,EACpB,MAAwB;IAExB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IACnC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,gCAAgC,SAAS,uBAAuB,CAAC,CAAC;IACpF,CAAC;IACD,OAAO;QACL,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC;KAC5C,CAAC;AACJ,CAAC"}
@@ -1,52 +0,0 @@
1
- import type { TaskSpec, RuntimeRunResult, Provider, AgentType } from '../types.js';
2
- import type { InternalRunnerEvent } from '../providers/runner-types.js';
3
- import type { EventEmitter } from '../events/event-emitter.js';
4
- export interface DelegateOptions {
5
- explicitlyPinned?: boolean;
6
- onProgress?: (event: InternalRunnerEvent) => void;
7
- /**
8
- * Absolute Date.now() deadline for the entire task — across retries AND
9
- * tier fallbacks. Each provider.run gets at most `deadline - Date.now()`
10
- * as its per-call timeout. When the deadline is hit between calls, the
11
- * loop breaks and returns the best salvage so far.
12
- */
13
- taskDeadlineMs?: number;
14
- /**
15
- * External abort signal — when fired (e.g. by the orchestrator's stall
16
- * watchdog when nothing has progressed for `defaults.stallTimeoutMs`),
17
- * the in-flight provider.run force-salvages and returns; the retry/
18
- * fallback loops short-circuit so the user gets *something* back.
19
- */
20
- abortSignal?: AbortSignal;
21
- /**
22
- * Tier the caller is invoking this delegate for. Forwarded onto the
23
- * per-attempt `worker_start` runner event so observability can attribute
24
- * each provider attempt to its assigned tier.
25
- */
26
- assignedTier?: AgentType;
27
- /**
28
- * Bus for runner-shell and adapter events (`runner_turn_started`,
29
- * `runner_response_received`, `runner_turn_completed`). When set, the
30
- * server's VerboseLogChannel + LocalLogSink + TelemetrySink consume them.
31
- * Forwarded into provider.run as `RunOptions.bus`.
32
- */
33
- bus?: EventEmitter;
34
- /**
35
- * Batch identifier propagated onto runner events so verbose stderr lines
36
- * carry the same `batch=...` field as the HTTP-handler breadcrumbs.
37
- */
38
- batchId?: string;
39
- /**
40
- * Identifies which task within the batch is running. Threaded through to
41
- * runner events so per-task progress can be tracked separately when a
42
- * batch has multiple parallel tasks.
43
- */
44
- taskIndex?: number;
45
- /**
46
- * Lifecycle stage label forwarded to RunInput.stageLabel so the running-
47
- * headline polling response shows the current stage (e.g. 'Implementing').
48
- */
49
- stageLabel?: string;
50
- }
51
- export declare function delegateWithEscalation(task: TaskSpec, chain: Provider[], options?: DelegateOptions): Promise<RuntimeRunResult>;
52
- //# sourceMappingURL=delegate-with-escalation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"delegate-with-escalation.d.ts","sourceRoot":"","sources":["../../src/escalation/delegate-with-escalation.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,KAAK,EAEV,mBAAmB,EAGpB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAe/D,MAAM,WAAW,eAAe;IAC9B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAClD;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB;;;;;OAKG;IACH,GAAG,CAAC,EAAE,YAAY,CAAC;IACnB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAiBD,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,QAAQ,EAAE,EACjB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAmL3B"}
@@ -1,201 +0,0 @@
1
- // NOTE: Despite the name "delegateWithEscalation", this function does NOT
2
- // perform status-level tier escalation. Escalation policy lives in
3
- // escalation/policy.ts and is invoked via runWithFallback by the
4
- // lifecycle review-chain handlers. This function only handles transient
5
- // retries (api_error / network_error).
6
- import { retryableFor } from '../error-codes.js';
7
- import { extractToolName } from '../providers/stall-detector.js';
8
- import { assembleRunResult } from '../providers/assemble-run-result.js';
9
- import { HUMAN_LABEL } from '../lifecycle/stage-labels.js';
10
- function deriveCause(status, errorCode) {
11
- if (errorCode === 'degenerate_exhausted')
12
- return 'degenerate_exhausted';
13
- if (status === 'ok')
14
- return 'finished';
15
- if (status === 'incomplete')
16
- return 'incomplete';
17
- if (status === 'unavailable')
18
- return 'error';
19
- return status;
20
- }
21
- const TRANSIENT_STATUSES = new Set(['api_error', 'provider_transport_failure']);
22
- const TIMEOUT_STATUS = 'timeout';
23
- const MAX_RETRIES = 2;
24
- const BASE_DELAY_MS = 1000;
25
- function sleep(ms) {
26
- return new Promise(resolve => setTimeout(resolve, ms));
27
- }
28
- function maxRetriesForStatus(status) {
29
- if (TRANSIENT_STATUSES.has(status))
30
- return MAX_RETRIES;
31
- if (status === TIMEOUT_STATUS)
32
- return 1;
33
- return 0;
34
- }
35
- export async function delegateWithEscalation(task, chain, options = {}) {
36
- if (chain.length === 0) {
37
- throw new Error('delegateWithEscalation called with empty chain');
38
- }
39
- const safeSink = options.onProgress
40
- ? (event) => {
41
- try {
42
- options.onProgress(event);
43
- }
44
- catch {
45
- }
46
- }
47
- : undefined;
48
- const attempts = [];
49
- for (let i = 0; i < chain.length; i++) {
50
- const provider = chain[i];
51
- if (i > 0 && safeSink) {
52
- const prev = attempts[attempts.length - 1].record;
53
- safeSink({
54
- kind: 'escalation_start',
55
- previousProvider: prev.provider,
56
- previousReason: prev.reason ?? `status=${prev.status}`,
57
- nextProvider: provider.name,
58
- });
59
- }
60
- const initialPromptLengthChars = 0;
61
- const initialPromptHash = '';
62
- let result;
63
- let cumulativeCostUSD = 0;
64
- for (let attempt = 0;; attempt++) {
65
- // Cap per-call timeout at the remaining task-level budget.
66
- let effectiveTimeoutMs = task.timeoutMs;
67
- if (options.taskDeadlineMs !== undefined) {
68
- const remaining = options.taskDeadlineMs - Date.now();
69
- const remainingClamped = remaining > 0 ? remaining : 1;
70
- effectiveTimeoutMs =
71
- effectiveTimeoutMs !== undefined
72
- ? Math.min(effectiveTimeoutMs, remainingClamped)
73
- : remainingClamped;
74
- }
75
- // v4.4: ProviderConfig.type is one of: 'claude' | 'codex'.
76
- const cfg = provider.config;
77
- const cfgType = cfg.type ?? 'codex';
78
- const providerTypeName = cfgType === 'claude' ? 'claude' : 'codex';
79
- safeSink?.({
80
- kind: 'worker_start',
81
- model: cfg.model ?? 'unknown',
82
- providerType: providerTypeName,
83
- tier: options.assignedTier ?? 'standard',
84
- });
85
- const cwd = task.cwd ?? process.cwd();
86
- const wallClockDeadline = options.taskDeadlineMs ?? (Date.now() + (effectiveTimeoutMs ?? 60 * 60 * 1000));
87
- const idleStallTimeoutMs = 20 * 60 * 1000;
88
- const abortCtrl = new AbortController();
89
- if (options.abortSignal) {
90
- if (options.abortSignal.aborted)
91
- abortCtrl.abort();
92
- else
93
- options.abortSignal.addEventListener('abort', () => abortCtrl.abort(), { once: true });
94
- }
95
- const session = provider.openSession({
96
- cwd,
97
- wallClockDeadline,
98
- idleStallTimeoutMs,
99
- abortSignal: abortCtrl.signal,
100
- ...(options.bus && { bus: options.bus }),
101
- });
102
- try {
103
- const turn = await session.send(task.prompt, {
104
- stageLabel: options.stageLabel ?? HUMAN_LABEL.implementing,
105
- });
106
- result = assembleRunResult(turn);
107
- }
108
- finally {
109
- try {
110
- await session.close();
111
- }
112
- catch { /* idempotent */ }
113
- }
114
- const maxRetries = maxRetriesForStatus(result.status);
115
- if (result.status === 'ok' || maxRetries === 0 || attempt >= maxRetries)
116
- break;
117
- const attemptCost = result.cost?.costUSD ?? result.actualCostUSD ?? 0;
118
- cumulativeCostUSD += attemptCost;
119
- if (task.maxCostUSD !== undefined && cumulativeCostUSD >= task.maxCostUSD)
120
- break;
121
- if (options.taskDeadlineMs !== undefined && Date.now() >= options.taskDeadlineMs)
122
- break;
123
- if (options.abortSignal?.aborted)
124
- break;
125
- const delayMs = BASE_DELAY_MS * Math.pow(2, attempt);
126
- safeSink?.({ kind: 'retry', attempt: attempt + 1, previousStatus: result.status, delayMs });
127
- await sleep(delayMs);
128
- }
129
- const record = {
130
- provider: provider.name,
131
- status: result.status,
132
- turns: result.turns,
133
- inputTokens: result.usage.inputTokens,
134
- outputTokens: result.usage.outputTokens,
135
- costUSD: result.cost?.costUSD ?? null,
136
- initialPromptLengthChars,
137
- initialPromptHash,
138
- reason: result.status === 'ok'
139
- ? undefined
140
- : (result.error || `status=${result.status}`),
141
- };
142
- attempts.push({ result, record });
143
- if (result.status === 'ok') {
144
- const terminationReason = {
145
- cause: 'finished',
146
- turnsUsed: result.turns,
147
- hasFileArtifacts: result.filesWritten.length > 0,
148
- usedShell: result.toolCalls.some(tc => extractToolName(tc) === 'runShell'),
149
- workerSelfAssessment: result.workerStatus ?? null,
150
- wasPromoted: false,
151
- };
152
- return { ...result, terminationReason, escalationLog: attempts.map((a) => a.record) };
153
- }
154
- // Skip the next provider in the fallback chain if the task-level
155
- // deadline has been hit or the stall watchdog aborted.
156
- if (options.taskDeadlineMs !== undefined && Date.now() >= options.taskDeadlineMs) {
157
- break;
158
- }
159
- if (options.abortSignal?.aborted) {
160
- break;
161
- }
162
- if (options.explicitlyPinned) {
163
- return {
164
- ...result,
165
- errorCode: result.errorCode ?? result.status,
166
- retryable: result.retryable ?? retryableFor(result.status),
167
- escalationLog: attempts.map((a) => a.record),
168
- };
169
- }
170
- }
171
- const realContentAttempts = attempts.filter((a) => !a.result.outputIsDiagnostic);
172
- const pool = realContentAttempts.length > 0 ? realContentAttempts : attempts;
173
- let best = pool[0].result;
174
- for (const a of pool) {
175
- if (a.result.output.length > best.output.length) {
176
- best = a.result;
177
- }
178
- }
179
- // v5: escalation no longer gates on workerSelfAssessment. Annotate is the
180
- // single point of truth for `completed` (spec §5.7 + §9 M1/M3 fixes).
181
- // Escalation only records attempts and selects the best one; status flows
182
- // through unchanged to annotate which makes the final verdict.
183
- const finalStatus = best.status === 'ok' ? 'incomplete' : best.status;
184
- const terminationReason = {
185
- cause: deriveCause(finalStatus, best.errorCode),
186
- turnsUsed: best.turns,
187
- hasFileArtifacts: best.filesWritten.length > 0,
188
- usedShell: best.toolCalls.some(tc => extractToolName(tc) === 'runShell'),
189
- workerSelfAssessment: best.workerStatus ?? null, // truthful read; NOT stamped (M3 fix)
190
- wasPromoted: false,
191
- };
192
- return {
193
- ...best,
194
- status: finalStatus,
195
- terminationReason,
196
- errorCode: best.errorCode ?? finalStatus,
197
- retryable: best.retryable ?? retryableFor(finalStatus),
198
- escalationLog: attempts.map((a) => a.record),
199
- };
200
- }
201
- //# sourceMappingURL=delegate-with-escalation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"delegate-with-escalation.js","sourceRoot":"","sources":["../../src/escalation/delegate-with-escalation.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- import type { AgentType } from '../types.js';
2
- export type ToolCategory = 'artifact_producing' | 'read_only' | 'assist';
3
- export declare const ATTEMPT_BUDGETS: Record<ToolCategory, number>;
4
- export declare class EscalationPolicy {
5
- /**
6
- * Returns the tier to use for the implementer at the given chain attempt.
7
- * Per spec § C9 (overall.md lines 1247-1252): attempts 0 and 1 hold the caller's tier;
8
- * attempt 2 (the 3rd try) rotates to otherTier. attempt >= 3 means budget exhausted.
9
- */
10
- rotateImpl(currentTier: AgentType, attempt: number): AgentType;
11
- /**
12
- * Reviewer always sits on otherTier of the current implementer tier.
13
- * On attempt 2 when implementer rotated, reviewer auto-flips back to the caller's original tier.
14
- */
15
- rotateReviewer(currentImplTier: AgentType): AgentType;
16
- attemptBudget(category: ToolCategory): number;
17
- }
18
- //# sourceMappingURL=escalation-policy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"escalation-policy.d.ts","sourceRoot":"","sources":["../../src/escalation/escalation-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,MAAM,MAAM,YAAY,GAAG,oBAAoB,GAAG,WAAW,GAAG,QAAQ,CAAC;AAEzE,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAIxD,CAAC;AAEF,qBAAa,gBAAgB;IAC3B;;;;OAIG;IACH,UAAU,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS;IAO9D;;;OAGG;IACH,cAAc,CAAC,eAAe,EAAE,SAAS,GAAG,SAAS;IAIrD,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM;CAG9C"}
@@ -1,33 +0,0 @@
1
- import { otherTier } from '../config/tier-policy-registry.js';
2
- export const ATTEMPT_BUDGETS = {
3
- artifact_producing: 7, // 3 spec + 3 quality + 1 diff
4
- read_only: 2, // 1 implementer + 1 annotator (no rework)
5
- assist: 1, // register_context_block, retry_tasks — sync state ops, no rework
6
- };
7
- export class EscalationPolicy {
8
- /**
9
- * Returns the tier to use for the implementer at the given chain attempt.
10
- * Per spec § C9 (overall.md lines 1247-1252): attempts 0 and 1 hold the caller's tier;
11
- * attempt 2 (the 3rd try) rotates to otherTier. attempt >= 3 means budget exhausted.
12
- */
13
- rotateImpl(currentTier, attempt) {
14
- if (attempt < 0)
15
- throw new Error(`attempt must be >= 0, got ${attempt}`);
16
- if (attempt >= 3)
17
- throw new Error(`per-chain attempt budget exhausted (attempt=${attempt}); chain should have terminated`);
18
- if (attempt === 2)
19
- return otherTier(currentTier); // 3rd attempt rotates
20
- return currentTier; // attempts 0 + 1 hold caller tier
21
- }
22
- /**
23
- * Reviewer always sits on otherTier of the current implementer tier.
24
- * On attempt 2 when implementer rotated, reviewer auto-flips back to the caller's original tier.
25
- */
26
- rotateReviewer(currentImplTier) {
27
- return otherTier(currentImplTier);
28
- }
29
- attemptBudget(category) {
30
- return ATTEMPT_BUDGETS[category];
31
- }
32
- }
33
- //# sourceMappingURL=escalation-policy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"escalation-policy.js","sourceRoot":"","sources":["../../src/escalation/escalation-policy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAI9D,MAAM,CAAC,MAAM,eAAe,GAAiC;IAC3D,kBAAkB,EAAE,CAAC,EAAK,8BAA8B;IACxD,SAAS,EAAE,CAAC,EAAe,0CAA0C;IACrE,MAAM,EAAE,CAAC,EAAkB,kEAAkE;CAC9F,CAAC;AAEF,MAAM,OAAO,gBAAgB;IAC3B;;;;OAIG;IACH,UAAU,CAAC,WAAsB,EAAE,OAAe;QAChD,IAAI,OAAO,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,OAAO,EAAE,CAAC,CAAC;QACzE,IAAI,OAAO,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,OAAO,iCAAiC,CAAC,CAAC;QAC3H,IAAI,OAAO,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC,WAAW,CAAC,CAAC,CAAG,sBAAsB;QAC1E,OAAO,WAAW,CAAC,CAAkC,kCAAkC;IACzF,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,eAA0B;QACvC,OAAO,SAAS,CAAC,eAAe,CAAC,CAAC;IACpC,CAAC;IAED,aAAa,CAAC,QAAsB;QAClC,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;CACF"}
@@ -1,22 +0,0 @@
1
- import type { Provider, AgentType, RuntimeRunResult } from '../types.js';
2
- /** Two providers are "identical" iff they resolve to the same effective backend
3
- * (type + model + baseUrl + apiKey wiring). When an operator points both tiers
4
- * at the same backend (one-provider deployment), cross-tier fallback is
5
- * structurally pointless — alt would just hit the same place. Comparing the
6
- * serialized config catches this without a new operator-facing flag. */
7
- export declare function providersIdentical(a: Provider, b: Provider): boolean;
8
- /** Lifecycle helper: builds the synthetic RuntimeRunResult expected when both tiers are
9
- * unavailable. Status is the new 'unavailable' value (NOT 'api_error') so
10
- * re-passing the synthetic into runWithFallback's isTransportFailure cannot
11
- * retrigger fallback.
12
- *
13
- * IMPORTANT: This shape MUST satisfy `RuntimeRunResult` (see types.ts). Confirmed
14
- * required fields: output, status, usage, turns, filesRead, filesWritten,
15
- * toolCalls, outputIsDiagnostic, escalationLog. All other RuntimeRunResult fields
16
- * are optional. */
17
- export declare function makeSyntheticRunResult(assigned: AgentType, errorCode: string): RuntimeRunResult;
18
- export declare function isReviewTransportFailure(r: {
19
- status?: string;
20
- }): boolean;
21
- export declare function scoreWork<T>(r: T | undefined): number;
22
- //# sourceMappingURL=fallback-helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fallback-helpers.d.ts","sourceRoot":"","sources":["../../src/escalation/fallback-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEzE;;;;yEAIyE;AACzE,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAEpE;AAED;;;;;;;;oBAQoB;AACpB,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAiB/F;AAED,wBAAgB,wBAAwB,CACtC,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACrB,OAAO,CAET;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,SAAS,GAAG,MAAM,CAMrD"}
@@ -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"}