@roackb2/heddle 1.5.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. package/dist/examples/conversation-engine.js +10 -10
  2. package/dist/examples/conversation-engine.js.map +1 -1
  3. package/dist/examples/heartbeat-scheduler.js +2 -2
  4. package/dist/examples/heartbeat-scheduler.js.map +1 -1
  5. package/dist/examples/heartbeat.js +2 -2
  6. package/dist/examples/heartbeat.js.map +1 -1
  7. package/dist/examples/programmatic-loop.js +2 -2
  8. package/dist/examples/programmatic-loop.js.map +1 -1
  9. package/dist/examples/repo-investigator.js +3 -3
  10. package/dist/examples/repo-investigator.js.map +1 -1
  11. package/dist/src/cli/ask.js +2 -2
  12. package/dist/src/cli/ask.js.map +1 -1
  13. package/dist/src/cli/auth.d.ts +14 -7
  14. package/dist/src/cli/auth.d.ts.map +1 -1
  15. package/dist/src/cli/auth.js +75 -70
  16. package/dist/src/cli/auth.js.map +1 -1
  17. package/dist/src/cli/chat/adapters/conversation-activity-adapter.d.ts +1 -1
  18. package/dist/src/cli/chat/adapters/conversation-activity-adapter.d.ts.map +1 -1
  19. package/dist/src/cli/chat/adapters/conversation-activity-adapter.js +29 -19
  20. package/dist/src/cli/chat/adapters/conversation-activity-adapter.js.map +1 -1
  21. package/dist/src/cli/chat/adapters/slash-command-context.js +4 -4
  22. package/dist/src/cli/chat/adapters/slash-command-context.js.map +1 -1
  23. package/dist/src/cli/chat/components/ModelPickerPanel.d.ts +1 -1
  24. package/dist/src/cli/chat/components/ModelPickerPanel.js +1 -1
  25. package/dist/src/cli/chat/debug/tui-debug-snapshot.d.ts +1 -1
  26. package/dist/src/cli/chat/debug/tui-debug-snapshot.js +1 -1
  27. package/dist/src/cli/chat/hooks/controllers/run/tui-direct-shell-result.js +3 -3
  28. package/dist/src/cli/chat/hooks/controllers/run/tui-direct-shell-result.js.map +1 -1
  29. package/dist/src/cli/chat/hooks/controllers/run/tui-direct-shell.js +2 -2
  30. package/dist/src/cli/chat/hooks/controllers/run/tui-direct-shell.js.map +1 -1
  31. package/dist/src/cli/chat/hooks/controllers/run/tui-run-loop-events.d.ts.map +1 -1
  32. package/dist/src/cli/chat/hooks/controllers/run/tui-run-loop-events.js +3 -3
  33. package/dist/src/cli/chat/hooks/controllers/run/tui-run-loop-events.js.map +1 -1
  34. package/dist/src/cli/chat/hooks/controllers/useAgentRunController.d.ts.map +1 -1
  35. package/dist/src/cli/chat/hooks/controllers/useAgentRunController.js +16 -6
  36. package/dist/src/cli/chat/hooks/controllers/useAgentRunController.js.map +1 -1
  37. package/dist/src/cli/chat/hooks/controllers/useChatAppController.d.ts.map +1 -1
  38. package/dist/src/cli/chat/hooks/controllers/useChatAppController.js +9 -10
  39. package/dist/src/cli/chat/hooks/controllers/useChatAppController.js.map +1 -1
  40. package/dist/src/cli/chat/hooks/controllers/usePromptSubmissionController.d.ts +1 -1
  41. package/dist/src/cli/chat/hooks/useChatPickers.d.ts +1 -1
  42. package/dist/src/cli/chat/hooks/useChatPickers.d.ts.map +1 -1
  43. package/dist/src/cli/chat/hooks/useChatPickers.js +7 -8
  44. package/dist/src/cli/chat/hooks/useChatPickers.js.map +1 -1
  45. package/dist/src/cli/chat/hooks/useChatStatusSummary.d.ts.map +1 -1
  46. package/dist/src/cli/chat/hooks/useChatStatusSummary.js +3 -4
  47. package/dist/src/cli/chat/hooks/useChatStatusSummary.js.map +1 -1
  48. package/dist/src/cli/chat/state/local-commands.d.ts +1 -1
  49. package/dist/src/cli/chat/state/local-commands.d.ts.map +1 -1
  50. package/dist/src/cli/chat/utils/format.d.ts +0 -1
  51. package/dist/src/cli/chat/utils/format.d.ts.map +1 -1
  52. package/dist/src/cli/chat/utils/format.js +0 -1
  53. package/dist/src/cli/chat/utils/format.js.map +1 -1
  54. package/dist/src/cli/chat/utils/runtime.js +4 -4
  55. package/dist/src/cli/chat/utils/runtime.js.map +1 -1
  56. package/dist/src/cli/main.js +10 -7
  57. package/dist/src/cli/main.js.map +1 -1
  58. package/dist/src/cli/remote/control-plane-client.d.ts +2 -2
  59. package/dist/src/core/approvals/remembered-rules/schemas.d.ts +3 -3
  60. package/dist/src/core/auth/index.d.ts +4 -0
  61. package/dist/src/core/auth/index.d.ts.map +1 -0
  62. package/dist/src/core/auth/index.js +3 -0
  63. package/dist/src/core/auth/index.js.map +1 -0
  64. package/dist/src/core/auth/openai-oauth.d.ts +41 -61
  65. package/dist/src/core/auth/openai-oauth.d.ts.map +1 -1
  66. package/dist/src/core/auth/openai-oauth.js +264 -258
  67. package/dist/src/core/auth/openai-oauth.js.map +1 -1
  68. package/dist/src/core/auth/provider-credentials.d.ts +23 -51
  69. package/dist/src/core/auth/provider-credentials.d.ts.map +1 -1
  70. package/dist/src/core/auth/provider-credentials.js +69 -134
  71. package/dist/src/core/auth/provider-credentials.js.map +1 -1
  72. package/dist/src/core/auth/schemas.d.ts +54 -0
  73. package/dist/src/core/auth/schemas.d.ts.map +1 -0
  74. package/dist/src/core/auth/schemas.js +63 -0
  75. package/dist/src/core/auth/schemas.js.map +1 -0
  76. package/dist/src/core/auth/types.d.ts +80 -0
  77. package/dist/src/core/auth/types.d.ts.map +1 -0
  78. package/dist/src/core/auth/types.js +2 -0
  79. package/dist/src/core/auth/types.js.map +1 -0
  80. package/dist/src/core/chat/engine/compaction/service.js +2 -2
  81. package/dist/src/core/chat/engine/compaction/service.js.map +1 -1
  82. package/dist/src/core/chat/engine/compaction/summarizer/service.d.ts.map +1 -1
  83. package/dist/src/core/chat/engine/compaction/summarizer/service.js +9 -6
  84. package/dist/src/core/chat/engine/compaction/summarizer/service.js.map +1 -1
  85. package/dist/src/core/chat/engine/compaction/transcript-renderer.js +2 -2
  86. package/dist/src/core/chat/engine/compaction/transcript-renderer.js.map +1 -1
  87. package/dist/src/core/chat/engine/config.d.ts +2 -2
  88. package/dist/src/core/chat/engine/config.d.ts.map +1 -1
  89. package/dist/src/core/chat/engine/sessions/preferences/service.js +3 -3
  90. package/dist/src/core/chat/engine/sessions/preferences/service.js.map +1 -1
  91. package/dist/src/core/chat/engine/sessions/records/records.js +3 -3
  92. package/dist/src/core/chat/engine/sessions/records/records.js.map +1 -1
  93. package/dist/src/core/chat/engine/sessions/records/types.d.ts +2 -2
  94. package/dist/src/core/chat/engine/sessions/records/types.d.ts.map +1 -1
  95. package/dist/src/core/chat/engine/turns/host/host-normalizer.d.ts.map +1 -1
  96. package/dist/src/core/chat/engine/turns/host/host-normalizer.js +4 -4
  97. package/dist/src/core/chat/engine/turns/host/host-normalizer.js.map +1 -1
  98. package/dist/src/core/chat/engine/turns/memory/turn-memory-maintenance.js +2 -2
  99. package/dist/src/core/chat/engine/turns/memory/turn-memory-maintenance.js.map +1 -1
  100. package/dist/src/core/chat/engine/turns/persistence/types.d.ts +3 -3
  101. package/dist/src/core/chat/engine/turns/persistence/types.d.ts.map +1 -1
  102. package/dist/src/core/chat/engine/turns/runtime/runtime-resolver.d.ts.map +1 -1
  103. package/dist/src/core/chat/engine/turns/runtime/runtime-resolver.js +10 -7
  104. package/dist/src/core/chat/engine/turns/runtime/runtime-resolver.js.map +1 -1
  105. package/dist/src/core/chat/engine/turns/types.d.ts +2 -3
  106. package/dist/src/core/chat/engine/turns/types.d.ts.map +1 -1
  107. package/dist/src/core/chat/engine/types.d.ts +4 -5
  108. package/dist/src/core/chat/engine/types.d.ts.map +1 -1
  109. package/dist/src/core/commands/slash/modules/model/model-commands.d.ts.map +1 -1
  110. package/dist/src/core/commands/slash/modules/model/model-commands.js +6 -7
  111. package/dist/src/core/commands/slash/modules/model/model-commands.js.map +1 -1
  112. package/dist/src/core/llm/adapters/anthropic/anthropic-adapter.d.ts +21 -0
  113. package/dist/src/core/llm/adapters/anthropic/anthropic-adapter.d.ts.map +1 -0
  114. package/dist/src/core/llm/adapters/anthropic/anthropic-adapter.js +66 -0
  115. package/dist/src/core/llm/adapters/anthropic/anthropic-adapter.js.map +1 -0
  116. package/dist/src/core/llm/adapters/anthropic/anthropic-codec.d.ts +16 -0
  117. package/dist/src/core/llm/adapters/anthropic/anthropic-codec.d.ts.map +1 -0
  118. package/dist/src/core/llm/adapters/anthropic/anthropic-codec.js +64 -0
  119. package/dist/src/core/llm/adapters/anthropic/anthropic-codec.js.map +1 -0
  120. package/dist/src/core/llm/adapters/anthropic/anthropic-provider-adapter.d.ts +17 -0
  121. package/dist/src/core/llm/adapters/anthropic/anthropic-provider-adapter.d.ts.map +1 -0
  122. package/dist/src/core/llm/adapters/anthropic/anthropic-provider-adapter.js +20 -0
  123. package/dist/src/core/llm/adapters/anthropic/anthropic-provider-adapter.js.map +1 -0
  124. package/dist/src/core/llm/adapters/anthropic/index.d.ts +4 -0
  125. package/dist/src/core/llm/adapters/anthropic/index.d.ts.map +1 -0
  126. package/dist/src/core/llm/adapters/anthropic/index.js +3 -0
  127. package/dist/src/core/llm/adapters/anthropic/index.js.map +1 -0
  128. package/dist/src/core/llm/adapters/openai/index.d.ts +4 -0
  129. package/dist/src/core/llm/adapters/openai/index.d.ts.map +1 -0
  130. package/dist/src/core/llm/adapters/openai/index.js +3 -0
  131. package/dist/src/core/llm/adapters/openai/index.js.map +1 -0
  132. package/dist/src/core/llm/adapters/openai/openai-adapter.d.ts +53 -0
  133. package/dist/src/core/llm/adapters/openai/openai-adapter.d.ts.map +1 -0
  134. package/dist/src/core/llm/adapters/openai/openai-adapter.js +266 -0
  135. package/dist/src/core/llm/adapters/openai/openai-adapter.js.map +1 -0
  136. package/dist/src/core/llm/adapters/openai/openai-codec.d.ts +41 -0
  137. package/dist/src/core/llm/adapters/openai/openai-codec.d.ts.map +1 -0
  138. package/dist/src/core/llm/adapters/openai/openai-codec.js +169 -0
  139. package/dist/src/core/llm/adapters/openai/openai-codec.js.map +1 -0
  140. package/dist/src/core/llm/adapters/openai/openai-provider-adapter.d.ts +17 -0
  141. package/dist/src/core/llm/adapters/openai/openai-provider-adapter.d.ts.map +1 -0
  142. package/dist/src/core/llm/adapters/openai/openai-provider-adapter.js +20 -0
  143. package/dist/src/core/llm/adapters/openai/openai-provider-adapter.js.map +1 -0
  144. package/dist/src/core/llm/index.d.ts +9 -0
  145. package/dist/src/core/llm/index.d.ts.map +1 -0
  146. package/dist/src/core/llm/index.js +5 -0
  147. package/dist/src/core/llm/index.js.map +1 -0
  148. package/dist/src/core/llm/models/index.d.ts +5 -0
  149. package/dist/src/core/llm/models/index.d.ts.map +1 -0
  150. package/dist/src/core/llm/models/index.js +3 -0
  151. package/dist/src/core/llm/models/index.js.map +1 -0
  152. package/dist/src/core/llm/models/model-catalog.d.ts +23 -0
  153. package/dist/src/core/llm/models/model-catalog.d.ts.map +1 -0
  154. package/dist/src/core/llm/models/model-catalog.js +132 -0
  155. package/dist/src/core/llm/models/model-catalog.js.map +1 -0
  156. package/dist/src/core/llm/models/model-policy-service.d.ts +70 -0
  157. package/dist/src/core/llm/models/model-policy-service.d.ts.map +1 -0
  158. package/dist/src/core/llm/models/model-policy-service.js +137 -0
  159. package/dist/src/core/llm/models/model-policy-service.js.map +1 -0
  160. package/dist/src/core/llm/registry/builtin-llm-providers.d.ts +5 -0
  161. package/dist/src/core/llm/registry/builtin-llm-providers.d.ts.map +1 -0
  162. package/dist/src/core/llm/registry/builtin-llm-providers.js +16 -0
  163. package/dist/src/core/llm/registry/builtin-llm-providers.js.map +1 -0
  164. package/dist/src/core/llm/registry/index.d.ts +5 -0
  165. package/dist/src/core/llm/registry/index.d.ts.map +1 -0
  166. package/dist/src/core/llm/registry/index.js +4 -0
  167. package/dist/src/core/llm/registry/index.js.map +1 -0
  168. package/dist/src/core/llm/registry/llm-provider-registry.d.ts +17 -0
  169. package/dist/src/core/llm/registry/llm-provider-registry.d.ts.map +1 -0
  170. package/dist/src/core/llm/registry/llm-provider-registry.js +51 -0
  171. package/dist/src/core/llm/registry/llm-provider-registry.js.map +1 -0
  172. package/dist/src/core/llm/registry/provider-inference.d.ts +18 -0
  173. package/dist/src/core/llm/registry/provider-inference.d.ts.map +1 -0
  174. package/dist/src/core/llm/registry/provider-inference.js +41 -0
  175. package/dist/src/core/llm/registry/provider-inference.js.map +1 -0
  176. package/dist/src/core/llm/registry/types.d.ts +16 -0
  177. package/dist/src/core/llm/registry/types.d.ts.map +1 -0
  178. package/dist/src/core/llm/registry/types.js +2 -0
  179. package/dist/src/core/llm/registry/types.js.map +1 -0
  180. package/dist/src/core/llm/service.d.ts +15 -0
  181. package/dist/src/core/llm/service.d.ts.map +1 -0
  182. package/dist/src/core/llm/service.js +44 -0
  183. package/dist/src/core/llm/service.js.map +1 -0
  184. package/dist/src/core/llm/types.d.ts +18 -1
  185. package/dist/src/core/llm/types.d.ts.map +1 -1
  186. package/dist/src/core/observability/activity/conversation-activity-projector.d.ts +24 -0
  187. package/dist/src/core/observability/activity/conversation-activity-projector.d.ts.map +1 -0
  188. package/dist/src/core/observability/activity/conversation-activity-projector.js +146 -0
  189. package/dist/src/core/observability/activity/conversation-activity-projector.js.map +1 -0
  190. package/dist/src/core/observability/activity/index.d.ts +4 -0
  191. package/dist/src/core/observability/activity/index.d.ts.map +1 -0
  192. package/dist/src/core/observability/activity/index.js +3 -0
  193. package/dist/src/core/observability/activity/index.js.map +1 -0
  194. package/dist/src/core/observability/activity/tool-activity-summarizer.d.ts +15 -0
  195. package/dist/src/core/observability/activity/tool-activity-summarizer.d.ts.map +1 -0
  196. package/dist/src/core/observability/activity/tool-activity-summarizer.js +92 -0
  197. package/dist/src/core/observability/activity/tool-activity-summarizer.js.map +1 -0
  198. package/dist/src/core/observability/activity/types.d.ts +87 -0
  199. package/dist/src/core/observability/activity/types.d.ts.map +1 -0
  200. package/dist/src/core/observability/activity/types.js +2 -0
  201. package/dist/src/core/observability/activity/types.js.map +1 -0
  202. package/dist/src/core/observability/index.d.ts +6 -0
  203. package/dist/src/core/observability/index.d.ts.map +1 -0
  204. package/dist/src/core/observability/index.js +4 -0
  205. package/dist/src/core/observability/index.js.map +1 -0
  206. package/dist/src/core/observability/semantics/index.d.ts +2 -0
  207. package/dist/src/core/observability/semantics/index.d.ts.map +1 -0
  208. package/dist/src/core/observability/semantics/index.js +2 -0
  209. package/dist/src/core/observability/semantics/index.js.map +1 -0
  210. package/dist/src/core/observability/{semantic-conventions.d.ts → semantics/trace-semantics.d.ts} +1 -1
  211. package/dist/src/core/observability/semantics/trace-semantics.d.ts.map +1 -0
  212. package/dist/src/core/observability/{semantic-conventions.js → semantics/trace-semantics.js} +1 -1
  213. package/dist/src/core/observability/semantics/trace-semantics.js.map +1 -0
  214. package/dist/src/core/observability/summaries/default-trace-summarizers.d.ts +3 -0
  215. package/dist/src/core/observability/summaries/default-trace-summarizers.d.ts.map +1 -0
  216. package/dist/src/core/observability/summaries/default-trace-summarizers.js +29 -0
  217. package/dist/src/core/observability/summaries/default-trace-summarizers.js.map +1 -0
  218. package/dist/src/core/observability/summaries/index.d.ts +4 -0
  219. package/dist/src/core/observability/summaries/index.d.ts.map +1 -0
  220. package/dist/src/core/observability/summaries/index.js +3 -0
  221. package/dist/src/core/observability/summaries/index.js.map +1 -0
  222. package/dist/src/core/observability/summaries/trace-summary-service.d.ts +17 -0
  223. package/dist/src/core/observability/summaries/trace-summary-service.d.ts.map +1 -0
  224. package/dist/src/core/observability/summaries/trace-summary-service.js +32 -0
  225. package/dist/src/core/observability/summaries/trace-summary-service.js.map +1 -0
  226. package/dist/src/core/observability/summaries/types.d.ts +15 -0
  227. package/dist/src/core/observability/summaries/types.d.ts.map +1 -0
  228. package/dist/src/core/observability/summaries/types.js +2 -0
  229. package/dist/src/core/observability/summaries/types.js.map +1 -0
  230. package/dist/src/core/runtime/credentials/service.d.ts +1 -1
  231. package/dist/src/core/runtime/credentials/service.d.ts.map +1 -1
  232. package/dist/src/core/runtime/credentials/service.js +8 -6
  233. package/dist/src/core/runtime/credentials/service.js.map +1 -1
  234. package/dist/src/core/runtime/loop/service.d.ts.map +1 -1
  235. package/dist/src/core/runtime/loop/service.js +14 -6
  236. package/dist/src/core/runtime/loop/service.js.map +1 -1
  237. package/dist/src/core/tools/toolkits/external-context/view-image.d.ts.map +1 -1
  238. package/dist/src/core/tools/toolkits/external-context/view-image.js +15 -9
  239. package/dist/src/core/tools/toolkits/external-context/view-image.js.map +1 -1
  240. package/dist/src/core/tools/toolkits/external-context/web-search.d.ts.map +1 -1
  241. package/dist/src/core/tools/toolkits/external-context/web-search.js +15 -9
  242. package/dist/src/core/tools/toolkits/external-context/web-search.js.map +1 -1
  243. package/dist/src/index.d.ts +8 -14
  244. package/dist/src/index.d.ts.map +1 -1
  245. package/dist/src/index.js +4 -7
  246. package/dist/src/index.js.map +1 -1
  247. package/dist/src/server/features/control-plane/controllers/ask.d.ts.map +1 -1
  248. package/dist/src/server/features/control-plane/controllers/ask.js +5 -2
  249. package/dist/src/server/features/control-plane/controllers/ask.js.map +1 -1
  250. package/dist/src/server/features/control-plane/controllers/chat-sessions-controller.js +5 -5
  251. package/dist/src/server/features/control-plane/controllers/chat-sessions-controller.js.map +1 -1
  252. package/dist/src/server/features/control-plane/router.d.ts +2 -2
  253. package/dist/src/server/features/control-plane/router.d.ts.map +1 -1
  254. package/dist/src/server/features/control-plane/router.js +5 -6
  255. package/dist/src/server/features/control-plane/router.js.map +1 -1
  256. package/dist/src/server/router.d.ts +2 -2
  257. package/dist/src/web/assets/{MonacoDiffViewer-F3AOHIps.js → MonacoDiffViewer-D_Fh9ndN.js} +1 -1
  258. package/dist/src/web/assets/index-B1wQ0pS4.js +87 -0
  259. package/dist/src/web/index.html +1 -1
  260. package/package.json +1 -1
  261. package/dist/src/core/llm/anthropic.d.ts +0 -7
  262. package/dist/src/core/llm/anthropic.d.ts.map +0 -1
  263. package/dist/src/core/llm/anthropic.js +0 -115
  264. package/dist/src/core/llm/anthropic.js.map +0 -1
  265. package/dist/src/core/llm/factory.d.ts +0 -14
  266. package/dist/src/core/llm/factory.d.ts.map +0 -1
  267. package/dist/src/core/llm/factory.js +0 -46
  268. package/dist/src/core/llm/factory.js.map +0 -1
  269. package/dist/src/core/llm/model-policy.d.ts +0 -63
  270. package/dist/src/core/llm/model-policy.d.ts.map +0 -1
  271. package/dist/src/core/llm/model-policy.js +0 -131
  272. package/dist/src/core/llm/model-policy.js.map +0 -1
  273. package/dist/src/core/llm/openai-models.d.ts +0 -17
  274. package/dist/src/core/llm/openai-models.d.ts.map +0 -1
  275. package/dist/src/core/llm/openai-models.js +0 -127
  276. package/dist/src/core/llm/openai-models.js.map +0 -1
  277. package/dist/src/core/llm/openai.d.ts +0 -31
  278. package/dist/src/core/llm/openai.d.ts.map +0 -1
  279. package/dist/src/core/llm/openai.js +0 -405
  280. package/dist/src/core/llm/openai.js.map +0 -1
  281. package/dist/src/core/llm/providers.d.ts +0 -3
  282. package/dist/src/core/llm/providers.d.ts.map +0 -1
  283. package/dist/src/core/llm/providers.js +0 -21
  284. package/dist/src/core/llm/providers.js.map +0 -1
  285. package/dist/src/core/observability/conversation-activity.d.ts +0 -116
  286. package/dist/src/core/observability/conversation-activity.d.ts.map +0 -1
  287. package/dist/src/core/observability/conversation-activity.js +0 -255
  288. package/dist/src/core/observability/conversation-activity.js.map +0 -1
  289. package/dist/src/core/observability/semantic-conventions.d.ts.map +0 -1
  290. package/dist/src/core/observability/semantic-conventions.js.map +0 -1
  291. package/dist/src/core/observability/trace-summarizers.d.ts +0 -23
  292. package/dist/src/core/observability/trace-summarizers.d.ts.map +0 -1
  293. package/dist/src/core/observability/trace-summarizers.js +0 -60
  294. package/dist/src/core/observability/trace-summarizers.js.map +0 -1
  295. package/dist/src/web/assets/index-D6aK1OFb.js +0 -81
