@clinebot/core 0.0.34 → 0.0.35

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 (372) hide show
  1. package/README.md +12 -8
  2. package/dist/ClineCore.d.ts +48 -29
  3. package/dist/ClineCore.d.ts.map +1 -1
  4. package/dist/extensions/config/agent-config-loader.d.ts +2 -2
  5. package/dist/extensions/config/agent-config-loader.d.ts.map +1 -1
  6. package/dist/extensions/config/agent-config-parser.d.ts +1 -1
  7. package/dist/extensions/config/agent-config-parser.d.ts.map +1 -1
  8. package/dist/extensions/config/hooks-config-loader.d.ts +2 -2
  9. package/dist/extensions/config/hooks-config-loader.d.ts.map +1 -1
  10. package/dist/extensions/config/index.d.ts +3 -3
  11. package/dist/extensions/config/index.d.ts.map +1 -1
  12. package/dist/extensions/config/user-instruction-config-loader.d.ts +2 -2
  13. package/dist/extensions/config/user-instruction-config-loader.d.ts.map +1 -1
  14. package/dist/extensions/plugin-sandbox-bootstrap.js +248 -248
  15. package/dist/extensions/tools/constants.d.ts.map +1 -0
  16. package/dist/extensions/tools/definitions.d.ts.map +1 -0
  17. package/dist/extensions/tools/executors/apply-patch-parser.d.ts.map +1 -0
  18. package/dist/extensions/tools/executors/apply-patch.d.ts.map +1 -0
  19. package/dist/extensions/tools/executors/bash.d.ts.map +1 -0
  20. package/dist/extensions/tools/executors/editor.d.ts.map +1 -0
  21. package/dist/extensions/tools/executors/file-read.d.ts.map +1 -0
  22. package/dist/extensions/tools/executors/index.d.ts.map +1 -0
  23. package/dist/extensions/tools/executors/search.d.ts.map +1 -0
  24. package/dist/extensions/tools/executors/web-fetch.d.ts.map +1 -0
  25. package/dist/extensions/tools/helpers.d.ts.map +1 -0
  26. package/dist/extensions/tools/index.d.ts.map +1 -0
  27. package/dist/{tools → extensions/tools}/model-tool-routing.d.ts +1 -1
  28. package/dist/extensions/tools/model-tool-routing.d.ts.map +1 -0
  29. package/dist/{tools → extensions/tools}/presets.d.ts +1 -2
  30. package/dist/extensions/tools/presets.d.ts.map +1 -0
  31. package/dist/extensions/tools/schemas.d.ts.map +1 -0
  32. package/dist/extensions/tools/team/delegated-agent.d.ts.map +1 -0
  33. package/dist/extensions/tools/team/index.d.ts.map +1 -0
  34. package/dist/{team → extensions/tools/team}/multi-agent.d.ts +1 -3
  35. package/dist/extensions/tools/team/multi-agent.d.ts.map +1 -0
  36. package/dist/extensions/tools/team/projections.d.ts.map +1 -0
  37. package/dist/extensions/tools/team/runtime.d.ts.map +1 -0
  38. package/dist/{team → extensions/tools/team}/spawn-agent-tool.d.ts +0 -1
  39. package/dist/extensions/tools/team/spawn-agent-tool.d.ts.map +1 -0
  40. package/dist/extensions/tools/team/subagent-prompts.d.ts.map +1 -0
  41. package/dist/extensions/tools/team/team-tools.d.ts.map +1 -0
  42. package/dist/{tools → extensions/tools}/types.d.ts +4 -3
  43. package/dist/extensions/tools/types.d.ts.map +1 -0
  44. package/dist/{runtime → hooks}/checkpoint-hooks.d.ts +7 -0
  45. package/dist/hooks/checkpoint-hooks.d.ts.map +1 -0
  46. package/dist/{runtime → hooks}/hook-file-hooks.d.ts +0 -2
  47. package/dist/hooks/hook-file-hooks.d.ts.map +1 -0
  48. package/dist/hooks/subprocess.d.ts +3 -130
  49. package/dist/hooks/subprocess.d.ts.map +1 -1
  50. package/dist/index.d.ts +35 -33
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +381 -379
  53. package/dist/runtime/history.d.ts +4 -0
  54. package/dist/runtime/history.d.ts.map +1 -0
  55. package/dist/runtime/host.d.ts +9 -0
  56. package/dist/runtime/host.d.ts.map +1 -0
  57. package/dist/{session → runtime}/rpc-runtime-ensure.d.ts +13 -1
  58. package/dist/{session → runtime}/rpc-runtime-ensure.d.ts.map +1 -1
  59. package/dist/{session → runtime}/rpc-spawn-lease.d.ts.map +1 -1
  60. package/dist/runtime/runtime-builder.d.ts.map +1 -1
  61. package/dist/{session/session-manager.d.ts → runtime/runtime-host.d.ts} +55 -12
  62. package/dist/runtime/runtime-host.d.ts.map +1 -0
  63. package/dist/{session → runtime}/runtime-oauth-token-manager.d.ts +1 -1
  64. package/dist/{session → runtime}/runtime-oauth-token-manager.d.ts.map +1 -1
  65. package/dist/runtime/session-runtime.d.ts +2 -2
  66. package/dist/runtime/session-runtime.d.ts.map +1 -1
  67. package/dist/{session/session-agent-events.d.ts → services/agent-events.d.ts} +4 -4
  68. package/dist/services/agent-events.d.ts.map +1 -0
  69. package/dist/services/config.d.ts +3 -0
  70. package/dist/services/config.d.ts.map +1 -0
  71. package/dist/services/local-runtime-bootstrap.d.ts +41 -0
  72. package/dist/services/local-runtime-bootstrap.d.ts.map +1 -0
  73. package/dist/services/providers/local-provider-registry.d.ts.map +1 -0
  74. package/dist/services/providers/local-provider-service.d.ts.map +1 -0
  75. package/dist/{session → services}/session-artifacts.d.ts +0 -4
  76. package/dist/services/session-artifacts.d.ts.map +1 -0
  77. package/dist/{session/utils/helpers.d.ts → services/session-data.d.ts} +19 -27
  78. package/dist/services/session-data.d.ts.map +1 -0
  79. package/dist/{session → services}/session-telemetry.d.ts +2 -2
  80. package/dist/services/session-telemetry.d.ts.map +1 -0
  81. package/dist/{storage → services/storage}/file-team-store.d.ts +2 -2
  82. package/dist/services/storage/file-team-store.d.ts.map +1 -0
  83. package/dist/{storage → services/storage}/provider-settings-legacy-migration.d.ts +1 -1
  84. package/dist/services/storage/provider-settings-legacy-migration.d.ts.map +1 -0
  85. package/dist/{storage → services/storage}/provider-settings-manager.d.ts +1 -1
  86. package/dist/services/storage/provider-settings-manager.d.ts.map +1 -0
  87. package/dist/{storage → services/storage}/sqlite-session-store.d.ts +3 -3
  88. package/dist/services/storage/sqlite-session-store.d.ts.map +1 -0
  89. package/dist/{storage → services/storage}/sqlite-team-store.d.ts +2 -2
  90. package/dist/services/storage/sqlite-team-store.d.ts.map +1 -0
  91. package/dist/{storage → services/storage}/team-store.d.ts +1 -1
  92. package/dist/services/storage/team-store.d.ts.map +1 -0
  93. package/dist/services/telemetry/ITelemetryAdapter.d.ts.map +1 -0
  94. package/dist/services/telemetry/OpenTelemetryAdapter.d.ts.map +1 -0
  95. package/dist/services/telemetry/OpenTelemetryProvider.d.ts.map +1 -0
  96. package/dist/services/telemetry/TelemetryLoggerSink.d.ts.map +1 -0
  97. package/dist/services/telemetry/TelemetryService.d.ts.map +1 -0
  98. package/dist/services/telemetry/core-events.d.ts.map +1 -0
  99. package/dist/services/telemetry/distinct-id.d.ts.map +1 -0
  100. package/dist/services/telemetry/index.d.ts.map +1 -0
  101. package/dist/{telemetry → services/telemetry}/index.js +6 -6
  102. package/dist/{session/utils → services}/usage.d.ts +1 -1
  103. package/dist/services/usage.d.ts.map +1 -0
  104. package/dist/services/workspace/file-indexer.d.ts.map +1 -0
  105. package/dist/services/workspace/index.d.ts.map +1 -0
  106. package/dist/services/workspace/mention-enricher.d.ts.map +1 -0
  107. package/dist/services/workspace-manifest.d.ts.map +1 -0
  108. package/dist/session/file-session-service.d.ts +4 -1
  109. package/dist/session/file-session-service.d.ts.map +1 -1
  110. package/dist/session/persistence-service.d.ts +8 -6
  111. package/dist/session/persistence-service.d.ts.map +1 -1
  112. package/dist/session/rpc-session-service.d.ts +3 -0
  113. package/dist/session/rpc-session-service.d.ts.map +1 -1
  114. package/dist/session/session-service.d.ts +8 -9
  115. package/dist/session/session-service.d.ts.map +1 -1
  116. package/dist/session/session-team-coordination.d.ts +4 -4
  117. package/dist/session/session-team-coordination.d.ts.map +1 -1
  118. package/dist/session/sqlite-rpc-session-backend.d.ts.map +1 -1
  119. package/dist/{session/default-session-manager.d.ts → transports/local.d.ts} +24 -14
  120. package/dist/transports/local.d.ts.map +1 -0
  121. package/dist/transports/rpc.d.ts +51 -0
  122. package/dist/transports/rpc.d.ts.map +1 -0
  123. package/dist/transports/runtime-host-support.d.ts +21 -0
  124. package/dist/transports/runtime-host-support.d.ts.map +1 -0
  125. package/dist/types/chat-schema.d.ts.map +1 -0
  126. package/dist/types/config.d.ts +2 -2
  127. package/dist/types/config.d.ts.map +1 -1
  128. package/dist/{session/utils/types.d.ts → types/session.d.ts} +15 -6
  129. package/dist/types/session.d.ts.map +1 -0
  130. package/dist/types/sessions.d.ts +19 -0
  131. package/dist/types/sessions.d.ts.map +1 -1
  132. package/dist/types/storage.d.ts +1 -3
  133. package/dist/types/storage.d.ts.map +1 -1
  134. package/dist/types.d.ts +7 -6
  135. package/dist/types.d.ts.map +1 -1
  136. package/package.json +7 -12
  137. package/src/ClineCore.test.ts +95 -19
  138. package/src/ClineCore.ts +120 -50
  139. package/src/auth/cline.ts +1 -1
  140. package/src/auth/codex.ts +1 -1
  141. package/src/auth/oca.ts +1 -1
  142. package/src/extensions/config/agent-config-loader.test.ts +3 -3
  143. package/src/extensions/config/agent-config-loader.ts +1 -5
  144. package/src/extensions/config/agent-config-parser.ts +1 -1
  145. package/src/extensions/config/hooks-config-loader.ts +1 -2
  146. package/src/extensions/config/index.ts +0 -4
  147. package/src/extensions/config/user-instruction-config-loader.ts +0 -4
  148. package/src/extensions/plugin/plugin-config-loader.test.ts +6 -4
  149. package/src/{tools → extensions/tools}/definitions.ts +1 -1
  150. package/src/extensions/tools/executors/file-read.test.ts +125 -0
  151. package/src/{tools → extensions/tools}/executors/file-read.ts +29 -4
  152. package/src/{tools → extensions/tools}/executors/search.ts +1 -1
  153. package/src/{tools → extensions/tools}/model-tool-routing.ts +1 -1
  154. package/src/{tools → extensions/tools}/presets.ts +2 -3
  155. package/src/extensions/tools/team/multi-agent.lifecycle.test.ts +455 -0
  156. package/src/{team → extensions/tools/team}/multi-agent.ts +80 -17
  157. package/src/{team → extensions/tools/team}/spawn-agent-tool.test.ts +0 -6
  158. package/src/{team → extensions/tools/team}/spawn-agent-tool.ts +1 -7
  159. package/src/{team → extensions/tools/team}/subagent-prompts.ts +2 -2
  160. package/src/{team → extensions/tools/team}/team-tools.test.ts +43 -31
  161. package/src/{team → extensions/tools/team}/team-tools.ts +63 -53
  162. package/src/{tools → extensions/tools}/types.ts +5 -3
  163. package/src/{runtime → hooks}/checkpoint-hooks.ts +27 -0
  164. package/src/{runtime → hooks}/hook-file-hooks.ts +6 -11
  165. package/src/hooks/subprocess.ts +48 -257
  166. package/src/index.ts +167 -158
  167. package/src/runtime/history.test.ts +114 -0
  168. package/src/runtime/history.ts +237 -0
  169. package/src/runtime/host.test.ts +230 -0
  170. package/src/runtime/host.ts +362 -0
  171. package/src/runtime/rpc-runtime-ensure.test.ts +123 -0
  172. package/src/{session → runtime}/rpc-runtime-ensure.ts +165 -27
  173. package/src/{session → runtime}/rpc-spawn-lease.test.ts +33 -1
  174. package/src/{session → runtime}/rpc-spawn-lease.ts +54 -20
  175. package/src/runtime/runtime-builder.team-persistence.test.ts +6 -3
  176. package/src/runtime/runtime-builder.test.ts +3 -4
  177. package/src/runtime/runtime-builder.ts +13 -21
  178. package/src/runtime/runtime-host.ts +178 -0
  179. package/src/{session → runtime}/runtime-oauth-token-manager.ts +1 -1
  180. package/src/runtime/runtime-parity.test.ts +1 -1
  181. package/src/runtime/session-runtime.ts +2 -2
  182. package/src/{session/session-agent-events.ts → services/agent-events.ts} +7 -7
  183. package/src/services/config.ts +5 -0
  184. package/src/services/local-runtime-bootstrap.ts +280 -0
  185. package/src/{providers → services/providers}/local-provider-service.ts +4 -4
  186. package/src/{session → services}/session-artifacts.ts +7 -19
  187. package/src/{session/utils/helpers.test.ts → services/session-data.test.ts} +1 -1
  188. package/src/{session/utils/helpers.ts → services/session-data.ts} +76 -72
  189. package/src/{session → services}/session-telemetry.ts +7 -9
  190. package/src/services/storage/artifact-store.ts +1 -0
  191. package/src/{storage → services/storage}/file-team-store.ts +2 -2
  192. package/src/{storage → services/storage}/provider-settings-legacy-migration.test.ts +1 -1
  193. package/src/{storage → services/storage}/provider-settings-legacy-migration.ts +2 -2
  194. package/src/{storage → services/storage}/provider-settings-manager.ts +2 -2
  195. package/src/services/storage/session-store.ts +1 -0
  196. package/src/{storage → services/storage}/sqlite-session-store.ts +7 -12
  197. package/src/{storage → services/storage}/sqlite-team-store.ts +4 -4
  198. package/src/{storage → services/storage}/team-store.ts +1 -1
  199. package/src/{session/utils → services}/usage.ts +1 -1
  200. package/src/{input → services/workspace}/file-indexer.test.ts +30 -1
  201. package/src/{input → services/workspace}/file-indexer.ts +26 -2
  202. package/src/{input → services/workspace}/mention-enricher.test.ts +21 -0
  203. package/src/{input → services/workspace}/mention-enricher.ts +1 -1
  204. package/src/session/file-session-service.ts +9 -7
  205. package/src/session/index.ts +25 -17
  206. package/src/session/persistence-service.test.ts +86 -27
  207. package/src/session/persistence-service.ts +104 -103
  208. package/src/session/rpc-session-service.ts +9 -2
  209. package/src/session/session-service.team-persistence.test.ts +1 -1
  210. package/src/session/session-service.ts +32 -19
  211. package/src/session/session-team-coordination.ts +13 -6
  212. package/src/session/sqlite-rpc-session-backend.ts +4 -6
  213. package/src/session/workspace-manager.ts +1 -1
  214. package/src/{session/default-session-manager.e2e.test.ts → transports/local.e2e.test.ts} +13 -17
  215. package/src/{session/default-session-manager.test.ts → transports/local.test.ts} +316 -230
  216. package/src/{session/default-session-manager.ts → transports/local.ts} +137 -169
  217. package/src/transports/rpc.test.ts +82 -0
  218. package/src/transports/rpc.ts +665 -0
  219. package/src/transports/runtime-host-support.ts +86 -0
  220. package/src/types/config.ts +2 -2
  221. package/src/{session/utils/types.ts → types/session.ts} +18 -5
  222. package/src/types/sessions.ts +21 -0
  223. package/src/types/storage.ts +1 -6
  224. package/src/types.ts +25 -18
  225. package/dist/chat/chat-schema.d.ts.map +0 -1
  226. package/dist/input/file-indexer.d.ts.map +0 -1
  227. package/dist/input/index.d.ts.map +0 -1
  228. package/dist/input/mention-enricher.d.ts.map +0 -1
  229. package/dist/prompt/default-system.d.ts +0 -2
  230. package/dist/prompt/default-system.d.ts.map +0 -1
  231. package/dist/providers/local-provider-registry.d.ts.map +0 -1
  232. package/dist/providers/local-provider-service.d.ts.map +0 -1
  233. package/dist/runtime/checkpoint-hooks.d.ts.map +0 -1
  234. package/dist/runtime/hook-file-hooks.d.ts.map +0 -1
  235. package/dist/session/default-session-manager.d.ts.map +0 -1
  236. package/dist/session/session-agent-events.d.ts.map +0 -1
  237. package/dist/session/session-artifacts.d.ts.map +0 -1
  238. package/dist/session/session-config-builder.d.ts +0 -16
  239. package/dist/session/session-config-builder.d.ts.map +0 -1
  240. package/dist/session/session-host.d.ts +0 -15
  241. package/dist/session/session-host.d.ts.map +0 -1
  242. package/dist/session/session-manager.d.ts.map +0 -1
  243. package/dist/session/session-telemetry.d.ts.map +0 -1
  244. package/dist/session/utils/helpers.d.ts.map +0 -1
  245. package/dist/session/utils/types.d.ts.map +0 -1
  246. package/dist/session/utils/usage.d.ts.map +0 -1
  247. package/dist/session/workspace-manifest.d.ts.map +0 -1
  248. package/dist/storage/file-team-store.d.ts.map +0 -1
  249. package/dist/storage/provider-settings-legacy-migration.d.ts.map +0 -1
  250. package/dist/storage/provider-settings-manager.d.ts.map +0 -1
  251. package/dist/storage/sqlite-session-store.d.ts.map +0 -1
  252. package/dist/storage/sqlite-team-store.d.ts.map +0 -1
  253. package/dist/storage/team-store.d.ts.map +0 -1
  254. package/dist/team/delegated-agent.d.ts.map +0 -1
  255. package/dist/team/index.d.ts.map +0 -1
  256. package/dist/team/multi-agent.d.ts.map +0 -1
  257. package/dist/team/projections.d.ts.map +0 -1
  258. package/dist/team/runtime.d.ts.map +0 -1
  259. package/dist/team/spawn-agent-tool.d.ts.map +0 -1
  260. package/dist/team/subagent-prompts.d.ts.map +0 -1
  261. package/dist/team/team-tools.d.ts.map +0 -1
  262. package/dist/telemetry/ITelemetryAdapter.d.ts.map +0 -1
  263. package/dist/telemetry/OpenTelemetryAdapter.d.ts.map +0 -1
  264. package/dist/telemetry/OpenTelemetryProvider.d.ts.map +0 -1
  265. package/dist/telemetry/TelemetryLoggerSink.d.ts.map +0 -1
  266. package/dist/telemetry/TelemetryService.d.ts.map +0 -1
  267. package/dist/telemetry/core-events.d.ts.map +0 -1
  268. package/dist/telemetry/distinct-id.d.ts.map +0 -1
  269. package/dist/telemetry/index.d.ts.map +0 -1
  270. package/dist/tools/constants.d.ts.map +0 -1
  271. package/dist/tools/definitions.d.ts.map +0 -1
  272. package/dist/tools/executors/apply-patch-parser.d.ts.map +0 -1
  273. package/dist/tools/executors/apply-patch.d.ts.map +0 -1
  274. package/dist/tools/executors/bash.d.ts.map +0 -1
  275. package/dist/tools/executors/editor.d.ts.map +0 -1
  276. package/dist/tools/executors/file-read.d.ts.map +0 -1
  277. package/dist/tools/executors/index.d.ts.map +0 -1
  278. package/dist/tools/executors/search.d.ts.map +0 -1
  279. package/dist/tools/executors/web-fetch.d.ts.map +0 -1
  280. package/dist/tools/helpers.d.ts.map +0 -1
  281. package/dist/tools/index.d.ts.map +0 -1
  282. package/dist/tools/model-tool-routing.d.ts.map +0 -1
  283. package/dist/tools/presets.d.ts.map +0 -1
  284. package/dist/tools/schemas.d.ts.map +0 -1
  285. package/dist/tools/types.d.ts.map +0 -1
  286. package/src/prompt/default-system.ts +0 -21
  287. package/src/session/session-config-builder.ts +0 -172
  288. package/src/session/session-host.test.ts +0 -89
  289. package/src/session/session-host.ts +0 -213
  290. package/src/session/session-manager.ts +0 -74
  291. package/src/storage/artifact-store.ts +0 -1
  292. package/src/storage/session-store.ts +0 -1
  293. package/src/team/multi-agent.lifecycle.test.ts +0 -201
  294. package/src/tools/executors/file-read.test.ts +0 -49
  295. /package/dist/{tools → extensions/tools}/constants.d.ts +0 -0
  296. /package/dist/{tools → extensions/tools}/definitions.d.ts +0 -0
  297. /package/dist/{tools → extensions/tools}/executors/apply-patch-parser.d.ts +0 -0
  298. /package/dist/{tools → extensions/tools}/executors/apply-patch.d.ts +0 -0
  299. /package/dist/{tools → extensions/tools}/executors/bash.d.ts +0 -0
  300. /package/dist/{tools → extensions/tools}/executors/editor.d.ts +0 -0
  301. /package/dist/{tools → extensions/tools}/executors/file-read.d.ts +0 -0
  302. /package/dist/{tools → extensions/tools}/executors/index.d.ts +0 -0
  303. /package/dist/{tools → extensions/tools}/executors/search.d.ts +0 -0
  304. /package/dist/{tools → extensions/tools}/executors/web-fetch.d.ts +0 -0
  305. /package/dist/{tools → extensions/tools}/helpers.d.ts +0 -0
  306. /package/dist/{tools → extensions/tools}/index.d.ts +0 -0
  307. /package/dist/{tools → extensions/tools}/schemas.d.ts +0 -0
  308. /package/dist/{team → extensions/tools/team}/delegated-agent.d.ts +0 -0
  309. /package/dist/{team → extensions/tools/team}/index.d.ts +0 -0
  310. /package/dist/{team → extensions/tools/team}/projections.d.ts +0 -0
  311. /package/dist/{team → extensions/tools/team}/runtime.d.ts +0 -0
  312. /package/dist/{team → extensions/tools/team}/subagent-prompts.d.ts +0 -0
  313. /package/dist/{team → extensions/tools/team}/team-tools.d.ts +0 -0
  314. /package/dist/{session → runtime}/rpc-spawn-lease.d.ts +0 -0
  315. /package/dist/{providers → services/providers}/local-provider-registry.d.ts +0 -0
  316. /package/dist/{providers → services/providers}/local-provider-service.d.ts +0 -0
  317. /package/dist/{telemetry → services/telemetry}/ITelemetryAdapter.d.ts +0 -0
  318. /package/dist/{telemetry → services/telemetry}/OpenTelemetryAdapter.d.ts +0 -0
  319. /package/dist/{telemetry → services/telemetry}/OpenTelemetryProvider.d.ts +0 -0
  320. /package/dist/{telemetry → services/telemetry}/TelemetryLoggerSink.d.ts +0 -0
  321. /package/dist/{telemetry → services/telemetry}/TelemetryService.d.ts +0 -0
  322. /package/dist/{telemetry → services/telemetry}/core-events.d.ts +0 -0
  323. /package/dist/{telemetry → services/telemetry}/distinct-id.d.ts +0 -0
  324. /package/dist/{telemetry → services/telemetry}/index.d.ts +0 -0
  325. /package/dist/{input → services/workspace}/file-indexer.d.ts +0 -0
  326. /package/dist/{input → services/workspace}/index.d.ts +0 -0
  327. /package/dist/{input → services/workspace}/mention-enricher.d.ts +0 -0
  328. /package/dist/{session → services}/workspace-manifest.d.ts +0 -0
  329. /package/dist/{chat → types}/chat-schema.d.ts +0 -0
  330. /package/src/{tools → extensions/tools}/constants.ts +0 -0
  331. /package/src/{tools → extensions/tools}/definitions.test.ts +0 -0
  332. /package/src/{tools → extensions/tools}/executors/apply-patch-parser.ts +0 -0
  333. /package/src/{tools → extensions/tools}/executors/apply-patch.ts +0 -0
  334. /package/src/{tools → extensions/tools}/executors/bash.test.ts +0 -0
  335. /package/src/{tools → extensions/tools}/executors/bash.ts +0 -0
  336. /package/src/{tools → extensions/tools}/executors/editor.test.ts +0 -0
  337. /package/src/{tools → extensions/tools}/executors/editor.ts +0 -0
  338. /package/src/{tools → extensions/tools}/executors/index.ts +0 -0
  339. /package/src/{tools → extensions/tools}/executors/web-fetch.ts +0 -0
  340. /package/src/{tools → extensions/tools}/helpers.ts +0 -0
  341. /package/src/{tools → extensions/tools}/index.ts +0 -0
  342. /package/src/{tools → extensions/tools}/model-tool-routing.test.ts +0 -0
  343. /package/src/{tools → extensions/tools}/presets.test.ts +0 -0
  344. /package/src/{tools → extensions/tools}/schemas.ts +0 -0
  345. /package/src/{team → extensions/tools/team}/delegated-agent.ts +0 -0
  346. /package/src/{team → extensions/tools/team}/index.ts +0 -0
  347. /package/src/{team → extensions/tools/team}/projections.ts +0 -0
  348. /package/src/{team → extensions/tools/team}/runtime.ts +0 -0
  349. /package/src/{runtime → hooks}/checkpoint-hooks.test.ts +0 -0
  350. /package/src/{runtime → hooks}/hook-file-hooks.test.ts +0 -0
  351. /package/src/{session → runtime}/runtime-oauth-token-manager.test.ts +0 -0
  352. /package/src/{providers → services/providers}/local-provider-registry.ts +0 -0
  353. /package/src/{providers → services/providers}/local-provider-service.test.ts +0 -0
  354. /package/src/{storage → services/storage}/index.ts +0 -0
  355. /package/src/{storage → services/storage}/provider-settings-manager.test.ts +0 -0
  356. /package/src/{telemetry → services/telemetry}/ITelemetryAdapter.ts +0 -0
  357. /package/src/{telemetry → services/telemetry}/OpenTelemetryAdapter.test.ts +0 -0
  358. /package/src/{telemetry → services/telemetry}/OpenTelemetryAdapter.ts +0 -0
  359. /package/src/{telemetry → services/telemetry}/OpenTelemetryProvider.test.ts +0 -0
  360. /package/src/{telemetry → services/telemetry}/OpenTelemetryProvider.ts +0 -0
  361. /package/src/{telemetry → services/telemetry}/TelemetryLoggerSink.test.ts +0 -0
  362. /package/src/{telemetry → services/telemetry}/TelemetryLoggerSink.ts +0 -0
  363. /package/src/{telemetry → services/telemetry}/TelemetryService.test.ts +0 -0
  364. /package/src/{telemetry → services/telemetry}/TelemetryService.ts +0 -0
  365. /package/src/{telemetry → services/telemetry}/core-events.ts +0 -0
  366. /package/src/{telemetry → services/telemetry}/distinct-id.test.ts +0 -0
  367. /package/src/{telemetry → services/telemetry}/distinct-id.ts +0 -0
  368. /package/src/{telemetry → services/telemetry}/index.ts +0 -0
  369. /package/src/{input → services/workspace}/file-indexer.d.ts +0 -0
  370. /package/src/{input → services/workspace}/index.ts +0 -0
  371. /package/src/{session → services}/workspace-manifest.ts +0 -0
  372. /package/src/{chat → types}/chat-schema.ts +0 -0
