multi-forge 1.0.0__tar.gz → 1.0.1__tar.gz

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 (495) hide show
  1. {multi_forge-1.0.0 → multi_forge-1.0.1}/PKG-INFO +2 -2
  2. {multi_forge-1.0.0 → multi_forge-1.0.1}/pyproject.toml +4 -6
  3. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/config/defaults/backends/litellm.yaml +155 -17
  4. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/config/defaults/templates/anthropic-passthrough.yaml +1 -1
  5. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/config/defaults/templates/codex-responses-local.yaml +6 -0
  6. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/config/defaults/templates/litellm-anthropic-local.yaml +4 -3
  7. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/config/defaults/templates/litellm-anthropic.yaml +6 -5
  8. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/config/defaults/templates/litellm-gemini-flash-local.yaml +11 -6
  9. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/config/defaults/templates/litellm-gemini-local.yaml +10 -3
  10. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/config/defaults/templates/litellm-gemini-test.yaml +10 -1
  11. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/config/defaults/templates/litellm-gemini.yaml +5 -4
  12. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/config/defaults/templates/litellm-openai-codex-local.yaml +7 -0
  13. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/config/defaults/templates/litellm-openai-local.yaml +6 -0
  14. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/config/defaults/templates/litellm-openai.yaml +7 -1
  15. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/config/defaults/templates/openrouter-anthropic.yaml +7 -6
  16. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/config/defaults/templates/openrouter-deepseek.yaml +9 -0
  17. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/config/defaults/templates/openrouter-glm.yaml +10 -0
  18. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/config/defaults/templates/openrouter-openai-codex.yaml +12 -0
  19. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/config/defaults/templates/openrouter-openai.yaml +12 -1
  20. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/config/defaults/templates/openrouter-qwen.yaml +9 -1
  21. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/config/schema.py +15 -0
  22. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/data/model_catalog.yaml +318 -19
  23. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/data/model_routes.yaml +501 -0
  24. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/llm/clients/litellm.py +11 -1
  25. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/llm/clients/openai_compat.py +27 -0
  26. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/models/catalog.py +1 -0
  27. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/models/direct_model.py +1 -1
  28. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/models/types.py +8 -0
  29. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/reactive/tagger.py +1 -1
  30. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/policy/semantic/plan_check.py +3 -4
  31. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/policy/team/config.py +1 -1
  32. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/proxy/model_routes.py +6 -4
  33. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/review/models.py +21 -11
  34. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/qa/resources/checklist/4-proxy.md +13 -5
  35. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/qa/resources/checklist.md +2 -2
  36. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/qa/resources/execution-budget.json +1 -1
  37. {multi_forge-1.0.0 → multi_forge-1.0.1}/.gitignore +0 -0
  38. {multi_forge-1.0.0 → multi_forge-1.0.1}/LICENSE +0 -0
  39. {multi_forge-1.0.0 → multi_forge-1.0.1}/NOTICE +0 -0
  40. {multi_forge-1.0.0 → multi_forge-1.0.1}/README.md +0 -0
  41. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/agents/.gitkeep +0 -0
  42. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/commands/.gitkeep +0 -0
  43. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/__init__.py +0 -0
  44. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/backend/__init__.py +0 -0
  45. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/backend/adapters/__init__.py +0 -0
  46. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/backend/adapters/litellm.py +0 -0
  47. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/backend/creation.py +0 -0
  48. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/backend/registry.py +0 -0
  49. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/backend/remote/__init__.py +0 -0
  50. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/backend/remote/base.py +0 -0
  51. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/backend/remote/openrouter.py +0 -0
  52. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/backend/sources.py +0 -0
  53. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/__init__.py +0 -0
  54. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/activity.py +0 -0
  55. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/auth.py +0 -0
  56. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/backend.py +0 -0
  57. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/claude.py +0 -0
  58. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/codex.py +0 -0
  59. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/config_cmd.py +0 -0
  60. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/consumer_lane_freeze.py +0 -0
  61. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/editor.py +0 -0
  62. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/extensions.py +0 -0
  63. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/gc.py +0 -0
  64. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/guards.py +0 -0
  65. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/hooks/__init__.py +0 -0
  66. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/hooks/_group.py +0 -0
  67. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/hooks/_helpers.py +0 -0
  68. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/hooks/authority.py +0 -0
  69. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/hooks/codex_patch.py +0 -0
  70. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/hooks/codex_policy.py +0 -0
  71. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/hooks/codex_transfer.py +0 -0
  72. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/hooks/commands.py +0 -0
  73. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/hooks/direct_commands.py +0 -0
  74. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/hooks/policy.py +0 -0
  75. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/hooks/protocols.py +0 -0
  76. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/hooks/read_hygiene.py +0 -0
  77. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/hooks/verification.py +0 -0
  78. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/info.py +0 -0
  79. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/logs.py +0 -0
  80. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/main.py +0 -0
  81. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/memory.py +0 -0
  82. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/memory_report.py +0 -0
  83. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/memory_writer.py +0 -0
  84. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/model.py +0 -0
  85. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/output.py +0 -0
  86. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/policy.py +0 -0
  87. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/proxy.py +0 -0
  88. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/proxy_audit.py +0 -0
  89. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/proxy_costs.py +0 -0
  90. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/runtime.py +0 -0
  91. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/search.py +0 -0
  92. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/session.py +0 -0
  93. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/session_adopt.py +0 -0
  94. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/session_authority.py +0 -0
  95. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/session_authority_options.py +0 -0
  96. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/session_codex.py +0 -0
  97. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/session_fork.py +0 -0
  98. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/session_lane.py +0 -0
  99. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/session_lifecycle.py +0 -0
  100. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/session_manage.py +0 -0
  101. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/session_memory.py +0 -0
  102. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/session_model.py +0 -0
  103. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/session_repair.py +0 -0
  104. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/session_resume_modes.py +0 -0
  105. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/session_rewind.py +0 -0
  106. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/session_route_recovery.py +0 -0
  107. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/session_routing.py +0 -0
  108. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/session_supervisor_options.py +0 -0
  109. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/status_line.py +0 -0
  110. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/statusline/__init__.py +0 -0
  111. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/statusline/context.py +0 -0
  112. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/statusline/formatting.py +0 -0
  113. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/statusline/names.py +0 -0
  114. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/statusline/palette.py +0 -0
  115. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/statusline/registry.py +0 -0
  116. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/statusline/rendering.py +0 -0
  117. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/statusline/sources.py +0 -0
  118. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/statusline/throttle.py +0 -0
  119. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/statusline/types.py +0 -0
  120. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/telemetry.py +0 -0
  121. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/trace.py +0 -0
  122. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/transfer.py +0 -0
  123. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/workflow.py +0 -0
  124. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/cli/workspace.py +0 -0
  125. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/config/__init__.py +0 -0
  126. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/config/dataclass_utils.py +0 -0
  127. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/config/defaults/__init__.py +0 -0
  128. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/config/defaults/backends/__init__.py +0 -0
  129. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/config/defaults/templates/__init__.py +0 -0
  130. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/config/defaults/templates/openrouter-gemini-flash.yaml +0 -0
  131. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/config/defaults/templates/openrouter-gemini.yaml +0 -0
  132. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/config/defaults/templates/openrouter-kimi.yaml +0 -0
  133. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/config/defaults/templates/openrouter-minimax.yaml +0 -0
  134. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/config/loader.py +0 -0
  135. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/__init__.py +0 -0
  136. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/auth/__init__.py +0 -0
  137. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/auth/capabilities.py +0 -0
  138. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/auth/credentials_file.py +0 -0
  139. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/auth/protocols.py +0 -0
  140. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/auth/secrets.py +0 -0
  141. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/auth/template_secrets.py +0 -0
  142. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/backend_dependency.py +0 -0
  143. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/credential_registry.py +0 -0
  144. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/data/__init__.py +0 -0
  145. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/data/model_practices.yaml +0 -0
  146. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/data/system_prompt_addendums/__init__.py +0 -0
  147. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/data/system_prompt_addendums/gemini.md +0 -0
  148. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/data/system_prompt_addendums/openai.md +0 -0
  149. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/effort.py +0 -0
  150. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/identifiers.py +0 -0
  151. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/invoker/__init__.py +0 -0
  152. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/invoker/_lifecycle.py +0 -0
  153. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/invoker/claude.py +0 -0
  154. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/invoker/codex.py +0 -0
  155. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/invoker/codex_stream.py +0 -0
  156. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/invoker/types.py +0 -0
  157. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/lanes.py +0 -0
  158. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/llm/__init__.py +0 -0
  159. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/llm/clients/__init__.py +0 -0
  160. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/llm/clients/base.py +0 -0
  161. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/llm/clients/openrouter.py +0 -0
  162. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/llm/credentials.py +0 -0
  163. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/llm/detection.py +0 -0
  164. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/llm/errors.py +0 -0
  165. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/llm/openrouter_policy.py +0 -0
  166. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/llm/protocols.py +0 -0
  167. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/llm/types.py +0 -0
  168. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/logging.py +0 -0
  169. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/metric_formatting.py +0 -0
  170. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/models/__init__.py +0 -0
  171. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/models/model_practices.py +0 -0
  172. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/models/model_reference.py +0 -0
  173. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/models/model_routes.py +0 -0
  174. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/naming.py +0 -0
  175. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/ops/__init__.py +0 -0
  176. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/ops/backend_reconcile.py +0 -0
  177. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/ops/claude_session.py +0 -0
  178. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/ops/codex_adopt.py +0 -0
  179. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/ops/codex_bridge.py +0 -0
  180. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/ops/codex_enrollment.py +0 -0
  181. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/ops/codex_interactive.py +0 -0
  182. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/ops/codex_session.py +0 -0
  183. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/ops/codex_thread_index.py +0 -0
  184. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/ops/context.py +0 -0
  185. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/ops/gc.py +0 -0
  186. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/ops/policy.py +0 -0
  187. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/ops/provider_trace.py +0 -0
  188. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/ops/proxy.py +0 -0
  189. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/ops/resolution.py +0 -0
  190. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/ops/session.py +0 -0
  191. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/ops/session_active.py +0 -0
  192. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/ops/session_adopt.py +0 -0
  193. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/ops/session_authority.py +0 -0
  194. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/ops/session_authority_launch.py +0 -0
  195. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/ops/session_context.py +0 -0
  196. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/ops/session_fork_execution.py +0 -0
  197. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/ops/session_fork_preflight.py +0 -0
  198. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/ops/session_model.py +0 -0
  199. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/ops/session_model_routing.py +0 -0
  200. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/ops/session_repair.py +0 -0
  201. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/ops/session_routing.py +0 -0
  202. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/ops/transfer.py +0 -0
  203. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/ops/usage_summary.py +0 -0
  204. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/ops/workspace.py +0 -0
  205. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/paths.py +0 -0
  206. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/process.py +0 -0
  207. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/provider_types.py +0 -0
  208. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/reactive/__init__.py +0 -0
  209. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/reactive/cost_tracking.py +0 -0
  210. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/reactive/env.py +0 -0
  211. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/reactive/headless_json.py +0 -0
  212. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/reactive/llm_call.py +0 -0
  213. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/reactive/proxy.py +0 -0
  214. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/reactive/routing.py +0 -0
  215. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/reactive/session_runner.py +0 -0
  216. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/reactive/structured_output.py +0 -0
  217. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/reactive/throttle.py +0 -0
  218. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/run_id.py +0 -0
  219. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/runtime/__init__.py +0 -0
  220. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/runtime/codex_preflight.py +0 -0
  221. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/runtime/codex_preflight_cache.py +0 -0
  222. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/runtime/codex_rollouts.py +0 -0
  223. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/runtime/registry.py +0 -0
  224. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/runtime_vocab.py +0 -0
  225. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/state/__init__.py +0 -0
  226. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/state/exceptions.py +0 -0
  227. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/state/io.py +0 -0
  228. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/state/lock.py +0 -0
  229. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/state/retention.py +0 -0
  230. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/state/timestamps.py +0 -0
  231. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/state/versioned_store.py +0 -0
  232. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/telemetry/__init__.py +0 -0
  233. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/telemetry/caps.py +0 -0
  234. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/telemetry/downstream.py +0 -0
  235. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/telemetry/downstream_retention.py +0 -0
  236. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/telemetry/jsonl_io.py +0 -0
  237. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/telemetry/upstream.py +0 -0
  238. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/telemetry/vocabulary.py +0 -0
  239. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/tiers.py +0 -0
  240. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/transcript.py +0 -0
  241. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/typing_helpers.py +0 -0
  242. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/usage/__init__.py +0 -0
  243. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/usage/billing.py +0 -0
  244. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/usage/correlation.py +0 -0
  245. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/usage/emit.py +0 -0
  246. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/usage/ledger.py +0 -0
  247. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/usage/measurement.py +0 -0
  248. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/usage/vocabulary.py +0 -0
  249. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/wire_shapes.py +0 -0
  250. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/workqueue/__init__.py +0 -0
  251. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/workqueue/queue.py +0 -0
  252. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/core/workqueue/types.py +0 -0
  253. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/install/__init__.py +0 -0
  254. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/install/codex_hooks.py +0 -0
  255. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/install/doctor.py +0 -0
  256. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/install/exceptions.py +0 -0
  257. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/install/hook_dispatcher.py +0 -0
  258. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/install/hook_migration.py +0 -0
  259. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/install/hooks.py +0 -0
  260. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/install/installer.py +0 -0
  261. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/install/models.py +0 -0
  262. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/install/module_planning.py +0 -0
  263. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/install/ownership.py +0 -0
  264. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/install/path_policy.py +0 -0
  265. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/install/preset.py +0 -0
  266. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/install/project_compat.py +0 -0
  267. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/install/project_registry.py +0 -0
  268. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/install/runtime_removal.py +0 -0
  269. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/install/settings_merge.py +0 -0
  270. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/install/settings_rollback.py +0 -0
  271. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/install/skill_cache.py +0 -0
  272. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/install/skill_compiler.py +0 -0
  273. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/install/skill_planning.py +0 -0
  274. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/install/skill_validation.py +0 -0
  275. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/install/tracking.py +0 -0
  276. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/install/unmanaged.py +0 -0
  277. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/install/version.py +0 -0
  278. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/policy/__init__.py +0 -0
  279. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/policy/action_identity.py +0 -0
  280. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/policy/deterministic/__init__.py +0 -0
  281. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/policy/deterministic/base.py +0 -0
  282. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/policy/deterministic/coding_standards.py +0 -0
  283. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/policy/deterministic/registry.py +0 -0
  284. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/policy/deterministic/tdd.py +0 -0
  285. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/policy/diff.py +0 -0
  286. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/policy/engine.py +0 -0
  287. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/policy/protocols.py +0 -0
  288. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/policy/queries.py +0 -0
  289. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/policy/semantic/__init__.py +0 -0
  290. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/policy/semantic/shadow.py +0 -0
  291. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/policy/semantic/shadow_runner.py +0 -0
  292. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/policy/semantic/supervisor.py +0 -0
  293. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/policy/semantic/verdict.py +0 -0
  294. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/policy/store.py +0 -0
  295. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/policy/supervisor_lane_degrade.py +0 -0
  296. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/policy/team/__init__.py +0 -0
  297. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/policy/team/handlers.py +0 -0
  298. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/policy/team/prompts.py +0 -0
  299. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/policy/types.py +0 -0
  300. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/proxy/__init__.py +0 -0
  301. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/proxy/accounting_persistence.py +0 -0
  302. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/proxy/audit_logger.py +0 -0
  303. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/proxy/base_client.py +0 -0
  304. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/proxy/client_adapter.py +0 -0
  305. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/proxy/client_factory.py +0 -0
  306. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/proxy/converters.py +0 -0
  307. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/proxy/cost_logger.py +0 -0
  308. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/proxy/cost_tracker.py +0 -0
  309. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/proxy/data_models.py +0 -0
  310. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/proxy/error_hints.py +0 -0
  311. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/proxy/intercept.py +0 -0
  312. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/proxy/metrics.py +0 -0
  313. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/proxy/passthrough.py +0 -0
  314. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/proxy/passthrough_ingress.py +0 -0
  315. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/proxy/ports.py +0 -0
  316. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/proxy/provider_trace_logger.py +0 -0
  317. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/proxy/proxies.py +0 -0
  318. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/proxy/proxy_identity.py +0 -0
  319. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/proxy/proxy_orchestrator.py +0 -0
  320. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/proxy/proxy_startup.py +0 -0
  321. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/proxy/reasoning.py +0 -0
  322. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/proxy/request_id.py +0 -0
  323. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/proxy/response_headers.py +0 -0
  324. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/proxy/responses_ingress.py +0 -0
  325. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/proxy/responses_passthrough.py +0 -0
  326. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/proxy/runtime_truth.py +0 -0
  327. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/proxy/server.py +0 -0
  328. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/proxy/sse_framing.py +0 -0
  329. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/proxy/stream_relay.py +0 -0
  330. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/proxy/utils.py +0 -0
  331. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/review/__init__.py +0 -0
  332. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/review/adversarial.py +0 -0
  333. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/review/consensus.py +0 -0
  334. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/review/engine.py +0 -0
  335. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/review/resources/__init__.py +0 -0
  336. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/review/resources/code_consensus_evaluation.md +0 -0
  337. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/review/resources/code_debate_evaluation.md +0 -0
  338. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/review/resources/codereview-performance.md +0 -0
  339. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/review/resources/codereview-quick.md +0 -0
  340. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/review/resources/codereview-security.md +0 -0
  341. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/review/resources/codereview.md +0 -0
  342. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/review/resources/consensus_evaluation.md +0 -0
  343. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/review/resources/debate_evaluation.md +0 -0
  344. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/review/resources/docreview-quick.md +0 -0
  345. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/review/resources/docreview.md +0 -0
  346. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/review/resources/thinkdeep.md +0 -0
  347. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/review/routing.py +0 -0
  348. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/review/synthesis.py +0 -0
  349. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/review/worker_preparation.py +0 -0
  350. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/runtime_config.py +0 -0
  351. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/search/__init__.py +0 -0
  352. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/search/bm25_store.py +0 -0
  353. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/search/content_store.py +0 -0
  354. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/search/engine.py +0 -0
  355. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/search/exceptions.py +0 -0
  356. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/search/extractor.py +0 -0
  357. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/search/index_state.py +0 -0
  358. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/search/store.py +0 -0
  359. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/search/tokenizer.py +0 -0
  360. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/__init__.py +0 -0
  361. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/active.py +0 -0
  362. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/addendum.py +0 -0
  363. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/artifacts.py +0 -0
  364. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/authority.py +0 -0
  365. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/claude/__init__.py +0 -0
  366. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/claude/cleanup.py +0 -0
  367. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/claude/invoke.py +0 -0
  368. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/claude/paths.py +0 -0
  369. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/claude/relocate.py +0 -0
  370. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/cleanup.py +0 -0
  371. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/codex_handoff.py +0 -0
  372. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/codex_invoke.py +0 -0
  373. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/config.py +0 -0
  374. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/consumer_lanes.py +0 -0
  375. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/context_limit.py +0 -0
  376. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/context_rendering.py +0 -0
  377. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/effective.py +0 -0
  378. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/events.py +0 -0
  379. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/exceptions.py +0 -0
  380. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/git.py +0 -0
  381. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/hooks/__init__.py +0 -0
  382. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/hooks/models.py +0 -0
  383. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/hooks/session_start.py +0 -0
  384. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/identity.py +0 -0
  385. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/index.py +0 -0
  386. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/launch.py +0 -0
  387. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/launch_confirmation.py +0 -0
  388. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/launchability.py +0 -0
  389. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/manager.py +0 -0
  390. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/memory_inheritance.py +0 -0
  391. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/memory_writer.py +0 -0
  392. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/model_pin.py +0 -0
  393. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/models.py +0 -0
  394. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/overrides.py +0 -0
  395. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/passport.py +0 -0
  396. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/plan_resolution.py +0 -0
  397. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/prev_sessions.py +0 -0
  398. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/project_memory.py +0 -0
  399. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/rewind.py +0 -0
  400. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/routing.py +0 -0
  401. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/shadow_curation.py +0 -0
  402. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/store.py +0 -0
  403. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/transfer.py +0 -0
  404. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/validation.py +0 -0
  405. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/verification_config.py +0 -0
  406. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/workspace.py +0 -0
  407. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/worktree/__init__.py +0 -0
  408. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/worktree/cleanup.py +0 -0
  409. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/worktree/config_copy.py +0 -0
  410. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/session/worktree/create.py +0 -0
  411. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/sidecar/__init__.py +0 -0
  412. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/sidecar/container.py +0 -0
  413. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/forge/sidecar/docker.py +0 -0
  414. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/analyze/content.md +0 -0
  415. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/analyze/forge-skill.yaml +0 -0
  416. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/challenge/content.md +0 -0
  417. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/challenge/forge-skill.yaml +0 -0
  418. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/consensus/content.md +0 -0
  419. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/consensus/forge-skill.yaml +0 -0
  420. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/consensus/resources/synthesis.md +0 -0
  421. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/debate/content.md +0 -0
  422. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/debate/forge-skill.yaml +0 -0
  423. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/panel/content.md +0 -0
  424. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/panel/forge-skill.yaml +0 -0
  425. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/panel/resources/synthesis.md +0 -0
  426. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/qa/SKILL.md +0 -0
  427. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/qa/resources/checklist/0-enable.md +0 -0
  428. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/qa/resources/checklist/1-preflight.md +0 -0
  429. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/qa/resources/checklist/10-resume.md +0 -0
  430. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/qa/resources/checklist/11-config.md +0 -0
  431. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/qa/resources/checklist/12-search.md +0 -0
  432. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/qa/resources/checklist/13-policy.md +0 -0
  433. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/qa/resources/checklist/14-workflow.md +0 -0
  434. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/qa/resources/checklist/15-skills.md +0 -0
  435. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/qa/resources/checklist/16-memory.md +0 -0
  436. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/qa/resources/checklist/17-info.md +0 -0
  437. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/qa/resources/checklist/18-disable.md +0 -0
  438. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/qa/resources/checklist/19-uninstall.md +0 -0
  439. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/qa/resources/checklist/2-extension.md +0 -0
  440. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/qa/resources/checklist/20-cleanup.md +0 -0
  441. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/qa/resources/checklist/3-authentication.md +0 -0
  442. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/qa/resources/checklist/5-session.md +0 -0
  443. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/qa/resources/checklist/6-hook.md +0 -0
  444. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/qa/resources/checklist/7-costs.md +0 -0
  445. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/qa/resources/checklist/8-status-line.md +0 -0
  446. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/qa/resources/checklist/9-direct-commands.md +0 -0
  447. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/qa/resources/coverage-map.md +0 -0
  448. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/qa/resources/report-template.md +0 -0
  449. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/qa/resources/runtime-matrix.json +0 -0
  450. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/qa/scripts/qa-artifact.py +0 -0
  451. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/qa/scripts/qa-run-metrics.py +0 -0
  452. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/qa/scripts/qa-selection.py +0 -0
  453. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/qa/scripts/start-container.sh +0 -0
  454. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/qa/scripts/walkthrough-state.py +0 -0
  455. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/review/content.md +0 -0
  456. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/review/forge-skill.yaml +0 -0
  457. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/review/references/claude-4.6.md +0 -0
  458. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/review/references/claude-4.8.md +0 -0
  459. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/review/references/gemini-3.1.md +0 -0
  460. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/review/references/gpt-5.5.md +0 -0
  461. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/review/references/skills-writing-guide.md +0 -0
  462. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/review/resources/code-anthropic.md +0 -0
  463. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/review/resources/code-gemini.md +0 -0
  464. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/review/resources/code-openai.md +0 -0
  465. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/review/resources/code.md +0 -0
  466. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/review-docs/content.md +0 -0
  467. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/review-docs/forge-skill.yaml +0 -0
  468. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/review-docs/resources/docs-anthropic.md +0 -0
  469. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/review-docs/resources/docs-gemini.md +0 -0
  470. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/review-docs/resources/docs-openai.md +0 -0
  471. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/review-docs/resources/docs.md +0 -0
  472. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/smoke-test/content.md +0 -0
  473. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/smoke-test/forge-skill.yaml +0 -0
  474. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/smoke-test/scripts/smoke-test.sh +0 -0
  475. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/understand/content.md +0 -0
  476. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/understand/forge-skill.yaml +0 -0
  477. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/understand/resources/code-anthropic.md +0 -0
  478. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/understand/resources/code-gemini.md +0 -0
  479. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/understand/resources/code-openai.md +0 -0
  480. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/understand/resources/code.md +0 -0
  481. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/understand/resources/docs-anthropic.md +0 -0
  482. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/understand/resources/docs-gemini.md +0 -0
  483. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/understand/resources/docs-openai.md +0 -0
  484. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/understand/resources/docs.md +0 -0
  485. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/walkthrough/SKILL.md +0 -0
  486. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/walkthrough/resources/checklist.md +0 -0
  487. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/walkthrough/resources/journey-map.md +0 -0
  488. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/walkthrough/scripts/claude-wrapper.sh +0 -0
  489. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/walkthrough/scripts/cleanup-owned.sh +0 -0
  490. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/walkthrough/scripts/package-identity.py +0 -0
  491. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/walkthrough/scripts/protected-paths.py +0 -0
  492. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/walkthrough/scripts/run-in-repo.sh +0 -0
  493. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/walkthrough/scripts/setup-test-repo.sh +0 -0
  494. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/walkthrough/scripts/walkthrough-report.py +0 -0
  495. {multi_forge-1.0.0 → multi_forge-1.0.1}/src/skills/walkthrough/scripts/walkthrough-state.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: multi-forge
