@codemieai/code 0.15.0 → 0.15.2

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 (231) hide show
  1. package/CHANGELOG.md +75 -0
  2. package/bin/codemie.js +52 -0
  3. package/dist/agents/core/AgentCLI.d.ts.map +1 -1
  4. package/dist/agents/core/AgentCLI.js +6 -0
  5. package/dist/agents/core/AgentCLI.js.map +1 -1
  6. package/dist/agents/core/BaseAgentAdapter.d.ts +25 -0
  7. package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
  8. package/dist/agents/core/BaseAgentAdapter.js +137 -127
  9. package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
  10. package/dist/agents/core/session/BaseProcessor.d.ts +10 -0
  11. package/dist/agents/core/session/BaseProcessor.d.ts.map +1 -1
  12. package/dist/agents/core/session/BaseProcessor.js +11 -1
  13. package/dist/agents/core/session/BaseProcessor.js.map +1 -1
  14. package/dist/agents/core/session/BaseSessionAdapter.d.ts +4 -0
  15. package/dist/agents/core/session/BaseSessionAdapter.d.ts.map +1 -1
  16. package/dist/agents/core/types.d.ts +11 -5
  17. package/dist/agents/core/types.d.ts.map +1 -1
  18. package/dist/agents/plugins/claude/claude.models.d.ts.map +1 -1
  19. package/dist/agents/plugins/claude/claude.models.js +12 -11
  20. package/dist/agents/plugins/claude/claude.models.js.map +1 -1
  21. package/dist/agents/plugins/claude/claude.plugin.d.ts +3 -3
  22. package/dist/agents/plugins/claude/claude.plugin.d.ts.map +1 -1
  23. package/dist/agents/plugins/claude/claude.plugin.js +26 -13
  24. package/dist/agents/plugins/claude/claude.plugin.js.map +1 -1
  25. package/dist/agents/plugins/claude/claude.session.d.ts.map +1 -1
  26. package/dist/agents/plugins/claude/claude.session.js +27 -1
  27. package/dist/agents/plugins/claude/claude.session.js.map +1 -1
  28. package/dist/agents/plugins/claude/plugin/.claude-plugin/plugin.json +1 -1
  29. package/dist/agents/plugins/claude/plugin/hooks/hooks.json +7 -7
  30. package/dist/agents/plugins/codex/codex.plugin.d.ts.map +1 -1
  31. package/dist/agents/plugins/codex/codex.plugin.js +7 -6
  32. package/dist/agents/plugins/codex/codex.plugin.js.map +1 -1
  33. package/dist/agents/plugins/copilot-cli/copilot-cli.plugin.d.ts.map +1 -1
  34. package/dist/agents/plugins/copilot-cli/copilot-cli.plugin.js +5 -2
  35. package/dist/agents/plugins/copilot-cli/copilot-cli.plugin.js.map +1 -1
  36. package/dist/agents/plugins/gemini/extension/gemini-extension.json +1 -1
  37. package/dist/agents/plugins/gemini/extension/hooks/hooks.json +7 -7
  38. package/dist/agents/plugins/gemini/gemini.plugin.d.ts.map +1 -1
  39. package/dist/agents/plugins/gemini/gemini.plugin.js +7 -6
  40. package/dist/agents/plugins/gemini/gemini.plugin.js.map +1 -1
  41. package/dist/agents/plugins/gemini/gemini.session-adapter.d.ts +1 -1
  42. package/dist/agents/plugins/gemini/gemini.session-adapter.d.ts.map +1 -1
  43. package/dist/agents/plugins/gemini/gemini.session-adapter.js +155 -16
  44. package/dist/agents/plugins/gemini/gemini.session-adapter.js.map +1 -1
  45. package/dist/agents/plugins/gemini/session/processors/gemini.metrics-processor.d.ts.map +1 -1
  46. package/dist/agents/plugins/gemini/session/processors/gemini.metrics-processor.js +77 -31
  47. package/dist/agents/plugins/gemini/session/processors/gemini.metrics-processor.js.map +1 -1
  48. package/dist/agents/plugins/gemini/session/utils/turn-detector.d.ts +1 -1
  49. package/dist/agents/plugins/gemini/session/utils/turn-detector.d.ts.map +1 -1
  50. package/dist/agents/plugins/gemini/session/utils/turn-detector.js +7 -1
  51. package/dist/agents/plugins/gemini/session/utils/turn-detector.js.map +1 -1
  52. package/dist/agents/plugins/kimi/kimi.hook-config-injector.d.ts.map +1 -1
  53. package/dist/agents/plugins/kimi/kimi.hook-config-injector.js +26 -5
  54. package/dist/agents/plugins/kimi/kimi.hook-config-injector.js.map +1 -1
  55. package/dist/agents/plugins/kimi/kimi.plugin.d.ts.map +1 -1
  56. package/dist/agents/plugins/kimi/kimi.plugin.js +5 -2
  57. package/dist/agents/plugins/kimi/kimi.plugin.js.map +1 -1
  58. package/dist/cli/commands/analytics/cost/claude-dispatch-allocation.d.ts +6 -0
  59. package/dist/cli/commands/analytics/cost/claude-dispatch-allocation.d.ts.map +1 -0
  60. package/dist/cli/commands/analytics/cost/claude-dispatch-allocation.js +115 -0
  61. package/dist/cli/commands/analytics/cost/claude-dispatch-allocation.js.map +1 -0
  62. package/dist/cli/commands/analytics/cost/claude-lifecycle.d.ts +6 -0
  63. package/dist/cli/commands/analytics/cost/claude-lifecycle.d.ts.map +1 -0
  64. package/dist/cli/commands/analytics/cost/claude-lifecycle.js +107 -0
  65. package/dist/cli/commands/analytics/cost/claude-lifecycle.js.map +1 -0
  66. package/dist/cli/commands/analytics/cost/claude-native.d.ts +54 -0
  67. package/dist/cli/commands/analytics/cost/claude-native.d.ts.map +1 -0
  68. package/dist/cli/commands/analytics/cost/claude-native.js +14 -0
  69. package/dist/cli/commands/analytics/cost/claude-native.js.map +1 -0
  70. package/dist/cli/commands/analytics/cost/claude-ownership.d.ts +23 -0
  71. package/dist/cli/commands/analytics/cost/claude-ownership.d.ts.map +1 -0
  72. package/dist/cli/commands/analytics/cost/claude-ownership.js +99 -0
  73. package/dist/cli/commands/analytics/cost/claude-ownership.js.map +1 -0
  74. package/dist/cli/commands/analytics/cost/claude-trace.d.ts +28 -0
  75. package/dist/cli/commands/analytics/cost/claude-trace.d.ts.map +1 -0
  76. package/dist/cli/commands/analytics/cost/claude-trace.js +120 -0
  77. package/dist/cli/commands/analytics/cost/claude-trace.js.map +1 -0
  78. package/dist/cli/commands/analytics/cost/cost-enricher.d.ts +1 -1
  79. package/dist/cli/commands/analytics/cost/cost-enricher.d.ts.map +1 -1
  80. package/dist/cli/commands/analytics/cost/cost-enricher.js +34 -43
  81. package/dist/cli/commands/analytics/cost/cost-enricher.js.map +1 -1
  82. package/dist/cli/commands/analytics/cost/dispatch-allocation.d.ts +18 -0
  83. package/dist/cli/commands/analytics/cost/dispatch-allocation.d.ts.map +1 -0
  84. package/dist/cli/commands/analytics/cost/dispatch-allocation.js +53 -0
  85. package/dist/cli/commands/analytics/cost/dispatch-allocation.js.map +1 -0
  86. package/dist/cli/commands/analytics/cost/dispatch-extractor.d.ts +8 -13
  87. package/dist/cli/commands/analytics/cost/dispatch-extractor.d.ts.map +1 -1
  88. package/dist/cli/commands/analytics/cost/dispatch-extractor.js +131 -69
  89. package/dist/cli/commands/analytics/cost/dispatch-extractor.js.map +1 -1
  90. package/dist/cli/commands/analytics/cost/types.d.ts +39 -0
  91. package/dist/cli/commands/analytics/cost/types.d.ts.map +1 -1
  92. package/dist/cli/commands/analytics/cost/types.js.map +1 -1
  93. package/dist/cli/commands/analytics/cost/usage-readers.d.ts +2 -0
  94. package/dist/cli/commands/analytics/cost/usage-readers.d.ts.map +1 -1
  95. package/dist/cli/commands/analytics/cost/usage-readers.js +14 -3
  96. package/dist/cli/commands/analytics/cost/usage-readers.js.map +1 -1
  97. package/dist/cli/commands/analytics/data-loader.d.ts +13 -0
  98. package/dist/cli/commands/analytics/data-loader.d.ts.map +1 -1
  99. package/dist/cli/commands/analytics/data-loader.js +6 -0
  100. package/dist/cli/commands/analytics/data-loader.js.map +1 -1
  101. package/dist/cli/commands/analytics/native-loader.d.ts +1 -1
  102. package/dist/cli/commands/analytics/native-loader.d.ts.map +1 -1
  103. package/dist/cli/commands/analytics/native-loader.js +25 -3
  104. package/dist/cli/commands/analytics/native-loader.js.map +1 -1
  105. package/dist/cli/commands/analytics/otel-loader.d.ts.map +1 -1
  106. package/dist/cli/commands/analytics/otel-loader.js +5 -0
  107. package/dist/cli/commands/analytics/otel-loader.js.map +1 -1
  108. package/dist/cli/commands/analytics/report/client/app.js +302 -125
  109. package/dist/cli/commands/analytics/report/payload-builder.d.ts.map +1 -1
  110. package/dist/cli/commands/analytics/report/payload-builder.js +64 -13
  111. package/dist/cli/commands/analytics/report/payload-builder.js.map +1 -1
  112. package/dist/cli/commands/analytics/report/template.html +50 -2
  113. package/dist/cli/commands/analytics/report/types.d.ts +16 -0
  114. package/dist/cli/commands/analytics/report/types.d.ts.map +1 -1
  115. package/dist/cli/commands/doctor/checks/AgentsCheck.d.ts +6 -0
  116. package/dist/cli/commands/doctor/checks/AgentsCheck.d.ts.map +1 -1
  117. package/dist/cli/commands/doctor/checks/AgentsCheck.js +37 -33
  118. package/dist/cli/commands/doctor/checks/AgentsCheck.js.map +1 -1
  119. package/dist/cli/commands/doctor/index.d.ts.map +1 -1
  120. package/dist/cli/commands/doctor/index.js +11 -0
  121. package/dist/cli/commands/doctor/index.js.map +1 -1
  122. package/dist/cli/commands/hook.d.ts.map +1 -1
  123. package/dist/cli/commands/hook.js +72 -12
  124. package/dist/cli/commands/hook.js.map +1 -1
  125. package/dist/cli/commands/install.d.ts.map +1 -1
  126. package/dist/cli/commands/install.js +5 -9
  127. package/dist/cli/commands/install.js.map +1 -1
  128. package/dist/cli/commands/mcp/index.d.ts.map +1 -1
  129. package/dist/cli/commands/mcp/index.js +68 -17
  130. package/dist/cli/commands/mcp/index.js.map +1 -1
  131. package/dist/cli/commands/proxy/connectors/desktop.d.ts +13 -9
  132. package/dist/cli/commands/proxy/connectors/desktop.d.ts.map +1 -1
  133. package/dist/cli/commands/proxy/connectors/desktop.js +27 -13
  134. package/dist/cli/commands/proxy/connectors/desktop.js.map +1 -1
  135. package/dist/cli/commands/setup.d.ts +0 -16
  136. package/dist/cli/commands/setup.d.ts.map +1 -1
  137. package/dist/cli/commands/setup.js +79 -149
  138. package/dist/cli/commands/setup.js.map +1 -1
  139. package/dist/cli/commands/tips.d.ts +10 -0
  140. package/dist/cli/commands/tips.d.ts.map +1 -0
  141. package/dist/cli/commands/tips.js +142 -0
  142. package/dist/cli/commands/tips.js.map +1 -0
  143. package/dist/cli/commands/update.d.ts.map +1 -1
  144. package/dist/cli/commands/update.js +12 -10
  145. package/dist/cli/commands/update.js.map +1 -1
  146. package/dist/cli/commands/whatsnew.d.ts +6 -0
  147. package/dist/cli/commands/whatsnew.d.ts.map +1 -0
  148. package/dist/cli/commands/whatsnew.js +37 -0
  149. package/dist/cli/commands/whatsnew.js.map +1 -0
  150. package/dist/cli/first-time.d.ts.map +1 -1
  151. package/dist/cli/first-time.js +4 -0
  152. package/dist/cli/first-time.js.map +1 -1
  153. package/dist/cli/index.js +4 -0
  154. package/dist/cli/index.js.map +1 -1
  155. package/dist/providers/core/codemie-auth-helpers.d.ts +1 -1
  156. package/dist/providers/core/codemie-auth-helpers.d.ts.map +1 -1
  157. package/dist/providers/core/codemie-auth-helpers.js +3 -3
  158. package/dist/providers/core/codemie-auth-helpers.js.map +1 -1
  159. package/dist/providers/core/types.d.ts +16 -28
  160. package/dist/providers/core/types.d.ts.map +1 -1
  161. package/dist/providers/core/types.js.map +1 -1
  162. package/dist/providers/integration/setup-ui.d.ts +5 -3
  163. package/dist/providers/integration/setup-ui.d.ts.map +1 -1
  164. package/dist/providers/integration/setup-ui.js +6 -4
  165. package/dist/providers/integration/setup-ui.js.map +1 -1
  166. package/dist/providers/plugins/litellm/litellm.setup-steps.d.ts.map +1 -1
  167. package/dist/providers/plugins/litellm/litellm.setup-steps.js +4 -23
  168. package/dist/providers/plugins/litellm/litellm.setup-steps.js.map +1 -1
  169. package/dist/providers/plugins/ollama/ollama.library.d.ts +37 -0
  170. package/dist/providers/plugins/ollama/ollama.library.d.ts.map +1 -0
  171. package/dist/providers/plugins/ollama/ollama.library.js +105 -0
  172. package/dist/providers/plugins/ollama/ollama.library.js.map +1 -0
  173. package/dist/providers/plugins/ollama/ollama.models.d.ts +3 -1
  174. package/dist/providers/plugins/ollama/ollama.models.d.ts.map +1 -1
  175. package/dist/providers/plugins/ollama/ollama.models.js +5 -39
  176. package/dist/providers/plugins/ollama/ollama.models.js.map +1 -1
  177. package/dist/providers/plugins/ollama/ollama.setup-steps.d.ts.map +1 -1
  178. package/dist/providers/plugins/ollama/ollama.setup-steps.js +196 -6
  179. package/dist/providers/plugins/ollama/ollama.setup-steps.js.map +1 -1
  180. package/dist/providers/plugins/ollama/ollama.template.d.ts.map +1 -1
  181. package/dist/providers/plugins/ollama/ollama.template.js +12 -32
  182. package/dist/providers/plugins/ollama/ollama.template.js.map +1 -1
  183. package/dist/providers/plugins/sso/session/BaseProcessor.d.ts +4 -0
  184. package/dist/providers/plugins/sso/session/BaseProcessor.d.ts.map +1 -1
  185. package/dist/providers/plugins/sso/session/SessionSyncer.d.ts +12 -0
  186. package/dist/providers/plugins/sso/session/SessionSyncer.d.ts.map +1 -1
  187. package/dist/providers/plugins/sso/session/SessionSyncer.js +89 -0
  188. package/dist/providers/plugins/sso/session/SessionSyncer.js.map +1 -1
  189. package/dist/providers/plugins/sso/session/processors/conversations/syncProcessor.d.ts.map +1 -1
  190. package/dist/providers/plugins/sso/session/processors/conversations/syncProcessor.js +75 -41
  191. package/dist/providers/plugins/sso/session/processors/conversations/syncProcessor.js.map +1 -1
  192. package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.d.ts.map +1 -1
  193. package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.js +23 -4
  194. package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.js.map +1 -1
  195. package/dist/providers/plugins/sso/sso.auth.d.ts.map +1 -1
  196. package/dist/providers/plugins/sso/sso.auth.js +6 -2
  197. package/dist/providers/plugins/sso/sso.auth.js.map +1 -1
  198. package/dist/providers/plugins/sso/sso.setup-steps.d.ts.map +1 -1
  199. package/dist/providers/plugins/sso/sso.setup-steps.js +22 -39
  200. package/dist/providers/plugins/sso/sso.setup-steps.js.map +1 -1
  201. package/dist/utils/cli-updater.d.ts.map +1 -1
  202. package/dist/utils/cli-updater.js +2 -8
  203. package/dist/utils/cli-updater.js.map +1 -1
  204. package/dist/utils/env.d.ts +12 -0
  205. package/dist/utils/env.d.ts.map +1 -0
  206. package/dist/utils/env.js +18 -0
  207. package/dist/utils/env.js.map +1 -0
  208. package/dist/utils/hook-command.d.ts +6 -0
  209. package/dist/utils/hook-command.d.ts.map +1 -1
  210. package/dist/utils/hook-command.js +52 -6
  211. package/dist/utils/hook-command.js.map +1 -1
  212. package/dist/utils/pricing.json +38 -6
  213. package/dist/utils/security.d.ts +28 -2
  214. package/dist/utils/security.d.ts.map +1 -1
  215. package/dist/utils/security.js +84 -24
  216. package/dist/utils/security.js.map +1 -1
  217. package/dist/utils/tips.d.ts +103 -0
  218. package/dist/utils/tips.d.ts.map +1 -0
  219. package/dist/utils/tips.js +221 -0
  220. package/dist/utils/tips.js.map +1 -0
  221. package/dist/utils/version-warnings.d.ts +41 -0
  222. package/dist/utils/version-warnings.d.ts.map +1 -0
  223. package/dist/utils/version-warnings.js +93 -0
  224. package/dist/utils/version-warnings.js.map +1 -0
  225. package/dist/utils/whatsnew.d.ts +83 -0
  226. package/dist/utils/whatsnew.d.ts.map +1 -0
  227. package/dist/utils/whatsnew.js +200 -0
  228. package/dist/utils/whatsnew.js.map +1 -0
  229. package/package.json +5 -10
  230. package/scripts/release.sh +9 -3
  231. package/src/utils/tips.json +806 -0