package/src/index.ts CHANGED
@@ -61,14 +61,16 @@ export type {
61
61
  WorkspaceManifestSchema,
62
62
  } from "@clinebot/shared";
63
63
  export {
64
+ buildClineSystemPrompt as getClineDefaultSystemPrompt,
64
65
  ContributionRegistry,
65
66
  createContributionRegistry,
66
67
  createTool,
68
+ formatDisplayUserInput,
67
69
  noopBasicLogger,
68
70
  normalizeUserInput,
71
+ parseUserCommandEnvelope,
69
72
  RPC_TEAM_LIFECYCLE_EVENT_TYPE,
70
73
  RPC_TEAM_PROGRESS_EVENT_TYPE,
71
- resolveHookLogPath,
72
74
  } from "@clinebot/shared";
73
75
  export * from "@clinebot/shared/storage";
74
76
  export {
@@ -151,23 +153,9 @@ export type {
151
153
  export {
152
154
  ClineCore,
153
155
  type ClineCoreOptions,
156
+ type ClineCoreStartInput,
154
157
  type RpcOptions,
155
158
  } from "./ClineCore";
156
- export type {
157
- ChatMessage,
158
- ChatSessionConfig,
159
- ChatSessionStatus,
160
- ChatSummary,
161
- ChatViewState,
162
- } from "./chat/chat-schema";
163
- export {
164
- ChatMessageRoleSchema,
165
- ChatMessageSchema,
166
- ChatSessionConfigSchema,
167
- ChatSessionStatusSchema,
168
- ChatSummarySchema,
169
- ChatViewStateSchema,
170
- } from "./chat/chat-schema";
171
159
  export type {
172
160
  LoadAgentPluginFromPathOptions,
173
161
  PluginInitializationFailure,
@@ -232,9 +220,6 @@ export {
232
220
  parseWorkflowConfigFromMarkdown,
233
221
  RULES_CONFIG_DIRECTORY_NAME,
234
222
  resolveAgentTools,
235
- resolveDocumentsHooksDirectoryPath,
236
- resolveDocumentsRulesDirectoryPath,
237
- resolveDocumentsWorkflowsDirectoryPath,
238
223
  resolveHooksConfigSearchPaths,
239
224
  resolveRulesConfigSearchPaths,
240
225
  resolveRuntimeSlashCommandFromWatcher,
@@ -280,6 +265,36 @@ export {
280
265
  resolveDefaultMcpSettingsPath,
281
266
  resolveMcpServerRegistrations,
282
267
  } from "./extensions/mcp";
268
+ export {
269
+ type AgentTask,
270
+ AgentTeam,
271
+ AgentTeamsRuntime,
272
+ type AgentTeamsRuntimeOptions,
273
+ type BootstrapAgentTeamsOptions,
274
+ type BootstrapAgentTeamsResult,
275
+ bootstrapAgentTeams,
276
+ buildDelegatedAgentConfig,
277
+ buildTeamProgressSummary,
278
+ type CreateAgentTeamsToolsOptions,
279
+ createAgentTeamsTools,
280
+ createDelegatedAgent,
281
+ createDelegatedAgentConfigProvider,
282
+ createSpawnAgentTool,
283
+ type DelegatedAgentConfigProvider,
284
+ type DelegatedAgentConnectionConfig,
285
+ type DelegatedAgentKind,
286
+ type DelegatedAgentRuntimeConfig,
287
+ reviveTeamStateDates,
288
+ type SpawnTeammateOptions,
289
+ type SubAgentEndContext,
290
+ type SubAgentStartContext,
291
+ sanitizeTeamName,
292
+ type TaskResult,
293
+ type TeamEvent,
294
+ type TeamMemberConfig,
295
+ type TeamTeammateRuntimeConfig,
296
+ toTeamProgressLifecycleEvent,
297
+ } from "./extensions/tools/team";
283
298
  export {
284
299
  createPersistentSubprocessHooks,
285
300
  createSubprocessHooks,
@@ -301,65 +316,16 @@ export {
301
316
  type SubprocessHookControl,
302
317
  type SubprocessHooksOptions,
303
318
  } from "./hooks";
304
- export type {
305
- FastFileIndexOptions,
306
- MentionEnricherOptions,
307
- MentionEnrichmentResult,
308
- } from "./input";
309
- export {
310
- enrichPromptWithMentions,
311
- getFileIndex,
312
- prewarmFileIndex,
313
- } from "./input";
314
- export { getClineDefaultSystemPrompt } from "./prompt/default-system";
315
- export {
316
- addLocalProvider,
317
- type DeleteLocalProviderRequest,
318
- deleteLocalProvider,
319
- ensureCustomProvidersLoaded,
320
- getLocalProviderModels,
321
- listLocalProviders,
322
- loginLocalProvider,
323
- normalizeOAuthProvider,
324
- resolveLocalClineAuthToken,
325
- saveLocalProviderOAuthCredentials,
326
- saveLocalProviderSettings,
327
- type UpdateLocalProviderRequest,
328
- updateLocalProvider,
329
- } from "./providers/local-provider-service";
330
319
  export type {
331
320
  CheckpointEntry,
332
321
  CheckpointMetadata,
333
- } from "./runtime/checkpoint-hooks";
334
- export {
335
- formatRulesForSystemPrompt,
336
- isRuleEnabled,
337
- listEnabledRulesFromWatcher,
338
- loadRulesForSystemPromptFromWatcher,
339
- } from "./runtime/rules";
340
- export {
341
- createTeamName,
342
- DefaultRuntimeBuilder,
343
- } from "./runtime/runtime-builder";
344
- export type {
345
- BuiltRuntime,
346
- RuntimeBuilder,
347
- RuntimeBuilderInput,
348
- SessionRuntime,
349
- TeamToolsFactory,
350
- TeamToolsFactoryOptions,
351
- TeamToolsFactoryResult,
352
- } from "./runtime/session-runtime";
322
+ } from "./hooks/checkpoint-hooks";
323
+ export type { SessionBackend } from "./runtime/host";
353
324
  export {
354
- type SandboxCallOptions,
355
- SubprocessSandbox,
356
- type SubprocessSandboxOptions,
357
- } from "./runtime/subprocess-sandbox";
358
- export {
359
- type DesktopToolApprovalOptions,
360
- requestDesktopToolApproval,
361
- } from "./runtime/tool-approval";
362
- export { DefaultSessionManager } from "./session/default-session-manager";
325
+ createRuntimeHost,
326
+ createRuntimeHost as createSessionHost,
327
+ resolveSessionBackend,
328
+ } from "./runtime/host";
363
329
  export {
364
330
  clearRpcDiscoveryIfAddressMatches,
365
331
  type EnsureRpcRuntimeOptions,
@@ -372,109 +338,86 @@ export {
372
338
  RPC_STARTUP_LOCK_BYPASS_ENV,
373
339
  type RpcDiscoveryRecord,
374
340
  type RpcOwnerContext,
341
+ type RpcStartupLockHandle,
375
342
  recordRpcDiscovery,
376
343
  resolveEnsuredRpcRuntime,
377
344
  resolveRpcOwnerContext,
378
345
  resolveRpcRuntimeBuildKey,
379
346
  waitForCompatibleRpcRuntime,
380
347
  withRpcStartupLock,
381
- } from "./session/rpc-runtime-ensure";
382
- export { RpcCoreSessionService } from "./session/rpc-session-service";
348
+ } from "./runtime/rpc-runtime-ensure";
383
349
  export {
384
350
  type RpcSpawnLease,
385
351
  tryAcquireRpcSpawnLease,
386
- } from "./session/rpc-spawn-lease";
352
+ } from "./runtime/rpc-spawn-lease";
387
353
  export {
388
- deriveSubsessionStatus,
389
- makeSubSessionId,
390
- makeTeamTaskSubSessionId,
391
- sanitizeSessionToken,
392
- } from "./session/session-graph";
393
- export type {
394
- SessionBackend,
395
- SessionHost,
396
- } from "./session/session-host";
354
+ formatRulesForSystemPrompt,
355
+ isRuleEnabled,
356
+ listEnabledRulesFromWatcher,
357
+ loadRulesForSystemPromptFromWatcher,
358
+ } from "./runtime/rules";
397
359
  export {
398
- createSessionHost,
399
- resolveSessionBackend,
400
- } from "./session/session-host";
360
+ createTeamName,
361
+ DefaultRuntimeBuilder,
362
+ } from "./runtime/runtime-builder";
401
363
  export type {
364
+ RuntimeHost,
365
+ RuntimeHost as SessionHost,
366
+ RuntimeHostMode,
402
367
  SendSessionInput,
403
368
  SessionAccumulatedUsage,
404
- SessionManager,
405
369
  StartSessionInput,
406
370
  StartSessionResult,
407
- } from "./session/session-manager";
408
- export type { SessionManifest } from "./session/session-manifest";
371
+ } from "./runtime/runtime-host";
372
+ export { splitCoreSessionConfig } from "./runtime/runtime-host";
409
373
  export type {
410
- CreateRootSessionWithArtifactsInput,
411
- RootSessionArtifacts,
412
- } from "./session/session-service";
413
- export { CoreSessionService } from "./session/session-service";
374
+ BuiltRuntime,
375
+ RuntimeBuilder,
376
+ RuntimeBuilderInput,
377
+ SessionRuntime,
378
+ TeamToolsFactory,
379
+ TeamToolsFactoryOptions,
380
+ TeamToolsFactoryResult,
381
+ } from "./runtime/session-runtime";
414
382
  export {
415
- createSqliteRpcSessionBackend,
416
- SqliteRpcSessionBackend,
417
- type SqliteRpcSessionBackendOptions,
418
- } from "./session/sqlite-rpc-session-backend";
383
+ type SandboxCallOptions,
384
+ SubprocessSandbox,
385
+ type SubprocessSandboxOptions,
386
+ } from "./runtime/subprocess-sandbox";
419
387
  export {
420
- accumulateUsageTotals,
421
- createInitialAccumulatedUsage,
422
- } from "./session/utils/usage";
423
- export type {
424
- WorkspaceManager,
425
- WorkspaceManagerEvent,
426
- } from "./session/workspace-manager";
427
- export { InMemoryWorkspaceManager } from "./session/workspace-manager";
388
+ type DesktopToolApprovalOptions,
389
+ requestDesktopToolApproval,
390
+ } from "./runtime/tool-approval";
428
391
  export {
429
- buildWorkspaceMetadata,
430
- generateWorkspaceInfo,
431
- normalizeWorkspacePath,
432
- } from "./session/workspace-manifest";
392
+ addLocalProvider,
393
+ type DeleteLocalProviderRequest,
394
+ deleteLocalProvider,
395
+ ensureCustomProvidersLoaded,
396
+ getLocalProviderModels,
397
+ listLocalProviders,
398
+ loginLocalProvider,
399
+ normalizeOAuthProvider,
400
+ resolveLocalClineAuthToken,
401
+ saveLocalProviderOAuthCredentials,
402
+ saveLocalProviderSettings,
403
+ type UpdateLocalProviderRequest,
404
+ updateLocalProvider,
405
+ } from "./services/providers/local-provider-service";
433
406
  export {
434
407
  type MigrateLegacyProviderSettingsOptions,
435
408
  type MigrateLegacyProviderSettingsResult,
436
409
  migrateLegacyProviderSettings,
437
- } from "./storage/provider-settings-legacy-migration";
438
- export { ProviderSettingsManager } from "./storage/provider-settings-manager";
439
- export { SqliteSessionStore } from "./storage/sqlite-session-store";
410
+ } from "./services/storage/provider-settings-legacy-migration";
411
+ export { ProviderSettingsManager } from "./services/storage/provider-settings-manager";
412
+ export { SqliteSessionStore } from "./services/storage/sqlite-session-store";
440
413
  export {
441
414
  SqliteTeamStore,
442
415
  type SqliteTeamStoreOptions,
443
- } from "./storage/team-store";
444
- export {
445
- type AgentTask,
446
- AgentTeam,
447
- AgentTeamsRuntime,
448
- type AgentTeamsRuntimeOptions,
449
- type BootstrapAgentTeamsOptions,
450
- type BootstrapAgentTeamsResult,
451
- bootstrapAgentTeams,
452
- buildDelegatedAgentConfig,
453
- buildTeamProgressSummary,
454
- type CreateAgentTeamsToolsOptions,
455
- createAgentTeamsTools,
456
- createDelegatedAgent,
457
- createDelegatedAgentConfigProvider,
458
- createSpawnAgentTool,
459
- type DelegatedAgentConfigProvider,
460
- type DelegatedAgentConnectionConfig,
461
- type DelegatedAgentKind,
462
- type DelegatedAgentRuntimeConfig,
463
- reviveTeamStateDates,
464
- type SpawnTeammateOptions,
465
- type SubAgentEndContext,
466
- type SubAgentStartContext,
467
- sanitizeTeamName,
468
- type TaskResult,
469
- type TeamEvent,
470
- type TeamMemberConfig,
471
- type TeamTeammateRuntimeConfig,
472
- toTeamProgressLifecycleEvent,
473
- } from "./team";
416
+ } from "./services/storage/team-store";
474
417
  export type {
475
418
  TelemetryAgentIdentityProperties,
476
419
  TelemetryAgentKind,
477
- } from "./telemetry/core-events";
420
+ } from "./services/telemetry/core-events";
478
421
  export {
479
422
  CORE_TELEMETRY_EVENTS,
480
423
  captureAgentCreated,
@@ -499,28 +442,85 @@ export {
499
442
  captureTokenUsage,
500
443
  captureToolUsage,
501
444
  identifyAccount,
502
- } from "./telemetry/core-events";
503
- export type { ITelemetryAdapter } from "./telemetry/ITelemetryAdapter";
445
+ } from "./services/telemetry/core-events";
446
+ export type { ITelemetryAdapter } from "./services/telemetry/ITelemetryAdapter";
504
447
  export {
505
448
  type CreateOpenTelemetryTelemetryServiceOptions,
506
449
  createConfiguredTelemetryService,
507
450
  createOpenTelemetryTelemetryService,
508
451
  OpenTelemetryProvider,
509
452
  type OpenTelemetryProviderOptions,
510
- } from "./telemetry/OpenTelemetryProvider";
453
+ } from "./services/telemetry/OpenTelemetryProvider";
511
454
  export {
512
455
  TelemetryLoggerSink,
513
456
  type TelemetryLoggerSinkOptions,
514
- } from "./telemetry/TelemetryLoggerSink";
457
+ } from "./services/telemetry/TelemetryLoggerSink";
458
+ export {
459
+ accumulateUsageTotals,
460
+ createInitialAccumulatedUsage,
461
+ } from "./services/usage";
462
+ export type {
463
+ FastFileIndexOptions,
464
+ MentionEnricherOptions,
465
+ MentionEnrichmentResult,
466
+ } from "./services/workspace";
467
+ export {
468
+ enrichPromptWithMentions,
469
+ getFileIndex,
470
+ prewarmFileIndex,
471
+ } from "./services/workspace";
472
+ export {
473
+ buildWorkspaceMetadata,
474
+ generateWorkspaceInfo,
475
+ normalizeWorkspacePath,
476
+ } from "./services/workspace-manifest";
477
+ export { RpcCoreSessionService } from "./session/rpc-session-service";
478
+ export {
479
+ deriveSubsessionStatus,
480
+ makeSubSessionId,
481
+ makeTeamTaskSubSessionId,
482
+ sanitizeSessionToken,
483
+ } from "./session/session-graph";
484
+ export type { SessionManifest } from "./session/session-manifest";
485
+ export type {
486
+ CreateRootSessionWithArtifactsInput,
487
+ RootSessionArtifacts,
488
+ SessionRow,
489
+ } from "./session/session-service";
490
+ export { CoreSessionService } from "./session/session-service";
491
+ export {
492
+ createSqliteRpcSessionBackend,
493
+ SqliteRpcSessionBackend,
494
+ type SqliteRpcSessionBackendOptions,
495
+ } from "./session/sqlite-rpc-session-backend";
496
+ export type {
497
+ WorkspaceManager,
498
+ WorkspaceManagerEvent,
499
+ } from "./session/workspace-manager";
500
+ export { InMemoryWorkspaceManager } from "./session/workspace-manager";
501
+ export { LocalRuntimeHost } from "./transports/local";
502
+ export { RpcRuntimeHost } from "./transports/rpc";
503
+ export type {
504
+ ChatMessage,
505
+ ChatSessionConfig,
506
+ ChatSessionStatus,
507
+ ChatSummary,
508
+ ChatViewState,
509
+ } from "./types/chat-schema";
510
+ export {
511
+ ChatMessageRoleSchema,
512
+ ChatMessageSchema,
513
+ ChatSessionConfigSchema,
514
+ ChatSessionStatusSchema,
515
+ ChatSummarySchema,
516
+ ChatViewStateSchema,
517
+ } from "./types/chat-schema";
518
+ export type { SessionMessagesArtifactUploader } from "./types/session";
515
519
  export { CORE_BUILD_VERSION } from "./version";
