@clinebot/core 0.0.35 → 0.0.36

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 (335) hide show
  1. package/README.md +1 -2
  2. package/dist/ClineCore.d.ts +53 -39
  3. package/dist/ClineCore.d.ts.map +1 -1
  4. package/dist/account/index.d.ts +1 -1
  5. package/dist/account/index.d.ts.map +1 -1
  6. package/dist/account/rpc.d.ts +6 -6
  7. package/dist/account/rpc.d.ts.map +1 -1
  8. package/dist/cron/index.d.ts +6 -0
  9. package/dist/cron/index.d.ts.map +1 -0
  10. package/dist/cron/resource-limiter.d.ts +9 -0
  11. package/dist/cron/resource-limiter.d.ts.map +1 -0
  12. package/dist/cron/schedule-command-service.d.ts +10 -0
  13. package/dist/cron/schedule-command-service.d.ts.map +1 -0
  14. package/dist/cron/schedule-service.d.ts +100 -0
  15. package/dist/cron/schedule-service.d.ts.map +1 -0
  16. package/dist/cron/scheduler.d.ts +66 -0
  17. package/dist/cron/scheduler.d.ts.map +1 -0
  18. package/dist/cron/sqlite-schedule-store.d.ts +52 -0
  19. package/dist/cron/sqlite-schedule-store.d.ts.map +1 -0
  20. package/dist/extensions/config/agent-config-loader.d.ts +4 -3
  21. package/dist/extensions/config/agent-config-loader.d.ts.map +1 -1
  22. package/dist/extensions/config/runtime-commands.d.ts +1 -0
  23. package/dist/extensions/config/runtime-commands.d.ts.map +1 -1
  24. package/dist/extensions/config/user-instruction-config-loader.d.ts +1 -0
  25. package/dist/extensions/config/user-instruction-config-loader.d.ts.map +1 -1
  26. package/dist/extensions/context/agentic-compaction.d.ts +2 -2
  27. package/dist/extensions/context/agentic-compaction.d.ts.map +1 -1
  28. package/dist/extensions/context/compaction-shared.d.ts +5 -4
  29. package/dist/extensions/context/compaction-shared.d.ts.map +1 -1
  30. package/dist/extensions/context/compaction.d.ts.map +1 -1
  31. package/dist/extensions/plugin/plugin-config-loader.d.ts +9 -2
  32. package/dist/extensions/plugin/plugin-config-loader.d.ts.map +1 -1
  33. package/dist/extensions/plugin/plugin-loader.d.ts +5 -3
  34. package/dist/extensions/plugin/plugin-loader.d.ts.map +1 -1
  35. package/dist/extensions/plugin/plugin-module-import.d.ts.map +1 -1
  36. package/dist/extensions/plugin/plugin-sandbox.d.ts +15 -2
  37. package/dist/extensions/plugin/plugin-sandbox.d.ts.map +1 -1
  38. package/dist/extensions/plugin/plugin-targeting.d.ts +7 -0
  39. package/dist/extensions/plugin/plugin-targeting.d.ts.map +1 -0
  40. package/dist/extensions/plugin-sandbox-bootstrap.js +211 -211
  41. package/dist/extensions/tools/definitions.d.ts +1 -1
  42. package/dist/extensions/tools/definitions.d.ts.map +1 -1
  43. package/dist/extensions/tools/executors/apply-patch.d.ts +3 -1
  44. package/dist/extensions/tools/executors/apply-patch.d.ts.map +1 -1
  45. package/dist/extensions/tools/executors/search.d.ts +1 -1
  46. package/dist/extensions/tools/executors/search.d.ts.map +1 -1
  47. package/dist/extensions/tools/index.d.ts +2 -0
  48. package/dist/extensions/tools/index.d.ts.map +1 -1
  49. package/dist/extensions/tools/presets.d.ts +26 -43
  50. package/dist/extensions/tools/presets.d.ts.map +1 -1
  51. package/dist/extensions/tools/runtime.d.ts +25 -0
  52. package/dist/extensions/tools/runtime.d.ts.map +1 -0
  53. package/dist/extensions/tools/schemas.d.ts.map +1 -1
  54. package/dist/extensions/tools/team/team-tools.d.ts +1 -0
  55. package/dist/extensions/tools/team/team-tools.d.ts.map +1 -1
  56. package/dist/hooks/hook-file-hooks.d.ts +4 -1
  57. package/dist/hooks/hook-file-hooks.d.ts.map +1 -1
  58. package/dist/hooks/index.d.ts +0 -1
  59. package/dist/hooks/index.d.ts.map +1 -1
  60. package/dist/hooks/subprocess.d.ts +8 -1
  61. package/dist/hooks/subprocess.d.ts.map +1 -1
  62. package/dist/hub/browser-websocket.d.ts +18 -0
  63. package/dist/hub/browser-websocket.d.ts.map +1 -0
  64. package/dist/hub/client.d.ts +45 -0
  65. package/dist/hub/client.d.ts.map +1 -0
  66. package/dist/hub/connect.d.ts +15 -0
  67. package/dist/hub/connect.d.ts.map +1 -0
  68. package/dist/hub/daemon-entry.d.ts +2 -0
  69. package/dist/hub/daemon-entry.d.ts.map +1 -0
  70. package/dist/hub/daemon-entry.js +1045 -0
  71. package/dist/hub/daemon.d.ts +5 -0
  72. package/dist/hub/daemon.d.ts.map +1 -0
  73. package/dist/hub/defaults.d.ts +13 -0
  74. package/dist/hub/defaults.d.ts.map +1 -0
  75. package/dist/hub/discovery.d.ts +29 -0
  76. package/dist/hub/discovery.d.ts.map +1 -0
  77. package/dist/hub/index.d.ts +15 -0
  78. package/dist/hub/index.d.ts.map +1 -0
  79. package/dist/hub/index.js +1044 -0
  80. package/dist/hub/native-transport.d.ts +17 -0
  81. package/dist/hub/native-transport.d.ts.map +1 -0
  82. package/dist/hub/runtime-handlers.d.ts +11 -0
  83. package/dist/hub/runtime-handlers.d.ts.map +1 -0
  84. package/dist/hub/server.d.ts +86 -0
  85. package/dist/hub/server.d.ts.map +1 -0
  86. package/dist/hub/session-client.d.ts +87 -0
  87. package/dist/hub/session-client.d.ts.map +1 -0
  88. package/dist/hub/start-shared-server.d.ts +19 -0
  89. package/dist/hub/start-shared-server.d.ts.map +1 -0
  90. package/dist/hub/transport.d.ts +8 -0
  91. package/dist/hub/transport.d.ts.map +1 -0
  92. package/dist/hub/ui-client.d.ts +44 -0
  93. package/dist/hub/ui-client.d.ts.map +1 -0
  94. package/dist/hub/workspace.d.ts +4 -0
  95. package/dist/hub/workspace.d.ts.map +1 -0
  96. package/dist/index.d.ts +26 -15
  97. package/dist/index.d.ts.map +1 -1
  98. package/dist/index.js +498 -476
  99. package/dist/llms/configured-provider-registry.d.ts +28 -0
  100. package/dist/llms/configured-provider-registry.d.ts.map +1 -0
  101. package/dist/llms/provider-defaults.d.ts +27 -0
  102. package/dist/llms/provider-defaults.d.ts.map +1 -0
  103. package/dist/llms/provider-settings.d.ts +202 -0
  104. package/dist/llms/provider-settings.d.ts.map +1 -0
  105. package/dist/llms/runtime-config.d.ts +4 -0
  106. package/dist/llms/runtime-config.d.ts.map +1 -0
  107. package/dist/llms/runtime-registry.d.ts +20 -0
  108. package/dist/llms/runtime-registry.d.ts.map +1 -0
  109. package/dist/llms/runtime-types.d.ts +85 -0
  110. package/dist/llms/runtime-types.d.ts.map +1 -0
  111. package/dist/runtime/host.d.ts +1 -2
  112. package/dist/runtime/host.d.ts.map +1 -1
  113. package/dist/runtime/rules.d.ts +1 -0
  114. package/dist/runtime/rules.d.ts.map +1 -1
  115. package/dist/runtime/runtime-builder.d.ts.map +1 -1
  116. package/dist/runtime/runtime-host.d.ts +22 -24
  117. package/dist/runtime/runtime-host.d.ts.map +1 -1
  118. package/dist/runtime/runtime-oauth-token-manager.d.ts.map +1 -1
  119. package/dist/runtime/session-runtime.d.ts +1 -19
  120. package/dist/runtime/session-runtime.d.ts.map +1 -1
  121. package/dist/services/global-settings.d.ts +12 -0
  122. package/dist/services/global-settings.d.ts.map +1 -0
  123. package/dist/services/local-runtime-bootstrap.d.ts +9 -3
  124. package/dist/services/local-runtime-bootstrap.d.ts.map +1 -1
  125. package/dist/services/plugin-tools.d.ts +16 -0
  126. package/dist/services/plugin-tools.d.ts.map +1 -0
  127. package/dist/services/providers/local-provider-registry.d.ts +4 -4
  128. package/dist/services/providers/local-provider-registry.d.ts.map +1 -1
  129. package/dist/services/providers/local-provider-service.d.ts +13 -13
  130. package/dist/services/providers/local-provider-service.d.ts.map +1 -1
  131. package/dist/services/session-data.d.ts +1 -1
  132. package/dist/services/session-data.d.ts.map +1 -1
  133. package/dist/services/storage/provider-settings-legacy-migration.d.ts +1 -1
  134. package/dist/services/storage/provider-settings-legacy-migration.d.ts.map +1 -1
  135. package/dist/services/telemetry/index.js +28 -15
  136. package/dist/services/workspace-manifest.d.ts +11 -0
  137. package/dist/services/workspace-manifest.d.ts.map +1 -1
  138. package/dist/session/persistence-service.d.ts +11 -23
  139. package/dist/session/persistence-service.d.ts.map +1 -1
  140. package/dist/session/session-manifest-store.d.ts +22 -0
  141. package/dist/session/session-manifest-store.d.ts.map +1 -0
  142. package/dist/session/session-row.d.ts +93 -0
  143. package/dist/session/session-row.d.ts.map +1 -0
  144. package/dist/session/session-service.d.ts +2 -102
  145. package/dist/session/session-service.d.ts.map +1 -1
  146. package/dist/session/subagent-session-manager.d.ts +36 -0
  147. package/dist/session/subagent-session-manager.d.ts.map +1 -0
  148. package/dist/session/team-persistence-store.d.ts +24 -0
  149. package/dist/session/team-persistence-store.d.ts.map +1 -0
  150. package/dist/transports/hub.d.ts +47 -0
  151. package/dist/transports/hub.d.ts.map +1 -0
  152. package/dist/transports/local.d.ts +10 -6
  153. package/dist/transports/local.d.ts.map +1 -1
  154. package/dist/transports/remote.d.ts +10 -0
  155. package/dist/transports/remote.d.ts.map +1 -0
  156. package/dist/transports/runtime-host-support.d.ts +3 -2
  157. package/dist/transports/runtime-host-support.d.ts.map +1 -1
  158. package/dist/types/chat-schema.d.ts +10 -12
  159. package/dist/types/chat-schema.d.ts.map +1 -1
  160. package/dist/types/config.d.ts +8 -7
  161. package/dist/types/config.d.ts.map +1 -1
  162. package/dist/types/provider-settings.d.ts +4 -5
  163. package/dist/types/provider-settings.d.ts.map +1 -1
  164. package/dist/types/session.d.ts +2 -1
  165. package/dist/types/session.d.ts.map +1 -1
  166. package/dist/types.d.ts +8 -1
  167. package/dist/types.d.ts.map +1 -1
  168. package/package.json +20 -6
  169. package/src/ClineCore.ts +68 -40
  170. package/src/account/index.ts +3 -3
  171. package/src/account/rpc.ts +12 -12
  172. package/src/cron/index.ts +5 -0
  173. package/src/cron/resource-limiter.ts +46 -0
  174. package/src/cron/schedule-command-service.ts +193 -0
  175. package/src/cron/schedule-service.ts +703 -0
  176. package/src/cron/scheduler.ts +637 -0
  177. package/src/cron/sqlite-schedule-store.ts +708 -0
  178. package/src/extensions/config/agent-config-loader.ts +17 -7
  179. package/src/extensions/config/runtime-commands.ts +6 -0
  180. package/src/extensions/config/user-instruction-config-loader.ts +1 -0
  181. package/src/extensions/context/agentic-compaction.ts +3 -3
  182. package/src/extensions/context/basic-compaction.ts +2 -2
  183. package/src/extensions/context/compaction-shared.ts +5 -4
  184. package/src/extensions/context/compaction.ts +3 -3
  185. package/src/extensions/plugin/plugin-config-loader.ts +17 -2
  186. package/src/extensions/plugin/plugin-loader.ts +48 -4
  187. package/src/extensions/plugin/plugin-module-import.ts +0 -2
  188. package/src/extensions/plugin/plugin-sandbox-bootstrap.ts +93 -39
  189. package/src/extensions/plugin/plugin-sandbox.ts +47 -27
  190. package/src/extensions/plugin/plugin-targeting.ts +32 -0
  191. package/src/extensions/tools/definitions.ts +30 -49
  192. package/src/extensions/tools/executors/apply-patch.ts +69 -80
  193. package/src/extensions/tools/executors/search.ts +195 -3
  194. package/src/extensions/tools/index.ts +10 -0
  195. package/src/extensions/tools/presets.ts +31 -46
  196. package/src/extensions/tools/runtime.ts +261 -0
  197. package/src/extensions/tools/schemas.ts +4 -2
  198. package/src/extensions/tools/team/team-tools.ts +21 -0
  199. package/src/hooks/hook-file-hooks.ts +8 -2
  200. package/src/hooks/index.ts +0 -7
  201. package/src/hooks/subprocess-runner.ts +1 -1
  202. package/src/hooks/subprocess.ts +9 -0
  203. package/src/hub/browser-websocket.ts +137 -0
  204. package/src/hub/client.ts +574 -0
  205. package/src/hub/connect.ts +156 -0
  206. package/src/hub/daemon-entry.ts +87 -0
  207. package/src/hub/daemon.ts +181 -0
  208. package/src/hub/defaults.ts +43 -0
  209. package/src/hub/discovery.ts +247 -0
  210. package/src/hub/index.ts +14 -0
  211. package/src/hub/native-transport.ts +31 -0
  212. package/src/hub/runtime-handlers.ts +140 -0
  213. package/src/hub/server.ts +1888 -0
  214. package/src/hub/session-client.ts +460 -0
  215. package/src/hub/start-shared-server.ts +58 -0
  216. package/src/hub/transport.ts +14 -0
  217. package/src/hub/ui-client.ts +122 -0
  218. package/src/hub/workspace.ts +19 -0
  219. package/src/index.ts +124 -68
  220. package/src/llms/configured-provider-registry.ts +193 -0
  221. package/src/llms/provider-defaults.ts +637 -0
  222. package/src/llms/provider-settings.ts +263 -0
  223. package/src/llms/runtime-config.ts +43 -0
  224. package/src/llms/runtime-registry.ts +171 -0
  225. package/src/llms/runtime-types.ts +121 -0
  226. package/src/runtime/host.ts +107 -269
  227. package/src/runtime/index.ts +1 -0
  228. package/src/runtime/rules.ts +12 -0
  229. package/src/runtime/runtime-builder.ts +24 -8
  230. package/src/runtime/runtime-host.ts +89 -61
  231. package/src/runtime/runtime-oauth-token-manager.ts +11 -15
  232. package/src/runtime/session-runtime.ts +0 -24
  233. package/src/services/global-settings.ts +122 -0
  234. package/src/services/local-runtime-bootstrap.ts +51 -13
  235. package/src/services/plugin-tools.ts +85 -0
  236. package/src/services/providers/local-provider-registry.ts +6 -6
  237. package/src/services/providers/local-provider-service.ts +42 -37
  238. package/src/services/session-data.ts +15 -9
  239. package/src/services/storage/provider-settings-legacy-migration.ts +6 -4
  240. package/src/services/storage/provider-settings-manager.ts +1 -1
  241. package/src/services/workspace-manifest.ts +18 -0
  242. package/src/session/file-session-service.ts +1 -1
  243. package/src/session/index.ts +6 -27
  244. package/src/session/persistence-service.ts +119 -504
  245. package/src/session/session-manifest-store.ts +158 -0
  246. package/src/session/session-row.ts +199 -0
  247. package/src/session/session-service.ts +17 -376
  248. package/src/session/session-team-coordination.ts +1 -1
  249. package/src/session/subagent-session-manager.ts +397 -0
  250. package/src/session/team-persistence-store.ts +176 -0
  251. package/src/transports/hub.ts +656 -0
  252. package/src/transports/local.ts +135 -40
  253. package/src/transports/remote.ts +26 -0
  254. package/src/transports/runtime-host-support.ts +63 -9
  255. package/src/types/chat-schema.ts +4 -5
  256. package/src/types/config.ts +8 -7
  257. package/src/types/provider-settings.ts +11 -7
  258. package/src/types/session.ts +2 -4
  259. package/src/types.ts +27 -1
  260. package/dist/hooks/persistent.d.ts +0 -64
  261. package/dist/hooks/persistent.d.ts.map +0 -1
  262. package/dist/runtime/rpc-runtime-ensure.d.ts +0 -65
  263. package/dist/runtime/rpc-runtime-ensure.d.ts.map +0 -1
  264. package/dist/runtime/rpc-spawn-lease.d.ts +0 -8
  265. package/dist/runtime/rpc-spawn-lease.d.ts.map +0 -1
  266. package/dist/session/rpc-session-service.d.ts +0 -16
  267. package/dist/session/rpc-session-service.d.ts.map +0 -1
  268. package/dist/session/sqlite-rpc-session-backend.d.ts +0 -31
  269. package/dist/session/sqlite-rpc-session-backend.d.ts.map +0 -1
  270. package/dist/transports/rpc.d.ts +0 -51
  271. package/dist/transports/rpc.d.ts.map +0 -1
  272. package/src/ClineCore.test.ts +0 -226
  273. package/src/account/cline-account-service.test.ts +0 -185
  274. package/src/account/featurebase-token.test.ts +0 -175
  275. package/src/account/rpc.test.ts +0 -63
  276. package/src/auth/bounded-ttl-cache.test.ts +0 -38
  277. package/src/auth/client.test.ts +0 -69
  278. package/src/auth/cline.test.ts +0 -267
  279. package/src/auth/codex.test.ts +0 -170
  280. package/src/auth/oca.test.ts +0 -340
  281. package/src/auth/server.test.ts +0 -287
  282. package/src/auth/utils.test.ts +0 -128
  283. package/src/extensions/config/agent-config-loader.test.ts +0 -236
  284. package/src/extensions/config/hooks-config-loader.test.ts +0 -20
  285. package/src/extensions/config/runtime-commands.test.ts +0 -115
  286. package/src/extensions/config/unified-config-file-watcher.test.ts +0 -196
  287. package/src/extensions/config/user-instruction-config-loader.test.ts +0 -246
  288. package/src/extensions/context/compaction.test.ts +0 -483
  289. package/src/extensions/mcp/config-loader.test.ts +0 -238
  290. package/src/extensions/mcp/manager.test.ts +0 -105
  291. package/src/extensions/plugin/plugin-config-loader.test.ts +0 -184
  292. package/src/extensions/plugin/plugin-loader.test.ts +0 -292
  293. package/src/extensions/plugin/plugin-sandbox.test.ts +0 -423
  294. package/src/extensions/tools/definitions.test.ts +0 -780
  295. package/src/extensions/tools/executors/bash.test.ts +0 -87
  296. package/src/extensions/tools/executors/editor.test.ts +0 -35
  297. package/src/extensions/tools/executors/file-read.test.ts +0 -125
  298. package/src/extensions/tools/model-tool-routing.test.ts +0 -86
  299. package/src/extensions/tools/presets.test.ts +0 -70
  300. package/src/extensions/tools/team/multi-agent.lifecycle.test.ts +0 -455
  301. package/src/extensions/tools/team/spawn-agent-tool.test.ts +0 -381
  302. package/src/extensions/tools/team/team-tools.test.ts +0 -918
  303. package/src/hooks/checkpoint-hooks.test.ts +0 -168
  304. package/src/hooks/hook-file-hooks.test.ts +0 -311
  305. package/src/hooks/persistent.ts +0 -661
  306. package/src/runtime/history.test.ts +0 -114
  307. package/src/runtime/host.test.ts +0 -230
  308. package/src/runtime/rpc-runtime-ensure.test.ts +0 -123
  309. package/src/runtime/rpc-runtime-ensure.ts +0 -659
  310. package/src/runtime/rpc-spawn-lease.test.ts +0 -81
  311. package/src/runtime/rpc-spawn-lease.ts +0 -156
  312. package/src/runtime/runtime-builder.team-persistence.test.ts +0 -245
  313. package/src/runtime/runtime-builder.test.ts +0 -615
  314. package/src/runtime/runtime-oauth-token-manager.test.ts +0 -137
  315. package/src/runtime/runtime-parity.test.ts +0 -143
  316. package/src/services/providers/local-provider-service.test.ts +0 -1062
  317. package/src/services/session-data.test.ts +0 -160
  318. package/src/services/storage/provider-settings-legacy-migration.test.ts +0 -424
  319. package/src/services/storage/provider-settings-manager.test.ts +0 -191
  320. package/src/services/telemetry/OpenTelemetryAdapter.test.ts +0 -157
  321. package/src/services/telemetry/OpenTelemetryProvider.test.ts +0 -326
  322. package/src/services/telemetry/TelemetryLoggerSink.test.ts +0 -42
  323. package/src/services/telemetry/TelemetryService.test.ts +0 -134
  324. package/src/services/telemetry/distinct-id.test.ts +0 -57
  325. package/src/services/workspace/file-indexer.d.ts +0 -11
  326. package/src/services/workspace/file-indexer.test.ts +0 -156
  327. package/src/services/workspace/mention-enricher.test.ts +0 -106
  328. package/src/session/persistence-service.test.ts +0 -300
  329. package/src/session/rpc-session-service.ts +0 -114
  330. package/src/session/session-service.team-persistence.test.ts +0 -48
  331. package/src/session/sqlite-rpc-session-backend.ts +0 -301
  332. package/src/transports/local.e2e.test.ts +0 -380
  333. package/src/transports/local.test.ts +0 -2559
  334. package/src/transports/rpc.test.ts +0 -82
  335. package/src/transports/rpc.ts +0 -665
