@cleocode/core 2026.8.2 → 2026.8.3

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 (167) hide show
  1. package/dist/check/pr-gate.d.ts.map +1 -1
  2. package/dist/check/pr-gate.js +9 -0
  3. package/dist/check/pr-gate.js.map +1 -1
  4. package/dist/docs/export-document.js +66 -16
  5. package/dist/docs/export-document.js.map +3 -3
  6. package/dist/hooks/registry.d.ts +2 -2
  7. package/dist/hooks/registry.d.ts.map +1 -1
  8. package/dist/hooks/registry.js +5 -0
  9. package/dist/hooks/registry.js.map +1 -1
  10. package/dist/hooks/types.d.ts +59 -0
  11. package/dist/hooks/types.d.ts.map +1 -1
  12. package/dist/init/scaffold-workflows.d.ts +12 -0
  13. package/dist/init/scaffold-workflows.d.ts.map +1 -1
  14. package/dist/init/scaffold-workflows.js +16 -0
  15. package/dist/init/scaffold-workflows.js.map +1 -1
  16. package/dist/init/upgrade-workflows.d.ts.map +1 -1
  17. package/dist/init/upgrade-workflows.js +16 -0
  18. package/dist/init/upgrade-workflows.js.map +1 -1
  19. package/dist/init.d.ts.map +1 -1
  20. package/dist/init.js +16 -1
  21. package/dist/init.js.map +1 -1
  22. package/dist/internal.d.ts +1 -0
  23. package/dist/internal.d.ts.map +1 -1
  24. package/dist/internal.js +2 -0
  25. package/dist/internal.js.map +1 -1
  26. package/dist/llm/credentials.d.ts +16 -1
  27. package/dist/llm/credentials.d.ts.map +1 -1
  28. package/dist/llm/credentials.js.map +1 -1
  29. package/dist/llm/cross-provider-selector.d.ts +25 -0
  30. package/dist/llm/cross-provider-selector.d.ts.map +1 -1
  31. package/dist/llm/cross-provider-selector.js +76 -3
  32. package/dist/llm/cross-provider-selector.js.map +1 -1
  33. package/dist/llm/local-inference-probe.d.ts +101 -0
  34. package/dist/llm/local-inference-probe.d.ts.map +1 -0
  35. package/dist/llm/local-inference-probe.js +174 -0
  36. package/dist/llm/local-inference-probe.js.map +1 -0
  37. package/dist/llm/plugin-facade.js +199 -21
  38. package/dist/llm/plugin-facade.js.map +3 -3
  39. package/dist/llm/role-executor.d.ts.map +1 -1
  40. package/dist/llm/role-executor.js +95 -9
  41. package/dist/llm/role-executor.js.map +1 -1
  42. package/dist/llm/role-resolver.d.ts +10 -0
  43. package/dist/llm/role-resolver.d.ts.map +1 -1
  44. package/dist/llm/role-resolver.js +92 -1
  45. package/dist/llm/role-resolver.js.map +1 -1
  46. package/dist/llm/system-resolver.d.ts.map +1 -1
  47. package/dist/llm/system-resolver.js +2 -0
  48. package/dist/llm/system-resolver.js.map +1 -1
  49. package/dist/memory/brain-search.d.ts +109 -0
  50. package/dist/memory/brain-search.d.ts.map +1 -1
  51. package/dist/memory/brain-search.js +149 -37
  52. package/dist/memory/brain-search.js.map +1 -1
  53. package/dist/memory/brain-stub-prune.d.ts +109 -0
  54. package/dist/memory/brain-stub-prune.d.ts.map +1 -0
  55. package/dist/memory/brain-stub-prune.js +155 -0
  56. package/dist/memory/brain-stub-prune.js.map +1 -0
  57. package/dist/memory/engine-compat.d.ts.map +1 -1
  58. package/dist/memory/engine-compat.js +61 -3
  59. package/dist/memory/engine-compat.js.map +1 -1
  60. package/dist/nexus/analyze-orchestrator.d.ts.map +1 -1
  61. package/dist/nexus/analyze-orchestrator.js +28 -0
  62. package/dist/nexus/analyze-orchestrator.js.map +1 -1
  63. package/dist/nexus/context.d.ts.map +1 -1
  64. package/dist/nexus/context.js +3 -3
  65. package/dist/nexus/context.js.map +1 -1
  66. package/dist/nexus/impact.d.ts.map +1 -1
  67. package/dist/nexus/impact.js +3 -3
  68. package/dist/nexus/impact.js.map +1 -1
  69. package/dist/nexus/symbol-miss.d.ts +132 -0
  70. package/dist/nexus/symbol-miss.d.ts.map +1 -0
  71. package/dist/nexus/symbol-miss.js +168 -0
  72. package/dist/nexus/symbol-miss.js.map +1 -0
  73. package/dist/orchestrate/spawn-ops.d.ts +21 -1
  74. package/dist/orchestrate/spawn-ops.d.ts.map +1 -1
  75. package/dist/orchestrate/spawn-ops.js +39 -2
  76. package/dist/orchestrate/spawn-ops.js.map +1 -1
  77. package/dist/orchestrate/worker-verify.d.ts.map +1 -1
  78. package/dist/orchestrate/worker-verify.js +22 -0
  79. package/dist/orchestrate/worker-verify.js.map +1 -1
  80. package/dist/release/changesets-aggregator.d.ts.map +1 -1
  81. package/dist/release/changesets-aggregator.js +15 -1
  82. package/dist/release/changesets-aggregator.js.map +1 -1
  83. package/dist/release/open.d.ts +29 -2
  84. package/dist/release/open.d.ts.map +1 -1
  85. package/dist/release/open.js +48 -11
  86. package/dist/release/open.js.map +1 -1
  87. package/dist/resources/governor.d.ts +12 -2
  88. package/dist/resources/governor.d.ts.map +1 -1
  89. package/dist/resources/governor.js +12 -3
  90. package/dist/resources/governor.js.map +1 -1
  91. package/dist/scaffold/ensure-dirs.d.ts.map +1 -1
  92. package/dist/scaffold/ensure-dirs.js +14 -2
  93. package/dist/scaffold/ensure-dirs.js.map +1 -1
  94. package/dist/scaffold/project-detection.d.ts.map +1 -1
  95. package/dist/scaffold/project-detection.js +2 -1
  96. package/dist/scaffold/project-detection.js.map +1 -1
  97. package/dist/selfimprove/draft-pr.d.ts +14 -1
  98. package/dist/selfimprove/draft-pr.d.ts.map +1 -1
  99. package/dist/selfimprove/draft-pr.js.map +1 -1
  100. package/dist/selfimprove/fix-gen.d.ts +0 -21
  101. package/dist/selfimprove/fix-gen.d.ts.map +1 -1
  102. package/dist/selfimprove/fix-gen.js +276 -76
  103. package/dist/selfimprove/fix-gen.js.map +3 -3
  104. package/dist/selfimprove/run-loop.d.ts.map +1 -1
  105. package/dist/selfimprove/run-loop.js +50 -19
  106. package/dist/selfimprove/run-loop.js.map +1 -1
  107. package/dist/selfimprove/scenarios/dhq-replay-find/golden.json +114 -4
  108. package/dist/selfimprove/scenarios/dhq-replay-find/scenario.json +3 -3
  109. package/dist/sentient/dream-cycle.d.ts +20 -19
  110. package/dist/sentient/dream-cycle.d.ts.map +1 -1
  111. package/dist/sentient/dream-cycle.js +322 -11
  112. package/dist/sentient/dream-cycle.js.map +1 -1
  113. package/dist/sentient/dream-watermark.d.ts +134 -0
  114. package/dist/sentient/dream-watermark.d.ts.map +1 -0
  115. package/dist/sentient/dream-watermark.js +156 -0
  116. package/dist/sentient/dream-watermark.js.map +1 -0
  117. package/dist/sentient/state.d.ts +17 -0
  118. package/dist/sentient/state.d.ts.map +1 -1
  119. package/dist/sentient/state.js +22 -3
  120. package/dist/sentient/state.js.map +1 -1
  121. package/dist/sentient/tick.d.ts.map +1 -1
  122. package/dist/sentient/tick.js +79 -2
  123. package/dist/sentient/tick.js.map +1 -1
  124. package/dist/sessions/index.d.ts.map +1 -1
  125. package/dist/sessions/index.js +5 -1
  126. package/dist/sessions/index.js.map +1 -1
  127. package/dist/sessions/snapshot.d.ts.map +1 -1
  128. package/dist/sessions/snapshot.js +6 -3
  129. package/dist/sessions/snapshot.js.map +1 -1
  130. package/dist/store/checkpoint-git-dir.d.ts +95 -0
  131. package/dist/store/checkpoint-git-dir.d.ts.map +1 -0
  132. package/dist/store/checkpoint-git-dir.js +111 -0
  133. package/dist/store/checkpoint-git-dir.js.map +1 -0
  134. package/dist/store/git-checkpoint.d.ts.map +1 -1
  135. package/dist/store/git-checkpoint.js +6 -5
  136. package/dist/store/git-checkpoint.js.map +1 -1
  137. package/dist/system/health.d.ts.map +1 -1
  138. package/dist/system/health.js +2 -1
  139. package/dist/system/health.js.map +1 -1
  140. package/dist/tasks/add.d.ts.map +1 -1
  141. package/dist/tasks/add.js +40 -4
  142. package/dist/tasks/add.js.map +1 -1
  143. package/dist/tasks/collection.d.ts +51 -0
  144. package/dist/tasks/collection.d.ts.map +1 -0
  145. package/dist/tasks/collection.js +81 -0
  146. package/dist/tasks/collection.js.map +1 -0
  147. package/dist/tasks/complete.d.ts.map +1 -1
  148. package/dist/tasks/complete.js +8 -3
  149. package/dist/tasks/complete.js.map +1 -1
  150. package/dist/tasks/evidence.d.ts.map +1 -1
  151. package/dist/tasks/evidence.js +17 -0
  152. package/dist/tasks/evidence.js.map +1 -1
  153. package/dist/tasks/find.d.ts +50 -0
  154. package/dist/tasks/find.d.ts.map +1 -1
  155. package/dist/tasks/find.js +63 -2
  156. package/dist/tasks/find.js.map +1 -1
  157. package/dist/tasks/tool-resolver.d.ts +1 -1
  158. package/dist/tasks/tool-resolver.d.ts.map +1 -1
  159. package/dist/tasks/tool-resolver.js +83 -0
  160. package/dist/tasks/tool-resolver.js.map +1 -1
  161. package/dist/tasks/tool-semaphore.d.ts +82 -12
  162. package/dist/tasks/tool-semaphore.d.ts.map +1 -1
  163. package/dist/tasks/tool-semaphore.js +79 -17
  164. package/dist/tasks/tool-semaphore.js.map +1 -1
  165. package/package.json +13 -13
  166. package/templates/CLEO-INJECTION.md +40 -25
  167. package/templates/workflows/release-prepare.yml.tmpl +73 -16