516
520
  export async function loadOpenTelemetryAdapter() {
517
- return import("./telemetry/index.js");
521
+ return import("./services/telemetry/index.js");
518
522
  }
519
523
  export { createContextCompactionPrepareTurn } from "./extensions/context/compaction";
520
- export {
521
- TelemetryService,
522
- type TelemetryServiceOptions,
523
- } from "./telemetry/TelemetryService";
524
524
  export {
525
525
  ALL_DEFAULT_TOOL_NAMES,
526
526
  type AskQuestionExecutor,
@@ -539,7 +539,11 @@ export {
539
539
  type ToolPolicyPresetName,
540
540
  type ToolPresetName,
541
541
  ToolPresets,
542
- } from "./tools";
542
+ } from "./extensions/tools";
543
+ export {
544
+ TelemetryService,
545
+ type TelemetryServiceOptions,
546
+ } from "./services/telemetry/TelemetryService";
543
547
  // Compatibility barrel (legacy imports).
544
548
  export type { RuntimeEnvironment } from "./types";
545
549
  export type { SessionStatus } from "./types/common";
@@ -574,5 +578,10 @@ export {
574
578
  StoredProviderSettingsEntrySchema,
575
579
  StoredProviderSettingsSchema,
576
580
  } from "./types/provider-settings";