@@ -9,6 +9,32 @@
9
9
  import { ProviderRegistry } from '../../core/registry.js';
10
10
  import { OllamaTemplate } from './ollama.template.js';
11
11
  import { toCloudOffloadTag } from './ollama.models.js';
12
+ /**
13
+ * Split a base model slug (no tag) into its family root and version, e.g.
14
+ * "qwen3.8" -> { family: "qwen", version: [3, 8] }, "glm-5.1" -> { family:
15
+ * "glm", version: [5, 1] }. Slugs with no trailing version number (e.g.
16
+ * "gpt-oss", or tier variants like "nemotron-3-super") get their own
17
+ * singleton family - only sequential releases of the same lineage collapse
18
+ * together, not parallel size/tier variants.
19
+ */
20
+ function familyAndVersion(slug) {
21
+ const match = slug.match(/^(.*?)-?(\d+(?:\.\d+)*)$/);
22
+ if (!match) {
23
+ return { family: slug, version: [] };
24
+ }
25
+ return { family: match[1], version: match[2].split('.').map(Number) };
26
+ }
27
+ // Descending comparator: negative means `a` is the newer/higher version.
28
+ function compareVersionsDesc(a, b) {
29
+ const len = Math.max(a.length, b.length);
30
+ for (let i = 0; i < len; i++) {
31
+ const diff = (b[i] ?? 0) - (a[i] ?? 0);
32
+ if (diff !== 0) {
33
+ return diff;
34
+ }
35
+ }
36
+ return 0;
37
+ }
12
38
  /**
13
39
  * Ollama setup steps implementation
14
40
  *
@@ -126,9 +152,10 @@ export const OllamaSetupSteps = {
126
152
  /**
127
153
  * Fetch available models from Ollama
128
154
  *
129
- * Offers installed local models, the template's curated recommendations,
130
- * and the ollama.com cloud catalog (capability filtering happens in the
131
- * selection UI via modelMetadata).
155
+ * Offers installed local models and the ollama.com cloud catalog - both
156
+ * live data, no hardcoded list. Anything beyond that narrow set is found
157
+ * via searchModel() below, which searches Ollama's full model library on
158
+ * demand.
132
159
  *
133
160
  * For local setups (daemon at localhost) cloud catalog entries are mapped
134
161
  * to their local cloud-offload tag (`gpt-oss:120b` -> `gpt-oss:120b-cloud`,
@@ -152,13 +179,176 @@ export const OllamaSetupSteps = {
152
179
  const ids = models.map(m => !isCloudHost && m.metadata?.origin === 'cloud'
153
180
  ? toCloudOffloadTag(m.id)
154
181
  : m.id);
155
- return [...new Set([...ids, ...OllamaTemplate.recommendedModels])];
182
+ return [...new Set(ids)];
183
+ }
184
+ catch {
185
+ // If fetch fails, return empty so setup prompts the user to search or
186
+ // enter a model manually instead of showing a static, possibly stale list.
187
+ return [];
188
+ }
189
+ },
190
+ /**
191
+ * Mark up to 3 of the fetched models as recommended, using live signals
192
+ * instead of a hardcoded list:
193
+ * - Fits the current machine (cloud models always do - they run on
194
+ * ollama.com; local models are checked against their real installed
195
+ * size vs. this machine's usable RAM).
196
+ * - Supports tools/function-calling (most coding agents require it -
197
+ * see the "tools" capability badge on the model's ollama.com page).
198
+ * - Ranked by real-world popularity (download count on that same page) -
199
+ * but grouped by model lineage first (e.g. qwen3.5/3.6/3.8 all count
200
+ * toward one "qwen" score) so an older release's download lead doesn't
201
+ * bury its own newer version; the top 3 lineages are returned, each
202
+ * represented by its most recent version (qwen3.5 may be the most
203
+ * downloaded, but qwen3.8 - the newest - is what gets recommended).
204
+ */
205
+ async getRecommendedModels(models, credentials) {
206
+ if (models.length === 0) {
207
+ return [];
208
+ }
209
+ const { OllamaModelProxy } = await import('./ollama.models.js');
210
+ const { getOllamaModelDetails } = await import('./ollama.library.js');
211
+ const { detectSystemCapabilities } = await import('../../../utils/hardware.js');
212
+ const modelProxy = new OllamaModelProxy(credentials.baseUrl, credentials.apiKey);
213
+ // Real installed sizes, for the environment-fit check below.
214
+ const sizeById = new Map();
215
+ try {
216
+ for (const model of await modelProxy.listModels()) {
217
+ if (model.size) {
218
+ sizeById.set(model.id, model.size);
219
+ }
220
+ }
156
221
  }
157
222
  catch {
158
- // If fetch fails, return empty so setup prompts the user to enter a
159
- // model manually instead of showing a static, possibly stale list.
223
+ // No local daemon reachable - every remaining id is a cloud one anyway.
224
+ }
225
+ let usableMemoryGb = Infinity;
226
+ try {
227
+ usableMemoryGb = (await detectSystemCapabilities()).usableMemoryGb;
228
+ }
229
+ catch {
230
+ // Can't probe hardware - don't let that block recommendations.
231
+ }
232
+ const isCloudHost = (credentials.baseUrl || '').includes('ollama.com');
233
+ const isCloudId = (id) => isCloudHost || id.endsWith('-cloud') || id.endsWith(':cloud');
234
+ const fitsEnvironment = (id) => {
235
+ if (isCloudId(id)) {
236
+ return true;
237
+ }
238
+ const bytes = sizeById.get(id);
239
+ if (!bytes) {
240
+ return true; // No size data - don't penalize for missing info
241
+ }
242
+ return bytes / 1024 ** 3 <= usableMemoryGb;
243
+ };
244
+ // Bound worst case (e.g. many locally-installed models) before the
245
+ // per-model network fetch below.
246
+ const candidates = models.filter(fitsEnvironment).slice(0, 25);
247
+ if (candidates.length === 0) {
160
248
  return [];
161
249
  }
250
+ const scored = await Promise.all(candidates.map(async (id) => {
251
+ const baseSlug = id.split(':')[0];
252
+ try {
253
+ const details = await getOllamaModelDetails(baseSlug);
254
+ return { id, ...details };
255
+ }
256
+ catch {
257
+ return { id, downloads: 0, supportsTools: false };
258
+ }
259
+ }));
260
+ const families = new Map();
261
+ for (const s of scored.filter(s => s.supportsTools)) {
262
+ const { family, version } = familyAndVersion(s.id.split(':')[0]);
263
+ const existing = families.get(family);
264
+ if (!existing) {
265
+ families.set(family, { popularityScore: s.downloads, representativeId: s.id, representativeVersion: version });
266
+ continue;
267
+ }
268
+ existing.popularityScore = Math.max(existing.popularityScore, s.downloads);
269
+ if (compareVersionsDesc(version, existing.representativeVersion) < 0) {
270
+ existing.representativeId = s.id;
271
+ existing.representativeVersion = version;
272
+ }
273
+ }
274
+ return [...families.values()]
275
+ .sort((a, b) => b.popularityScore - a.popularityScore)
276
+ .slice(0, 3)
277
+ .map(g => g.representativeId);
278
+ },
279
+ /**
280
+ * Interactive live search against ollama.com's model library.
281
+ *
282
+ * The fetchModels() list only covers installed/cloud-catalog models; this
283
+ * lets a user find and install anything else in Ollama's public library
284
+ * (e.g. a model that isn't already installed and isn't in the curated
285
+ * cloud catalog) without knowing its exact id up front.
286
+ */
287
+ async searchModel(_credentials) {
288
+ const inquirer = (await import('inquirer')).default;
289
+ const ora = (await import('ora')).default;
290
+ const chalk = (await import('chalk')).default;
291
+ const { searchOllamaLibrary, listOllamaModelTags } = await import('./ollama.library.js');
292
+ const { query } = await inquirer.prompt([
293
+ {
294
+ type: 'input',
295
+ name: 'query',
296
+ message: 'Search Ollama library:'
297
+ }
298
+ ]);
299
+ if (!query || !query.trim()) {
300
+ return null;
301
+ }
302
+ const searchSpinner = ora(`Searching Ollama library for "${query.trim()}"...`).start();
303
+ let results;
304
+ try {
305
+ results = await searchOllamaLibrary(query.trim());
306
+ searchSpinner.succeed(chalk.green(`Found ${results.length} model(s)`));
307
+ }
308
+ catch (error) {
309
+ searchSpinner.fail(chalk.red('Search failed'));
310
+ console.log(chalk.dim(` ${error instanceof Error ? error.message : 'Unknown error'}\n`));
311
+ return null;
312
+ }
313
+ const { picked } = await inquirer.prompt([
314
+ {
315
+ type: 'list',
316
+ name: 'picked',
317
+ message: 'Select a model:',
318
+ pageSize: 15,
319
+ choices: [
320
+ ...results.map(r => ({
321
+ name: r.description ? `${r.name} ${chalk.dim(`- ${r.description}`)}` : r.name,
322
+ value: r.name
323
+ })),
324
+ { name: chalk.dim('← Back'), value: null }
325
+ ]
326
+ }
327
+ ]);
328
+ if (!picked) {
329
+ return null;
330
+ }
331
+ const tagSpinner = ora(`Fetching available sizes for ${picked}...`).start();
332
+ let tags = [];
333
+ try {
334
+ tags = await listOllamaModelTags(picked);
335
+ tagSpinner.succeed(chalk.green(`Found ${tags.length} variant(s)`));
336
+ }
337
+ catch (error) {
338
+ tagSpinner.warn(chalk.yellow('Could not fetch size variants - using default'));
339
+ console.log(chalk.dim(` ${error instanceof Error ? error.message : 'Unknown error'}\n`));
340
+ return picked;
341
+ }
342
+ const { tag } = await inquirer.prompt([
343
+ {
344
+ type: 'list',
345
+ name: 'tag',
346
+ message: `Choose a variant of ${picked}:`,
347
+ pageSize: 15,
348
+ choices: tags
349
+ }
350
+ ]);
351
+ return tag;
162
352
  },
163
353
  /**
164
354
  * Install model if not already installed
@@ -1 +1 @@
1
- {"version":3,"file":"ollama.setup-steps.js","sourceRoot":"","sources":["../../../../src/providers/plugins/ollama/ollama.setup-steps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ollama.setup-steps.js","sourceRoot":"","sources":["../../../../src/providers/plugins/ollama/ollama.setup-steps.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ollama.template.d.ts","sourceRoot":"","sources":["../../../../src/providers/plugins/ollama/ollama.template.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG5D,eAAO,MAAM,cAAc,kBAqHzB,CAAC"}
1
+ {"version":3,"file":"ollama.template.d.ts","sourceRoot":"","sources":["../../../../src/providers/plugins/ollama/ollama.template.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG5D,eAAO,MAAM,cAAc,kBAiGzB,CAAC"}
@@ -15,31 +15,11 @@ export const OllamaTemplate = registerProvider({
15
15
  defaultBaseUrl: 'http://localhost:11434',
16
16
  requiresAuth: false,
17
17
  authType: 'none',
18
- recommendedModels: [
19
- 'qwen2.5-coder',
20
- 'gpt-oss:120b-cloud',
21
- 'deepseek-coder-v2'
22
- ],
23
- modelMetadata: {
24
- 'qwen2.5-coder': {
25
- name: 'Qwen 2.5 Coder',
26
- description: 'Excellent coding model with tool support (7B, ~5GB download)',
27
- popular: true,
28
- minMemoryGb: 8
29
- },
30
- 'gpt-oss:120b-cloud': {
31
- name: 'GPT-OSS 120B (cloud)',
32
- description: 'OpenAI open-weight model on Ollama cloud - no local memory required',
33
- popular: true
34
- // No minMemoryGb: runs on ollama.com, not on the local machine
35
- },
36
- 'deepseek-coder-v2': {
37
- name: 'DeepSeek Coder V2',
38
- description: 'Advanced coding model with tool support (16B, ~9GB download)',
39
- popular: true,
40
- minMemoryGb: 12
41
- }
42
- },
18
+ // No hardcoded model list: the setup wizard offers installed local models,
19
+ // the ollama.com cloud catalog, and live search against Ollama's full
20
+ // model library (OllamaSetupSteps.searchModel in ollama.setup-steps.ts) -
21
+ // all real data instead of a curated set that inevitably goes stale.
22
+ recommendedModels: [],
43
23
  capabilities: ['streaming', 'tools', 'embeddings', 'model-management'],
44
24
  supportsModelInstallation: true,
45
25
  healthCheckEndpoint: '/api/version',
@@ -93,15 +73,15 @@ curl -fsSL https://ollama.com/install.sh | sh
93
73
  ### Windows
94
74
  Download from: https://ollama.com/download
95
75
 
96
- ## Recommended Coding Models (Tool Support Required)
97
-
98
- **Important**: Some agents require models with function calling/tool support.
76
+ ## Choosing a Model (Tool Support Required)
99
77
 
100
- - **qwen2.5-coder**: Excellent for coding tasks with tool support (7B, ~5GB)
101
- - **gpt-oss:120b-cloud**: OpenAI's open-weight model via Ollama cloud (120B, no download)
102
- - **deepseek-coder-v2**: Advanced coding model with tool support (16B, ~9GB)
78
+ **Important**: Some agents require models with function calling/tool support
79
+ (models without it, like plain codellama, will fail with those agents).
103
80
 
104
- **Note**: Models without tool support (like codellama) will fail with agents that require function calling.
81
+ Setup shows installed local models plus the ollama.com cloud catalog, and
82
+ offers a "Search Ollama library..." option to find and install anything else
83
+ in Ollama's full model library on demand - no need to remember exact model
84
+ names or tags in advance.
105
85
 
106
86
  ## Ollama Cloud (ollama.com)
107
87
 
@@ -1 +1 @@
1
- {"version":3,"file":"ollama.template.js","sourceRoot":"","sources":["../../../../src/providers/plugins/ollama/ollama.template.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAmB;IAC/D,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,QAAQ;IACrB,WAAW,EAAE,2EAA2E;IACxF,WAAW,EAAE,KAAK;IAClB,cAAc,EAAE,wBAAwB;IACxC,YAAY,EAAE,KAAK;IACnB,QAAQ,EAAE,MAAM;IAChB,iBAAiB,EAAE;QACjB,eAAe;QACf,oBAAoB;QACpB,mBAAmB;KACpB;IACD,aAAa,EAAE;QACb,eAAe,EAAE;YACf,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,8DAA8D;YAC3E,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,CAAC;SACf;QACD,oBAAoB,EAAE;YACpB,IAAI,EAAE,sBAAsB;YAC5B,WAAW,EAAE,qEAAqE;YAClF,OAAO,EAAE,IAAI;YACb,+DAA+D;SAChE;QACD,mBAAmB,EAAE;YACnB,IAAI,EAAE,mBAAmB;YACzB,WAAW,EAAE,8DAA8D;YAC3E,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,EAAE;SAChB;KACF;IACD,YAAY,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,kBAAkB,CAAC;IACtE,yBAAyB,EAAE,IAAI;IAC/B,mBAAmB,EAAE,cAAc;IAEnC,wBAAwB;IACxB,UAAU,EAAE;QACV,wEAAwE;QACxE,mEAAmE;QACnE,GAAG,EAAE;YACH,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;gBAC/B,qEAAqE;gBACrE,0EAA0E;gBAC1E,sEAAsE;gBACtE,IAAI,GAAG,CAAC,kBAAkB,EAAE,CAAC;oBAC3B,GAAG,CAAC,kBAAkB,GAAG,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;oBAExE,kEAAkE;oBAClE,oEAAoE;oBACpE,GAAG,CAAC,oBAAoB;wBACtB,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;oBAE/E,oEAAoE;oBACpE,oEAAoE;oBACpE,sEAAsE;oBACtE,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;wBACtB,IAAI,CAAC,GAAG,CAAC,6BAA6B,EAAE,CAAC;4BACvC,GAAG,CAAC,6BAA6B,GAAG,GAAG,CAAC,aAAa,CAAC;wBACxD,CAAC;wBACD,IAAI,CAAC,GAAG,CAAC,8BAA8B,EAAE,CAAC;4BACxC,GAAG,CAAC,8BAA8B,GAAG,GAAG,CAAC,aAAa,CAAC;wBACzD,CAAC;wBACD,IAAI,CAAC,GAAG,CAAC,4BAA4B,EAAE,CAAC;4BACtC,GAAG,CAAC,4BAA4B,GAAG,GAAG,CAAC,aAAa,CAAC;wBACvD,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,OAAO,GAAG,CAAC;YACb,CAAC;SACF;KACF;IAED,iBAAiB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCpB;CACA,CAAC,CAAC"}
1
+ {"version":3,"file":"ollama.template.js","sourceRoot":"","sources":["../../../../src/providers/plugins/ollama/ollama.template.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAmB;IAC/D,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,QAAQ;IACrB,WAAW,EAAE,2EAA2E;IACxF,WAAW,EAAE,KAAK;IAClB,cAAc,EAAE,wBAAwB;IACxC,YAAY,EAAE,KAAK;IACnB,QAAQ,EAAE,MAAM;IAChB,2EAA2E;IAC3E,sEAAsE;IACtE,0EAA0E;IAC1E,qEAAqE;IACrE,iBAAiB,EAAE,EAAE;IACrB,YAAY,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,kBAAkB,CAAC;IACtE,yBAAyB,EAAE,IAAI;IAC/B,mBAAmB,EAAE,cAAc;IAEnC,wBAAwB;IACxB,UAAU,EAAE;QACV,wEAAwE;QACxE,mEAAmE;QACnE,GAAG,EAAE;YACH,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;gBAC/B,qEAAqE;gBACrE,0EAA0E;gBAC1E,sEAAsE;gBACtE,IAAI,GAAG,CAAC,kBAAkB,EAAE,CAAC;oBAC3B,GAAG,CAAC,kBAAkB,GAAG,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;oBAExE,kEAAkE;oBAClE,oEAAoE;oBACpE,GAAG,CAAC,oBAAoB;wBACtB,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;oBAE/E,oEAAoE;oBACpE,oEAAoE;oBACpE,sEAAsE;oBACtE,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;wBACtB,IAAI,CAAC,GAAG,CAAC,6BAA6B,EAAE,CAAC;4BACvC,GAAG,CAAC,6BAA6B,GAAG,GAAG,CAAC,aAAa,CAAC;wBACxD,CAAC;wBACD,IAAI,CAAC,GAAG,CAAC,8BAA8B,EAAE,CAAC;4BACxC,GAAG,CAAC,8BAA8B,GAAG,GAAG,CAAC,aAAa,CAAC;wBACzD,CAAC;wBACD,IAAI,CAAC,GAAG,CAAC,4BAA4B,EAAE,CAAC;4BACtC,GAAG,CAAC,4BAA4B,GAAG,GAAG,CAAC,aAAa,CAAC;wBACvD,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,OAAO,GAAG,CAAC;YACb,CAAC;SACF;KACF;IAED,iBAAiB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCpB;CACA,CAAC,CAAC"}
@@ -29,6 +29,10 @@ export interface ProcessingContext {
29
29
  agentSessionId?: string;
30
30
  /** Path to agent session file */