@@ -45,6 +45,7 @@ import { getLogger } from '../logger.js';
45
45
  import { refreshExpiredOAuthForProvider } from './credential-pool.js';
46
46
  import { resolveCredentials } from './credentials.js';
47
47
  import { listCredentials, pickCredentialForProviderSync } from './credentials-store.js';
48
+ import { detectLocalInference, listOllamaModels } from './local-inference-probe.js';
48
49
  const logger = getLogger('llm-cross-provider-selector');
49
50
  // ---------------------------------------------------------------------------
50
51
  // Constants
@@ -261,6 +262,42 @@ function isProvisioned(provider) {
261
262
  const cred = resolveCredentials(provider); // llm-resolve-allowed: provisioning probe only — checks if cred exists; never constructs a transport or client
262
263
  return (cred.apiKey?.trim().length ?? 0) > 0;
263
264
  }
265
+ /**
266
+ * Intersect the RAM-preferred Ollama model with the models actually installed.
267
+ *
268
+ * Resolution order:
269
+ * 1. exact tag match — the preferred model is pulled, use it;
270
+ * 2. same family — `gemma4:e4b` preferred, `gemma4:e2b` installed;
271
+ * 3. first installed model — some local inference beats none;
272
+ * 4. the preference unchanged, when the installed set is unknown (empty),
273
+ * because an empty list means "could not ask", not "nothing installed".
274
+ *
275
+ * @param preferred - model chosen by the RAM/tier heuristic.
276
+ * @param installed - model ids the daemon reports, in daemon order.
277
+ * @returns the model to call.
278
+ *
279
+ * @example
280
+ * ```ts
281
+ * reconcileOllamaModel('gemma4:e4b', ['qwen2.5-coder:3b']); // → 'qwen2.5-coder:3b'
282
+ * reconcileOllamaModel('gemma4:e4b', ['gemma4:e2b']); // → 'gemma4:e2b'
283
+ * reconcileOllamaModel('gemma4:e4b', []); // → 'gemma4:e4b'
284
+ * ```
285
+ *
286
+ * @task T12082
287
+ */
288
+ export function reconcileOllamaModel(preferred, installed) {
289
+ if (installed.length === 0)
290
+ return preferred;
291
+ if (installed.includes(preferred))
292
+ return preferred;
293
+ const family = preferred.split(':')[0];
294
+ if (family !== undefined && family !== '') {
295
+ const sameFamily = installed.find((m) => m.split(':')[0] === family);
296
+ if (sameFamily !== undefined)
297
+ return sameFamily;
298
+ }
299
+ return installed[0] ?? preferred;
300
+ }
264
301
  // ---------------------------------------------------------------------------