577
- export type { SessionRecord, SessionRef } from "./types/sessions";
581
+ export type {
582
+ SessionHistoryMetadata,
583
+ SessionHistoryRecord,
584
+ SessionRecord,
585
+ SessionRef,
586
+ } from "./types/sessions";
578
587
  export type { ArtifactStore, SessionStore, TeamStore } from "./types/storage";
@@ -0,0 +1,114 @@
1
+ import { describe, expect, it, vi } from "vitest";
2
+ import type { SessionRecord } from "../types/sessions";
3
+ import { hydrateSessionHistory } from "./history";
4
+
5
+ function createRow(
6
+ overrides: Partial<SessionRecord> & Pick<SessionRecord, "sessionId">,
7
+ ): SessionRecord {
8
+ return {
9
+ source: "cli",
10
+ pid: 1,
11
+ startedAt: "2026-04-21T02:17:46.169Z",
12
+ status: "completed",
13
+ interactive: false,
14
+ provider: "",
15
+ model: "",
16
+ cwd: "/tmp/workspace",
17
+ workspaceRoot: "/tmp/workspace",
18
+ enableTools: true,
19
+ enableSpawn: false,
20
+ enableTeams: false,
21
+ isSubagent: false,
22
+ updatedAt: "2026-04-21T02:17:46.169Z",
23
+ ...overrides,
24
+ };
25
+ }
26
+
27
+ describe("hydrateSessionHistory", () => {
28
+ it("preserves rows that already have history display metadata", async () => {
29
+ const readMessages = vi.fn();
30
+ const rows = await hydrateSessionHistory({ readMessages }, [
31
+ createRow({
32
+ sessionId: "sess_1",
33
+ provider: "cline",
34
+ model: "anthropic/claude-sonnet-4.6",
35
+ prompt: "hello",
36
+ metadata: {
37
+ title: "hello",
38
+ totalCost: 0.02,
39
+ },
40
+ }),
41
+ ]);
42
+
43
+ expect(rows).toEqual([
44
+ expect.objectContaining({
45
+ sessionId: "sess_1",
46
+ provider: "cline",
47
+ model: "anthropic/claude-sonnet-4.6",
48
+ metadata: expect.objectContaining({
49
+ title: "hello",
50
+ totalCost: 0.02,
51
+ }),
52
+ }),
53
+ ]);
54
+ expect(readMessages).not.toHaveBeenCalled();
55
+ });
56
+
57
+ it("hydrates missing provider, model, and cost from stored messages", async () => {
58
+ const readMessages = vi.fn().mockResolvedValue([
59
+ {
60
+ role: "user",
61
+ content: [{ type: "text", text: "hello" }],
62
+ },
63
+ {
64
+ role: "assistant",
65
+ content: [{ type: "text", text: "hi" }],
66
+ modelInfo: {
67
+ provider: "cline",
68
+ id: "anthropic/claude-sonnet-4.6",
69
+ },
70
+ metrics: {
71
+ cost: 0.02,
72
+ },
73
+ },
74
+ ]);
75
+
76
+ const [row] = await hydrateSessionHistory({ readMessages }, [
77
+ createRow({
78
+ sessionId: "sess_2",
79
+ prompt: "hello",
80
+ metadata: {},
81
+ }),
82
+ ]);
83
+
84
+ expect(readMessages).toHaveBeenCalledWith("sess_2");
85
+ expect(row).toMatchObject({
86
+ sessionId: "sess_2",
87
+ provider: "cline",
88
+ model: "anthropic/claude-sonnet-4.6",
89
+ metadata: {
90
+ title: "hello",
91
+ totalCost: 0.02,
92
+ },
93
+ });
94
+ });
95
+
96
+ it("falls back to nested metadata provider/model ids before reading messages", async () => {
97
+ const readMessages = vi.fn().mockResolvedValue([]);
98
+
99
+ const [row] = await hydrateSessionHistory({ readMessages }, [
100
+ createRow({
101
+ sessionId: "sess_3",
102
+ metadata: {
103
+ title: "hello",
104
+ provider: { id: "cline" },
105
+ model: { id: "anthropic/claude-haiku-4.5" },
106
+ },
107
+ }),
108
+ ]);
109
+
110
+ expect(row.provider).toBe("cline");
111
+ expect(row.model).toBe("anthropic/claude-haiku-4.5");
112
+ expect(readMessages).toHaveBeenCalledWith("sess_3");
113
+ });
114
+ });