31
31
  agentSessionFile?: string;
32
+ /** Epoch milliseconds after which sync loops must stop sending and defer remaining work */
33
+ syncDeadlineMs?: number;
34
+ /** Abort signal (e.g. SIGTERM during agent teardown) asking sync loops to stop early */
35
+ abortSignal?: AbortSignal;
32
36
  }
33
37
  /**
34
38
  * Result of processing a session.
@@ -1 +1 @@
1
- {"version":3,"file":"BaseProcessor.d.ts","sourceRoot":"","sources":["../../../../../src/providers/plugins/sso/session/BaseProcessor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,mBAAmB;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,MAAM,EAAE,OAAO,CAAC;IAGhB,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iCAAiC;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qDAAqD;IACrD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,4CAA4C;IAC5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;;;;;OAMG;IACH,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC;IAE/C;;;;;;;OAOG;IACH,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACxF"}
1
+ {"version":3,"file":"BaseProcessor.d.ts","sourceRoot":"","sources":["../../../../../src/providers/plugins/sso/session/BaseProcessor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,mBAAmB;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,MAAM,EAAE,OAAO,CAAC;IAGhB,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iCAAiC;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAG1B,2FAA2F;IAC3F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wFAAwF;IACxF,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qDAAqD;IACrD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,4CAA4C;IAC5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;;;;;OAMG;IACH,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC;IAE/C;;;;;;;OAOG;IACH,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACxF"}
@@ -28,6 +28,18 @@ export declare class SessionSyncer {
28
28
  * Merges updates from all processors into session state.
29
29
  */
