@clinebot/core 0.0.36 → 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 (228) hide show
  1. package/dist/ClineCore.d.ts +312 -3
  2. package/dist/ClineCore.d.ts.map +1 -1
  3. package/dist/account/cline-account-service.d.ts.map +1 -1
  4. package/dist/cron/cron-event-ingress.d.ts +38 -0
  5. package/dist/cron/cron-event-ingress.d.ts.map +1 -0
  6. package/dist/cron/cron-materializer.d.ts +36 -0
  7. package/dist/cron/cron-materializer.d.ts.map +1 -0
  8. package/dist/cron/cron-reconciler.d.ts +62 -0
  9. package/dist/cron/cron-reconciler.d.ts.map +1 -0
  10. package/dist/cron/cron-report-writer.d.ts +41 -0
  11. package/dist/cron/cron-report-writer.d.ts.map +1 -0
  12. package/dist/cron/cron-runner.d.ts +43 -0
  13. package/dist/cron/cron-runner.d.ts.map +1 -0
  14. package/dist/cron/cron-schema.d.ts +3 -0
  15. package/dist/cron/cron-schema.d.ts.map +1 -0
  16. package/dist/cron/cron-service.d.ts +57 -0
  17. package/dist/cron/cron-service.d.ts.map +1 -0
  18. package/dist/cron/cron-spec-parser.d.ts +27 -0
  19. package/dist/cron/cron-spec-parser.d.ts.map +1 -0
  20. package/dist/cron/cron-watcher.d.ts +23 -0
  21. package/dist/cron/cron-watcher.d.ts.map +1 -0
  22. package/dist/cron/scheduler.d.ts +3 -1
  23. package/dist/cron/scheduler.d.ts.map +1 -1
  24. package/dist/cron/sqlite-cron-store.d.ts +230 -0
  25. package/dist/cron/sqlite-cron-store.d.ts.map +1 -0
  26. package/dist/extensions/plugin/plugin-config-loader.d.ts +7 -1
  27. package/dist/extensions/plugin/plugin-config-loader.d.ts.map +1 -1
  28. package/dist/extensions/plugin/plugin-loader.d.ts +10 -6
  29. package/dist/extensions/plugin/plugin-loader.d.ts.map +1 -1
  30. package/dist/extensions/plugin/plugin-sandbox.d.ts +7 -1
  31. package/dist/extensions/plugin/plugin-sandbox.d.ts.map +1 -1
  32. package/dist/extensions/plugin-sandbox-bootstrap.js +236 -275
  33. package/dist/extensions/tools/constants.d.ts +1 -0
  34. package/dist/extensions/tools/constants.d.ts.map +1 -1
  35. package/dist/extensions/tools/definitions.d.ts +2 -3
  36. package/dist/extensions/tools/definitions.d.ts.map +1 -1
  37. package/dist/extensions/tools/executors/editor.d.ts.map +1 -1
  38. package/dist/extensions/tools/helpers.d.ts +1 -0
  39. package/dist/extensions/tools/helpers.d.ts.map +1 -1
  40. package/dist/extensions/tools/index.d.ts +1 -2
  41. package/dist/extensions/tools/index.d.ts.map +1 -1
  42. package/dist/extensions/tools/presets.d.ts +1 -1
  43. package/dist/extensions/tools/schemas.d.ts +25 -3
  44. package/dist/extensions/tools/schemas.d.ts.map +1 -1
  45. package/dist/extensions/tools/team/delegated-agent.d.ts +2 -2
  46. package/dist/extensions/tools/team/delegated-agent.d.ts.map +1 -1
  47. package/dist/extensions/tools/team/multi-agent.d.ts +7 -3
  48. package/dist/extensions/tools/team/multi-agent.d.ts.map +1 -1
  49. package/dist/extensions/tools/team/team-tools.d.ts.map +1 -1
  50. package/dist/extensions/tools/types.d.ts +0 -5
  51. package/dist/extensions/tools/types.d.ts.map +1 -1
  52. package/dist/hooks/hook-bridge.d.ts +118 -0
  53. package/dist/hooks/hook-bridge.d.ts.map +1 -0
  54. package/dist/hooks/hook-file-hooks.d.ts +2 -1
  55. package/dist/hooks/hook-file-hooks.d.ts.map +1 -1
  56. package/dist/hooks/hook-registry.d.ts +16 -0
  57. package/dist/hooks/hook-registry.d.ts.map +1 -0
  58. package/dist/hub/browser-websocket.d.ts.map +1 -1
  59. package/dist/hub/client.d.ts +7 -1
  60. package/dist/hub/client.d.ts.map +1 -1
  61. package/dist/hub/daemon-entry.js +721 -461
  62. package/dist/hub/daemon.d.ts.map +1 -1
  63. package/dist/hub/defaults.d.ts +8 -4
  64. package/dist/hub/defaults.d.ts.map +1 -1
  65. package/dist/hub/index.js +665 -415
  66. package/dist/hub/runtime-handlers.d.ts.map +1 -1
  67. package/dist/hub/server.d.ts +18 -0
  68. package/dist/hub/server.d.ts.map +1 -1
  69. package/dist/hub/session-client.d.ts +3 -0
  70. package/dist/hub/session-client.d.ts.map +1 -1
  71. package/dist/hub/start-shared-server.d.ts.map +1 -1
  72. package/dist/hub/ui-client.d.ts +1 -0
  73. package/dist/hub/ui-client.d.ts.map +1 -1
  74. package/dist/index.d.ts +9 -7
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +756 -467
  77. package/dist/llms/cline-recommended-models.d.ts +20 -0
  78. package/dist/llms/cline-recommended-models.d.ts.map +1 -0
  79. package/dist/llms/handler-factory.d.ts +16 -0
  80. package/dist/llms/handler-factory.d.ts.map +1 -0
  81. package/dist/llms/provider-defaults.d.ts.map +1 -1
  82. package/dist/llms/provider-settings.d.ts +45 -2
  83. package/dist/llms/provider-settings.d.ts.map +1 -1
  84. package/dist/llms/runtime-registry.d.ts.map +1 -1
  85. package/dist/runtime/agent-config-adapter.d.ts +148 -0
  86. package/dist/runtime/agent-config-adapter.d.ts.map +1 -0
  87. package/dist/runtime/agent-runtime-config-builder.d.ts +96 -0
  88. package/dist/runtime/agent-runtime-config-builder.d.ts.map +1 -0
  89. package/dist/runtime/history.d.ts +6 -0
  90. package/dist/runtime/history.d.ts.map +1 -1
  91. package/dist/runtime/host.d.ts.map +1 -1
  92. package/dist/runtime/loop-detection.d.ts +59 -0
  93. package/dist/runtime/loop-detection.d.ts.map +1 -0
  94. package/dist/runtime/mistake-tracker.d.ts +69 -0
  95. package/dist/runtime/mistake-tracker.d.ts.map +1 -0
  96. package/dist/runtime/runtime-builder.d.ts.map +1 -1
  97. package/dist/runtime/runtime-event-adapter.d.ts +102 -0
  98. package/dist/runtime/runtime-event-adapter.d.ts.map +1 -0
  99. package/dist/runtime/runtime-host.d.ts +28 -3
  100. package/dist/runtime/runtime-host.d.ts.map +1 -1
  101. package/dist/runtime/session-runtime-orchestrator.d.ts +261 -0
  102. package/dist/runtime/session-runtime-orchestrator.d.ts.map +1 -0
  103. package/dist/runtime/session-runtime.d.ts +16 -3
  104. package/dist/runtime/session-runtime.d.ts.map +1 -1
  105. package/dist/runtime/user-input-builder.d.ts +24 -0
  106. package/dist/runtime/user-input-builder.d.ts.map +1 -0
  107. package/dist/services/index.js +28 -0
  108. package/dist/services/local-runtime-bootstrap.d.ts.map +1 -1
  109. package/dist/services/plugin-tools.d.ts.map +1 -1
  110. package/dist/services/providers/local-provider-registry.d.ts +197 -21
  111. package/dist/services/providers/local-provider-registry.d.ts.map +1 -1
  112. package/dist/services/providers/local-provider-service.d.ts +3 -1
  113. package/dist/services/providers/local-provider-service.d.ts.map +1 -1
  114. package/dist/services/session-data.d.ts.map +1 -1
  115. package/dist/services/session-telemetry.d.ts +7 -2
  116. package/dist/services/session-telemetry.d.ts.map +1 -1
  117. package/dist/services/storage/file-team-store.d.ts.map +1 -1
  118. package/dist/services/storage/provider-settings-legacy-migration.d.ts.map +1 -1
  119. package/dist/services/storage/provider-settings-manager.d.ts +1 -0
  120. package/dist/services/storage/provider-settings-manager.d.ts.map +1 -1
  121. package/dist/services/storage/sqlite-team-store.d.ts.map +1 -1
  122. package/dist/session/conversation-store.d.ts +30 -0
  123. package/dist/session/conversation-store.d.ts.map +1 -0
  124. package/dist/session/message-builder.d.ts +65 -0
  125. package/dist/session/message-builder.d.ts.map +1 -0
  126. package/dist/session/session-manifest.d.ts +1 -1
  127. package/dist/transports/hub.d.ts +14 -3
  128. package/dist/transports/hub.d.ts.map +1 -1
  129. package/dist/transports/local.d.ts +14 -4
  130. package/dist/transports/local.d.ts.map +1 -1
  131. package/dist/transports/remote.d.ts.map +1 -1
  132. package/dist/types/chat-schema.d.ts +5 -5
  133. package/dist/types/config.d.ts +9 -0
  134. package/dist/types/config.d.ts.map +1 -1
  135. package/dist/types/events.d.ts +7 -6
  136. package/dist/types/events.d.ts.map +1 -1
  137. package/dist/types/provider-settings.d.ts +2 -2
  138. package/dist/types/provider-settings.d.ts.map +1 -1
  139. package/dist/types/session.d.ts +5 -2
  140. package/dist/types/session.d.ts.map +1 -1
  141. package/dist/types.d.ts +4 -4
  142. package/dist/types.d.ts.map +1 -1
  143. package/package.json +4 -4
  144. package/src/ClineCore.ts +691 -6
  145. package/src/account/cline-account-service.ts +44 -6
  146. package/src/cron/cron-event-ingress.ts +357 -0
  147. package/src/cron/cron-materializer.ts +97 -0
  148. package/src/cron/cron-reconciler.ts +241 -0
  149. package/src/cron/cron-report-writer.ts +153 -0
  150. package/src/cron/cron-runner.ts +495 -0
  151. package/src/cron/cron-schema.ts +127 -0
  152. package/src/cron/cron-service.ts +163 -0
  153. package/src/cron/cron-spec-parser.ts +489 -0
  154. package/src/cron/cron-watcher.ts +102 -0
  155. package/src/cron/index.ts +10 -0
  156. package/src/cron/scheduler.ts +141 -6
  157. package/src/cron/sqlite-cron-store.ts +1286 -0
  158. package/src/extensions/plugin/plugin-config-loader.ts +21 -1
  159. package/src/extensions/plugin/plugin-loader.ts +25 -9
  160. package/src/extensions/plugin/plugin-sandbox-bootstrap.ts +151 -1
  161. package/src/extensions/plugin/plugin-sandbox.ts +131 -7
  162. package/src/extensions/tools/constants.ts +2 -0
  163. package/src/extensions/tools/definitions.ts +31 -22
  164. package/src/extensions/tools/executors/editor.ts +4 -3
  165. package/src/extensions/tools/helpers.ts +24 -0
  166. package/src/extensions/tools/index.ts +1 -2
  167. package/src/extensions/tools/presets.ts +1 -1
  168. package/src/extensions/tools/schemas.ts +13 -18
  169. package/src/extensions/tools/team/delegated-agent.ts +8 -3
  170. package/src/extensions/tools/team/multi-agent.ts +135 -19
  171. package/src/extensions/tools/team/team-tools.ts +151 -91
  172. package/src/extensions/tools/types.ts +0 -6
  173. package/src/hooks/hook-bridge.ts +489 -0
  174. package/src/hooks/hook-file-hooks.ts +58 -3
  175. package/src/hooks/hook-registry.ts +257 -0
  176. package/src/hub/browser-websocket.ts +26 -4
  177. package/src/hub/client.ts +72 -13
  178. package/src/hub/daemon-entry.ts +35 -0
  179. package/src/hub/daemon.ts +117 -14
  180. package/src/hub/defaults.ts +39 -12
  181. package/src/hub/runtime-handlers.ts +4 -3
  182. package/src/hub/server.ts +506 -77
  183. package/src/hub/session-client.ts +43 -1
  184. package/src/hub/start-shared-server.ts +3 -0
  185. package/src/hub/ui-client.ts +4 -0
  186. package/src/index.ts +46 -1
  187. package/src/llms/cline-recommended-models.ts +167 -0
  188. package/src/llms/handler-factory.ts +56 -0
  189. package/src/llms/provider-defaults.ts +17 -1
  190. package/src/llms/provider-settings.ts +48 -1
  191. package/src/llms/runtime-registry.ts +1 -0
  192. package/src/runtime/agent-config-adapter.ts +636 -0
  193. package/src/runtime/agent-runtime-config-builder.ts +205 -0
  194. package/src/runtime/error-feedback.ts +142 -0
  195. package/src/runtime/history.ts +137 -0
  196. package/src/runtime/host.ts +22 -0
  197. package/src/runtime/loop-detection.ts +162 -0
  198. package/src/runtime/mistake-tracker.ts +221 -0
  199. package/src/runtime/runtime-builder.ts +61 -5
  200. package/src/runtime/runtime-event-adapter.ts +412 -0
  201. package/src/runtime/runtime-host.ts +45 -1
  202. package/src/runtime/session-runtime-orchestrator.ts +1253 -0
  203. package/src/runtime/session-runtime.ts +16 -2
  204. package/src/runtime/user-input-builder.ts +167 -0
  205. package/src/services/local-runtime-bootstrap.ts +128 -22
  206. package/src/services/plugin-tools.ts +1 -0
  207. package/src/services/providers/local-provider-registry.ts +273 -57
  208. package/src/services/providers/local-provider-service.ts +67 -7
  209. package/src/services/session-data.ts +16 -14
  210. package/src/services/session-telemetry.ts +6 -15
  211. package/src/services/storage/file-team-store.ts +1 -5
  212. package/src/services/storage/provider-settings-legacy-migration.ts +8 -47
  213. package/src/services/storage/provider-settings-manager.ts +16 -1
  214. package/src/services/storage/sqlite-team-store.ts +1 -5
  215. package/src/session/conversation-store.ts +77 -0
  216. package/src/session/message-builder.ts +941 -0
  217. package/src/transports/hub.ts +458 -33
  218. package/src/transports/local.ts +296 -65
  219. package/src/transports/remote.ts +1 -0
  220. package/src/types/config.ts +9 -0
  221. package/src/types/events.ts +8 -6
  222. package/src/types/index.ts +3 -0
  223. package/src/types/provider-settings.ts +8 -1
  224. package/src/types/session.ts +5 -2
  225. package/src/types.ts +15 -1
  226. package/dist/cron/index.d.ts +0 -6
  227. package/dist/cron/index.d.ts.map +0 -1
  228. package/dist/services/telemetry/index.js +0 -28