@@ -0,0 +1,137 @@
1
+ import { DEFAULT_ANTHROPIC_MODEL, DEFAULT_OPENAI_MODEL } from '../../../core/config.js';
2
+ import { ModelCatalogService, OPENAI_ACCOUNT_SIGN_IN_MODELS } from './model-catalog.js';
3
+ export const OPENAI_API_KEY_COMPACTION_MODEL = 'gpt-5.1-codex-mini';
4
+ export const OPENAI_OAUTH_SYSTEM_MODEL = 'gpt-5.4';
5
+ export const ANTHROPIC_COMPACTION_MODEL = 'claude-haiku-4-5';
6
+ export const OPENAI_OAUTH_MODE_DESCRIPTION = 'OAuth mode supports a smaller OpenAI allowlist.';
7
+ const OPENAI_OAUTH_DISABLED_REASON = 'Not supported';
8
+ const OPENAI_OAUTH_IMAGE_MODEL_PREFERENCES = ['gpt-5.4', 'gpt-5.4-mini'];
9
+ const REASONING_EFFORT_CAPABLE_OPENAI_MODELS = [
10
+ 'gpt-5.4',
11
+ 'gpt-5.4-pro',
12
+ 'gpt-5.4-mini',
13
+ 'gpt-5.4-nano',
14
+ 'gpt-5.5',
15
+ 'gpt-5.5-pro',
16
+ ];
17
+ const OPENAI_REQUEST_REASONING_EFFORT_COMPATIBLE_MODELS = [
18
+ 'gpt-5.4',
19
+ 'gpt-5.4-pro',
20
+ 'gpt-5.4-mini',
21
+ 'gpt-5.5',
22
+ 'gpt-5.5-pro',
23
+ ];
24
+ const DEFAULT_OPENAI_REASONING_EFFORT = {
25
+ 'gpt-5.4': 'medium',
26
+ 'gpt-5.4-pro': 'medium',
27
+ 'gpt-5.4-mini': 'medium',
28
+ 'gpt-5.4-nano': 'low',
29
+ 'gpt-5.5': 'medium',
30
+ 'gpt-5.5-pro': 'medium',
31
+ };
32
+ /**
33
+ * Provider-neutral model policy facade. It centralizes model capability,
34
+ * credential compatibility, and system-model selection used by hosts.
35
+ */
36
+ export class ModelPolicyService {
37
+ static credentialModeFromSource(source) {
38
+ if (source?.type === 'oauth') {
39
+ return 'oauth';
40
+ }
41
+ if (source?.type === 'missing') {
42
+ return 'missing';
43
+ }
44
+ return 'api-key';
45
+ }
46
+ static resolveSystemSelectedModel(args) {
47
+ if (args.provider === 'anthropic') {
48
+ return args.purpose === 'chat-compaction' ? ANTHROPIC_COMPACTION_MODEL : DEFAULT_ANTHROPIC_MODEL;
49
+ }
50
+ if (args.provider === 'openai') {
51
+ if (args.credentialMode === 'oauth') {
52
+ return args.activeModel && ModelCatalogService.isOpenAiAccountSignInModel(args.activeModel) ? args.activeModel : OPENAI_OAUTH_SYSTEM_MODEL;
53
+ }
54
+ return args.purpose === 'chat-compaction' ? OPENAI_API_KEY_COMPACTION_MODEL : DEFAULT_OPENAI_MODEL;
55
+ }
56
+ return DEFAULT_OPENAI_MODEL;
57
+ }
58
+ static validateCredentialCompatibility(args) {
59
+ if (args.provider === 'openai' && args.credentialMode === 'oauth' && !ModelCatalogService.isOpenAiAccountSignInModel(args.model)) {
60
+ return {
61
+ ok: false,
62
+ error: `OpenAI account sign-in is not enabled for model ${args.model}. Use one of ${ModelPolicyService.formatOpenAiAccountSignInModels()}, or set OPENAI_API_KEY to use Platform API-key mode${args.usageLabel ? ` for ${args.usageLabel}` : ''}.`,
63
+ };
64
+ }
65
+ return { ok: true };
66
+ }
67
+ static assertCredentialCompatibility(args) {
68
+ const result = ModelPolicyService.validateCredentialCompatibility(args);
69
+ if (!result.ok) {
70
+ throw new Error(result.error);
71
+ }
72
+ }
73
+ static resolveOpenAiOAuthImageCandidateModels(activeModel) {
74
+ return ModelPolicyService.uniqueModels([activeModel, ...OPENAI_OAUTH_IMAGE_MODEL_PREFERENCES, ...OPENAI_ACCOUNT_SIGN_IN_MODELS]);
75
+ }
76
+ static buildCredentialAwareModelOption(args) {
77
+ const compatibility = ModelPolicyService.validateCredentialCompatibility({
78
+ model: args.model,
79
+ provider: args.provider,
80
+ credentialMode: args.credentialMode,
81
+ });
82
+ return {
83
+ id: args.model,
84
+ label: args.label,
85
+ disabled: !compatibility.ok,
86
+ disabledReason: compatibility.ok ? undefined : ModelPolicyService.summarizeCredentialCompatibilityError(args),
87
+ };
88
+ }
89
+ static summarizeCredentialCompatibilityError(args) {
90
+ if (args.provider === 'openai' && args.credentialMode === 'oauth' && !ModelCatalogService.isOpenAiAccountSignInModel(args.model)) {
91
+ return OPENAI_OAUTH_DISABLED_REASON;
92
+ }
93
+ return undefined;
94
+ }
95
+ static resolveCompatibleActiveModel(args) {
96
+ const compatibility = ModelPolicyService.validateCredentialCompatibility({
97
+ model: args.activeModel,
98
+ provider: args.provider,
99
+ credentialMode: args.credentialMode,
100
+ });
101
+ if (compatibility.ok) {
102
+ return { model: args.activeModel };
103
+ }
104
+ const fallback = ModelPolicyService.resolveSystemSelectedModel({
105
+ purpose: 'session-title',
106
+ provider: args.provider,
107
+ activeModel: args.activeModel,
108
+ credentialMode: args.credentialMode,
109
+ });
110
+ if (fallback === args.activeModel) {
111
+ return {
112
+ model: args.activeModel,
113
+ warning: `Model ${args.activeModel} is not supported with OpenAI account sign-in. Pick a supported OAuth model with /model set or use API-key mode.`,
114
+ };
115
+ }
116
+ return {
117
+ model: fallback,
118
+ warning: `Model ${args.activeModel} is not supported with OpenAI account sign-in. Switched to ${fallback} for this session.`,
119
+ };
120
+ }
121
+ static supportsReasoningEffort(model) {
122
+ return REASONING_EFFORT_CAPABLE_OPENAI_MODELS.includes(model);
123
+ }
124
+ static supportsOpenAiRequestReasoningEffort(model) {
125
+ return OPENAI_REQUEST_REASONING_EFFORT_COMPATIBLE_MODELS.includes(model);
126
+ }
127
+ static resolveDefaultReasoningEffort(model) {
128
+ return DEFAULT_OPENAI_REASONING_EFFORT[model];
129
+ }
130
+ static formatOpenAiAccountSignInModels() {
131
+ return OPENAI_ACCOUNT_SIGN_IN_MODELS.join(', ');
132
+ }
133
+ static uniqueModels(models) {
134
+ return [...new Set(models)];
135
+ }
136
+ }
137
+ //# sourceMappingURL=model-policy-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-policy-service.js","sourceRoot":"","sources":["../../../../../src/core/llm/models/model-policy-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { LlmProviderRegistry } from './llm-provider-registry.js';
2
+ export declare class BuiltinLlmProviderRegistry {
3
+ static create(): LlmProviderRegistry;
4
+ }
5
+ //# sourceMappingURL=builtin-llm-providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtin-llm-providers.d.ts","sourceRoot":"","sources":["../../../../../src/core/llm/registry/builtin-llm-providers.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,qBAAa,0BAA0B;IACrC,MAAM,CAAC,MAAM,IAAI,mBAAmB;CASrC"}
@@ -0,0 +1,16 @@
1
+ import { DEFAULT_LLM_PROVIDER } from '../../../core/config.js';
2
+ import { AnthropicProviderAdapter } from '../adapters/anthropic/index.js';
3
+ import { OpenAiProviderAdapter } from '../adapters/openai/index.js';
4
+ import { LlmProviderRegistry } from './llm-provider-registry.js';
5
+ export class BuiltinLlmProviderRegistry {
6
+ static create() {
7
+ return new LlmProviderRegistry({
8
+ defaultProvider: DEFAULT_LLM_PROVIDER,
9
+ providers: [
10
+ new OpenAiProviderAdapter(),
11
+ new AnthropicProviderAdapter(),
12
+ ],
13
+ });
14
+ }
15
+ }
16
+ //# sourceMappingURL=builtin-llm-providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtin-llm-providers.js","sourceRoot":"","sources":["../../../../../src/core/llm/registry/builtin-llm-providers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,MAAM,OAAO,0BAA0B;IACrC,MAAM,CAAC,MAAM;QACX,OAAO,IAAI,mBAAmB,CAAC;YAC7B,eAAe,EAAE,oBAAoB;YACrC,SAAS,EAAE;gBACT,IAAI,qBAAqB,EAAE;gBAC3B,IAAI,wBAAwB,EAAE;aAC/B;SACF,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,5 @@
1
+ export { LlmProviderRegistry } from './llm-provider-registry.js';
2
+ export { LlmProviderInference } from './provider-inference.js';
3
+ export { BuiltinLlmProviderRegistry } from './builtin-llm-providers.js';
4
+ export type { LlmProviderAdapter, LlmProviderDefaultModelContext, LlmProviderRegistryInput, } from './types.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/llm/registry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,YAAY,EACV,kBAAkB,EAClB,8BAA8B,EAC9B,wBAAwB,GACzB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { LlmProviderRegistry } from './llm-provider-registry.js';
2
+ export { LlmProviderInference } from './provider-inference.js';
3
+ export { BuiltinLlmProviderRegistry } from './builtin-llm-providers.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/llm/registry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { LlmAdapter, LlmAdapterCreateInput, LlmProvider, LlmProviderResolutionInput } from '../types.js';
2
+ import type { LlmProviderAdapter, LlmProviderRegistryInput } from './types.js';
3
+ /**
4
+ * Resolves model/provider requests to concrete provider adapters. The agent
5
+ * loop depends on the LLM port; this registry is the provider adapter boundary.
6
+ */
7
+ export declare class LlmProviderRegistry {
8
+ private readonly providersById;
9
+ private readonly providers;
10
+ private readonly defaultProvider;
11
+ constructor(input: LlmProviderRegistryInput);
12
+ resolveProvider(input?: LlmProviderResolutionInput): LlmProviderAdapter;
13
+ createAdapter(input?: LlmAdapterCreateInput): LlmAdapter;
14
+ inferProvider(model?: string): LlmProvider;
15
+ listProviders(): LlmProvider[];
16
+ }
17
+ //# sourceMappingURL=llm-provider-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-provider-registry.d.ts","sourceRoot":"","sources":["../../../../../src/core/llm/registry/llm-provider-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,qBAAqB,EAAE,WAAW,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAE9G,OAAO,KAAK,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE/E;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8C;IAC5E,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgC;IAC1D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAc;gBAElC,KAAK,EAAE,wBAAwB;IAY3C,eAAe,CAAC,KAAK,GAAE,0BAA+B,GAAG,kBAAkB;IAa3E,aAAa,CAAC,KAAK,GAAE,qBAA0B,GAAG,UAAU;IAS5D,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,WAAW;IAQ1C,aAAa,IAAI,WAAW,EAAE;CAG/B"}
@@ -0,0 +1,51 @@
1
+ import { LlmProviderInference } from './provider-inference.js';
2
+ /**
3
+ * Resolves model/provider requests to concrete provider adapters. The agent
4
+ * loop depends on the LLM port; this registry is the provider adapter boundary.
5
+ */
6
+ export class LlmProviderRegistry {
7
+ providersById = new Map();
8
+ providers;
9
+ defaultProvider;
10
+ constructor(input) {
11
+ this.providers = input.providers;
12
+ this.defaultProvider = input.defaultProvider;
13
+ for (const provider of input.providers) {
14
+ if (this.providersById.has(provider.provider)) {
15
+ throw new Error(`Duplicate LLM provider adapter: ${provider.provider}`);
16
+ }
17
+ this.providersById.set(provider.provider, provider);
18
+ }
19
+ }
20
+ resolveProvider(input = {}) {
21
+ const provider = input.provider ?? LlmProviderInference.infer({
22
+ model: input.model,
23
+ providers: this.providers,
24
+ defaultProvider: this.defaultProvider,
25
+ });
26
+ const adapter = this.providersById.get(provider);
27
+ if (!adapter) {
28
+ throw new Error(`LLM provider "${provider}" is not registered. Add a provider adapter before using model ${JSON.stringify(input.model ?? provider)}.`);
29
+ }
30
+ return adapter;
31
+ }
32
+ createAdapter(input = {}) {
33
+ const provider = this.resolveProvider(input);
34
+ return provider.createAdapter({
35
+ ...input,
36
+ provider: provider.provider,
37
+ model: input.model ?? provider.defaultModel(input),
38
+ });
39
+ }
40
+ inferProvider(model) {
41
+ return LlmProviderInference.infer({
42
+ model,
43
+ providers: this.providers,
44
+ defaultProvider: this.defaultProvider,
45
+ });
46
+ }
47
+ listProviders() {
48
+ return [...this.providersById.keys()];
49
+ }
50
+ }
51
+ //# sourceMappingURL=llm-provider-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-provider-registry.js","sourceRoot":"","sources":["../../../../../src/core/llm/registry/llm-provider-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAG/D;;;GAGG;AACH,MAAM,OAAO,mBAAmB;IACb,aAAa,GAAG,IAAI,GAAG,EAAmC,CAAC;IAC3D,SAAS,CAAgC;IACzC,eAAe,CAAc;IAE9C,YAAY,KAA+B;QACzC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;QAE7C,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACvC,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CAAC,mCAAmC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC1E,CAAC;YACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,eAAe,CAAC,QAAoC,EAAE;QACpD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,oBAAoB,CAAC,KAAK,CAAC;YAC5D,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,eAAe,EAAE,IAAI,CAAC,eAAe;SACtC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,iBAAiB,QAAQ,kEAAkE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;QACzJ,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,aAAa,CAAC,QAA+B,EAAE;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC7C,OAAO,QAAQ,CAAC,aAAa,CAAC;YAC5B,GAAG,KAAK;YACR,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC;SACnD,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,KAAc;QAC1B,OAAO,oBAAoB,CAAC,KAAK,CAAC;YAChC,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,eAAe,EAAE,IAAI,CAAC,eAAe;SACtC,CAAC,CAAC;IACL,CAAC;IAED,aAAa;QACX,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;CACF"}
@@ -0,0 +1,18 @@
1
+ import type { LlmProvider } from '../types.js';
2
+ import type { LlmProviderAdapter } from './types.js';
3
+ /**
4
+ * Infers a provider from model naming conventions. Provider adapters own their
5
+ * own model matching, while this class coordinates the registry-wide lookup.
6
+ */
7
+ export declare class LlmProviderInference {
8
+ static infer(args: {
9
+ model?: string;
10
+ providers: readonly LlmProviderAdapter[];
11
+ defaultProvider: LlmProvider;
12
+ }): LlmProvider;
13
+ static inferBuiltin(model?: string, defaultProvider?: LlmProvider): LlmProvider;
14
+ static matchesProviderModel(provider: LlmProvider, model: string): boolean;
15
+ private static inferKnownProvider;
16
+ private static readonly matchers;
17
+ }
18
+ //# sourceMappingURL=provider-inference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-inference.d.ts","sourceRoot":"","sources":["../../../../../src/core/llm/registry/provider-inference.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,SAAS,kBAAkB,EAAE,CAAC;QACzC,eAAe,EAAE,WAAW,CAAC;KAC9B,GAAG,WAAW;IAWf,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,eAAe,GAAE,WAAkC,GAAG,WAAW;IASrG,MAAM,CAAC,oBAAoB,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAI1E,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAKjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAU9B;CACH"}
@@ -0,0 +1,41 @@
1
+ import { DEFAULT_LLM_PROVIDER } from '../../../core/config.js';
2
+ /**
3
+ * Infers a provider from model naming conventions. Provider adapters own their
4
+ * own model matching, while this class coordinates the registry-wide lookup.
5
+ */
6
+ export class LlmProviderInference {
7
+ static infer(args) {
8
+ const normalized = args.model?.trim();
9
+ if (!normalized) {
10
+ return args.defaultProvider;
11
+ }
12
+ return args.providers.find((provider) => provider.inferModel(normalized))?.provider
13
+ ?? LlmProviderInference.inferKnownProvider(normalized)
14
+ ?? args.defaultProvider;
15
+ }
16
+ static inferBuiltin(model, defaultProvider = DEFAULT_LLM_PROVIDER) {
17
+ const normalized = model?.trim();
18
+ if (!normalized) {
19
+ return defaultProvider;
20
+ }
21
+ return LlmProviderInference.inferKnownProvider(normalized) ?? defaultProvider;
22
+ }
23
+ static matchesProviderModel(provider, model) {
24
+ return LlmProviderInference.matchers.some(([candidate, matches]) => candidate === provider && matches(model.toLowerCase()));
25
+ }
26
+ static inferKnownProvider(model) {
27
+ const normalized = model.toLowerCase();
28
+ return LlmProviderInference.matchers.find(([, matches]) => matches(normalized))?.[0];
29
+ }
30
+ static matchers = [
31
+ ['openai', (value) => value.startsWith('gpt-')
32
+ || value.startsWith('o1')
33
+ || value.startsWith('o3')
34
+ || value.startsWith('o4')],
35
+ ['anthropic', (value) => value.startsWith('claude')],
36
+ ['google', (value) => value.startsWith('gemini')],
37
+ ['ollama', (value) => value.startsWith('ollama/') || value.startsWith('ollama:')],
38
+ ['huggingface', (value) => value.startsWith('hf/') || value.startsWith('huggingface/')],
39
+ ];
40
+ }
41
+ //# sourceMappingURL=provider-inference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-inference.js","sourceRoot":"","sources":["../../../../../src/core/llm/registry/provider-inference.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAIxD;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IAC/B,MAAM,CAAC,KAAK,CAAC,IAIZ;QACC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;QACtC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,eAAe,CAAC;QAC9B,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ;eAC9E,oBAAoB,CAAC,kBAAkB,CAAC,UAAU,CAAC;eACnD,IAAI,CAAC,eAAe,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,KAAc,EAAE,kBAA+B,oBAAoB;QACrF,MAAM,UAAU,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,eAAe,CAAC;QACzB,CAAC;QAED,OAAO,oBAAoB,CAAC,kBAAkB,CAAC,UAAU,CAAC,IAAI,eAAe,CAAC;IAChF,CAAC;IAED,MAAM,CAAC,oBAAoB,CAAC,QAAqB,EAAE,KAAa;QAC9D,OAAO,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,SAAS,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC9H,CAAC;IAEO,MAAM,CAAC,kBAAkB,CAAC,KAAa;QAC7C,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACvC,OAAO,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvF,CAAC;IAEO,MAAM,CAAU,QAAQ,GAAqD;QACnF,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CACnB,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;mBACrB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;mBACtB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;mBACtB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACpD,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACjD,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACjF,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;KACxF,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { LlmAdapter, LlmAdapterCreateInput, LlmProvider, LlmProviderResolutionInput } from '../types.js';
2
+ export type LlmProviderDefaultModelContext = LlmProviderResolutionInput;
3
+ export type LlmProviderAdapter = {
4
+ provider: LlmProvider;
5
+ inferModel(model: string): boolean;
6
+ defaultModel(context?: LlmProviderDefaultModelContext): string;
7
+ createAdapter(input: LlmAdapterCreateInput & {
8
+ provider: LlmProvider;
9
+ model: string;
10
+ }): LlmAdapter;
11
+ };
12
+ export type LlmProviderRegistryInput = {
13
+ providers: readonly LlmProviderAdapter[];
14
+ defaultProvider: LlmProvider;
15
+ };
16
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/core/llm/registry/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,qBAAqB,EAAE,WAAW,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAE9G,MAAM,MAAM,8BAA8B,GAAG,0BAA0B,CAAC;AAExE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IACnC,YAAY,CAAC,OAAO,CAAC,EAAE,8BAA8B,GAAG,MAAM,CAAC;IAC/D,aAAa,CAAC,KAAK,EAAE,qBAAqB,GAAG;QAAE,QAAQ,EAAE,WAAW,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,UAAU,CAAC;CACpG,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACzC,eAAe,EAAE,WAAW,CAAC;CAC9B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/core/llm/registry/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ import type { LlmAdapter, LlmAdapterCreateInput, LlmProvider, LlmProviderResolutionInput } from './types.js';
2
+ /**
3
+ * Main LLM application service. It is the public entry point for creating
4
+ * provider adapters and resolving provider/model ownership.
5
+ */
6
+ export declare class LlmAdapterService {
7
+ private static readonly registry;
8
+ static create(input?: LlmAdapterCreateInput): LlmAdapter;
9
+ static resolveProvider(input?: LlmProviderResolutionInput): LlmProvider;
10
+ static inferProvider(model?: string): LlmProvider;
11
+ private static withStoredOAuthCredential;
12
+ private static resolveStoredOAuthCredential;
13
+ private static hasApiKey;
14
+ }
15
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../../src/core/llm/service.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,qBAAqB,EAAE,WAAW,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAE7G;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAuC;IAEvE,MAAM,CAAC,MAAM,CAAC,KAAK,GAAE,qBAA0B,GAAG,UAAU;IAO5D,MAAM,CAAC,eAAe,CAAC,KAAK,GAAE,0BAA+B,GAAG,WAAW;IAI3E,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,WAAW;IAIjD,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAoBxC,OAAO,CAAC,MAAM,CAAC,4BAA4B;IAQ3C,OAAO,CAAC,MAAM,CAAC,SAAS;CAGzB"}
@@ -0,0 +1,44 @@
1
+ import { ProviderCredentialRepository, } from '../../core/auth/index.js';
2
+ import { BuiltinLlmProviderRegistry } from './registry/index.js';
3
+ /**
4
+ * Main LLM application service. It is the public entry point for creating
5
+ * provider adapters and resolving provider/model ownership.
6
+ */
7
+ export class LlmAdapterService {
8
+ static registry = BuiltinLlmProviderRegistry.create();
9
+ static create(input = {}) {
10
+ const provider = LlmAdapterService.resolveProvider(input);
11
+ return LlmAdapterService.registry.createAdapter(LlmAdapterService.withStoredOAuthCredential(input, provider));
12
+ }
13
+ static resolveProvider(input = {}) {
14
+ return LlmAdapterService.registry.resolveProvider(input).provider;
15
+ }
16
+ static inferProvider(model) {
17
+ return LlmAdapterService.registry.inferProvider(model);
18
+ }
19
+ static withStoredOAuthCredential(input, provider) {
20
+ const credentials = input.credentials;
21
+ if (credentials?.credential || LlmAdapterService.hasApiKey(credentials?.apiKey)) {
22
+ return input;
23
+ }
24
+ const credential = LlmAdapterService.resolveStoredOAuthCredential(provider, credentials?.credentialStorePath);
25
+ if (!credential) {
26
+ return input;
27
+ }
28
+ return {
29
+ ...input,
30
+ credentials: {
31
+ ...(credentials ?? {}),
32
+ credential,
33
+ },
34
+ };
35
+ }
36
+ static resolveStoredOAuthCredential(provider, storePath) {
37
+ const credential = new ProviderCredentialRepository({ storePath }).get(provider);
38
+ return credential?.type === 'oauth' ? credential : undefined;
39
+ }
40
+ static hasApiKey(value) {
41
+ return typeof value === 'string' && value.trim().length > 0;
42
+ }
43
+ }
44
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../../src/core/llm/service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,GAE7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAGjE;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IACpB,MAAM,CAAU,QAAQ,GAAG,0BAA0B,CAAC,MAAM,EAAE,CAAC;IAEvE,MAAM,CAAC,MAAM,CAAC,QAA+B,EAAE;QAC7C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC1D,OAAO,iBAAiB,CAAC,QAAQ,CAAC,aAAa,CAC7C,iBAAiB,CAAC,yBAAyB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAC7D,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,QAAoC,EAAE;QAC3D,OAAO,iBAAiB,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;IACpE,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,KAAc;QACjC,OAAO,iBAAiB,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC;IAEO,MAAM,CAAC,yBAAyB,CAAC,KAA4B,EAAE,QAAqB;QAC1F,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QACtC,IAAI,WAAW,EAAE,UAAU,IAAI,iBAAiB,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC;YAChF,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,UAAU,GAAG,iBAAiB,CAAC,4BAA4B,CAAC,QAAQ,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC;QAC9G,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO;YACL,GAAG,KAAK;YACR,WAAW,EAAE;gBACX,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;gBACtB,UAAU;aACX;SACF,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,4BAA4B,CACzC,QAAqB,EACrB,SAAkB;QAElB,MAAM,UAAU,GAAG,IAAI,4BAA4B,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjF,OAAO,UAAU,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/D,CAAC;IAEO,MAAM,CAAC,SAAS,CAAC,KAAyB;QAChD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9D,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { AssistantDiagnostics, ToolCall, ToolDefinition } from '../types.js';
2
+ import type { StoredProviderCredential } from '../../core/auth/index.js';
2
3
  export type LlmStreamEvent = {
3
4
  type: 'content.delta';
4
5
  delta: string;
@@ -12,7 +13,7 @@ export type LlmStreamEvent = {
12
13
  type: 'reasoning_summary.done';
13
14
  text: string;
14
15
  };
15
- export type LlmProvider = 'openai' | 'anthropic' | 'google';
16
+ export type LlmProvider = 'openai' | 'anthropic' | 'google' | 'ollama' | 'huggingface';
16
17
  export type ReasoningEffort = 'low' | 'medium' | 'high' | 'ultrahigh';
17
18
  export type LlmAdapterCapabilities = {
18
19
  toolCalls: boolean;
@@ -68,4 +69,20 @@ export interface LlmAdapter {
68
69
  info?: LlmAdapterInfo;
69
70
  chat(messages: ChatMessage[], tools: ToolDefinition[], signal?: AbortSignal, onStreamEvent?: (event: LlmStreamEvent) => void): Promise<LlmResponse>;
70
71
  }
72
+ export type LlmCredentialContext = {
73
+ apiKey?: string;
74
+ credential?: StoredProviderCredential;
75
+ credentialStorePath?: string;
76
+ };
77
+ export type LlmRuntimeContext = {
78
+ reasoningEffort?: ReasoningEffort;
79
+ fetchImpl?: (url: unknown, init?: unknown) => Promise<globalThis.Response>;
80
+ };
81
+ export type LlmAdapterCreateInput = {
82
+ provider?: LlmProvider;
83
+ model?: string;
84
+ credentials?: LlmCredentialContext;
85
+ runtime?: LlmRuntimeContext;
86
+ };
87
+ export type LlmProviderResolutionInput = Pick<LlmAdapterCreateInput, 'provider' | 'model'>;
71
88
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/llm/types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElF,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,yBAAyB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,wBAAwB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErD,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE5D,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAEtE,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iBAAiB,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,sBAAsB,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAA;CAAE,GAC9D;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,QAAQ,CAAC;CAClB,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,IAAI,CACF,QAAQ,EAAE,WAAW,EAAE,EACvB,KAAK,EAAE,cAAc,EAAE,EACvB,MAAM,CAAC,EAAE,WAAW,EACpB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GAC9C,OAAO,CAAC,WAAW,CAAC,CAAC;CACzB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/llm/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { AgentLoopEvent } from '../../../core/runtime/loop/index.js';
2
+ import type { TraceEvent } from '../../../core/types.js';
3
+ import type { ApplyConversationActivityHandlerArgs, ConversationActivity, ConversationCompactionStatus } from './types.js';
4
+ /**
5
+ * Projects raw runtime, trace, and compaction events into host-agnostic
6
+ * conversation activities. Activities retain their source event and only add
7
+ * derived fields when this boundary performs real semantic work.
8
+ */
9
+ export declare class ConversationActivityProjector {
10
+ private static readonly traceProjectors;
11
+ private static readonly agentLoopProjectors;
12
+ private static readonly compactionProjectors;
13
+ static fromTraceEvent(event: TraceEvent): ConversationActivity[];
14
+ static fromAgentLoopEvent(event: AgentLoopEvent): ConversationActivity[];
15
+ static fromCompactionStatus(event: ConversationCompactionStatus): ConversationActivity[];
16
+ static applyHandler<Context, Result = void>(args: ApplyConversationActivityHandlerArgs<Context, Result>): Result | undefined;
17
+ private static traceActivity;
18
+ private static agentLoopActivity;
19
+ private static traceCorrelation;
20
+ private static agentLoopCorrelation;
21
+ private static formatCyberLoopMetrics;
22
+ private static formatMetric;
23
+ }
24
+ //# sourceMappingURL=conversation-activity-projector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-activity-projector.d.ts","sourceRoot":"","sources":["../../../../../src/core/observability/activity/conversation-activity-projector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EACV,oCAAoC,EAEpC,oBAAoB,EAGpB,4BAA4B,EAC7B,MAAM,YAAY,CAAC;AAepB;;;;GAIG;AACH,qBAAa,6BAA6B;IACxC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAqCrC;IAEF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAczC;IAEF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAI1C;IAEF,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,oBAAoB,EAAE;IAKhE,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,cAAc,GAAG,oBAAoB,EAAE;IAKxE,MAAM,CAAC,oBAAoB,CAAC,KAAK,EAAE,4BAA4B,GAAG,oBAAoB,EAAE;IAKxF,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EACxC,IAAI,EAAE,oCAAoC,CAAC,OAAO,EAAE,MAAM,CAAC,GAC1D,MAAM,GAAG,SAAS;IAKrB,OAAO,CAAC,MAAM,CAAC,aAAa;IAa5B,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAahC,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAW/B,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAWnC,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAyBrC,OAAO,CAAC,MAAM,CAAC,YAAY;CAS5B"}