30
30
  private applySyncUpdates;
31
+ /**
32
+ * Try to acquire the cross-process sync lock for a session (exclusive create).
33
+ * A stale lock (holder killed mid-sync) is removed and acquisition retried once.
34
+ */
35
+ private tryAcquireSyncLock;
36
+ /**
37
+ * A lock is stale when its mtime is older than SYNC_LOCK_STALE_MS.
38
+ * Stat errors (e.g. lock vanished between open and stat) are treated as stale
39
+ * so acquisition is retried once.
40
+ */
41
+ private isSyncLockStale;
42
+ private releaseSyncLock;
31
43
  /**
32
44
  * Sync pending data to API
33
45
  * Iterates through processors (same logic as plugin)
@@ -1 +1 @@
1
- {"version":3,"file":"SessionSyncer.d.ts","sourceRoot":"","sources":["../../../../../src/providers/plugins/sso/session/SessionSyncer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAoB,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AAS9H,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACnD,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,UAAU,CAAqB;;IAUvC;;;OAGG;YACW,gBAAgB;IA6B9B;;;;;;;OAOG;IACG,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAuItF"}
1
+ {"version":3,"file":"SessionSyncer.d.ts","sourceRoot":"","sources":["../../../../../src/providers/plugins/sso/session/SessionSyncer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAoB,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AAY9H,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACnD,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAUD,qBAAa,aAAa;IACxB,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,UAAU,CAAqB;;IAUvC;;;OAGG;YACW,gBAAgB;IA6B9B;;;OAGG;YACW,kBAAkB;IAgChC;;;;OAIG;YACW,eAAe;YASf,eAAe;IAU7B;;;;;;;OAOG;IACG,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAiKtF"}
@@ -12,12 +12,17 @@
12
12
  * 3. Iterate through processors (same logic as plugin)
13
13
  * 4. Return aggregated results
14
14
  */
15
+ import { shouldStopSync } from '../../../../agents/core/session/BaseProcessor.js';
16
+ import { open, stat, unlink } from 'fs/promises';
15
17
  import { logger } from '../../../../utils/logger.js';
18
+ import { getCodemiePath } from '../../../../utils/paths.js';
16
19
  import { SessionStore } from '../../../../agents/core/session/SessionStore.js';
17
20
  import { MetricsSyncProcessor } from './processors/metrics/metrics-sync-processor.js';
18
21
  import { createSyncProcessor as createConversationSyncProcessor } from './processors/conversations/syncProcessor.js';
19
22
  import { applyProcessingSyncUpdates } from '../../../../agents/core/session/sync-state-utils.js';
20
23
  import { isExternalOrigin } from '../../../../agents/core/session/session-origin-audit.js';
24
+ /** Lock files older than this are considered stale (holder died without releasing) */
25
+ const SYNC_LOCK_STALE_MS = 120_000;
21
26
  export class SessionSyncer {
22
27
  sessionStore = new SessionStore();
23
28
  processors;
@@ -53,6 +58,65 @@ export class SessionSyncer {
53
58
  throw error;
54
59
  }
55
60
  }
61
+ /**
62
+ * Try to acquire the cross-process sync lock for a session (exclusive create).
63
+ * A stale lock (holder killed mid-sync) is removed and acquisition retried once.
64
+ */
65
+ async tryAcquireSyncLock(lockPath) {
66
+ for (let attempt = 0; attempt < 2; attempt++) {
67
+ try {
68
+ const handle = await open(lockPath, 'wx');
69
+ try {
70
+ // Write the pid for debuggability
71
+ await handle.writeFile(String(process.pid));
72
+ }
73
+ finally {
74
+ await handle.close();
75
+ }
76
+ return 'acquired';
77
+ }
78
+ catch (error) {
79
+ const code = error.code;
80
+ if (code !== 'EEXIST') {
81
+ // Best effort: if the sessions dir is missing/unwritable, proceed
82
+ // without a lock rather than blocking the sync entirely.
83
+ logger.debug(`[SessionSyncer] Sync lock unavailable (${code ?? String(error)}), proceeding without lock`);
84
+ return 'unavailable';
85
+ }
86
+ if (attempt === 0 && await this.isSyncLockStale(lockPath)) {
87
+ logger.debug(`[SessionSyncer] Removing stale sync lock: ${lockPath}`);
88
+ await unlink(lockPath).catch(() => undefined);
89
+ continue;
90
+ }
91
+ return 'held-by-other';
92
+ }
93
+ }
94
+ return 'held-by-other';
95
+ }
96
+ /**
97
+ * A lock is stale when its mtime is older than SYNC_LOCK_STALE_MS.
98
+ * Stat errors (e.g. lock vanished between open and stat) are treated as stale
99
+ * so acquisition is retried once.
100
+ */
101
+ async isSyncLockStale(lockPath) {
102
+ try {
103
+ const stats = await stat(lockPath);
104
+ return Date.now() - stats.mtimeMs > SYNC_LOCK_STALE_MS;
105
+ }
106
+ catch {
107
+ return true;
108
+ }
109
+ }
110
+ async releaseSyncLock(lockPath) {
111
+ try {
112
+ await unlink(lockPath);
113
+ }
114
+ catch (error) {
115
+ if (error.code !== 'ENOENT') {
116
+ logger.debug(`[SessionSyncer] Failed to release sync lock: ${error}`);
117
+ }
118
+ }
119
+ }
56
120
  /**
57
121
  * Sync pending data to API
58
122
  * Iterates through processors (same logic as plugin)
@@ -63,6 +127,20 @@ export class SessionSyncer {
63
127
  */