@@ -1,4 +1,4 @@
1
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
1
+ import { existsSync, readFileSync } from "node:fs";
2
2
  import { dirname, join } from "node:path";
3
3
  import * as LlmsModels from "@clinebot/llms";
4
4
  import { resolveClineDataDir } from "@clinebot/shared/storage";
@@ -7,6 +7,11 @@ import {
7
7
  type ProviderSettings,
8
8
  ProviderSettingsSchemaTyped as ProviderSettingsSchema,
9
9
  } from "../../types/provider-settings";
10
+ import {
11
+ readModelsFileSync,
12
+ type StoredModelsFile,
13
+ writeModelsFileSync,
14
+ } from "../providers/local-provider-registry";
10
15
  import type { ProviderSettingsManager } from "./provider-settings-manager";
11
16
 
12
17
  type LegacyMode = "plan" | "act";
@@ -152,27 +157,6 @@ interface LegacyProviderStorage {
152
157
  secrets: LegacySecrets;
153
158
  }
154
159
 
155
- type StoredModelsFile = {
156
- version: 1;
157
- providers: Record<
158
- string,
159
- {
160
- provider: {
161
- name: string;
162
- baseUrl: string;
163
- defaultModelId?: string;
164
- };
165
- models: Record<
166
- string,
167
- {
168
- id: string;
169
- name: string;
170
- }
171
- >;
172
- }
173
- >;
174
- };
175
-
176
160
  const LEGACY_OPENAI_COMPATIBLE_PROVIDER_ID = "openai";