3
- Version: 1.0.0
3
+ Version: 1.0.1
4
4
  Summary: Multi-runtime agent toolkit: proxy routing, cost control, session management, policy enforcement, and workflow orchestration
5
5
  Project-URL: Homepage, https://github.com/hapa1i/multi-forge
6
6
  Project-URL: Repository, https://github.com/hapa1i/multi-forge
@@ -33,7 +33,7 @@ Requires-Dist: expression<6,>=5.6.0
33
33
  Requires-Dist: fastapi-sso<1,>=0.19.0
34
34
  Requires-Dist: fastapi<0.137,>=0.136.3
35
35
  Requires-Dist: httpx>=0.25.0
36
- Requires-Dist: litellm<=1.99.0,>=1.98.0
36
+ Requires-Dist: litellm==1.102.0
37
37
  Requires-Dist: openai>=1.0.0
38
38
  Requires-Dist: orjson<4,>=3.11.6
39
39
  Requires-Dist: packaging>=21.0
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "multi-forge"
3
- version = "1.0.0"
3
+ version = "1.0.1"
4
4
  description = "Multi-runtime agent toolkit: proxy routing, cost control, session management, policy enforcement, and workflow orchestration"
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
@@ -42,7 +42,7 @@ dependencies = [
42
42
  # Proxy dependencies (previously optional, now core). Forge owns the
43
43
  # default-Uvicorn LiteLLM startup set because the upstream `proxy` extra
44
44
  # caps cryptography below Forge's patched floor. This set is start/health
45
- # validated through LiteLLM 1.99.0; run scripts/test-wheel-runtime.sh before
45
+ # validated through LiteLLM 1.102.0; run scripts/test-wheel-runtime.sh before
46
46
  # raising the ceiling. Alternate servers, databases, and cloud integrations
47
47
  # remain outside Forge's runtime path.
48
48
  "aiohttp>=3.14.3,<4",
@@ -68,10 +68,8 @@ dependencies = [
68
68
  "uvloop>=0.21.0,<1; sys_platform != 'win32'",
69
69
  "watchfiles>=0.20",
70
70
  "websockets>=15.0.1,<16",
71
- # Floor = the first packaged-cost-map version for gemini-3.7-flash (see
72
- # tests/integration/proxy/test_proxy_local_litellm_e2e.py); packaged
73
- # cost-map pricing for that model first ships in the v1.98 line.
74
- "litellm>=1.98.0,<=1.99.0",
71
+ # Packaged Gemini 3.8 Flash metadata and the verified proxy runtime.
72
+ "litellm==1.102.0",
75
73
  ]
76
74
 
77
75
  [project.scripts]
@@ -6,14 +6,15 @@
6
6
  # - gemini/gemini-3.1-pro-preview
7
7
  # - gemini/gemini-3.1-pro-preview-customtools (optimized for custom tools + bash)
8
8
  # - gemini/gemini-3-flash-preview
9
- # - gemini/gemini-3.7-flash (LiteLLM Flash default; 3.8 is OpenRouter-only for now)
9
+ # - gemini/gemini-3.8-flash (LiteLLM Flash default)
10
+ # - gemini/gemini-3.7-flash
10
11
  # - gemini/gemini-3.6-flash (Gemini 3.6 Flash - efficiency release)
11
12
  # - gemini/gemini-3.5-flash
12
13
  # - gemini/gemini-2.5-flash
13
14
  # - gemini/gemini-2.5-pro
14
15
  #
15
16
  # Anthropic (requires ANTHROPIC_API_KEY):
16
- # - anthropic/claude-haiku-4-5, claude-sonnet-5, claude-opus-5
17
+ # - anthropic/claude-haiku-4-5, claude-sonnet-5, claude-opus-5-5, claude-opus-5
17
18
  # - anthropic/claude-fable-5-1, claude-fable-5
18
19
  # - anthropic/claude-opus-4-8, claude-opus-4-6, claude-sonnet-4-6
19
20
  #
@@ -25,7 +26,7 @@
25
26
  # - openai/gpt-5.4, gpt-5.4-pro
26
27
  # - openai/gpt-5.5
27
28
  # - openai/gpt-5.6, gpt-5.6-sol, gpt-5.6-terra, gpt-5.6-luna
28
- # - openai/gpt-6-astra
29
+ # - openai/gpt-6-astra, gpt-6-sol, gpt-6-luna
29
30
  #
30
31
  # Start with: forge model backend start litellm --port 4000
31
32
 
@@ -48,7 +49,13 @@ model_list:
48
49
  model: gemini/gemini-3-flash-preview
49
50
  api_key: os.environ/GEMINI_API_KEY
50
51
 
51
- # Gemini 3.7 Flash - current LiteLLM Flash default
52
+ # Gemini 3.8 Flash - current LiteLLM Flash default
53
+ - model_name: gemini/gemini-3.8-flash
54
+ litellm_params:
55
+ model: gemini/gemini-3.8-flash
56
+ api_key: os.environ/GEMINI_API_KEY
57
+
58
+ # Gemini 3.7 Flash
52
59
  - model_name: gemini/gemini-3.7-flash
53
60
  litellm_params:
54
61
  model: gemini/gemini-3.7-flash
@@ -94,6 +101,11 @@ model_list:
94
101
  model: gemini/gemini-3-flash-preview
95
102
  api_key: os.environ/GEMINI_API_KEY
96
103
 
104
+ - model_name: gemini-3.8-flash
105
+ litellm_params:
106
+ model: gemini/gemini-3.8-flash
107
+ api_key: os.environ/GEMINI_API_KEY
108
+
97
109
  - model_name: gemini-3.7-flash
98
110
  litellm_params:
99
111
  model: gemini/gemini-3.7-flash
@@ -133,6 +145,45 @@ model_list:
133
145
  model: anthropic/claude-sonnet-5
134
146
  api_key: os.environ/ANTHROPIC_API_KEY
135
147
 
148
+ # LiteLLM 1.102 predates Opus 5.5. Keep its pricing and thinking contract available offline.
149
+ # https://platform.claude.com/docs/en/models/opus-5-5/overview (verified 2026-09-23)
150
+ - model_name: anthropic/claude-opus-5-5
151
+ litellm_params:
152
+ model: anthropic/claude-opus-5-5
153
+ api_key: os.environ/ANTHROPIC_API_KEY
154
+ model_info:
155
+ base_model: claude-opus-5-5
156
+ mode: chat
157
+ max_input_tokens: 1000000
158
+ max_output_tokens: 128000
159
+ max_tokens: 128000
160
+ input_cost_per_token: 0.000004
161
+ output_cost_per_token: 0.000020
162
+ cache_creation_input_token_cost: 0.000005
163
+ cache_creation_input_token_cost_above_1hr: 0.000008
164
+ # Opus 5.5 cache reads intentionally cost $0.20/MTok (0.05x base input).
165
+ cache_read_input_token_cost: 0.0000002
166
+ supports_vision: true
167
+ supports_function_calling: true
168
+ supports_tool_choice: true
169
+ supports_prompt_caching: true
170
+ prompt_cache_min_tokens: 512
171
+ supports_reasoning: true
172
+ supports_adaptive_thinking: true
173
+ supports_legacy_thinking: false
174
+ thinking_always_on: true
175
+ supports_output_config: true
176
+ supports_xhigh_reasoning_effort: true
177
+ supports_max_reasoning_effort: true
178
+ default_reasoning_effort: medium
179
+ reasoning_effort_levels: [low, medium, high, xhigh, max]
180
+ supports_response_schema: true
181
+ supports_native_structured_output: true
182
+ supports_assistant_prefill: false
183
+ provider_specific_entry:
184
+ us: 1.1
185
+ fast: 2.0
186
+
136
187
  - model_name: anthropic/claude-opus-5
137
188
  litellm_params:
138
189
  model: anthropic/claude-opus-5
@@ -284,24 +335,111 @@ model_list:
284
335
  model: openai/gpt-5.6-luna
285
336
  api_key: os.environ/OPENAI_API_KEY
286
337
 
287
- # LiteLLM 1.99 lacks packaged Astra pricing. Keep this route usable without a cost-map refresh.
288
- # Remove the pricing override once LiteLLM bundles it; test_astra_pricing pins this boundary.
289
- # Standard rates, including the >272k-token premium, verified 2026-09-05:
290
- # https://developers.openai.com/api/docs/models/gpt-6-astra
291
338
  - model_name: openai/gpt-6-astra
292
339
  litellm_params:
293
340
  model: openai/gpt-6-astra
294
341
  api_key: os.environ/OPENAI_API_KEY
342
+
343
+ # LiteLLM 1.102 predates Sol and Luna. Standard, Flex and Fast rates include the >272k-token premium.
344
+ # Flex costs half of standard; Fast (also called priority) costs twice the applicable rate.
345
+ # Remove these overrides when bundled metadata covers them; test_litellm_model_metadata pins that boundary.
346
+ # https://developers.openai.com/api/docs/models/gpt-6-sol (verified 2026-09-23)
347
+ - model_name: openai/gpt-6-sol
348
+ litellm_params:
349
+ model: openai/gpt-6-sol
350
+ api_key: os.environ/OPENAI_API_KEY
351
+ use_responses_api: true
352
+ model_info:
353
+ base_model: gpt-6-sol
354
+ mode: responses
355
+ max_input_tokens: 922000
356
+ max_output_tokens: 128000
357
+ max_tokens: 128000
358
+ input_cost_per_token: 0.000002
359
+ output_cost_per_token: 0.000010
360
+ cache_read_input_token_cost: 0.0000002
361
+ cache_creation_input_token_cost: 0.0000025
362
+ input_cost_per_token_above_272k_tokens: 0.000004
363
+ output_cost_per_token_above_272k_tokens: 0.000015
364
+ cache_read_input_token_cost_above_272k_tokens: 0.0000004
365
+ cache_creation_input_token_cost_above_272k_tokens: 0.000005
366
+ input_cost_per_token_flex: 0.000001
367
+ output_cost_per_token_flex: 0.000005
368
+ cache_read_input_token_cost_flex: 0.0000001
369
+ cache_creation_input_token_cost_flex: 0.00000125
370
+ input_cost_per_token_above_272k_tokens_flex: 0.000002
371
+ output_cost_per_token_above_272k_tokens_flex: 0.0000075
372
+ cache_read_input_token_cost_above_272k_tokens_flex: 0.0000002
373
+ cache_creation_input_token_cost_above_272k_tokens_flex: 0.0000025
374
+ input_cost_per_token_priority: 0.000004
375
+ output_cost_per_token_priority: 0.000020
376
+ cache_read_input_token_cost_priority: 0.0000004
377
+ cache_creation_input_token_cost_priority: 0.000005
378
+ input_cost_per_token_above_272k_tokens_priority: 0.000008
379
+ output_cost_per_token_above_272k_tokens_priority: 0.000030
380
+ cache_read_input_token_cost_above_272k_tokens_priority: 0.0000008
381
+ cache_creation_input_token_cost_above_272k_tokens_priority: 0.000010
382
+ supports_vision: true
383
+ supports_function_calling: true
384
+ supports_parallel_function_calling: true
385
+ supports_tool_choice: true
386
+ supports_prompt_caching: true
387
+ supports_reasoning: true
388
+ supports_none_reasoning_effort: true
389
+ supports_xhigh_reasoning_effort: true
390
+ supports_max_reasoning_effort: true
391
+ default_reasoning_effort: medium
392
+ reasoning_effort_levels: [none, low, medium, high, xhigh, max]
393
+ supports_response_schema: true
394
+
395
+ # https://developers.openai.com/api/docs/models/gpt-6-luna (verified 2026-09-23)
396
+ - model_name: openai/gpt-6-luna
397
+ litellm_params:
398
+ model: openai/gpt-6-luna
399
+ api_key: os.environ/OPENAI_API_KEY
400
+ use_responses_api: true
295
401
  model_info:
296
- base_model: gpt-6-astra
297
- input_cost_per_token: 0.000010
298
- output_cost_per_token: 0.000050
299
- cache_read_input_token_cost: 0.000001
300
- cache_creation_input_token_cost: 0.0000125
301
- input_cost_per_token_above_272k_tokens: 0.000020
302
- output_cost_per_token_above_272k_tokens: 0.000075
303
- cache_read_input_token_cost_above_272k_tokens: 0.000002
304
- cache_creation_input_token_cost_above_272k_tokens: 0.000025
402
+ base_model: gpt-6-luna
403
+ mode: responses
404
+ max_input_tokens: 922000
405
+ max_output_tokens: 128000
406
+ max_tokens: 128000
407
+ input_cost_per_token: 0.0000001
408
+ output_cost_per_token: 0.0000005
409
+ cache_read_input_token_cost: 0.00000001
410
+ cache_creation_input_token_cost: 0.000000125
411
+ input_cost_per_token_above_272k_tokens: 0.0000002
412
+ output_cost_per_token_above_272k_tokens: 0.00000075
413
+ cache_read_input_token_cost_above_272k_tokens: 0.00000002
414
+ cache_creation_input_token_cost_above_272k_tokens: 0.00000025
415
+ input_cost_per_token_flex: 0.00000005
416
+ output_cost_per_token_flex: 0.00000025
417
+ cache_read_input_token_cost_flex: 0.000000005
418
+ cache_creation_input_token_cost_flex: 0.0000000625
419
+ input_cost_per_token_above_272k_tokens_flex: 0.0000001
420
+ output_cost_per_token_above_272k_tokens_flex: 0.000000375
421
+ cache_read_input_token_cost_above_272k_tokens_flex: 0.00000001
422
+ cache_creation_input_token_cost_above_272k_tokens_flex: 0.000000125
423
+ input_cost_per_token_priority: 0.0000002
424
+ output_cost_per_token_priority: 0.000001
425
+ cache_read_input_token_cost_priority: 0.00000002
426
+ cache_creation_input_token_cost_priority: 0.00000025
427
+ input_cost_per_token_above_272k_tokens_priority: 0.0000004
428
+ output_cost_per_token_above_272k_tokens_priority: 0.0000015
429
+ cache_read_input_token_cost_above_272k_tokens_priority: 0.00000004
430
+ cache_creation_input_token_cost_above_272k_tokens_priority: 0.0000005
431
+ supports_vision: true
432
+ supports_function_calling: true
433
+ supports_parallel_function_calling: true
434
+ supports_tool_choice: true
435
+ supports_prompt_caching: true
436
+ supports_reasoning: true
437
+ supports_none_reasoning_effort: true
438
+ supports_xhigh_reasoning_effort: true
439
+ supports_max_reasoning_effort: true
440
+ default_reasoning_effort: medium
441
+ reasoning_effort_levels: [none, low, medium, high, xhigh, max]
442
+ supports_response_schema: true
305
443
 
306
444
  litellm_settings:
307
445
  # Drop unmapped params instead of erroring
@@ -28,4 +28,4 @@ proxy:
28
28
  tiers:
29
29
  haiku: claude-haiku-4-5
30
30
  sonnet: claude-sonnet-5
31
- opus: claude-opus-5
31
+ opus: claude-opus-5-5
@@ -27,7 +27,13 @@ proxy:
27
27
  sonnet: openai/gpt-6-astra
28
28
  opus: openai/gpt-6-astra
29
29
  model_alternatives:
30
+ haiku:
31
+ gpt-6-luna: openai/gpt-6-luna
30
32
  sonnet:
33
+ gpt-6-sol: openai/gpt-6-sol
34
+ gpt-6-luna: openai/gpt-6-luna
31
35
  gpt-5.6-sol: openai/gpt-5.6-sol
32
36
  opus:
37
+ gpt-6-sol: openai/gpt-6-sol
38
+ gpt-6-luna: openai/gpt-6-luna
33
39
  gpt-5.6-sol: openai/gpt-5.6-sol
@@ -6,8 +6,8 @@
6
6
  #
7
7
  # Backend (LiteLLM on port 4000) starts automatically.
8
8
  #
9
- # Defaults: sonnet tier -> Sonnet 5, opus tier -> Opus 5. Alternatives are
10
- # claude-fable-5-1, claude-fable-5, claude-opus-4-8, claude-opus-4-6,
9
+ # Defaults: sonnet tier -> Sonnet 5, opus tier -> Opus 5.5. Alternatives are
10
+ # claude-opus-5, claude-fable-5-1, claude-fable-5, claude-opus-4-8, claude-opus-4-6,
11
11
  # and claude-sonnet-4-6.
12
12
  #
13
13
  # After adding ANTHROPIC_API_KEY, stop the backend so Forge restarts it with the new environment:
@@ -23,9 +23,10 @@ proxy:
23
23
  tiers:
24
24
  haiku: anthropic/claude-haiku-4-5
25
25
  sonnet: anthropic/claude-sonnet-5
26
- opus: anthropic/claude-opus-5
26
+ opus: anthropic/claude-opus-5-5
27
27
  model_alternatives:
28
28
  opus:
29
+ claude-opus-5: anthropic/claude-opus-5
29
30
  claude-fable-5-1: anthropic/claude-fable-5-1
30
31
  claude-fable-5: anthropic/claude-fable-5
31
32
  claude-opus-4-8: anthropic/claude-opus-4-8
@@ -1,12 +1,12 @@
1
1
  # Template: litellm-anthropic
2
2
  # Anthropic Claude via remote/shared LiteLLM
3
3
  #
4
- # Access to Claude Opus 5, Sonnet 5, Fable 5.1/5, Opus 4.8/4.6, Sonnet 4.6, and Haiku 4.5.
4
+ # Access to Claude Opus 5.5/5, Sonnet 5, Fable 5.1/5, Opus 4.8/4.6, Sonnet 4.6, and Haiku 4.5.
5
5
  # Requires LITELLM_API_KEY and LITELLM_BASE_URL in .env (or environment).
6
- # NOTE: the shared LiteLLM instance must serve anthropic/claude-opus-5 and anthropic/claude-sonnet-5.
6
+ # NOTE: the shared LiteLLM instance must serve anthropic/claude-opus-5-5 and anthropic/claude-sonnet-5.
7
7
  #
8
- # Defaults: sonnet tier -> Sonnet 5, opus tier -> Opus 5. Alternatives are
9
- # claude-fable-5-1, claude-fable-5, claude-opus-4-8, claude-opus-4-6,
8
+ # Defaults: sonnet tier -> Sonnet 5, opus tier -> Opus 5.5. Alternatives are
9
+ # claude-opus-5, claude-fable-5-1, claude-fable-5, claude-opus-4-8, claude-opus-4-6,
10
10
  # and claude-sonnet-4-6.
11
11
  # prompt_caching: passthrough respects Anthropic's 4-breakpoint cache_control limit.
12
12
 
@@ -20,9 +20,10 @@ proxy:
20
20
  tiers:
21
21
  haiku: anthropic/claude-haiku-4-5
22
22
  sonnet: anthropic/claude-sonnet-5
23
- opus: anthropic/claude-opus-5
23
+ opus: anthropic/claude-opus-5-5
24
24
  model_alternatives:
25
25
  opus:
26
+ claude-opus-5: anthropic/claude-opus-5
26
27
  claude-fable-5-1: anthropic/claude-fable-5-1
27
28
  claude-fable-5: anthropic/claude-fable-5
28
29
  claude-opus-4-8: anthropic/claude-opus-4-8
@@ -1,13 +1,11 @@
1
1
  # Template: litellm-gemini-flash-local
2
- # Gemini 3.7 Flash via local LiteLLM
2
+ # Gemini 3.8 Flash via local LiteLLM
3
3
  #
4
4
  # Requires:
5
5
  # - GEMINI_API_KEY in .env
6
6
  #
7
7
  # Backend (LiteLLM on port 4000) starts automatically.
8
8
  # All tiers use Flash, differentiated by reasoning_effort.
9
- # This route remains on 3.7 because LiteLLM 1.99's bundled model catalog has no
10
- # gemini-3.8-flash pricing/capability entry.
11
9
  #
12
10
  # After adding GEMINI_API_KEY, stop the backend so Forge restarts it with the new environment:
13
11
  # forge model backend stop litellm-4000
@@ -20,9 +18,16 @@ proxy:
20
18
 
21
19
  litellm:
22
20
  tiers:
23
- haiku: gemini/gemini-3.7-flash
24
- sonnet: gemini/gemini-3.7-flash
25
- opus: gemini/gemini-3.7-flash
21
+ haiku: gemini/gemini-3.8-flash
22
+ sonnet: gemini/gemini-3.8-flash
23
+ opus: gemini/gemini-3.8-flash
24
+ model_alternatives:
25
+ haiku:
26
+ gemini-3.7-flash: gemini/gemini-3.7-flash
27
+ sonnet:
28
+ gemini-3.7-flash: gemini/gemini-3.7-flash
29
+ opus:
30
+ gemini-3.7-flash: gemini/gemini-3.7-flash
26
31
  # All tiers use the same model with different reasoning levels.
27
32
  tier_overrides:
28
33
  haiku:
@@ -6,8 +6,6 @@
6
6
  #
7
7
  # Backend (LiteLLM on port 4000) starts automatically.
8
8
  # For tests: Use litellm-gemini-test template (port 4001)
9
- # Flash remains on 3.7 because LiteLLM 1.99's bundled model catalog has no
10
- # gemini-3.8-flash pricing/capability entry.
11
9
 
12
10
  proxy:
13
11
  family: gemini
@@ -17,9 +15,18 @@ proxy:
17
15
 
18
16
  litellm:
19
17
  tiers:
20
- haiku: gemini/gemini-3.7-flash
18
+ haiku: gemini/gemini-3.8-flash
21
19
  sonnet: gemini/gemini-3.1-pro-preview
22
20
  opus: gemini/gemini-3.1-pro-preview
21
+ model_alternatives:
22
+ haiku:
23
+ gemini-3.7-flash: gemini/gemini-3.7-flash
24
+ sonnet:
25
+ gemini-3.8-flash: gemini/gemini-3.8-flash
26
+ gemini-3.7-flash: gemini/gemini-3.7-flash
27
+ opus:
28
+ gemini-3.8-flash: gemini/gemini-3.8-flash
29
+ gemini-3.7-flash: gemini/gemini-3.7-flash
23
30
  # Per-tier overrides to differentiate sonnet/opus (both use same model)
24
31
  tier_overrides:
25
32
  sonnet:
@@ -17,9 +17,18 @@ proxy:
17
17
 
18
18
  litellm:
19
19
  tiers:
20
- haiku: gemini/gemini-3.7-flash
20
+ haiku: gemini/gemini-3.8-flash
21
21
  sonnet: gemini/gemini-3.1-pro-preview
22
22
  opus: gemini/gemini-3.1-pro-preview
23
+ model_alternatives:
24
+ haiku:
25
+ gemini-3.7-flash: gemini/gemini-3.7-flash
26
+ sonnet:
27
+ gemini-3.8-flash: gemini/gemini-3.8-flash
28
+ gemini-3.7-flash: gemini/gemini-3.7-flash
29
+ opus:
30
+ gemini-3.8-flash: gemini/gemini-3.8-flash
31
+ gemini-3.7-flash: gemini/gemini-3.7-flash
23
32
  # Per-tier overrides to differentiate sonnet/opus (both use same model)
24
33
  tier_overrides:
25
34
  sonnet:
@@ -1,9 +1,8 @@
1
1
  # Template: litellm-gemini
2
2
  # Gemini models via remote/shared LiteLLM
3
3
  #
4
- # Default template for Gemini access through a shared LiteLLM gateway. Flash
5
- # remains on 3.7 because LiteLLM 1.99's bundled model catalog has no
6
- # gemini-3.8-flash pricing/capability entry.
4
+ # Default template for Gemini access through a shared LiteLLM gateway.
5
+ # The shared instance must serve vertex_ai/gemini-3.8-flash.
7
6
  # Requires LITELLM_API_KEY and LITELLM_BASE_URL in .env (or environment).
8
7
 
9
8
  proxy:
@@ -14,7 +13,7 @@ proxy:
14
13
 
15
14
  litellm:
16
15
  tiers:
17
- haiku: vertex_ai/gemini-3.7-flash
16
+ haiku: vertex_ai/gemini-3.8-flash
18
17
  sonnet: vertex_ai/gemini-3.1-pro-preview
19
18
  opus: vertex_ai/gemini-3.1-pro-preview
20
19
  model_alternatives:
@@ -24,11 +23,13 @@ proxy:
24
23
  gemini-3.6-flash: vertex_ai/gemini-3.6-flash
25
24
  gemini-3.7-flash: vertex_ai/gemini-3.7-flash
26
25
  sonnet:
26
+ gemini-3.8-flash: vertex_ai/gemini-3.8-flash
27
27
  gemini-2.5-flash: vertex_ai/gemini-2.5-flash
28
28
  gemini-3.5-flash: vertex_ai/gemini-3.5-flash
29
29
  gemini-3.6-flash: vertex_ai/gemini-3.6-flash
30
30
  gemini-3.7-flash: vertex_ai/gemini-3.7-flash
31
31
  opus:
32
+ gemini-3.8-flash: vertex_ai/gemini-3.8-flash
32
33
  gemini-2.5-flash: vertex_ai/gemini-2.5-flash
33
34
  gemini-3.5-flash: vertex_ai/gemini-3.5-flash
34
35
  gemini-3.6-flash: vertex_ai/gemini-3.6-flash
@@ -21,7 +21,14 @@ proxy:
21
21
  sonnet: openai/gpt-5.3-codex
22
22
  opus: openai/gpt-6-astra
23
23
  model_alternatives:
24
+ haiku:
25
+ gpt-6-luna: openai/gpt-6-luna
26
+ sonnet:
27
+ gpt-6-sol: openai/gpt-6-sol
28
+ gpt-6-luna: openai/gpt-6-luna
24
29
  opus:
30
+ gpt-6-sol: openai/gpt-6-sol
31
+ gpt-6-luna: openai/gpt-6-luna
25
32
  gpt-5.6-sol: openai/gpt-5.6-sol
26
33
  tier_overrides:
27
34
  sonnet:
@@ -21,9 +21,15 @@ proxy:
21
21
  sonnet: openai/gpt-6-astra
22
22
  opus: openai/gpt-6-astra
23
23
  model_alternatives:
24
+ haiku:
25
+ gpt-6-luna: openai/gpt-6-luna
24
26
  sonnet:
27
+ gpt-6-sol: openai/gpt-6-sol
28
+ gpt-6-luna: openai/gpt-6-luna
25
29
  gpt-5.6-sol: openai/gpt-5.6-sol
26
30
  opus:
31
+ gpt-6-sol: openai/gpt-6-sol
32
+ gpt-6-luna: openai/gpt-6-luna
27
33
  gpt-5.6-sol: openai/gpt-5.6-sol
28
34
  # Per-tier overrides to differentiate sonnet/opus (both use same model)
29
35
  tier_overrides:
@@ -1,7 +1,7 @@
1
1
  # Template: litellm-openai
2
2
  # OpenAI models via remote/shared LiteLLM
3
3
  #
4
- # Access to GPT-6 Astra and retained GPT/O-series models.
4
+ # Access to GPT-6 Astra, Sol, Luna, and retained GPT/O-series models.
5
5
  # Requires LITELLM_API_KEY and LITELLM_BASE_URL in .env (or environment).
6
6
  #
7
7
  # Haiku uses gpt-5.4-mini; sonnet and opus both use gpt-6-astra,
@@ -19,9 +19,15 @@ proxy:
19
19
  sonnet: openai/gpt-6-astra
20
20
  opus: openai/gpt-6-astra
21
21
  model_alternatives:
22
+ haiku:
23
+ gpt-6-luna: openai/gpt-6-luna
22
24
  sonnet:
25
+ gpt-6-sol: openai/gpt-6-sol
26
+ gpt-6-luna: openai/gpt-6-luna
23
27
  gpt-5.6-sol: openai/gpt-5.6-sol
24
28
  opus:
29
+ gpt-6-sol: openai/gpt-6-sol
30
+ gpt-6-luna: openai/gpt-6-luna
25
31
  gpt-5.6-sol: openai/gpt-5.6-sol
26
32
  tier_overrides:
27
33
  sonnet:
@@ -1,11 +1,11 @@
1
1
  # Template: openrouter-anthropic
2
2
  # Anthropic Claude models via OpenRouter (direct, no LiteLLM)
3
3
  #
4
- # Access to Claude Opus 5, Sonnet 5, Fable 5.1/5, Opus 4.8/4.6, Sonnet 4.6, and Haiku 4.5.
4
+ # Access to Claude Opus 5.5/5, Sonnet 5, Fable 5.1/5, Opus 4.8/4.6, Sonnet 4.6, and Haiku 4.5.
5
5
  # Requires OPENROUTER_API_KEY in .env (or environment).
6
6
  #
7
- # Defaults: sonnet tier -> Sonnet 5, opus tier -> Opus 5. Alternatives are
8
- # claude-fable-5-1, claude-fable-5, claude-opus-4-8, claude-opus-4-6,
7
+ # Defaults: sonnet tier -> Sonnet 5, opus tier -> Opus 5.5. Alternatives are
8
+ # claude-opus-5, claude-fable-5-1, claude-fable-5, claude-opus-4-8, claude-opus-4-6,
9
9
  # and claude-sonnet-4-6.
10
10
 
11
11
  proxy:
@@ -19,12 +19,13 @@ proxy:
19
19
  tiers:
20
20
  haiku: anthropic/claude-haiku-4.5
21
21
  sonnet: anthropic/claude-sonnet-5
22
- opus: anthropic/claude-opus-5
22
+ opus: anthropic/claude-opus-5.5
23
23
  zdr_fallbacks:
24
- anthropic/claude-fable-5.1: anthropic/claude-opus-5
25
- anthropic/claude-fable-5: anthropic/claude-opus-5
24
+ anthropic/claude-fable-5.1: anthropic/claude-opus-5.5
25
+ anthropic/claude-fable-5: anthropic/claude-opus-5.5
26
26
  model_alternatives:
27
27
  opus:
28
+ claude-opus-5: anthropic/claude-opus-5
28
29
  claude-fable-5-1: anthropic/claude-fable-5.1
29
30
  claude-fable-5: anthropic/claude-fable-5
30
31
  claude-opus-4-8: anthropic/claude-opus-4.8
@@ -17,6 +17,15 @@ proxy:
17
17
  haiku: deepseek/deepseek-v4-flash
18
18
  sonnet: deepseek/deepseek-v4-pro
19
19
  opus: deepseek/deepseek-v4-pro
20
+ model_alternatives:
21
+ haiku:
22
+ deepseek-v4.1-flash: deepseek/deepseek-v4.1-flash
23
+ sonnet:
24
+ deepseek-v4.1-flash: deepseek/deepseek-v4.1-flash
25
+ deepseek-v4-pro-0813: deepseek/deepseek-v4-pro-0813
26
+ opus:
27
+ deepseek-v4.1-flash: deepseek/deepseek-v4.1-flash
28
+ deepseek-v4-pro-0813: deepseek/deepseek-v4-pro-0813
20
29
  tier_overrides:
21
30
  haiku:
22
31
  reasoning_effort: high
@@ -16,6 +16,16 @@ proxy:
16
16
  haiku: z-ai/glm-4.7-flash
17
17
  sonnet: z-ai/glm-5.3
18
18
  opus: z-ai/glm-5.3
19
+ model_alternatives:
20
+ haiku:
21
+ glm-5.3-flash: z-ai/glm-5.3-flash
22
+ glm-5.3-flashx: z-ai/glm-5.3-flashx
23
+ sonnet:
24
+ glm-5.3-flash: z-ai/glm-5.3-flash
25
+ glm-5.3-flashx: z-ai/glm-5.3-flashx
26
+ opus:
27
+ glm-5.3-flash: z-ai/glm-5.3-flash
28
+ glm-5.3-flashx: z-ai/glm-5.3-flashx
19
29
  tier_overrides:
20
30
  sonnet:
21
31
  reasoning_effort: high
@@ -16,7 +16,19 @@ proxy:
16
16
  sonnet: openai/gpt-5.3-codex
17
17
  opus: openai/gpt-6-astra
18
18
  model_alternatives:
19
+ haiku:
20
+ gpt-6-luna: openai/gpt-6-luna
21
+ gpt-6-luna-pro: openai/gpt-6-luna-pro
22
+ sonnet:
23
+ gpt-6-sol: openai/gpt-6-sol
24
+ gpt-6-sol-pro: openai/gpt-6-sol-pro
25
+ gpt-6-luna: openai/gpt-6-luna
26
+ gpt-6-luna-pro: openai/gpt-6-luna-pro
19
27
  opus:
28
+ gpt-6-sol: openai/gpt-6-sol
29
+ gpt-6-sol-pro: openai/gpt-6-sol-pro
30
+ gpt-6-luna: openai/gpt-6-luna
31
+ gpt-6-luna-pro: openai/gpt-6-luna-pro
20
32
  gpt-5.6-sol: openai/gpt-5.6-sol
21
33
  gpt-6-astra-pro: openai/gpt-6-astra-pro
22
34
  tier_overrides:
@@ -1,7 +1,7 @@
1
1
  # Template: openrouter-openai
2
2
  # OpenAI models via OpenRouter (direct, no LiteLLM)
3
3
  #
4
- # Access to GPT-6 Astra and GPT-5.4-mini.
4
+ # Access to GPT-6 Astra, Sol, Luna, their Pro variants, and GPT-5.4-mini.
5
5
  # Requires OPENROUTER_API_KEY in .env (or environment).
6
6
  #
7
7
  # Haiku uses gpt-5.4-mini; sonnet and opus both use gpt-6-astra,
@@ -20,10 +20,21 @@ proxy:
20
20
  sonnet: openai/gpt-6-astra
21
21
  opus: openai/gpt-6-astra
22
22
  model_alternatives:
23
+ haiku:
24
+ gpt-6-luna: openai/gpt-6-luna
25
+ gpt-6-luna-pro: openai/gpt-6-luna-pro
23
26
  sonnet:
27
+ gpt-6-sol: openai/gpt-6-sol
28
+ gpt-6-sol-pro: openai/gpt-6-sol-pro
29
+ gpt-6-luna: openai/gpt-6-luna
30
+ gpt-6-luna-pro: openai/gpt-6-luna-pro
24
31
  gpt-5.6-sol: openai/gpt-5.6-sol
25
32
  gpt-6-astra-pro: openai/gpt-6-astra-pro
26
33
  opus:
34
+ gpt-6-sol: openai/gpt-6-sol
35
+ gpt-6-sol-pro: openai/gpt-6-sol-pro
36
+ gpt-6-luna: openai/gpt-6-luna
37
+ gpt-6-luna-pro: openai/gpt-6-luna-pro
27
38
  gpt-5.6-sol: openai/gpt-5.6-sol
28
39
  gpt-6-astra-pro: openai/gpt-6-astra-pro
29
40
  tier_overrides: