@clinebot/core 0.0.35 → 0.0.37

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 (441) hide show
  1. package/README.md +1 -2
  2. package/dist/ClineCore.d.ts +362 -39
  3. package/dist/ClineCore.d.ts.map +1 -1
  4. package/dist/account/cline-account-service.d.ts.map +1 -1
  5. package/dist/account/index.d.ts +1 -1
  6. package/dist/account/index.d.ts.map +1 -1
  7. package/dist/account/rpc.d.ts +6 -6
  8. package/dist/account/rpc.d.ts.map +1 -1
  9. package/dist/cron/cron-event-ingress.d.ts +38 -0
  10. package/dist/cron/cron-event-ingress.d.ts.map +1 -0
  11. package/dist/cron/cron-materializer.d.ts +36 -0
  12. package/dist/cron/cron-materializer.d.ts.map +1 -0
  13. package/dist/cron/cron-reconciler.d.ts +62 -0
  14. package/dist/cron/cron-reconciler.d.ts.map +1 -0
  15. package/dist/cron/cron-report-writer.d.ts +41 -0
  16. package/dist/cron/cron-report-writer.d.ts.map +1 -0
  17. package/dist/cron/cron-runner.d.ts +43 -0
  18. package/dist/cron/cron-runner.d.ts.map +1 -0
  19. package/dist/cron/cron-schema.d.ts +3 -0
  20. package/dist/cron/cron-schema.d.ts.map +1 -0
  21. package/dist/cron/cron-service.d.ts +57 -0
  22. package/dist/cron/cron-service.d.ts.map +1 -0
  23. package/dist/cron/cron-spec-parser.d.ts +27 -0
  24. package/dist/cron/cron-spec-parser.d.ts.map +1 -0
  25. package/dist/cron/cron-watcher.d.ts +23 -0
  26. package/dist/cron/cron-watcher.d.ts.map +1 -0
  27. package/dist/cron/resource-limiter.d.ts +9 -0
  28. package/dist/cron/resource-limiter.d.ts.map +1 -0
  29. package/dist/cron/schedule-command-service.d.ts +10 -0
  30. package/dist/cron/schedule-command-service.d.ts.map +1 -0
  31. package/dist/cron/schedule-service.d.ts +100 -0
  32. package/dist/cron/schedule-service.d.ts.map +1 -0
  33. package/dist/cron/scheduler.d.ts +68 -0
  34. package/dist/cron/scheduler.d.ts.map +1 -0
  35. package/dist/cron/sqlite-cron-store.d.ts +230 -0
  36. package/dist/cron/sqlite-cron-store.d.ts.map +1 -0
  37. package/dist/cron/sqlite-schedule-store.d.ts +52 -0
  38. package/dist/cron/sqlite-schedule-store.d.ts.map +1 -0
  39. package/dist/extensions/config/agent-config-loader.d.ts +4 -3
  40. package/dist/extensions/config/agent-config-loader.d.ts.map +1 -1
  41. package/dist/extensions/config/runtime-commands.d.ts +1 -0
  42. package/dist/extensions/config/runtime-commands.d.ts.map +1 -1
  43. package/dist/extensions/config/user-instruction-config-loader.d.ts +1 -0
  44. package/dist/extensions/config/user-instruction-config-loader.d.ts.map +1 -1
  45. package/dist/extensions/context/agentic-compaction.d.ts +2 -2
  46. package/dist/extensions/context/agentic-compaction.d.ts.map +1 -1
  47. package/dist/extensions/context/compaction-shared.d.ts +5 -4
  48. package/dist/extensions/context/compaction-shared.d.ts.map +1 -1
  49. package/dist/extensions/context/compaction.d.ts.map +1 -1
  50. package/dist/extensions/plugin/plugin-config-loader.d.ts +15 -2
  51. package/dist/extensions/plugin/plugin-config-loader.d.ts.map +1 -1
  52. package/dist/extensions/plugin/plugin-loader.d.ts +13 -7
  53. package/dist/extensions/plugin/plugin-loader.d.ts.map +1 -1
  54. package/dist/extensions/plugin/plugin-module-import.d.ts.map +1 -1
  55. package/dist/extensions/plugin/plugin-sandbox.d.ts +21 -2
  56. package/dist/extensions/plugin/plugin-sandbox.d.ts.map +1 -1
  57. package/dist/extensions/plugin/plugin-targeting.d.ts +7 -0
  58. package/dist/extensions/plugin/plugin-targeting.d.ts.map +1 -0
  59. package/dist/extensions/plugin-sandbox-bootstrap.js +237 -276
  60. package/dist/extensions/tools/constants.d.ts +1 -0
  61. package/dist/extensions/tools/constants.d.ts.map +1 -1
  62. package/dist/extensions/tools/definitions.d.ts +3 -4
  63. package/dist/extensions/tools/definitions.d.ts.map +1 -1
  64. package/dist/extensions/tools/executors/apply-patch.d.ts +3 -1
  65. package/dist/extensions/tools/executors/apply-patch.d.ts.map +1 -1
  66. package/dist/extensions/tools/executors/editor.d.ts.map +1 -1
  67. package/dist/extensions/tools/executors/search.d.ts +1 -1
  68. package/dist/extensions/tools/executors/search.d.ts.map +1 -1
  69. package/dist/extensions/tools/helpers.d.ts +1 -0
  70. package/dist/extensions/tools/helpers.d.ts.map +1 -1
  71. package/dist/extensions/tools/index.d.ts +3 -2
  72. package/dist/extensions/tools/index.d.ts.map +1 -1
  73. package/dist/extensions/tools/presets.d.ts +27 -44
  74. package/dist/extensions/tools/presets.d.ts.map +1 -1
  75. package/dist/extensions/tools/runtime.d.ts +25 -0
  76. package/dist/extensions/tools/runtime.d.ts.map +1 -0
  77. package/dist/extensions/tools/schemas.d.ts +25 -3
  78. package/dist/extensions/tools/schemas.d.ts.map +1 -1
  79. package/dist/extensions/tools/team/delegated-agent.d.ts +2 -2
  80. package/dist/extensions/tools/team/delegated-agent.d.ts.map +1 -1
  81. package/dist/extensions/tools/team/multi-agent.d.ts +7 -3
  82. package/dist/extensions/tools/team/multi-agent.d.ts.map +1 -1
  83. package/dist/extensions/tools/team/team-tools.d.ts +1 -0
  84. package/dist/extensions/tools/team/team-tools.d.ts.map +1 -1
  85. package/dist/extensions/tools/types.d.ts +0 -5
  86. package/dist/extensions/tools/types.d.ts.map +1 -1
  87. package/dist/hooks/hook-bridge.d.ts +118 -0
  88. package/dist/hooks/hook-bridge.d.ts.map +1 -0
  89. package/dist/hooks/hook-file-hooks.d.ts +6 -2
  90. package/dist/hooks/hook-file-hooks.d.ts.map +1 -1
  91. package/dist/hooks/hook-registry.d.ts +16 -0
  92. package/dist/hooks/hook-registry.d.ts.map +1 -0
  93. package/dist/hooks/index.d.ts +0 -1
  94. package/dist/hooks/index.d.ts.map +1 -1
  95. package/dist/hooks/subprocess.d.ts +8 -1
  96. package/dist/hooks/subprocess.d.ts.map +1 -1
  97. package/dist/hub/browser-websocket.d.ts +18 -0
  98. package/dist/hub/browser-websocket.d.ts.map +1 -0
  99. package/dist/hub/client.d.ts +51 -0
  100. package/dist/hub/client.d.ts.map +1 -0
  101. package/dist/hub/connect.d.ts +15 -0
  102. package/dist/hub/connect.d.ts.map +1 -0
  103. package/dist/hub/daemon-entry.d.ts +2 -0
  104. package/dist/hub/daemon-entry.d.ts.map +1 -0
  105. package/dist/hub/daemon-entry.js +1305 -0
  106. package/dist/hub/daemon.d.ts +5 -0
  107. package/dist/hub/daemon.d.ts.map +1 -0
  108. package/dist/hub/defaults.d.ts +17 -0
  109. package/dist/hub/defaults.d.ts.map +1 -0
  110. package/dist/hub/discovery.d.ts +29 -0
  111. package/dist/hub/discovery.d.ts.map +1 -0
  112. package/dist/hub/index.d.ts +15 -0
  113. package/dist/hub/index.d.ts.map +1 -0
  114. package/dist/hub/index.js +1294 -0
  115. package/dist/hub/native-transport.d.ts +17 -0
  116. package/dist/hub/native-transport.d.ts.map +1 -0
  117. package/dist/hub/runtime-handlers.d.ts +11 -0
  118. package/dist/hub/runtime-handlers.d.ts.map +1 -0
  119. package/dist/hub/server.d.ts +104 -0
  120. package/dist/hub/server.d.ts.map +1 -0
  121. package/dist/hub/session-client.d.ts +90 -0
  122. package/dist/hub/session-client.d.ts.map +1 -0
  123. package/dist/hub/start-shared-server.d.ts +19 -0
  124. package/dist/hub/start-shared-server.d.ts.map +1 -0
  125. package/dist/hub/transport.d.ts +8 -0
  126. package/dist/hub/transport.d.ts.map +1 -0
  127. package/dist/hub/ui-client.d.ts +45 -0
  128. package/dist/hub/ui-client.d.ts.map +1 -0
  129. package/dist/hub/workspace.d.ts +4 -0
  130. package/dist/hub/workspace.d.ts.map +1 -0
  131. package/dist/index.d.ts +29 -16
  132. package/dist/index.d.ts.map +1 -1
  133. package/dist/index.js +782 -471
  134. package/dist/llms/cline-recommended-models.d.ts +20 -0
  135. package/dist/llms/cline-recommended-models.d.ts.map +1 -0
  136. package/dist/llms/configured-provider-registry.d.ts +28 -0
  137. package/dist/llms/configured-provider-registry.d.ts.map +1 -0
  138. package/dist/llms/handler-factory.d.ts +16 -0
  139. package/dist/llms/handler-factory.d.ts.map +1 -0
  140. package/dist/llms/provider-defaults.d.ts +27 -0
  141. package/dist/llms/provider-defaults.d.ts.map +1 -0
  142. package/dist/llms/provider-settings.d.ts +245 -0
  143. package/dist/llms/provider-settings.d.ts.map +1 -0
  144. package/dist/llms/runtime-config.d.ts +4 -0
  145. package/dist/llms/runtime-config.d.ts.map +1 -0
  146. package/dist/llms/runtime-registry.d.ts +20 -0
  147. package/dist/llms/runtime-registry.d.ts.map +1 -0
  148. package/dist/llms/runtime-types.d.ts +85 -0
  149. package/dist/llms/runtime-types.d.ts.map +1 -0
  150. package/dist/runtime/agent-config-adapter.d.ts +148 -0
  151. package/dist/runtime/agent-config-adapter.d.ts.map +1 -0
  152. package/dist/runtime/agent-runtime-config-builder.d.ts +96 -0
  153. package/dist/runtime/agent-runtime-config-builder.d.ts.map +1 -0
  154. package/dist/runtime/history.d.ts +6 -0
  155. package/dist/runtime/history.d.ts.map +1 -1
  156. package/dist/runtime/host.d.ts +1 -2
  157. package/dist/runtime/host.d.ts.map +1 -1
  158. package/dist/runtime/loop-detection.d.ts +59 -0
  159. package/dist/runtime/loop-detection.d.ts.map +1 -0
  160. package/dist/runtime/mistake-tracker.d.ts +69 -0
  161. package/dist/runtime/mistake-tracker.d.ts.map +1 -0
  162. package/dist/runtime/rules.d.ts +1 -0
  163. package/dist/runtime/rules.d.ts.map +1 -1
  164. package/dist/runtime/runtime-builder.d.ts.map +1 -1
  165. package/dist/runtime/runtime-event-adapter.d.ts +102 -0
  166. package/dist/runtime/runtime-event-adapter.d.ts.map +1 -0
  167. package/dist/runtime/runtime-host.d.ts +49 -26
  168. package/dist/runtime/runtime-host.d.ts.map +1 -1
  169. package/dist/runtime/runtime-oauth-token-manager.d.ts.map +1 -1
  170. package/dist/runtime/session-runtime-orchestrator.d.ts +261 -0
  171. package/dist/runtime/session-runtime-orchestrator.d.ts.map +1 -0
  172. package/dist/runtime/session-runtime.d.ts +16 -21
  173. package/dist/runtime/session-runtime.d.ts.map +1 -1
  174. package/dist/runtime/user-input-builder.d.ts +24 -0
  175. package/dist/runtime/user-input-builder.d.ts.map +1 -0
  176. package/dist/services/global-settings.d.ts +12 -0
  177. package/dist/services/global-settings.d.ts.map +1 -0
  178. package/dist/services/index.js +28 -0
  179. package/dist/services/local-runtime-bootstrap.d.ts +9 -3
  180. package/dist/services/local-runtime-bootstrap.d.ts.map +1 -1
  181. package/dist/services/plugin-tools.d.ts +16 -0
  182. package/dist/services/plugin-tools.d.ts.map +1 -0
  183. package/dist/services/providers/local-provider-registry.d.ts +199 -23
  184. package/dist/services/providers/local-provider-registry.d.ts.map +1 -1
  185. package/dist/services/providers/local-provider-service.d.ts +15 -13
  186. package/dist/services/providers/local-provider-service.d.ts.map +1 -1
  187. package/dist/services/session-data.d.ts +1 -1
  188. package/dist/services/session-data.d.ts.map +1 -1
  189. package/dist/services/session-telemetry.d.ts +7 -2
  190. package/dist/services/session-telemetry.d.ts.map +1 -1
  191. package/dist/services/storage/file-team-store.d.ts.map +1 -1
  192. package/dist/services/storage/provider-settings-legacy-migration.d.ts +1 -1
  193. package/dist/services/storage/provider-settings-legacy-migration.d.ts.map +1 -1
  194. package/dist/services/storage/provider-settings-manager.d.ts +1 -0
  195. package/dist/services/storage/provider-settings-manager.d.ts.map +1 -1
  196. package/dist/services/storage/sqlite-team-store.d.ts.map +1 -1
  197. package/dist/services/workspace-manifest.d.ts +11 -0
  198. package/dist/services/workspace-manifest.d.ts.map +1 -1
  199. package/dist/session/conversation-store.d.ts +30 -0
  200. package/dist/session/conversation-store.d.ts.map +1 -0
  201. package/dist/session/message-builder.d.ts +65 -0
  202. package/dist/session/message-builder.d.ts.map +1 -0
  203. package/dist/session/persistence-service.d.ts +11 -23
  204. package/dist/session/persistence-service.d.ts.map +1 -1
  205. package/dist/session/session-manifest-store.d.ts +22 -0
  206. package/dist/session/session-manifest-store.d.ts.map +1 -0
  207. package/dist/session/session-manifest.d.ts +1 -1
  208. package/dist/session/session-row.d.ts +93 -0
  209. package/dist/session/session-row.d.ts.map +1 -0
  210. package/dist/session/session-service.d.ts +2 -102
  211. package/dist/session/session-service.d.ts.map +1 -1
  212. package/dist/session/subagent-session-manager.d.ts +36 -0
  213. package/dist/session/subagent-session-manager.d.ts.map +1 -0
  214. package/dist/session/team-persistence-store.d.ts +24 -0
  215. package/dist/session/team-persistence-store.d.ts.map +1 -0
  216. package/dist/transports/hub.d.ts +58 -0
  217. package/dist/transports/hub.d.ts.map +1 -0
  218. package/dist/transports/local.d.ts +23 -9
  219. package/dist/transports/local.d.ts.map +1 -1
  220. package/dist/transports/remote.d.ts +10 -0
  221. package/dist/transports/remote.d.ts.map +1 -0
  222. package/dist/transports/runtime-host-support.d.ts +3 -2
  223. package/dist/transports/runtime-host-support.d.ts.map +1 -1
  224. package/dist/types/chat-schema.d.ts +15 -17
  225. package/dist/types/chat-schema.d.ts.map +1 -1
  226. package/dist/types/config.d.ts +17 -7
  227. package/dist/types/config.d.ts.map +1 -1
  228. package/dist/types/events.d.ts +7 -6
  229. package/dist/types/events.d.ts.map +1 -1
  230. package/dist/types/provider-settings.d.ts +4 -5
  231. package/dist/types/provider-settings.d.ts.map +1 -1
  232. package/dist/types/session.d.ts +7 -3
  233. package/dist/types/session.d.ts.map +1 -1
  234. package/dist/types.d.ts +11 -4
  235. package/dist/types.d.ts.map +1 -1
  236. package/package.json +20 -6
  237. package/src/ClineCore.ts +757 -44
  238. package/src/account/cline-account-service.ts +44 -6
  239. package/src/account/index.ts +3 -3
  240. package/src/account/rpc.ts +12 -12
  241. package/src/cron/cron-event-ingress.ts +357 -0
  242. package/src/cron/cron-materializer.ts +97 -0
  243. package/src/cron/cron-reconciler.ts +241 -0
  244. package/src/cron/cron-report-writer.ts +153 -0
  245. package/src/cron/cron-runner.ts +495 -0
  246. package/src/cron/cron-schema.ts +127 -0
  247. package/src/cron/cron-service.ts +163 -0
  248. package/src/cron/cron-spec-parser.ts +489 -0
  249. package/src/cron/cron-watcher.ts +102 -0
  250. package/src/cron/index.ts +15 -0
  251. package/src/cron/resource-limiter.ts +46 -0
  252. package/src/cron/schedule-command-service.ts +193 -0
  253. package/src/cron/schedule-service.ts +703 -0
  254. package/src/cron/scheduler.ts +772 -0
  255. package/src/cron/sqlite-cron-store.ts +1286 -0
  256. package/src/cron/sqlite-schedule-store.ts +708 -0
  257. package/src/extensions/config/agent-config-loader.ts +17 -7
  258. package/src/extensions/config/runtime-commands.ts +6 -0
  259. package/src/extensions/config/user-instruction-config-loader.ts +1 -0
  260. package/src/extensions/context/agentic-compaction.ts +3 -3
  261. package/src/extensions/context/basic-compaction.ts +2 -2
  262. package/src/extensions/context/compaction-shared.ts +5 -4
  263. package/src/extensions/context/compaction.ts +3 -3
  264. package/src/extensions/plugin/plugin-config-loader.ts +37 -2
  265. package/src/extensions/plugin/plugin-loader.ts +69 -9
  266. package/src/extensions/plugin/plugin-module-import.ts +0 -2
  267. package/src/extensions/plugin/plugin-sandbox-bootstrap.ts +243 -39
  268. package/src/extensions/plugin/plugin-sandbox.ts +173 -29
  269. package/src/extensions/plugin/plugin-targeting.ts +32 -0
  270. package/src/extensions/tools/constants.ts +2 -0
  271. package/src/extensions/tools/definitions.ts +61 -71
  272. package/src/extensions/tools/executors/apply-patch.ts +69 -80
  273. package/src/extensions/tools/executors/editor.ts +4 -3
  274. package/src/extensions/tools/executors/search.ts +195 -3
  275. package/src/extensions/tools/helpers.ts +24 -0
  276. package/src/extensions/tools/index.ts +11 -2
  277. package/src/extensions/tools/presets.ts +32 -47
  278. package/src/extensions/tools/runtime.ts +261 -0
  279. package/src/extensions/tools/schemas.ts +17 -20
  280. package/src/extensions/tools/team/delegated-agent.ts +8 -3
  281. package/src/extensions/tools/team/multi-agent.ts +135 -19
  282. package/src/extensions/tools/team/team-tools.ts +172 -91
  283. package/src/extensions/tools/types.ts +0 -6
  284. package/src/hooks/hook-bridge.ts +489 -0
  285. package/src/hooks/hook-file-hooks.ts +66 -5
  286. package/src/hooks/hook-registry.ts +257 -0
  287. package/src/hooks/index.ts +0 -7
  288. package/src/hooks/subprocess-runner.ts +1 -1
  289. package/src/hooks/subprocess.ts +9 -0
  290. package/src/hub/browser-websocket.ts +159 -0
  291. package/src/hub/client.ts +633 -0
  292. package/src/hub/connect.ts +156 -0
  293. package/src/hub/daemon-entry.ts +122 -0
  294. package/src/hub/daemon.ts +284 -0
  295. package/src/hub/defaults.ts +70 -0
  296. package/src/hub/discovery.ts +247 -0
  297. package/src/hub/index.ts +14 -0
  298. package/src/hub/native-transport.ts +31 -0
  299. package/src/hub/runtime-handlers.ts +141 -0
  300. package/src/hub/server.ts +2317 -0
  301. package/src/hub/session-client.ts +502 -0
  302. package/src/hub/start-shared-server.ts +61 -0
  303. package/src/hub/transport.ts +14 -0
  304. package/src/hub/ui-client.ts +126 -0
  305. package/src/hub/workspace.ts +19 -0
  306. package/src/index.ts +169 -68
  307. package/src/llms/cline-recommended-models.ts +167 -0
  308. package/src/llms/configured-provider-registry.ts +193 -0
  309. package/src/llms/handler-factory.ts +56 -0
  310. package/src/llms/provider-defaults.ts +653 -0
  311. package/src/llms/provider-settings.ts +310 -0
  312. package/src/llms/runtime-config.ts +43 -0
  313. package/src/llms/runtime-registry.ts +172 -0
  314. package/src/llms/runtime-types.ts +121 -0
  315. package/src/runtime/agent-config-adapter.ts +636 -0
  316. package/src/runtime/agent-runtime-config-builder.ts +205 -0
  317. package/src/runtime/error-feedback.ts +142 -0
  318. package/src/runtime/history.ts +137 -0
  319. package/src/runtime/host.ts +127 -267
  320. package/src/runtime/index.ts +1 -0
  321. package/src/runtime/loop-detection.ts +162 -0
  322. package/src/runtime/mistake-tracker.ts +221 -0
  323. package/src/runtime/rules.ts +12 -0
  324. package/src/runtime/runtime-builder.ts +85 -13
  325. package/src/runtime/runtime-event-adapter.ts +412 -0
  326. package/src/runtime/runtime-host.ts +134 -62
  327. package/src/runtime/runtime-oauth-token-manager.ts +11 -15
  328. package/src/runtime/session-runtime-orchestrator.ts +1253 -0
  329. package/src/runtime/session-runtime.ts +16 -26
  330. package/src/runtime/user-input-builder.ts +167 -0
  331. package/src/services/global-settings.ts +122 -0
  332. package/src/services/local-runtime-bootstrap.ts +175 -31
  333. package/src/services/plugin-tools.ts +86 -0
  334. package/src/services/providers/local-provider-registry.ts +277 -61
  335. package/src/services/providers/local-provider-service.ts +109 -44
  336. package/src/services/session-data.ts +18 -10
  337. package/src/services/session-telemetry.ts +6 -15
  338. package/src/services/storage/file-team-store.ts +1 -5
  339. package/src/services/storage/provider-settings-legacy-migration.ts +14 -51
  340. package/src/services/storage/provider-settings-manager.ts +17 -2
  341. package/src/services/storage/sqlite-team-store.ts +1 -5
  342. package/src/services/workspace-manifest.ts +18 -0
  343. package/src/session/conversation-store.ts +77 -0
  344. package/src/session/file-session-service.ts +1 -1
  345. package/src/session/index.ts +6 -27
  346. package/src/session/message-builder.ts +941 -0
  347. package/src/session/persistence-service.ts +119 -504
  348. package/src/session/session-manifest-store.ts +158 -0
  349. package/src/session/session-row.ts +199 -0
  350. package/src/session/session-service.ts +17 -376
  351. package/src/session/session-team-coordination.ts +1 -1
  352. package/src/session/subagent-session-manager.ts +397 -0
  353. package/src/session/team-persistence-store.ts +176 -0
  354. package/src/transports/hub.ts +1081 -0
  355. package/src/transports/local.ts +419 -93
  356. package/src/transports/remote.ts +27 -0
  357. package/src/transports/runtime-host-support.ts +63 -9
  358. package/src/types/chat-schema.ts +4 -5
  359. package/src/types/config.ts +17 -7
  360. package/src/types/events.ts +8 -6
  361. package/src/types/index.ts +3 -0
  362. package/src/types/provider-settings.ts +18 -7
  363. package/src/types/session.ts +7 -6
  364. package/src/types.ts +42 -2
  365. package/dist/hooks/persistent.d.ts +0 -64
  366. package/dist/hooks/persistent.d.ts.map +0 -1
  367. package/dist/runtime/rpc-runtime-ensure.d.ts +0 -65
  368. package/dist/runtime/rpc-runtime-ensure.d.ts.map +0 -1
  369. package/dist/runtime/rpc-spawn-lease.d.ts +0 -8
  370. package/dist/runtime/rpc-spawn-lease.d.ts.map +0 -1
  371. package/dist/services/telemetry/index.js +0 -15
  372. package/dist/session/rpc-session-service.d.ts +0 -16
  373. package/dist/session/rpc-session-service.d.ts.map +0 -1
  374. package/dist/session/sqlite-rpc-session-backend.d.ts +0 -31
  375. package/dist/session/sqlite-rpc-session-backend.d.ts.map +0 -1
  376. package/dist/transports/rpc.d.ts +0 -51
  377. package/dist/transports/rpc.d.ts.map +0 -1
  378. package/src/ClineCore.test.ts +0 -226
  379. package/src/account/cline-account-service.test.ts +0 -185
  380. package/src/account/featurebase-token.test.ts +0 -175
  381. package/src/account/rpc.test.ts +0 -63
  382. package/src/auth/bounded-ttl-cache.test.ts +0 -38
  383. package/src/auth/client.test.ts +0 -69
  384. package/src/auth/cline.test.ts +0 -267
  385. package/src/auth/codex.test.ts +0 -170
  386. package/src/auth/oca.test.ts +0 -340
  387. package/src/auth/server.test.ts +0 -287
  388. package/src/auth/utils.test.ts +0 -128
  389. package/src/extensions/config/agent-config-loader.test.ts +0 -236
  390. package/src/extensions/config/hooks-config-loader.test.ts +0 -20
  391. package/src/extensions/config/runtime-commands.test.ts +0 -115
  392. package/src/extensions/config/unified-config-file-watcher.test.ts +0 -196
  393. package/src/extensions/config/user-instruction-config-loader.test.ts +0 -246
  394. package/src/extensions/context/compaction.test.ts +0 -483
  395. package/src/extensions/mcp/config-loader.test.ts +0 -238
  396. package/src/extensions/mcp/manager.test.ts +0 -105
  397. package/src/extensions/plugin/plugin-config-loader.test.ts +0 -184
  398. package/src/extensions/plugin/plugin-loader.test.ts +0 -292
  399. package/src/extensions/plugin/plugin-sandbox.test.ts +0 -423
  400. package/src/extensions/tools/definitions.test.ts +0 -780
  401. package/src/extensions/tools/executors/bash.test.ts +0 -87
  402. package/src/extensions/tools/executors/editor.test.ts +0 -35
  403. package/src/extensions/tools/executors/file-read.test.ts +0 -125
  404. package/src/extensions/tools/model-tool-routing.test.ts +0 -86
  405. package/src/extensions/tools/presets.test.ts +0 -70
  406. package/src/extensions/tools/team/multi-agent.lifecycle.test.ts +0 -455
  407. package/src/extensions/tools/team/spawn-agent-tool.test.ts +0 -381
  408. package/src/extensions/tools/team/team-tools.test.ts +0 -918
  409. package/src/hooks/checkpoint-hooks.test.ts +0 -168
  410. package/src/hooks/hook-file-hooks.test.ts +0 -311
  411. package/src/hooks/persistent.ts +0 -661
  412. package/src/runtime/history.test.ts +0 -114
  413. package/src/runtime/host.test.ts +0 -230
  414. package/src/runtime/rpc-runtime-ensure.test.ts +0 -123
  415. package/src/runtime/rpc-runtime-ensure.ts +0 -659
  416. package/src/runtime/rpc-spawn-lease.test.ts +0 -81
  417. package/src/runtime/rpc-spawn-lease.ts +0 -156
  418. package/src/runtime/runtime-builder.team-persistence.test.ts +0 -245
  419. package/src/runtime/runtime-builder.test.ts +0 -615
  420. package/src/runtime/runtime-oauth-token-manager.test.ts +0 -137
  421. package/src/runtime/runtime-parity.test.ts +0 -143
  422. package/src/services/providers/local-provider-service.test.ts +0 -1062
  423. package/src/services/session-data.test.ts +0 -160
  424. package/src/services/storage/provider-settings-legacy-migration.test.ts +0 -424
  425. package/src/services/storage/provider-settings-manager.test.ts +0 -191
  426. package/src/services/telemetry/OpenTelemetryAdapter.test.ts +0 -157
  427. package/src/services/telemetry/OpenTelemetryProvider.test.ts +0 -326
  428. package/src/services/telemetry/TelemetryLoggerSink.test.ts +0 -42
  429. package/src/services/telemetry/TelemetryService.test.ts +0 -134
  430. package/src/services/telemetry/distinct-id.test.ts +0 -57
  431. package/src/services/workspace/file-indexer.d.ts +0 -11
  432. package/src/services/workspace/file-indexer.test.ts +0 -156
  433. package/src/services/workspace/mention-enricher.test.ts +0 -106
  434. package/src/session/persistence-service.test.ts +0 -300
  435. package/src/session/rpc-session-service.ts +0 -114
  436. package/src/session/session-service.team-persistence.test.ts +0 -48
  437. package/src/session/sqlite-rpc-session-backend.ts +0 -301
  438. package/src/transports/local.e2e.test.ts +0 -380
  439. package/src/transports/local.test.ts +0 -2559
  440. package/src/transports/rpc.test.ts +0 -82
  441. package/src/transports/rpc.ts +0 -665