@@ -1,64 +0,0 @@
1
- import { type AgentHooks, type HookSessionContextProvider } from "@clinebot/shared";
2
- import { type HookEventPayload, type RunHookResult } from "./subprocess";
3
- export interface PersistentHookClientOptions {
4
- command: string[];
5
- cwd?: string;
6
- env?: NodeJS.ProcessEnv;
7
- onSpawn?: (event: {
8
- command: string[];
9
- pid?: number;
10
- detached: boolean;
11
- }) => void;
12
- }
13
- export declare class PersistentHookClient {
14
- private readonly options;
15
- private child?;
16
- private startPromise?;
17
- private readonly pending;
18
- private nextId;
19
- private stdoutBuffer;
20
- private closing;
21
- constructor(options: PersistentHookClientOptions);
22
- send(payload: HookEventPayload, options?: {
23
- timeoutMs?: number;
24
- }): Promise<RunHookResult | undefined>;
25
- close(): Promise<void>;
26
- private ensureStarted;
27
- private start;
28
- private handleStdout;
29
- private handleResponseLine;
30
- private handleChildExit;
31
- private clearPendingRequest;
32
- private rejectPendingRequest;
33
- }
34
- export interface PersistentSubprocessHooksOptions {
35
- command?: string[];
36
- cwd?: string;
37
- env?: NodeJS.ProcessEnv;
38
- timeoutMs?: number;
39
- onSpawn?: (event: {
40
- command: string[];
41
- pid?: number;
42
- detached: boolean;
43
- }) => void;
44
- onDispatchError?: (error: Error, payload: HookEventPayload) => void;
45
- onDispatch?: (event: {
46
- payload: HookEventPayload;
47
- result?: RunHookResult;
48
- detached: boolean;
49
- }) => void;
50
- sessionContext?: HookSessionContextProvider;
51
- fallbackToSubprocess?: boolean;
52
- }
53
- export interface PersistentSubprocessHookControl {
54
- hooks: AgentHooks;
55
- shutdown: (ctx: {
56
- agentId: string;
57
- conversationId: string;
58
- parentAgentId: string | null;
59
- reason?: string;
60
- }) => Promise<void>;
61
- client: PersistentHookClient;
62
- }
63
- export declare function createPersistentSubprocessHooks(options?: PersistentSubprocessHooksOptions): PersistentSubprocessHookControl;
64
- //# sourceMappingURL=persistent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"persistent.d.ts","sourceRoot":"","sources":["../../src/hooks/persistent.ts"],"names":[],"mappings":"AACA,OAAO,EACN,KAAK,UAAU,EACf,KAAK,0BAA0B,EAE/B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAQN,KAAK,gBAAgB,EAIrB,KAAK,aAAa,EAIlB,MAAM,cAAc,CAAC;AA0CtB,MAAM,WAAW,2BAA2B;IAC3C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QACjB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,OAAO,CAAC;KAClB,KAAK,IAAI,CAAC;CACX;AAED,qBAAa,oBAAoB;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,KAAK,CAAC,CAAiC;IAC/C,OAAO,CAAC,YAAY,CAAC,CAAgB;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAC7D,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,2BAA2B;IAI1C,IAAI,CACT,OAAO,EAAE,gBAAgB,EACzB,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9B,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAgC/B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAyDd,aAAa;YAgBb,KAAK;IAuDnB,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,kBAAkB;IAuB1B,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,oBAAoB;CAI5B;AAED,MAAM,WAAW,gCAAgC;IAChD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QACjB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,OAAO,CAAC;KAClB,KAAK,IAAI,CAAC;IACX,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACpE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE;QACpB,OAAO,EAAE,gBAAgB,CAAC;QAC1B,MAAM,CAAC,EAAE,aAAa,CAAC;QACvB,QAAQ,EAAE,OAAO,CAAC;KAClB,KAAK,IAAI,CAAC;IACX,cAAc,CAAC,EAAE,0BAA0B,CAAC;IAC5C,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,+BAA+B;IAC/C,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,EAAE,CAAC,GAAG,EAAE;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;KAChB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,MAAM,EAAE,oBAAoB,CAAC;CAC7B;AA2HD,wBAAgB,+BAA+B,CAC9C,OAAO,GAAE,gCAAqC,GAC5C,+BAA+B,CA0LjC"}
@@ -1,65 +0,0 @@
1
- export declare const RPC_STARTUP_LOCK_BYPASS_ENV = "CLINE_RPC_STARTUP_LOCK_HELD";
2
- export declare const RPC_OWNER_ID_ENV = "CLINE_RPC_OWNER_ID";
3
- export declare const RPC_BUILD_ID_ENV = "CLINE_RPC_BUILD_ID";
4
- export declare const RPC_DISCOVERY_PATH_ENV = "CLINE_RPC_DISCOVERY_PATH";
5
- export type RpcDiscoveryRecord = {
6
- ownerId: string;
7
- buildId: string;
8
- entryPath?: string;
9
- address: string;
10
- pid?: number;
11
- serverId?: string;
12
- startedAt?: string;
13
- protocolVersion: string;
14
- updatedAt: string;
15
- };
16
- export type RpcOwnerContext = {
17
- ownerId: string;
18
- buildId: string;
19
- entryPath?: string;
20
- discoveryPath: string;
21
- };
22
- export type ResolveRpcRuntimeResult = {
23
- address: string;
24
- action: "reuse" | "new-port" | "started";
25
- owner: RpcOwnerContext;
26
- };
27
- export type EnsureRpcRuntimeOptions = {
28
- owner?: RpcOwnerContext;
29
- resolveOwner?: () => RpcOwnerContext;
30
- spawnIfNeeded: (address: string, owner: RpcOwnerContext) => void | Promise<void>;
31
- readinessCheck?: (address: string) => Promise<boolean>;
32
- };
33
- export type ResolveRpcOwnerContextOptions = {
34
- discoveryPath?: string;
35
- hostBuildKey?: string;
36
- identityPath?: string;
37
- ownerBasis?: string;
38
- ownerId?: string;
39
- ownerPrefix?: string;
40
- };
41
- export declare function resolveRpcRuntimeBuildKey(hostBuildKey?: string): string;
42
- export declare function resolveRpcOwnerContext(options?: ResolveRpcOwnerContextOptions): RpcOwnerContext;
43
- export declare function recordRpcDiscovery(owner: RpcOwnerContext, record: Omit<RpcDiscoveryRecord, "ownerId" | "buildId" | "updatedAt">): Promise<void>;
44
- export declare function clearRpcDiscoveryIfAddressMatches(owner: RpcOwnerContext, address: string): Promise<void>;
45
- export declare function isCompatibleRuntime(address: string): Promise<boolean>;
46
- export type RpcStartupLockHandle = {
47
- markRunning: (details?: {
48
- resolvedAddress?: string;
49
- serverId?: string;
50
- }) => Promise<void>;
51
- };
52
- export declare function withRpcStartupLock<T>(address: string, action: (lock: RpcStartupLockHandle) => Promise<T>): Promise<T>;
53
- export declare function resolveEnsuredRpcRuntime(requestedAddress: string, options?: {
54
- owner?: RpcOwnerContext;
55
- resolveOwner?: () => RpcOwnerContext;
56
- /**
57
- * When true, skip startup lock acquisition. Use this when the caller
58
- * already holds the lock via {@link withRpcStartupLock} to avoid a
59
- * deadlock from nested lock acquisition on the same address.
60
- */
61
- lockAlreadyHeld?: boolean;
62
- }): Promise<ResolveRpcRuntimeResult>;
63
- export declare function waitForCompatibleRpcRuntime(address: string, readinessCheck?: (address: string) => Promise<boolean>): Promise<boolean>;
64
- export declare function ensureRpcRuntimeAddress(requestedAddress: string, options: EnsureRpcRuntimeOptions): Promise<ResolveRpcRuntimeResult>;
65
- //# sourceMappingURL=rpc-runtime-ensure.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rpc-runtime-ensure.d.ts","sourceRoot":"","sources":["../../src/runtime/rpc-runtime-ensure.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- export interface RpcSpawnLease {
2
- path: string;
3
- release: () => void;
4
- }
5
- export declare function tryAcquireRpcSpawnLease(address: string, options?: {
6
- ttlMs?: number;
7
- }): RpcSpawnLease | undefined;
8
- //# sourceMappingURL=rpc-spawn-lease.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rpc-spawn-lease.d.ts","sourceRoot":"","sources":["../../src/runtime/rpc-spawn-lease.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,IAAI,CAAC;CACpB;AAwED,wBAAgB,uBAAuB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1B,aAAa,GAAG,SAAS,CAyD3B"}
@@ -1,16 +0,0 @@
1
- import type { SessionMessagesArtifactUploader } from "../types/session";
2
- import { UnifiedSessionPersistenceService } from "./persistence-service";
3
- export interface RpcCoreSessionServiceOptions {
4
- address?: string;
5
- sessionsDir: string;
6
- messagesArtifactUploader?: SessionMessagesArtifactUploader;
7
- }
8
- export declare class RpcCoreSessionService extends UnifiedSessionPersistenceService {
9
- private readonly sessionsDirPath;
10
- private readonly client;
11
- readonly address: string;
12
- constructor(options: RpcCoreSessionServiceOptions);
13
- ensureSessionsDir(): string;
14
- close(): void;
15
- }
16
- //# sourceMappingURL=rpc-session-service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rpc-session-service.d.ts","sourceRoot":"","sources":["../../src/session/rpc-session-service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,kBAAkB,CAAC;AAKxE,OAAO,EAAE,gCAAgC,EAAE,MAAM,uBAAuB,CAAC;AAwEzE,MAAM,WAAW,4BAA4B;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,wBAAwB,CAAC,EAAE,+BAA+B,CAAC;CAC3D;AAED,qBAAa,qBAAsB,SAAQ,gCAAgC;IAC1E,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,SAAgB,OAAO,EAAE,MAAM,CAAC;gBAEpB,OAAO,EAAE,4BAA4B;IAaxC,iBAAiB,IAAI,MAAM;IAOpC,KAAK,IAAI,IAAI;CAGb"}
@@ -1,31 +0,0 @@
1
- import type { RpcSessionBackend, RpcSessionRow, RpcSessionUpdateInput, RpcSpawnQueueItem } from "@clinebot/rpc";
2
- export interface SqliteRpcSessionBackendOptions {
3
- sessionsDir?: string;
4
- }
5
- export declare class SqliteRpcSessionBackend implements RpcSessionBackend {
6
- private readonly store;
7
- constructor(options?: SqliteRpcSessionBackendOptions);
8
- init(): void;
9
- upsertSession(row: RpcSessionRow): void;
10
- getSession(sessionId: string): RpcSessionRow | undefined;
11
- listSessions(options: {
12
- limit: number;
13
- parentSessionId?: string;
14
- status?: string;
15
- }): RpcSessionRow[];
16
- updateSession(input: RpcSessionUpdateInput): {
17
- updated: boolean;
18
- statusLock: number;
19
- };
20
- deleteSession(sessionId: string): boolean;
21
- deleteSessionsByParent(parentSessionId: string): void;
22
- enqueueSpawnRequest(input: {
23
- rootSessionId: string;
24
- parentAgentId: string;
25
- task?: string;
26
- systemPrompt?: string;
27
- }): void;
28
- claimSpawnRequest(rootSessionId: string, parentAgentId: string): RpcSpawnQueueItem | undefined;
29
- }
30
- export declare function createSqliteRpcSessionBackend(options?: SqliteRpcSessionBackendOptions): RpcSessionBackend;
31
- //# sourceMappingURL=sqlite-rpc-session-backend.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sqlite-rpc-session-backend.d.ts","sourceRoot":"","sources":["../../src/session/sqlite-rpc-session-backend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,iBAAiB,EACjB,aAAa,EAEb,qBAAqB,EACrB,iBAAiB,EACjB,MAAM,eAAe,CAAC;AAUvB,MAAM,WAAW,8BAA8B;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,uBAAwB,YAAW,iBAAiB;IAChE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;gBAE/B,OAAO,GAAE,8BAAmC;IAIjD,IAAI,IAAI,IAAI;IAIZ,aAAa,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI;IAyCvC,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAwDxD,YAAY,CAAC,OAAO,EAAE;QAC5B,KAAK,EAAE,MAAM,CAAC;QACd,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,MAAM,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,aAAa,EAAE;IA8BZ,aAAa,CAAC,KAAK,EAAE,qBAAqB,GAAG;QACnD,OAAO,EAAE,OAAO,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;KACnB;IAoEM,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAOzC,sBAAsB,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI;IAMrD,mBAAmB,CAAC,KAAK,EAAE;QACjC,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;QACtB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,YAAY,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,IAAI;IAcD,iBAAiB,CACvB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GACnB,iBAAiB,GAAG,SAAS;CA0BhC;AAED,wBAAgB,6BAA6B,CAC5C,OAAO,GAAE,8BAAmC,GAC1C,iBAAiB,CAEnB"}
@@ -1,51 +0,0 @@
1
- import type * as LlmsProviders from "@clinebot/llms";
2
- import { type AgentResult, type RpcChatStartSessionRequest, type ToolApprovalRequest, type ToolApprovalResult } from "@clinebot/shared";
3
- import type { HookEventPayload } from "../hooks";
4
- import type { RuntimeHost, SendSessionInput, SessionAccumulatedUsage, StartSessionInput, StartSessionResult } from "../runtime/runtime-host";
5
- import type { RpcCoreSessionService } from "../session/rpc-session-service";
6
- import type { CoreSessionEvent } from "../types/events";
7
- import type { SessionRecord } from "../types/sessions";
8
- type ApprovalRequester = (request: ToolApprovalRequest) => Promise<ToolApprovalResult>;
9
- export declare class RpcRuntimeHost implements RuntimeHost {
10
- private readonly backend;
11
- private readonly defaultToolPolicies?;
12
- private readonly defaultRequestToolApproval?;
13
- readonly runtimeAddress: string;
14
- private readonly client;
15
- private readonly events;
16
- private readonly sessionConfigs;
17
- private readonly sessionApprovals;
18
- private readonly usageBySession;
19
- private readonly trackedSessionIds;
20
- private stopEventStream?;
21
- constructor(backend: RpcCoreSessionService, defaultToolPolicies?: RpcChatStartSessionRequest["toolPolicies"], defaultRequestToolApproval?: ApprovalRequester | undefined);
22
- start(input: StartSessionInput): Promise<StartSessionResult>;
23
- send(input: SendSessionInput): Promise<AgentResult | undefined>;
24
- getAccumulatedUsage(sessionId: string): Promise<SessionAccumulatedUsage | undefined>;
25
- abort(sessionId: string, reason?: unknown): Promise<void>;
26
- stop(sessionId: string): Promise<void>;
27
- dispose(reason?: string): Promise<void>;
28
- get(sessionId: string): Promise<SessionRecord | undefined>;
29
- list(limit?: number): Promise<SessionRecord[]>;
30
- delete(sessionId: string): Promise<boolean>;
31
- update(sessionId: string, updates: {
32
- prompt?: string | null;
33
- metadata?: Record<string, unknown> | null;
34
- title?: string | null;
35
- }): Promise<{
36
- updated: boolean;
37
- }>;
38
- readMessages(sessionId: string): Promise<LlmsProviders.Message[]>;
39
- handleHookEvent(payload: HookEventPayload): Promise<void>;
40
- subscribe(listener: (event: CoreSessionEvent) => void): () => void;
41
- updateSessionModel(): Promise<void>;
42
- private emit;
43
- private detachSession;
44
- private refreshEventStream;
45
- private handleRpcEvent;
46
- private handleApprovalRequest;
47
- private mapRpcEvent;
48
- private syncRemoteSessionState;
49
- }
50
- export {};
51
- //# sourceMappingURL=rpc.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../src/transports/rpc.ts"],"names":[],"mappings":"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"}
@@ -1,226 +0,0 @@
1
- import { beforeEach, describe, expect, it, vi } from "vitest";
2
- import type { ClineCoreStartInput } from "./ClineCore";
3
- import type {
4
- StartSessionInput,
5
- StartSessionResult,
6
- } from "./runtime/runtime-host";
7
-
8
- const { createRuntimeHostMock } = vi.hoisted(() => ({
9
- createRuntimeHostMock: vi.fn(),
10
- }));
11
-
12
- vi.mock("./runtime/host", () => ({
13
- createRuntimeHost: createRuntimeHostMock,
14
- }));
15
-
16
- import { ClineCore } from "./ClineCore";
17
-
18
- function createStartInput(): ClineCoreStartInput {
19
- return {
20
- config: {
21
- providerId: "anthropic",
22
- modelId: "claude-sonnet-4-6",
23
- apiKey: "test",
24
- cwd: "/tmp/workspace",
25
- workspaceRoot: "/tmp/workspace",
26
- systemPrompt: "You are concise.",
27
- mode: "act",
28
- enableTools: true,
29
- enableSpawnAgent: false,
30
- enableAgentTeams: false,
31
- },
32
- prompt: "hello",
33
- interactive: false,
34
- };
35
- }
36
-
37
- function createStartResult(sessionId: string): StartSessionResult {
38
- return {
39
- sessionId,
40
- manifest: {} as StartSessionResult["manifest"],
41
- manifestPath: `/tmp/${sessionId}.json`,
42
- messagesPath: `/tmp/${sessionId}.messages.json`,
43
- };
44
- }
45
-
46
- describe("ClineCore", () => {
47
- beforeEach(() => {
48
- createRuntimeHostMock.mockReset();
49
- });
50
-
51
- it("applies start-session bootstraps before delegating to the host", async () => {
52
- const listeners: Array<
53
- (event: { type: string; payload: { sessionId: string } }) => void
54
- > = [];
55
- const host = {
56
- runtimeAddress: undefined,
57
- start: vi.fn(async (input: StartSessionInput) => {
58
- expect(input.config.systemPrompt).toBe("Bootstrapped prompt");
59
- expect(input.localRuntime?.configOverrides?.extensions).toEqual([
60
- expect.objectContaining({ name: "enterprise" }),
61
- ]);
62
- return createStartResult("session-1");
63
- }),
64
- send: vi.fn(),
65
- getAccumulatedUsage: vi.fn(),
66
- abort: vi.fn(),
67
- stop: vi.fn(),
68
- dispose: vi.fn(),
69
- get: vi.fn(async () => undefined),
70
- list: vi.fn(),
71
- delete: vi.fn(),
72
- readMessages: vi.fn(),
73
- subscribe: vi.fn((listener) => {
74
- listeners.push(listener);
75
- return () => {};
76
- }),
77
- updateSessionModel: vi.fn(),
78
- };
79
- createRuntimeHostMock.mockResolvedValue(host);
80
-
81
- const dispose = vi.fn(async () => {});
82
- const applyToStartSessionInput = vi.fn(
83
- async (input: ClineCoreStartInput) => ({
84
- ...input,
85
- config: {
86
- ...input.config,
87
- systemPrompt: "Bootstrapped prompt",
88
- extensions: [
89
- {
90
- name: "enterprise",
91
- manifest: { capabilities: [] },
92
- setup: vi.fn(),
93
- },
94
- ],
95
- },
96
- }),
97
- );
98
-
99
- const core = await ClineCore.create({
100
- prepare: async () => ({
101
- applyToStartSessionInput,
102
- dispose,
103
- }),
104
- });
105
-
106
- await core.start(createStartInput());
107
-
108
- expect(applyToStartSessionInput).toHaveBeenCalledTimes(1);
109
- expect(host.start).toHaveBeenCalledTimes(1);
110
- expect(dispose).toHaveBeenCalledTimes(1);
111
- expect(listeners).toHaveLength(1);
112
- });
113
-
114
- it("disposes active session bootstraps when the session ends", async () => {
115
- let listener:
116
- | ((event: { type: string; payload: { sessionId: string } }) => void)
117
- | undefined;
118
- const host = {
119
- runtimeAddress: "127.0.0.1:5317",
120
- start: vi.fn(async () => createStartResult("session-2")),
121
- send: vi.fn(),
122
- getAccumulatedUsage: vi.fn(),
123
- abort: vi.fn(),
124
- stop: vi.fn(),
125
- dispose: vi.fn(),
126
- get: vi.fn(async () => ({ sessionId: "session-2" })),
127
- list: vi.fn(),
128
- delete: vi.fn(),
129
- readMessages: vi.fn(),
130
- subscribe: vi.fn((nextListener) => {
131
- listener = nextListener;
132
- return () => {};
133
- }),
134
- updateSessionModel: vi.fn(),
135
- };
136
- createRuntimeHostMock.mockResolvedValue(host);
137
-
138
- const dispose = vi.fn(async () => {});
139
- const core = await ClineCore.create({
140
- prepare: async () => ({
141
- applyToStartSessionInput: (input) => input,
142
- dispose,
143
- }),
144
- });
145
- expect(core.runtimeAddress).toBe("127.0.0.1:5317");
146
-
147
- await core.start(createStartInput());
148
- expect(dispose).not.toHaveBeenCalled();
149
-
150
- listener?.({ type: "ended", payload: { sessionId: "session-2" } });
151
- await Promise.resolve();
152
-
153
- expect(dispose).toHaveBeenCalledTimes(1);
154
- });
155
-
156
- it("hydrates list rows through the core API", async () => {
157
- const host = {
158
- runtimeAddress: undefined,
159
- start: vi.fn(),
160
- send: vi.fn(),
161
- getAccumulatedUsage: vi.fn(),
162
- abort: vi.fn(),
163
- stop: vi.fn(),
164
- dispose: vi.fn(),
165
- get: vi.fn(async () => undefined),
166
- list: vi.fn(async () => [
167
- {
168
- sessionId: "session-3",
169
- source: "cli",
170
- pid: 1,
171
- startedAt: "2026-04-21T02:17:46.169Z",
172
- status: "completed",
173
- interactive: false,
174
- provider: "",
175
- model: "",
176
- cwd: "/tmp/workspace",
177
- workspaceRoot: "/tmp/workspace",
178
- enableTools: true,
179
- enableSpawn: false,
180
- enableTeams: false,
181
- prompt: "hello",
182
- metadata: {},
183
- updatedAt: "2026-04-21T02:17:46.169Z",
184
- },
185
- ]),
186
- delete: vi.fn(),
187
- update: vi.fn(),
188
- readMessages: vi.fn(async () => [
189
- {
190
- role: "user",
191
- content: [{ type: "text", text: "hello" }],
192
- },
193
- {
194
- role: "assistant",
195
- content: [{ type: "text", text: "hi" }],
196
- modelInfo: {
197
- provider: "cline",
198
- id: "anthropic/claude-sonnet-4.6",
199
- },
200
- metrics: {
201
- cost: 0.02,
202
- },
203
- },
204
- ]),
205
- handleHookEvent: vi.fn(),
206
- subscribe: vi.fn(() => () => {}),
207
- updateSessionModel: vi.fn(),
208
- };
209
- createRuntimeHostMock.mockResolvedValue(host);
210
-
211
- const core = await ClineCore.create();
212
- const [row] = await core.list(10);
213
-
214
- expect(host.list).toHaveBeenCalledWith(10);
215
- expect(host.readMessages).toHaveBeenCalledWith("session-3");
216
- expect(row).toMatchObject({
217
- sessionId: "session-3",
218
- provider: "cline",
219
- model: "anthropic/claude-sonnet-4.6",
220
- metadata: {
221
- title: "hello",
222
- totalCost: 0.02,
223
- },
224
- });
225
- });
226
- });
@@ -1,185 +0,0 @@
1
- import { describe, expect, it, vi } from "vitest";
2
- import { ClineAccountService } from "./cline-account-service";
3
-
4
- describe("ClineAccountService", () => {
5
- it("fetches current user balance and sends auth header", async () => {
6
- const fetchImpl = vi.fn(async (input: unknown, init?: RequestInit) => {
7
- expect(String(input)).toBe(
8
- "https://api.cline.bot/api/v1/users/user-1/balance",
9
- );
10
- expect(init?.headers).toMatchObject({
11
- Authorization: "Bearer workos:token-123",
12
- });
13
- return new Response(
14
- JSON.stringify({
15
- success: true,
16
- data: { balance: 5, userId: "user-1" },
17
- }),
18
- { status: 200, headers: { "Content-Type": "application/json" } },
19
- );
20
- });
21
-
22
- const service = new ClineAccountService({
23
- apiBaseUrl: "https://api.cline.bot",
24
- getAuthToken: async () => "workos:token-123",
25
- getCurrentUserId: () => "user-1",
26
- fetchImpl: fetchImpl as unknown as typeof fetch,
27
- });
28
-
29
- const balance = await service.fetchBalance();
30
- expect(balance).toEqual({ balance: 5, userId: "user-1" });
31
- });
32
-
33
- it("resolves organization member id from /users/me when not provided", async () => {
34
- const fetchImpl = vi
35
- .fn()
36
- .mockResolvedValueOnce(
37
- new Response(
38
- JSON.stringify({
39
- success: true,
40
- data: {
41
- id: "u-1",
42
- email: "u@example.com",
43
- displayName: "User",
44
- photoUrl: "",
45
- createdAt: "2025-01-01T00:00:00Z",
46
- updatedAt: "2025-01-01T00:00:00Z",
47
- organizations: [
48
- {
49
- active: true,
50
- memberId: "member-9",
51
- name: "Org",
52
- organizationId: "org-1",
53
- roles: ["member"],
54
- },
55
- ],
56
- },
57
- }),
58
- { status: 200 },
59
- ),
60
- )
61
- .mockResolvedValueOnce(
62
- new Response(
63
- JSON.stringify({ success: true, data: { items: [{ id: "tx-1" }] } }),
64
- { status: 200 },
65
- ),
66
- );
67
-
68
- const service = new ClineAccountService({
69
- apiBaseUrl: "https://api.cline.bot",
70
- getAuthToken: async () => "workos:token-123",
71
- fetchImpl: fetchImpl as unknown as typeof fetch,
72
- });
73
-
74
- const transactions = await service.fetchOrganizationUsageTransactions({
75
- organizationId: "org-1",
76
- });
77
-
78
- expect(fetchImpl).toHaveBeenCalledTimes(2);
79
- expect(String(fetchImpl.mock.calls[1][0])).toBe(
80
- "https://api.cline.bot/api/v1/organizations/org-1/members/member-9/usages",
81
- );
82
- expect(transactions).toEqual([{ id: "tx-1" }]);
83
- });
84
-
85
- it("fetches remote config with organizations list", async () => {
86
- const remoteConfigPayload = {
87
- organizationId: "org-1",
88
- value: '{"model":"claude-4"}',
89
- enabled: true,
90
- organizations: [
91
- { organizationId: "org-1", name: "Acme Corp" },
92
- { organizationId: "org-2", name: "Beta Inc" },
93
- ],
94
- };
95
-
96
- const fetchImpl = vi.fn(async (input: unknown) => {
97
- expect(String(input)).toBe(
98
- "https://api.cline.bot/api/v1/users/me/remote-config",
99
- );
100
- return new Response(
101
- JSON.stringify({ success: true, data: remoteConfigPayload }),
102
- { status: 200, headers: { "Content-Type": "application/json" } },
103
- );
104
- });
105
-
106
- const service = new ClineAccountService({
107
- apiBaseUrl: "https://api.cline.bot",
108
- getAuthToken: async () => "workos:token-123",
109
- fetchImpl: fetchImpl as unknown as typeof fetch,
110
- });
111
-
112
- const config = await service.fetchRemoteConfig();
113
- expect(config).toEqual(remoteConfigPayload);
114
- expect(config?.organizations).toHaveLength(2);
115
- expect(config?.organizations?.[0]).toEqual({
116
- organizationId: "org-1",
117
- name: "Acme Corp",
118
- });
119
- });
120
-
121
- it("fetches remote config with fallback org selected", async () => {
122
- const remoteConfigPayload = {
123
- organizationId: "org-fallback",
124
- value: '{"model":"claude-4"}',
125
- enabled: true,
126
- organizations: [{ organizationId: "org-fallback", name: "Fallback Org" }],
127
- };
128
-
129
- const fetchImpl = vi.fn(async () => {
130
- return new Response(
131
- JSON.stringify({ success: true, data: remoteConfigPayload }),
132
- { status: 200, headers: { "Content-Type": "application/json" } },
133
- );
134
- });
135
-
136
- const service = new ClineAccountService({
137
- apiBaseUrl: "https://api.cline.bot",
138
- getAuthToken: async () => "workos:token-123",
139
- fetchImpl: fetchImpl as unknown as typeof fetch,
140
- });
141
-
142
- const config = await service.fetchRemoteConfig();
143
- expect(config?.organizationId).toBe("org-fallback");
144
- expect(config?.organizations).toHaveLength(1);
145
- expect(config?.organizations?.[0]).toEqual({
146
- organizationId: "org-fallback",
147
- name: "Fallback Org",
148
- });
149
- });
150
-
151
- it("returns null when no org has remote config (data: null)", async () => {
152
- const fetchImpl = vi.fn(async () => {
153
- return new Response(JSON.stringify({ success: true, data: null }), {
154
- status: 200,
155
- headers: { "Content-Type": "application/json" },
156
- });
157
- });
158
-
159
- const service = new ClineAccountService({
160
- apiBaseUrl: "https://api.cline.bot",
161
- getAuthToken: async () => "workos:token-123",
162
- fetchImpl: fetchImpl as unknown as typeof fetch,
163
- });
164
-
165
- const config = await service.fetchRemoteConfig();
166
- expect(config).toBeNull();
167
- });
168
-
169
- it("switchAccount sends null org id for personal account", async () => {
170
- const fetchImpl = vi.fn(async (_input: unknown, init?: RequestInit) => {
171
- expect(init?.method).toBe("PUT");
172
- expect(init?.body).toBe(JSON.stringify({ organizationId: null }));
173
- return new Response(null, { status: 204 });
174
- });
175
-
176
- const service = new ClineAccountService({
177
- apiBaseUrl: "https://api.cline.bot",
178
- getAuthToken: async () => "workos:token-123",
179
- fetchImpl: fetchImpl as unknown as typeof fetch,
180
- });
181
-
182
- await service.switchAccount(undefined);
183
- expect(fetchImpl).toHaveBeenCalledTimes(1);
184
- });
185
- });