265
302
  // Scoring
266
303
  // ---------------------------------------------------------------------------
@@ -498,6 +535,7 @@ export async function enumerateProvisionedProviders(taskTier = 'frontier') {
498
535
  */
499
536
  export async function selectBestProvisioned(role, opts) {
500
537
  const taskTier = roleTierFor(role);
538
+ const excluded = new Set(opts.exclude ?? []);
501
539
  // Refresh-on-use (T11986 · DHQ-087): attempt to refresh any expired-but-
502
540
  // refreshable OAuth credential for each provider BEFORE the provisioning
503
541
  // probe. This ensures an expired OAT with a valid refresh token is renewed
@@ -531,10 +569,34 @@ export async function selectBestProvisioned(role, opts) {
531
569
  // tokens are visible to the sync credential store reader).
532
570
  const provisionedIds = [];
533
571
  for (const id of BUILTIN_PROVIDER_IDS) {
572
+ if (excluded.has(id))
573
+ continue;
534
574
  if (isProvisioned(id)) {
535
575
  provisionedIds.push(id);
536
576
  }
537
577
  }
578
+ // T12082: a RUNNING local daemon is its own provisioning evidence.
579
+ //
580
+ // `isProvisioned` cannot probe (it is sync), so it settles for "OLLAMA_HOST
581
+ // is set OR the store has an entry" — and liveness was then probed only for
582
+ // providers already in the provisioned set, which is circular: an unlisted
583
+ // ollama could never be probed, so it could never be listed.
584
+ //
585
+ // The cost of that circularity is total, not marginal. On a machine whose
586
+ // cloud credentials had all expired, every role resolved to
587
+ // `no-provisioned-provider` — no consolidation, no extraction, no hygiene,
588
+ // no dream cycle — while an Ollama daemon with models loaded answered on
589
+ // loopback in 24 ms. A provider that needs no key should not have to be
590
+ // declared; it only has to answer.
591
+ let localModels = [];
592
+ if (!excluded.has('ollama') && !provisionedIds.includes('ollama')) {
593
+ const local = await detectLocalInference();
594
+ if (local !== null && local.name === 'ollama') {
595
+ provisionedIds.push('ollama');
596
+ localModels = local.models;
597
+ logger.debug({ baseUrl: local.baseUrl, models: local.models }, 'cross-provider-selector: unlisted ollama daemon is live — admitting as provisioned');
598
+ }
599
+ }
538
600
  if (provisionedIds.length === 0) {
539
601
  logger.warn({
540
602
  providers_checked: BUILTIN_PROVIDER_IDS.slice(),
@@ -548,13 +610,19 @@ export async function selectBestProvisioned(role, opts) {
548
610
  const { getProviderProfile } = await import('./provider-registry/index.js');
549
611
  const { resolveProviderDefaultModel, catalogKeyForProvider } = await import('./catalog-model-resolver.js');
550
612
  const { pickCredentialForProvider } = await import('./credentials-store.js');
551
- // Probe ollama liveness only when ollama is in the provisioned set.
613
+ // Probe ollama liveness only when ollama is in the provisioned set. A daemon
614
+ // admitted by the live-probe above is alive by construction — re-probing it
615
+ // through a second code path would only add a way for the two to disagree.
552
616
  const ollamaProvisioned = provisionedIds.includes('ollama');
553
- let ollamaAlive = false;
554
- if (ollamaProvisioned) {
617
+ let ollamaAlive = localModels.length > 0;
618
+ if (ollamaProvisioned && !ollamaAlive) {
555
619
  const profile = await getProviderProfile('ollama');
556
620
  const ollamaBase = profile?.baseUrl ?? 'http://localhost:11434';
557
621
  ollamaAlive = await probeOllamaAlive(ollamaBase);
622
+ // Declared-and-live: ask the daemon what it actually holds, so the RAM
623
+ // heuristic below can be intersected with the installed set.
624
+ if (ollamaAlive)
625
+ localModels = await listOllamaModels(ollamaBase);
558
626
  }
559
627
  const scored = [];
560
628
  for (const id of provisionedIds) {
@@ -599,6 +667,11 @@ export async function selectBestProvisioned(role, opts) {
599
667
  // Proof-of-life floor — logged as warning by ollamaDefaultModelForTier.
600
668
  model = ollamaDefaultModelForTier(winner.tier, ramBytes);
601
669
  }
670
+ // T12082: the RAM gate answers "what could this machine run", not "what is
671
+ // pulled". A resolved model the daemon does not hold is a 404 at call time,
672
+ // which reads as "local inference is broken" rather than "that tag is not
673
+ // installed" — so intersect the fit heuristic with the installed set.
674
+ model = reconcileOllamaModel(model, localModels);
602
675
  // Log hint if gemma4 family is not in catalog
603
676
  const catalogKey = catalogKeyForProvider(winner.id);
604
677
  const catalogModel = resolveProviderDefaultModel(catalogKey);
@@ -1 +1 @@
1
- {"version":3,"file":"cross-provider-selector.js","sourceRoot":"","sources":["../../src/llm/cross-provider-selector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cross-provider-selector.js","sourceRoot":"","sources":["../../src/llm/cross-provider-selector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Runtime detection of a reachable local inference server (T12082).
3
+ *
4
+ * ## Why CLEO should find this by itself
5
+ *
6
+ * The auxiliary fallback chain exists so that "context compression, brain dream
7
+ * cycles, hygiene scans" do not fail silently when the primary provider is
8
+ * unavailable. Its default chain is `anthropic → openrouter → groq` — all
9
+ * cloud. When every cloud credential is unusable, the chain is exhausted and
10
+ * the capability simply stops.
11
+ *
12
+ * That is exactly the state this machine was in on 2026-08-06: the anthropic
13
+ * credential was consent-gated, the openai one returned 401 — and an Ollama
14
+ * server was running the whole time with `qwen2.5-coder:3b` loaded. The dream
15
+ * cycle reported "no usable LLM client" while free local inference sat one
16
+ * HTTP request away. Nothing was broken except that nobody looked.
17
+ *
18
+ * A background consolidation pass is precisely the workload that should degrade
19
+ * to a small local model rather than stop: it is not latency-critical, it is
20
+ * not user-facing, and a shallow synthesis is worth more than none. So the
21
+ * chain now ends with a local tier that is included ONLY when a server actually
22
+ * answers.
23
+ *
24
+ * ## Why a probe rather than a config flag
25
+ *
26
+ * A config flag would need the operator to know their own machine's state and
27
+ * keep it current. A 300 ms probe against loopback is cheap, is cached for the
28
+ * process, and is correct by construction — it reports what is true now.
29
+ *
30
+ * @task T12082
31
+ */
32
+ /** A detected, reachable local inference server. */
33
+ export interface LocalInference {
34
+ /** Which server answered (`ollama`, `lm-studio`). */
35
+ readonly name: string;
36
+ /**
37
+ * Server ROOT url, e.g. `http://127.0.0.1:11434`.
38
+ *
39
+ * The two forms are NOT interchangeable and mixing them fails late: the
40
+ * native Ollama transport appends `/api/chat`, so handing it the `/v1`
41
+ * form produces `/v1/api/chat` and a 404 that reads like the daemon is
42
+ * broken. Use {@link LocalInference.openAiBaseUrl} for OpenAI-compatible
43
+ * transports and this for native ones.
44
+ */
45
+ readonly baseUrl: string;
46
+ /** OpenAI-compatible base URL, e.g. `http://127.0.0.1:11434/v1`. */
47
+ readonly openAiBaseUrl: string;
48
+ /** Model ids the server reports, in the order it reported them. */
49
+ readonly models: readonly string[];
50
+ }
51
+ /**
52
+ * Detect a reachable local inference server with at least one model loaded.
53
+ *
54
+ * Cached for the process lifetime: a background tick may consult this many
55
+ * times and the answer does not change mid-run in practice.
56
+ *
57
+ * Never throws — a probe failure means "not available", which is a normal
58
+ * result rather than an error.
59
+ *
60
+ * @param opts - `force` re-probes, ignoring the cache (tests).
61
+ * @returns the detected server, or `null` when none answers.
62
+ *
63
+ * @example
64
+ * ```ts
65
+ * const local = await detectLocalInference();
66
+ * if (local) console.log(`${local.name} has ${local.models.length} model(s)`);
67
+ * ```
68
+ *
69
+ * @task T12082
70
+ */
71
+ export declare function detectLocalInference(opts?: {
72
+ force?: boolean;
73
+ }): Promise<LocalInference | null>;
74
+ /**
75
+ * List the models an Ollama daemon actually has pulled.
76
+ *
77
+ * The cross-provider selector picks an Ollama model from a RAM heuristic
78
+ * alone, which answers "what could this machine run", not "what is installed".
79
+ * Those differ constantly — this machine has 62 GB of RAM and therefore scored
80
+ * into the `gemma4:e4b` tier while holding only `qwen2.5-coder:3b` and
81
+ * `qwen2:0.5b`, so the resolved model would have 404'd at the daemon. The fit
82
+ * heuristic is still right; it just has to be intersected with reality.
83
+ *
84
+ * Not cached — the installed set changes whenever the operator pulls a model,
85
+ * and the call is one loopback request.
86
+ *
87
+ * Never throws.
88
+ *
89
+ * @param baseUrl - Ollama root URL, e.g. `http://localhost:11434` (no `/v1`).
90
+ * @returns installed model ids in daemon order, empty when unreachable.
91
+ *
92
+ * @task T12082
93
+ */
94
+ export declare function listOllamaModels(baseUrl: string): Promise<string[]>;
95
+ /**
96
+ * Clear the probe cache. Tests only.
97
+ *
98
+ * @task T12082
99
+ */
100
+ export declare function _resetLocalInferenceCacheForTests(): void;
101
+ //# sourceMappingURL=local-inference-probe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-inference-probe.d.ts","sourceRoot":"","sources":["../../src/llm/local-inference-probe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AA8BH,oDAAoD;AACpD,MAAM,WAAW,cAAc;IAC7B,qDAAqD;IACrD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;;;;;OAQG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,oEAAoE;IACpE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,mEAAmE;IACnE,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAsCD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAC7B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAiChC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CASzE;AAED;;;;GAIG;AACH,wBAAgB,iCAAiC,IAAI,IAAI,CAExD"}
@@ -0,0 +1,174 @@
1
+ /**
2
+ * Runtime detection of a reachable local inference server (T12082).
3
+ *
4
+ * ## Why CLEO should find this by itself
5
+ *
6
+ * The auxiliary fallback chain exists so that "context compression, brain dream
7
+ * cycles, hygiene scans" do not fail silently when the primary provider is
8
+ * unavailable. Its default chain is `anthropic → openrouter → groq` — all
9
+ * cloud. When every cloud credential is unusable, the chain is exhausted and
10
+ * the capability simply stops.
11
+ *
12
+ * That is exactly the state this machine was in on 2026-08-06: the anthropic
13
+ * credential was consent-gated, the openai one returned 401 — and an Ollama
14
+ * server was running the whole time with `qwen2.5-coder:3b` loaded. The dream
15
+ * cycle reported "no usable LLM client" while free local inference sat one
16
+ * HTTP request away. Nothing was broken except that nobody looked.
17
+ *
18
+ * A background consolidation pass is precisely the workload that should degrade
19
+ * to a small local model rather than stop: it is not latency-critical, it is
20
+ * not user-facing, and a shallow synthesis is worth more than none. So the
21
+ * chain now ends with a local tier that is included ONLY when a server actually
22
+ * answers.
23
+ *
24
+ * ## Why a probe rather than a config flag
25
+ *
26
+ * A config flag would need the operator to know their own machine's state and
27
+ * keep it current. A 300 ms probe against loopback is cheap, is cached for the
28
+ * process, and is correct by construction — it reports what is true now.
29
+ *
30
+ * @task T12082
31
+ */
32
+ /** Loopback endpoints checked, in order. Ollama first — it is the common case. */
33
+ const LOCAL_ENDPOINTS = [
34
+ {
35
+ name: 'ollama',
36
+ tagsUrl: 'http://127.0.0.1:11434/api/tags',
37
+ baseUrl: 'http://127.0.0.1:11434',
38
+ openAiBaseUrl: 'http://127.0.0.1:11434/v1',
39
+ },
40
+ {
41
+ name: 'lm-studio',
42
+ tagsUrl: 'http://127.0.0.1:1234/v1/models',
43
+ baseUrl: 'http://127.0.0.1:1234',
44
+ openAiBaseUrl: 'http://127.0.0.1:1234/v1',
45
+ },
46
+ ];
47
+ /** Probe timeout. Loopback either answers immediately or is not there. */
48
+ const PROBE_TIMEOUT_MS = 300;
49
+ /** Process-lifetime cache — `undefined` = not yet probed, `null` = none found. */
50
+ let cached;
51
+ /**
52
+ * Extract model ids from either an Ollama `/api/tags` or an OpenAI `/v1/models`
53
+ * payload, whichever shape came back.
54
+ *
55
+ * @param body - parsed JSON response.
56
+ * @returns model ids, possibly empty.
57
+ */
58
+ function extractModels(body) {
59
+ if (body === null || typeof body !== 'object')
60
+ return [];
61
+ const rec = body;
62
+ // Ollama: { models: [{ name, model, … }] }
63
+ if (Array.isArray(rec.models)) {
64
+ return rec.models
65
+ .map((m) => m !== null && typeof m === 'object'
66
+ ? (m.name ?? m.model)
67
+ : undefined)
68
+ .filter((n) => typeof n === 'string');
69
+ }
70
+ // OpenAI-compatible: { data: [{ id }] }
71
+ if (Array.isArray(rec.data)) {
72
+ return rec.data
73
+ .map((m) => (m !== null && typeof m === 'object' ? m.id : undefined))
74
+ .filter((n) => typeof n === 'string');
75
+ }
76
+ return [];
77
+ }
78
+ /**
79
+ * Detect a reachable local inference server with at least one model loaded.
80
+ *
81
+ * Cached for the process lifetime: a background tick may consult this many
82
+ * times and the answer does not change mid-run in practice.
83
+ *
84
+ * Never throws — a probe failure means "not available", which is a normal
85
+ * result rather than an error.
86
+ *
87
+ * @param opts - `force` re-probes, ignoring the cache (tests).
88
+ * @returns the detected server, or `null` when none answers.
89
+ *
90
+ * @example
91
+ * ```ts
92
+ * const local = await detectLocalInference();
93
+ * if (local) console.log(`${local.name} has ${local.models.length} model(s)`);
94
+ * ```
95
+ *
96
+ * @task T12082
97
+ */
98
+ export async function detectLocalInference(opts = {}) {
99
+ // Operator opt-out. Two audiences: someone on a shared or metered box who
100
+ // does not want background work routed to a daemon they run for other
101
+ // purposes, and the test suite — which must produce the same result whether
102
+ // or not the developer happens to have Ollama running.
103
+ if (process.env['CLEO_DISABLE_LOCAL_INFERENCE']?.trim())
104
+ return null;
105
+ if (!opts.force && cached !== undefined)
106
+ return cached;
107
+ for (const endpoint of LOCAL_ENDPOINTS) {
108
+ try {
109
+ const response = await fetch(endpoint.tagsUrl, {
110
+ signal: AbortSignal.timeout(PROBE_TIMEOUT_MS),
111
+ });
112
+ if (!response.ok)
113
+ continue;
114
+ const models = extractModels(await response.json());
115
+ // A server with no models loaded cannot serve a completion, so it is not
116
+ // a usable fallback — treat it as absent rather than advertising it.
117
+ if (models.length === 0)
118
+ continue;
119
+ cached = {
120
+ name: endpoint.name,
121
+ baseUrl: endpoint.baseUrl,
122
+ openAiBaseUrl: endpoint.openAiBaseUrl,
123
+ models,
124
+ };
125
+ return cached;
126
+ }
127
+ catch {
128
+ // Unreachable / timed out / non-JSON — try the next endpoint.
129
+ }
130
+ }
131
+ cached = null;
132
+ return cached;
133
+ }
134
+ /**
135
+ * List the models an Ollama daemon actually has pulled.
136
+ *
137
+ * The cross-provider selector picks an Ollama model from a RAM heuristic
138
+ * alone, which answers "what could this machine run", not "what is installed".
139
+ * Those differ constantly — this machine has 62 GB of RAM and therefore scored
140
+ * into the `gemma4:e4b` tier while holding only `qwen2.5-coder:3b` and
141
+ * `qwen2:0.5b`, so the resolved model would have 404'd at the daemon. The fit
142
+ * heuristic is still right; it just has to be intersected with reality.
143
+ *
144
+ * Not cached — the installed set changes whenever the operator pulls a model,
145
+ * and the call is one loopback request.
146
+ *
147
+ * Never throws.
148
+ *
149
+ * @param baseUrl - Ollama root URL, e.g. `http://localhost:11434` (no `/v1`).
150
+ * @returns installed model ids in daemon order, empty when unreachable.
151
+ *
152
+ * @task T12082
153
+ */
154
+ export async function listOllamaModels(baseUrl) {
155
+ try {
156
+ const url = `${baseUrl.replace(/\/+$/, '')}/api/tags`;
157
+ const response = await fetch(url, { signal: AbortSignal.timeout(PROBE_TIMEOUT_MS) });
158
+ if (!response.ok)
159
+ return [];
160
+ return extractModels(await response.json());
161
+ }
162
+ catch {
163
+ return [];
164
+ }
165
+ }
166
+ /**
167
+ * Clear the probe cache. Tests only.
168
+ *
169
+ * @task T12082
170
+ */
171
+ export function _resetLocalInferenceCacheForTests() {
172
+ cached = undefined;
173
+ }
174
+ //# sourceMappingURL=local-inference-probe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-inference-probe.js","sourceRoot":"","sources":["../../src/llm/local-inference-probe.ts"],"names":[],"mappings":"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"}