64
128
  async sync(sessionId, context) {
65
129
  logger.debug(`[SessionSyncer] Starting sync for session ${sessionId}`);
130
+ // Cross-process guard: the SessionEnd hook, the proxy sync timer, and agent
131
+ // incremental syncs can run concurrently for the same session. Only one sync
132
+ // per session may run at a time; others defer to the next run.
133
+ const lockPath = getCodemiePath('sessions', `${sessionId}.sync.lock`);
134
+ const lockState = await this.tryAcquireSyncLock(lockPath);
135
+ if (lockState === 'held-by-other') {
136
+ logger.info(`[SessionSyncer] Sync already in progress for session ${sessionId} in another process, deferring`);
137
+ return {
138
+ success: true,
139
+ message: 'Sync in progress in another process, deferred',
140
+ processorResults: {},
141
+ failedProcessors: []
142
+ };
143
+ }
66
144
  try {
67
145
  // 1. Load session metadata
68
146
  const sessionMetadata = await this.sessionStore.loadSession(sessionId);
@@ -113,6 +191,12 @@ export class SessionSyncer {
113
191
  const failedProcessors = [];
114
192
  const allResults = [];
115
193
  for (const processor of this.processors) {
194
+ // Stop between processors when the sync deadline expired or an abort was
195
+ // signaled; processors that did not run are deferred to the next sync.
196
+ if (shouldStopSync(context)) {
197
+ logger.debug('[SessionSyncer] Sync deadline reached or aborted, deferring remaining processors');
198
+ break;
199
+ }
116
200
  try {
117
201
  // Check if processor should run for this session
118
202
  if (!processor.shouldProcess(emptySession)) {
@@ -179,6 +263,11 @@ export class SessionSyncer {
179
263
  failedProcessors: []
180
264
  };
181
265
  }
266
+ finally {
267
+ if (lockState === 'acquired') {
268
+ await this.releaseSyncLock(lockPath);
269
+ }
270
+ }
182
271
  }
183
272
  }
184
273
  //# sourceMappingURL=SessionSyncer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SessionSyncer.js","sourceRoot":"","sources":["../../../../../src/providers/plugins/sso/session/SessionSyncer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SessionSyncer.js","sourceRoot":"","sources":["../../../../../src/providers/plugins/sso/session/SessionSyncer.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"syncProcessor.d.ts","sourceRoot":"","sources":["../../../../../../../src/providers/plugins/sso/session/processors/conversations/syncProcessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAuC,MAAM,kDAAkD,CAAC;AAoB9H;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,gBAAgB,CAgOtD"}
1
+ {"version":3,"file":"syncProcessor.d.ts","sourceRoot":"","sources":["../../../../../../../src/providers/plugins/sso/session/processors/conversations/syncProcessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAuC,MAAM,kDAAkD,CAAC;AAqB9H;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,gBAAgB,CAiOtD"}