@@ -0,0 +1,310 @@
1
+ import * as Llms from "@clinebot/llms";
2
+ import { z } from "zod";
3
+ import {
4
+ DEFAULT_EXTERNAL_OCA_BASE_URL,
5
+ DEFAULT_INTERNAL_OCA_BASE_URL,
6
+ } from "../auth/oca";
7
+ import {
8
+ OPENAI_COMPATIBLE_PROVIDERS,
9
+ type ProviderDefaults,
10
+ } from "./provider-defaults";
11
+
12
+ export type ModelInfo = Llms.ModelInfo;
13
+ export type ProviderClient = Llms.ProviderClient;
14
+ export type ProviderProtocol = Llms.ProviderProtocol;
15
+ export type ProviderId = Llms.ProviderId;
16
+ export type ProviderCapability = Llms.ProviderCapability;
17
+ export type ProviderConfig = Llms.ProviderConfig;
18
+ export type BuiltInProviderId = Llms.BuiltInProviderId;
19
+
20
+ export const BUILT_IN_PROVIDER = Llms.BUILT_IN_PROVIDER;
21
+ export const BUILT_IN_PROVIDER_IDS = Llms.BUILT_IN_PROVIDER_IDS;
22
+ export const isBuiltInProviderId = Llms.isBuiltInProviderId;
23
+ export const normalizeProviderId = Llms.normalizeProviderId;
24
+
25
+ export type ProviderDefaultsConfig = ProviderDefaults;
26
+
27
+ export const ProviderIdSchema = z
28
+ .string()
29
+ .min(1)
30
+ .regex(/^[a-z0-9][a-z0-9-]*$/i);
31
+
32
+ export const ProviderProtocolSchema = z.enum([
33
+ "anthropic",
34
+ "gemini",
35
+ "openai-chat",
36
+ "openai-responses",
37
+ "openai-r1",
38
+ "ai-sdk",
39
+ ]);
40
+
41
+ export const ProviderClientSchema = z.enum([
42
+ "anthropic",
43
+ "ai-sdk",
44
+ "ai-sdk-community",
45
+ "openai",
46
+ "openai-compatible",
47
+ "openai-r1",
48
+ "gemini",
49
+ "bedrock",
50
+ "custom",
51
+ "fetch",
52
+ "vertex",
53
+ ]);
54
+
55
+ export const AuthSettingsSchema = z.object({
56
+ apiKey: z.string().optional(),
57
+ accessToken: z.string().optional(),
58
+ refreshToken: z.string().optional(),
59
+ expiresAt: z.number().int().positive().optional(),
60
+ accountId: z.string().optional(),
61
+ });
62
+
63
+ export type AuthSettings = z.infer<typeof AuthSettingsSchema>;
64
+
65
+ const ReasoningLevelSchema = z.enum(["none", "low", "medium", "high", "xhigh"]);
66
+
67
+ export const ReasoningSettingsSchema = z.object({
68
+ enabled: z.boolean().optional(),
69
+ effort: ReasoningLevelSchema.optional(),
70
+ budgetTokens: z.number().int().positive().optional(),
71
+ });
72
+
73
+ export type ReasoningSettings = z.infer<typeof ReasoningSettingsSchema>;
74
+
75
+ export const AwsSettingsSchema = z.object({
76
+ accessKey: z.string().optional(),
77
+ secretKey: z.string().optional(),
78
+ sessionToken: z.string().optional(),
79
+ region: z.string().optional(),
80
+ profile: z.string().optional(),
81
+ authentication: z.enum(["iam", "api-key", "profile"]).optional(),
82
+ usePromptCache: z.boolean().optional(),
83
+ useCrossRegionInference: z.boolean().optional(),
84
+ useGlobalInference: z.boolean().optional(),
85
+ endpoint: z.string().url().optional(),
86
+ customModelBaseId: z.string().optional(),
87
+ });
88
+
89
+ export type AwsSettings = z.infer<typeof AwsSettingsSchema>;
90
+
91
+ export const GcpSettingsSchema = z.object({
92
+ projectId: z.string().optional(),
93
+ region: z.string().optional(),
94
+ });
95
+
96
+ export type GcpSettings = z.infer<typeof GcpSettingsSchema>;
97
+
98
+ export const AzureSettingsSchema = z.object({
99
+ apiVersion: z.string().optional(),
100
+ useIdentity: z.boolean().optional(),
101
+ });
102
+
103
+ export type AzureSettings = z.infer<typeof AzureSettingsSchema>;
104
+
105
+ export const SapSettingsSchema = z.object({
106
+ clientId: z.string().optional(),
107
+ clientSecret: z.string().optional(),
108
+ tokenUrl: z.string().url().optional(),
109
+ resourceGroup: z.string().optional(),
110
+ deploymentId: z.string().optional(),
111
+ useOrchestrationMode: z.boolean().optional(),
112
+ api: z.enum(["orchestration", "foundation-models"]).optional(),
113
+ defaultSettings: z.record(z.string(), z.unknown()).optional(),
114
+ });
115
+
116
+ export type SapSettings = z.infer<typeof SapSettingsSchema>;
117
+
118
+ export const OcaSettingsSchema = z.object({
119
+ mode: z.enum(["internal", "external"]).optional(),
120
+ usePromptCache: z.boolean().optional(),
121
+ });
122
+
123
+ export type OcaSettings = z.infer<typeof OcaSettingsSchema>;
124
+
125
+ export const ModelCatalogSettingsSchema = z.object({
126
+ loadLatestOnInit: z.boolean().optional(),
127
+ loadPrivateOnAuth: z.boolean().optional(),
128
+ url: z.string().url().optional(),
129
+ cacheTtlMs: z.number().int().positive().optional(),
130
+ failOnError: z.boolean().optional(),
131
+ });
132
+
133
+ export type ModelCatalogSettings = z.infer<typeof ModelCatalogSettingsSchema>;
134
+ export type ModelCatalogConfig = ModelCatalogSettings;
135
+
136
+ export const ProviderSettingsSchema = z.object({
137
+ provider: ProviderIdSchema,
138
+ apiKey: z.string().optional(),
139
+ auth: AuthSettingsSchema.optional(),
140
+ model: z.string().optional(),
141
+ protocol: ProviderProtocolSchema.optional(),
142
+ client: ProviderClientSchema.optional(),
143
+ routingProviderId: ProviderIdSchema.optional(),
144
+ maxTokens: z.number().int().positive().optional(),
145
+ contextWindow: z.number().int().positive().optional(),
146
+ baseUrl: z.string().url().optional(),
147
+ headers: z.record(z.string(), z.string()).optional(),
148
+ timeout: z.number().int().positive().optional(),
149
+ reasoning: ReasoningSettingsSchema.optional(),
150
+ aws: AwsSettingsSchema.optional(),
151
+ gcp: GcpSettingsSchema.optional(),
152
+ azure: AzureSettingsSchema.optional(),
153
+ sap: SapSettingsSchema.optional(),
154
+ oca: OcaSettingsSchema.optional(),
155
+ region: z.string().optional(),
156
+ apiLine: z.enum(["china", "international"]).optional(),
157
+ capabilities: z
158
+ .array(
159
+ z.enum([
160
+ "reasoning",
161
+ "prompt-cache",
162
+ "streaming",
163
+ "tools",
164
+ "vision",
165
+ "computer-use",
166
+ "oauth",
167
+ ]),
168
+ )
169
+ .optional(),
170
+ modelCatalog: ModelCatalogSettingsSchema.optional(),
171
+ });
172
+
173
+ export type ProviderSettings = z.infer<typeof ProviderSettingsSchema>;
174
+
175
+ export function parseSettings(input: unknown): ProviderSettings {
176
+ return ProviderSettingsSchema.parse(input);
177
+ }
178
+
179
+ export function safeParseSettings(
180
+ input: unknown,
181
+ ): ReturnType<typeof ProviderSettingsSchema.safeParse> {
182
+ return ProviderSettingsSchema.safeParse(input);
183
+ }
184
+
185
+ function shouldRouteThroughOpenAIResponses(
186
+ settings: ProviderSettings,
187
+ ): boolean {
188
+ return (
189
+ settings.protocol === "openai-responses" || settings.client === "openai"
190
+ );
191
+ }
192
+
193
+ export function toProviderConfig(settings: ProviderSettings): ProviderConfig {
194
+ const providerId = settings.provider as ProviderId;
195
+ const normalizedProviderId = normalizeProviderId(providerId);
196
+ const unifiedReasoningLevel = settings.reasoning?.effort || "none";
197
+ const reasoningEffort =
198
+ unifiedReasoningLevel === "none" ? undefined : unifiedReasoningLevel;
199
+
200
+ const providerDefaults = OPENAI_COMPATIBLE_PROVIDERS[normalizedProviderId];
201
+ const generatedKnownModels = Object.assign(
202
+ {},
203
+ ...Llms.resolveProviderModelCatalogKeys(normalizedProviderId).map(
204
+ (catalogKey) => Llms.getGeneratedModelsForProvider(catalogKey),
205
+ ),
206
+ );
207
+ const generatedDefaultModelId = Object.keys(generatedKnownModels)[0];
208
+
209
+ const apiKey =
210
+ settings.auth?.accessToken ?? settings.apiKey ?? settings.auth?.apiKey;
211
+ const resolvedBaseUrl =
212
+ settings.baseUrl ??
213
+ (normalizedProviderId === "oca"
214
+ ? settings.oca?.mode === "internal"
215
+ ? DEFAULT_INTERNAL_OCA_BASE_URL
216
+ : DEFAULT_EXTERNAL_OCA_BASE_URL
217
+ : providerDefaults?.baseUrl);
218
+ const routingProviderId =
219
+ settings.routingProviderId ??
220
+ (shouldRouteThroughOpenAIResponses(settings) &&
221
+ normalizedProviderId !== BUILT_IN_PROVIDER.OPENAI_NATIVE
222
+ ? BUILT_IN_PROVIDER.OPENAI_NATIVE
223
+ : undefined);
224
+
225
+ const config: ProviderConfig = {
226
+ providerId,
227
+ clientType: settings.client,
228
+ routingProviderId,
229
+ modelId:
230
+ settings.model ??
231
+ providerDefaults?.modelId ??
232
+ generatedDefaultModelId ??
233
+ "default",
234
+ knownModels:
235
+ providerDefaults?.knownModels ??
236
+ (Object.keys(generatedKnownModels).length > 0
237
+ ? generatedKnownModels
238
+ : undefined),
239
+ apiKey,
240
+ accessToken: settings.auth?.accessToken,
241
+ refreshToken: settings.auth?.refreshToken,
242
+ accountId: settings.auth?.accountId,
243
+ baseUrl: resolvedBaseUrl,
244
+ headers: settings.headers,
245
+ timeoutMs: settings.timeout,
246
+ maxOutputTokens: settings.maxTokens,
247
+ maxContextTokens: settings.contextWindow,
248
+ thinking: settings.reasoning?.enabled,
249
+ reasoningEffort,
250
+ thinkingBudgetTokens: settings.reasoning?.budgetTokens,
251
+ region: settings.region ?? settings.aws?.region ?? settings.gcp?.region,
252
+ apiLine: settings.apiLine,
253
+ useCrossRegionInference: settings.aws?.useCrossRegionInference,
254
+ useGlobalInference: settings.aws?.useGlobalInference,
255
+ aws: settings.aws
256
+ ? {
257
+ accessKey: settings.aws.accessKey,
258
+ secretKey: settings.aws.secretKey,
259
+ sessionToken: settings.aws.sessionToken,
260
+ authentication: settings.aws.authentication,
261
+ profile: settings.aws.profile,
262
+ usePromptCache: settings.aws.usePromptCache,
263
+ endpoint: settings.aws.endpoint,
264
+ customModelBaseId: settings.aws.customModelBaseId,
265
+ }
266
+ : undefined,
267
+ gcp: settings.gcp
268
+ ? {
269
+ projectId: settings.gcp.projectId,
270
+ region: settings.gcp.region,
271
+ }
272
+ : undefined,
273
+ azure: settings.azure,
274
+ sap: settings.sap,
275
+ oca: settings.oca,
276
+ capabilities: (settings.capabilities ?? providerDefaults?.capabilities) as
277
+ | ProviderCapability[]
278
+ | undefined,
279
+ modelCatalog: settings.modelCatalog
280
+ ? {
281
+ loadLatestOnInit: settings.modelCatalog.loadLatestOnInit,
282
+ loadPrivateOnAuth: settings.modelCatalog.loadPrivateOnAuth,
283
+ url: settings.modelCatalog.url,
284
+ cacheTtlMs: settings.modelCatalog.cacheTtlMs,
285
+ failOnError: settings.modelCatalog.failOnError,
286
+ }
287
+ : undefined,
288
+ };
289
+
290
+ return Object.fromEntries(
291
+ Object.entries(config).filter(([_, value]) => value !== undefined),
292
+ ) as ProviderConfig;
293
+ }
294
+
295
+ export function createProviderConfig(input: unknown): ProviderConfig {
296
+ const settings = parseSettings(input);
297
+ return toProviderConfig(settings);
298
+ }
299
+
300
+ export function safeCreateProviderConfig(
301
+ input: unknown,
302
+ ):
303
+ | { success: true; config: ProviderConfig }
304
+ | { success: false; error: z.ZodError } {
305
+ const result = safeParseSettings(input);
306
+ if (result.success) {
307
+ return { success: true, config: toProviderConfig(result.data) };
308
+ }
309
+ return { success: false, error: result.error };
310
+ }
@@ -0,0 +1,43 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import type { LlmsConfig } from "./runtime-types";
4
+
5
+ export function defineLlmsConfig(config: LlmsConfig): LlmsConfig {
6
+ return config;
7
+ }
8
+
9
+ export async function loadLlmsConfigFromFile(
10
+ configPath: string,
11
+ ): Promise<LlmsConfig> {
12
+ const resolvedPath = path.resolve(configPath);
13
+ const raw = await readFile(resolvedPath, "utf8");
14
+ let parsed: unknown;
15
+ try {
16
+ parsed = JSON.parse(raw);
17
+ } catch (error) {
18
+ const details = error instanceof Error ? error.message : String(error);
19
+ throw new Error(
20
+ `Failed to parse JSON config at "${resolvedPath}": ${details}`,
21
+ );
22
+ }
23
+ return assertLlmsConfig(parsed, resolvedPath);
24
+ }
25
+
26
+ function assertLlmsConfig(value: unknown, source: string): LlmsConfig {
27
+ if (!value || typeof value !== "object") {
28
+ throw new Error(`Invalid llms config in "${source}": expected an object.`);
29
+ }
30
+ const config = value as Record<string, unknown>;
31
+ const providers = config.providers;
32
+ if (!Array.isArray(providers)) {
33
+ throw new Error(
34
+ `Invalid llms config in "${source}": "providers" must be an array.`,
35
+ );
36
+ }
37
+ if (!providers.length) {
38
+ throw new Error(
39
+ `Invalid llms config in "${source}": "providers" cannot be empty.`,
40
+ );
41
+ }
42
+ return value as LlmsConfig;
43
+ }
@@ -0,0 +1,172 @@
1
+ import type { ApiHandler } from "@clinebot/llms";
2
+ import {
3
+ BUILT_IN_PROVIDER_IDS,
4
+ createHandler as createProviderHandler,
5
+ createHandlerAsync as createProviderHandlerAsync,
6
+ getProviderCollection,
7
+ hasProvider,
8
+ registerAsyncHandler,
9
+ registerHandler,
10
+ registerModel as registerModelInCatalog,
11
+ registerProvider as registerProviderInCatalog,
12
+ } from "@clinebot/llms";
13
+ import {
14
+ ConfiguredProviderRegistry,
15
+ toBuiltInProviderSummary,
16
+ } from "./configured-provider-registry";
17
+ import type {
18
+ BuiltInProviderSummary,
19
+ CreateHandlerInput,
20
+ LlmsConfig,
21
+ LlmsSdk,
22
+ RegisterBuiltinProviderInput,
23
+ RegisteredProviderSummary,
24
+ RegisterModelInput,
25
+ RegisterProviderInput,
26
+ } from "./runtime-types";
27
+
28
+ export class DefaultLlmsSdk implements LlmsSdk {
29
+ private readonly configuredProviders = new ConfiguredProviderRegistry();
30
+
31
+ constructor(config: LlmsConfig) {
32
+ this.applyConfig(config);
33
+ }
34
+
35
+ createHandler(input: CreateHandlerInput): ApiHandler {
36
+ return createProviderHandler(
37
+ this.configuredProviders.createHandlerConfig(input),
38
+ );
39
+ }
40
+
41
+ async createHandlerAsync(input: CreateHandlerInput): Promise<ApiHandler> {
42
+ return createProviderHandlerAsync(
43
+ this.configuredProviders.createHandlerConfig(input),
44
+ );
45
+ }
46
+
47
+ registerProvider(input: RegisterProviderInput): void {
48
+ registerProviderInCatalog(input.collection);
49
+ if (input.handlerFactory && input.asyncHandlerFactory) {
50
+ throw new Error(
51
+ `Provider "${input.collection.provider.id}" cannot register both sync and async handlers.`,
52
+ );
53
+ }
54
+ if (input.handlerFactory) {
55
+ registerHandler(input.collection.provider.id, input.handlerFactory);
56
+ }
57
+ if (input.asyncHandlerFactory) {
58
+ registerAsyncHandler(
59
+ input.collection.provider.id,
60
+ input.asyncHandlerFactory,
61
+ );
62
+ }
63
+ this.configuredProviders.register({
64
+ id: input.collection.provider.id,
65
+ models: input.exposeModels ?? Object.keys(input.collection.models),
66
+ defaultModel:
67
+ input.defaultModel ?? input.collection.provider.defaultModelId,
68
+ defaults: input.defaults,
69
+ });
70
+ }
71
+
72
+ registerBuiltinProvider(input: RegisterBuiltinProviderInput): void {
73
+ const exposedModels = input.exposeModels ?? Object.keys(input.models);
74
+ const defaultModel = input.defaultModel ?? exposedModels[0];
75
+ if (!defaultModel) {
76
+ throw new Error(`Provider "${input.id}" must define a default model.`);
77
+ }
78
+ registerProviderInCatalog({
79
+ provider: {
80
+ id: input.id,
81
+ name: input.name ?? input.id,
82
+ description: input.description,
83
+ protocol: input.protocol,
84
+ baseUrl: input.baseUrl,
85
+ defaultModelId: defaultModel,
86
+ client: input.client ?? "openai-compatible",
87
+ capabilities: input.capabilities,
88
+ env: input.env,
89
+ source: "system",
90
+ },
91
+ models: input.models,
92
+ });
93
+ this.configuredProviders.register({
94
+ id: input.id,
95
+ models: exposedModels,
96
+ defaultModel,
97
+ defaults: {
98
+ routingProviderId: input.builtinProviderId,
99
+ ...(input.defaults ?? {}),
100
+ },
101
+ });
102
+ }
103
+
104
+ registerModel(input: RegisterModelInput): void {
105
+ registerModelInCatalog(input.providerId, input.modelId, input.info);
106
+ this.configuredProviders.registerModel(input.providerId, input.modelId);
107
+ }
108
+
109
+ getProviders(): RegisteredProviderSummary[] {
110
+ return this.configuredProviders.list();
111
+ }
112
+
113
+ getBuiltInProviderIds() {
114
+ return [...BUILT_IN_PROVIDER_IDS];
115
+ }
116
+
117
+ async getBuiltInProviders(): Promise<BuiltInProviderSummary[]> {
118
+ const collections = await Promise.all(
119
+ BUILT_IN_PROVIDER_IDS.map((providerId: string) =>
120
+ getProviderCollection(providerId),
121
+ ),
122
+ );
123
+ return collections
124
+ .filter(
125
+ (collection): collection is NonNullable<typeof collection> =>
126
+ collection !== undefined,
127
+ )
128
+ .map((collection) => toBuiltInProviderSummary({ collection }));
129
+ }
130
+
131
+ getModels(providerId: string): string[] {
132
+ return this.configuredProviders.getModels(providerId);
133
+ }
134
+
135
+ isProviderConfigured(providerId: string): boolean {
136
+ return this.configuredProviders.hasProvider(providerId);
137
+ }
138
+
139
+ isModelConfigured(providerId: string, modelId: string): boolean {
140
+ return this.configuredProviders.hasModel(providerId, modelId);
141
+ }
142
+
143
+ private applyConfig(config: LlmsConfig): void {
144
+ for (const provider of config.providers) {
145
+ this.configuredProviders.registerSelectionConfig(provider);
146
+ }
147
+ for (const model of config.models ?? []) {
148
+ this.registerModel(model);
149
+ }
150
+ for (const provider of config.customProviders ?? []) {
151
+ this.registerProvider(provider);
152
+ }
153
+ for (const provider of this.configuredProviders.list()) {
154
+ const providerExists = hasProvider(provider.id);
155
+ const routedProviderId = this.configuredProviders.createHandlerConfig({
156
+ providerId: provider.id,
157
+ modelId: provider.defaultModel,
158
+ }).routingProviderId;
159
+ const routedProviderExists =
160
+ typeof routedProviderId === "string" && hasProvider(routedProviderId);
161
+ if (!providerExists && !routedProviderExists) {
162
+ throw new Error(
163
+ `Provider "${provider.id}" is not known. Register it through customProviders/registerProvider, registerBuiltinProvider, or use a built-in provider ID.`,
164
+ );
165
+ }
166
+ }
167
+ }
168
+ }
169
+
170
+ export function createLlmsSdk(config: LlmsConfig): LlmsSdk {
171
+ return new DefaultLlmsSdk(config);
172
+ }
@@ -0,0 +1,121 @@
1
+ import type {
2
+ ApiHandler,
3
+ BuiltInProviderId,
4
+ HandlerFactory,
5
+ LazyHandlerFactory,
6
+ ModelCollection,
7
+ ModelInfo,
8
+ CatalogProviderCapability as ModelProviderCapability,
9
+ ProviderClient,
10
+ ProviderConfig,
11
+ ProviderInfo,
12
+ ProviderProtocol,
13
+ } from "@clinebot/llms";
14
+ import type { ProviderCapability } from "./provider-settings";
15
+
16
+ export type ProviderConfigDefaults = Omit<
17
+ ProviderConfig,
18
+ "providerId" | "modelId"
19
+ >;
20
+
21
+ export interface ProviderSelectionConfig {
22
+ id: string;
23
+ models: string[];
24
+ defaultModel?: string;
25
+ builtinProviderId?: BuiltInProviderId;
26
+ apiKey?: string;
27
+ apiKeyEnv?: string;
28
+ baseUrl?: string;
29
+ headers?: Record<string, string>;
30
+ timeoutMs?: number;
31
+ capabilities?: ProviderCapability[];
32
+ settings?: ProviderConfigDefaults;
33
+ }
34
+
35
+ export interface AdditionalModelConfig {
36
+ providerId: string;
37
+ modelId: string;
38
+ info: ModelInfo;
39
+ }
40
+
41
+ export interface CustomProviderConfig {
42
+ collection: ModelCollection;
43
+ defaults?: ProviderConfigDefaults;
44
+ handlerFactory?: HandlerFactory;
45
+ asyncHandlerFactory?: LazyHandlerFactory;
46
+ }
47
+
48
+ export interface LlmsConfig {
49
+ providers: ProviderSelectionConfig[];
50
+ models?: AdditionalModelConfig[];
51
+ customProviders?: CustomProviderConfig[];
52
+ }
53
+
54
+ export interface CreateHandlerInput {
55
+ providerId: string;
56
+ modelId?: string;
57
+ overrides?: ProviderConfigDefaults;
58
+ }
59
+
60
+ export interface RegisteredProviderSummary {
61
+ id: string;
62
+ models: string[];
63
+ defaultModel: string;
64
+ }
65
+
66
+ export interface BuiltInProviderSummary
67
+ extends Pick<
68
+ ProviderInfo,
69
+ | "id"
70
+ | "name"
71
+ | "description"
72
+ | "protocol"
73
+ | "baseUrl"
74
+ | "capabilities"
75
+ | "env"
76
+ > {
77
+ models: string[];
78
+ defaultModel: string;
79
+ modelCount: number;
80
+ }
81
+
82
+ export interface RegisterBuiltinProviderInput {
83
+ id: string;
84
+ builtinProviderId: BuiltInProviderId;
85
+ models: Record<string, ModelInfo>;
86
+ name?: string;
87
+ description?: string;
88
+ protocol?: ProviderProtocol;
89
+ baseUrl?: string;
90
+ client?: ProviderClient;
91
+ capabilities?: ModelProviderCapability[];
92
+ env?: string[];
93
+ defaultModel?: string;
94
+ defaults?: ProviderConfigDefaults;
95
+ exposeModels?: string[];
96
+ }
97
+
98
+ export interface RegisterProviderInput extends CustomProviderConfig {
99
+ exposeModels?: string[];
100
+ defaultModel?: string;
101
+ }
102
+
103
+ export interface RegisterModelInput {
104
+ providerId: string;
105
+ modelId: string;
106
+ info: ModelInfo;
107
+ }
108
+
109
+ export interface LlmsSdk {
110
+ createHandler(input: CreateHandlerInput): ApiHandler;
111
+ createHandlerAsync(input: CreateHandlerInput): Promise<ApiHandler>;
112
+ registerProvider(input: RegisterProviderInput): void;
113
+ registerBuiltinProvider(input: RegisterBuiltinProviderInput): void;
114
+ registerModel(input: RegisterModelInput): void;
115
+ getProviders(): RegisteredProviderSummary[];
116
+ getBuiltInProviderIds(): BuiltInProviderId[];
117
+ getBuiltInProviders(): Promise<BuiltInProviderSummary[]>;
118
+ getModels(providerId: string): string[];
119
+ isProviderConfigured(providerId: string): boolean;
120
+ isModelConfigured(providerId: string, modelId: string): boolean;
121
+ }