177
161
 
178
162
  export interface MigrateLegacyProviderSettingsOptions {
@@ -256,29 +240,6 @@ function readJsonObject<T extends object>(filePath: string): T | undefined {
256
240
  return undefined;
257
241
  }
258
242
 
259
- function readModelsFile(filePath: string): StoredModelsFile {
260
- const parsed = readJsonObject<StoredModelsFile>(filePath);
261
- if (
262
- parsed?.version === 1 &&
263
- parsed.providers &&
264
- typeof parsed.providers === "object"
265
- ) {
266
- return parsed;
267
- }
268
- return {
269
- version: 1,
270
- providers: {},
271
- };
272
- }
273
-
274
- function writeModelsFile(filePath: string, state: StoredModelsFile): void {
275
- const dir = dirname(filePath);
276
- if (!existsSync(dir)) {
277
- mkdirSync(dir, { recursive: true });
278
- }
279
- writeFileSync(filePath, `${JSON.stringify(state, null, 2)}\n`, "utf8");
280
- }
281
-
282
243
  function resolveLegacyStorage(
283
244
  options: MigrateLegacyProviderSettingsOptions,
284
245
  ): LegacyProviderStorage | undefined {
@@ -760,7 +721,7 @@ export function migrateLegacyProviderSettings(
760
721
  dirname(options.providerSettingsManager.getFilePath()),
761
722
  "models.json",
762
723
  );
763
- const modelsState = readModelsFile(modelsPath);
724
+ const modelsState = readModelsFileSync(modelsPath);
764
725
  let addedCustomProviderCount = 0;
765
726
 
766
727
  for (const legacyProviderId of candidates) {
@@ -817,7 +778,7 @@ export function migrateLegacyProviderSettings(
817
778
 
818
779
  options.providerSettingsManager.write(next);
819
780
  if (addedCustomProviderCount > 0) {
820
- writeModelsFile(modelsPath, modelsState);
781
+ writeModelsFileSync(modelsPath, modelsState);
821
782
  }
822
783
 
823
784
  return {
@@ -1,6 +1,7 @@
1
1
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
2
  import { basename, dirname } from "node:path";
3
3
  import { resolveProviderSettingsPath } from "@clinebot/shared/storage";
4
+ import { getLiveModelsCatalog } from "../..";
4
5
  import {
5
6
  emptyStoredProviderSettings,
6
7
  type ProviderConfig,
@@ -11,7 +12,10 @@ import {
11
12
  StoredProviderSettingsSchema,
12
13
  toProviderConfig,
13
14
  } from "../../types/provider-settings";
14
- import { ensureCustomProvidersLoadedSync } from "../providers/local-provider-registry";
15
+ import {
16
+ ensureCustomProvidersLoadedSync,
17
+ registerConfiguredProvidersFromSettings,
18
+ } from "../providers/local-provider-registry";
15
19
  import { migrateLegacyProviderSettings } from "./provider-settings-legacy-migration";
16
20
 
17
21
  function nowIso(): string {
@@ -53,6 +57,7 @@ export class ProviderSettingsManager {
53
57
  });
54
58
  }
55
59
  ensureCustomProvidersLoadedSync(this);
60
+ registerConfiguredProvidersFromSettings(this.read());
56
61
  }
57
62
 
58
63
  getFilePath(): string {
@@ -69,6 +74,7 @@ export class ProviderSettingsManager {
69
74
  const parsed = JSON.parse(raw) as unknown;
70
75
  const result = StoredProviderSettingsSchema.safeParse(parsed);
71
76
  if (result.success) {
77
+ registerConfiguredProvidersFromSettings(result.data);
72
78
  return result.data;
73
79
  }
74
80
  } catch {
@@ -89,6 +95,7 @@ export class ProviderSettingsManager {
89
95
  `${JSON.stringify(normalized, null, 2)}\n`,
90
96
  "utf8",
91
97
  );
98
+ registerConfiguredProvidersFromSettings(normalized);
92
99
  }
93
100
 
94
101
  saveProviderSettings(
@@ -149,4 +156,12 @@ export class ProviderSettingsManager {
149
156
  }
150
157
  return toProviderConfig(settings);
151
158
  }
159
+
160
+ async refreshCatalog(): Promise<void> {
161
+ try {
162
+ await getLiveModelsCatalog({});
163
+ } catch {
164
+ // Ignore errors
165
+ }
166
+ }
152
167
  }
@@ -359,14 +359,10 @@ export class SqliteTeamStore implements TeamStore {
359
359
  const teammates = snapshotRow
360
360
  ? parseTeammatesJson(snapshotRow.teammates_json)
361
361
  : [];
362
- const interruptedRunIds = this.markInProgressRunsInterrupted(
363
- safeTeamName,
364
- "runtime_recovered",
365
- );
366
362
  return {
367
363
  state,
368
364
  teammates,
369
- interruptedRunIds,
365
+ interruptedRunIds: [],
370
366
  };
371
367
  }
372
368
 
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Per-session conversation transcript store.
3
+ *
4
+ * @see PLAN.md §3.1 — moved from `packages/agents/src/runtime/conversation-store.ts`.
5
+ * @see PLAN.md §3.2.3 — public surface of `ConversationStore`.
6
+ *
7
+ * Pure port of the old agents implementation. Owns the message list,
8
+ * conversation id, and "session started" gate that today's `Agent`
9
+ * class uses to decide when to fire `session_start` hooks.
10
+ */
11
+
12
+ import type { MessageWithMetadata } from "@clinebot/shared";
13
+
14
+ /** Generate a fresh conversation id. Exported for reuse by `SessionRuntime`. */
15
+ export function createConversationId(): string {
16
+ return `conv_${Date.now()}_${Math.random().toString(36).slice(2, 9)}`;
17
+ }
18
+
19
+ export class ConversationStore {
20
+ private messages: MessageWithMetadata[] = [];
21
+ private conversationId = createConversationId();
22
+ private sessionStarted = false;
23
+
24
+ constructor(initialMessages?: readonly MessageWithMetadata[]) {
25
+ if ((initialMessages?.length ?? 0) > 0) {
26
+ this.restore(initialMessages ?? []);
27
+ }
28
+ }
29
+
30
+ getConversationId(): string {
31
+ return this.conversationId;
32
+ }
33
+
34
+ getMessages(): MessageWithMetadata[] {
35
+ return [...this.messages];
36
+ }
37
+
38
+ appendMessage(message: MessageWithMetadata): void {
39
+ this.messages.push(message);
40
+ }
41
+
42
+ appendMessages(messages: readonly MessageWithMetadata[]): void {
43
+ if (messages.length === 0) {
44
+ return;
45
+ }
46
+ this.messages.push(...messages);
47
+ }
48
+
49
+ replaceMessages(messages: readonly MessageWithMetadata[]): void {
50
+ this.messages = [...messages];
51
+ }
52
+
53
+ resetForRun(): void {
54
+ this.messages = [];
55
+ this.conversationId = createConversationId();
56
+ this.sessionStarted = false;
57
+ }
58
+
59
+ clearHistory(): void {
60
+ this.messages = [];
61
+ this.conversationId = createConversationId();
62
+ this.sessionStarted = false;
63
+ }
64
+
65
+ restore(messages: readonly MessageWithMetadata[]): void {
66
+ this.messages = [...messages];
67
+ this.sessionStarted = false;
68
+ }
69
+
70
+ isSessionStarted(): boolean {
71
+ return this.sessionStarted;
72
+ }
73
+
74
+ markSessionStarted(): void {
75
+ this.sessionStarted = true;
76
+ }
77
+ }