@cleocode/core 2026.6.15 → 2026.6.18

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 (55) hide show
  1. package/dist/docs/export-document.js +41 -0
  2. package/dist/docs/export-document.js.map +1 -1
  3. package/dist/gc/janitor.d.ts +149 -0
  4. package/dist/gc/janitor.d.ts.map +1 -0
  5. package/dist/gc/janitor.js +760 -0
  6. package/dist/gc/janitor.js.map +1 -0
  7. package/dist/internal.d.ts +1 -0
  8. package/dist/internal.d.ts.map +1 -1
  9. package/dist/internal.js +3 -0
  10. package/dist/internal.js.map +1 -1
  11. package/dist/llm/cli-ops.d.ts +15 -4
  12. package/dist/llm/cli-ops.d.ts.map +1 -1
  13. package/dist/llm/cli-ops.js +78 -21
  14. package/dist/llm/cli-ops.js.map +1 -1
  15. package/dist/llm/credential-pool.d.ts +62 -0
  16. package/dist/llm/credential-pool.d.ts.map +1 -1
  17. package/dist/llm/credential-pool.js +161 -0
  18. package/dist/llm/credential-pool.js.map +1 -1
  19. package/dist/llm/cross-provider-selector.d.ts +8 -3
  20. package/dist/llm/cross-provider-selector.d.ts.map +1 -1
  21. package/dist/llm/cross-provider-selector.js +71 -8
  22. package/dist/llm/cross-provider-selector.js.map +1 -1
  23. package/dist/llm/plugin-facade.js +122 -1
  24. package/dist/llm/plugin-facade.js.map +1 -1
  25. package/dist/selfimprove/fix-gen-context.d.ts +172 -0
  26. package/dist/selfimprove/fix-gen-context.d.ts.map +1 -0
  27. package/dist/selfimprove/fix-gen-context.js +218 -0
  28. package/dist/selfimprove/fix-gen-context.js.map +1 -0
  29. package/dist/selfimprove/fix-gen.d.ts +60 -4
  30. package/dist/selfimprove/fix-gen.d.ts.map +1 -1
  31. package/dist/selfimprove/fix-gen.js +76631 -256
  32. package/dist/selfimprove/fix-gen.js.map +6 -1
  33. package/dist/selfimprove/op-source-map.d.ts +92 -0
  34. package/dist/selfimprove/op-source-map.d.ts.map +1 -0
  35. package/dist/selfimprove/op-source-map.js +187 -0
  36. package/dist/selfimprove/op-source-map.js.map +1 -0
  37. package/dist/selfimprove/probe-helper.d.ts +61 -0
  38. package/dist/selfimprove/probe-helper.d.ts.map +1 -0
  39. package/dist/selfimprove/probe-helper.js +64 -0
  40. package/dist/selfimprove/probe-helper.js.map +1 -0
  41. package/dist/selfimprove/scenarios/seeded-code-regression/golden.json +18 -0
  42. package/dist/selfimprove/scenarios/seeded-code-regression/scenario.json +12 -0
  43. package/dist/setup/index.d.ts +1 -0
  44. package/dist/setup/index.d.ts.map +1 -1
  45. package/dist/setup/index.js +1 -0
  46. package/dist/setup/index.js.map +1 -1
  47. package/dist/setup/sections/models-roles.d.ts +32 -1
  48. package/dist/setup/sections/models-roles.d.ts.map +1 -1
  49. package/dist/setup/sections/models-roles.js +118 -19
  50. package/dist/setup/sections/models-roles.js.map +1 -1
  51. package/dist/setup/whoami-summary.d.ts +34 -0
  52. package/dist/setup/whoami-summary.d.ts.map +1 -0
  53. package/dist/setup/whoami-summary.js +106 -0
  54. package/dist/setup/whoami-summary.js.map +1 -0
  55. package/package.json +12 -12
@@ -32,6 +32,7 @@
32
32
  import { WHOAMI_ROLE_IDS } from '@cleocode/contracts';
33
33
  import { loadConfig, setConfigValue } from '../../config.js';
34
34
  import { catalogKeyForProvider, listProviderModels, resolveProviderDefaultModel, } from '../../llm/catalog-model-resolver.js';
35
+ import { LOCAL_FIT_FLOOR_GB } from '../../llm/local-model-fit.js';
35
36
  /**
36
37
  * Sentinel option offered in interactive pickers meaning "leave this unset".
37
38
  *
@@ -148,28 +149,42 @@ export function createModelsRolesSection() {
148
149
  return { changed: false, summary: 'skipped (no provider configured)' };
149
150
  }
150
151
  // 1. Default model selection.
151
- const modelChoices = modelChoicesForProvider(defaultProvider);
152
- if (modelChoices.length > 1) {
153
- const picked = await io.select(`Default model for ${defaultProvider}?`, modelChoices);
154
- if (picked !== SKIP_CHOICE) {
155
- await setConfigValue('llm.default.model', picked, undefined, { global: true });
156
- await setConfigValue('llm.default.provider', defaultProvider, undefined, {
157
- global: true,
158
- });
159
- changes.push(`default model → ${picked}`);
152
+ // For local (ollama) providers: use fit-gated recommendations (T11983 AC).
153
+ // RECOMMEND-NEVER-KILL: never auto-pull, never auto-select; present ranked
154
+ // options from `rankLocalModelFit`; machines below the 4 GB floor get
155
+ // cloud-only guidance.
156
+ if (defaultProvider === 'ollama') {
157
+ const modelPicked = await _pickOllamaModelInteractive(io);
158
+ if (modelPicked) {
159
+ await setConfigValue('llm.default.model', modelPicked, undefined, { global: true });
160
+ await setConfigValue('llm.default.provider', 'ollama', undefined, { global: true });
161
+ changes.push(`default model → ${modelPicked}`);
160
162
  }
161
163
  }
162
164
  else {
163
- // Catalog empty — fall back to the resolver's latest, or a free prompt.
164
- const latest = resolveProviderDefaultModel(catalogKeyForProvider(defaultProvider));
165
- const typed = (await io.prompt(`Default model for ${defaultProvider}${latest ? ` [${latest}]` : ''} (blank to skip):`)).trim();
166
- const model = typed || latest || '';
167
- if (model) {
168
- await setConfigValue('llm.default.model', model, undefined, { global: true });
169
- await setConfigValue('llm.default.provider', defaultProvider, undefined, {
170
- global: true,
171
- });
172
- changes.push(`default model → ${model}`);
165
+ const modelChoices = modelChoicesForProvider(defaultProvider);
166
+ if (modelChoices.length > 1) {
167
+ const picked = await io.select(`Default model for ${defaultProvider}?`, modelChoices);
168
+ if (picked !== SKIP_CHOICE) {
169
+ await setConfigValue('llm.default.model', picked, undefined, { global: true });
170
+ await setConfigValue('llm.default.provider', defaultProvider, undefined, {
171
+ global: true,
172
+ });
173
+ changes.push(`default model → ${picked}`);
174
+ }
175
+ }
176
+ else {
177
+ // Catalog empty — fall back to the resolver's latest, or a free prompt.
178
+ const latest = resolveProviderDefaultModel(catalogKeyForProvider(defaultProvider));
179
+ const typed = (await io.prompt(`Default model for ${defaultProvider}${latest ? ` [${latest}]` : ''} (blank to skip):`)).trim();
180
+ const model = typed || latest || '';
181
+ if (model) {
182
+ await setConfigValue('llm.default.model', model, undefined, { global: true });
183
+ await setConfigValue('llm.default.provider', defaultProvider, undefined, {
184
+ global: true,
185
+ });
186
+ changes.push(`default model → ${model}`);
187
+ }
173
188
  }
174
189
  }
175
190
  // 2. Optional per-role profiles.
@@ -216,4 +231,88 @@ async function writeRoleBinding(role, binding) {
216
231
  });
217
232
  }
218
233
  }
234
+ /**
235
+ * The default ranker used in production: calls the real `rankLocalModelFit`.
236
+ *
237
+ * Lazy import keeps this module free of heavy OS-level side effects at parse
238
+ * time (Gate-13 compliance: no transport construction at import).
239
+ *
240
+ * @internal
241
+ */
242
+ async function defaultLocalModelFitRanker() {
243
+ const { rankLocalModelFit } = await import('../../llm/local-model-fit.js');
244
+ return rankLocalModelFit();
245
+ }
246
+ /**
247
+ * Interactive Ollama model picker driven by fit-gated recommendations (T11983).
248
+ *
249
+ * Behaviour:
250
+ * - Calls `rankLocalModelFit` to detect hardware + Ollama state.
251
+ * - Below the 4 GB floor → informs the user (cloud-only guidance) and returns
252
+ * `null` (caller skips the binding).
253
+ * - Above the floor with recommendations → presents a ranked pick list of
254
+ * 2–3 candidates (never auto-selects, never auto-pulls — RECOMMEND-NEVER-KILL).
255
+ * - Already-pulled models are surfaced first with a `[pulled]` tag.
256
+ * - Free-text fallback offered as the last option so the user can type any tag.
257
+ * - Returns the chosen model tag, or `null` if the user skipped.
258
+ *
259
+ * The ranker is injectable so tests can supply a stub envelope without
260
+ * hitting the OS or network.
261
+ *
262
+ * @param io - Wizard I/O surface.
263
+ * @param ranker - Override the fit ranker for tests (defaults to the real one).
264
+ * @returns The chosen Ollama model tag, or `null` when the user skipped / below floor.
265
+ *
266
+ * @task T11983
267
+ */
268
+ export async function _pickOllamaModelInteractive(io, ranker = defaultLocalModelFitRanker) {
269
+ io.info('Detecting local hardware for Ollama model fit ranking…');
270
+ let fitEnvelope;
271
+ try {
272
+ fitEnvelope = await ranker();
273
+ }
274
+ catch (err) {
275
+ io.warn(`Hardware detection failed: ${err instanceof Error ? err.message : String(err)}. ` +
276
+ 'Falling back to manual model entry.');
277
+ const typed = (await io.prompt('Enter Ollama model tag (e.g. gemma4:e2b) or blank to skip:')).trim();
278
+ return typed || null;
279
+ }
280
+ const hw = fitEnvelope.hardware;
281
+ io.info(` Hardware: ${hw.totalRamGb.toFixed(1)} GB RAM, ` +
282
+ (hw.vramTotalGb !== null ? `${hw.vramTotalGb.toFixed(1)} GB VRAM` : 'no GPU detected') +
283
+ (fitEnvelope.ollamaRunning ? ', Ollama running' : ', Ollama not running'));
284
+ // Below floor: guide to cloud-only.
285
+ if (fitEnvelope.noRecommendationReason) {
286
+ io.warn(`\nLocal model recommendation not available: ${fitEnvelope.noRecommendationReason}\n` +
287
+ `This machine has ${hw.totalRamGb.toFixed(1)} GB RAM — local LLM inference requires at least ${LOCAL_FIT_FLOOR_GB} GB.\n` +
288
+ 'Please use a cloud provider (anthropic, openai, gemini, etc.) instead.');
289
+ return null;
290
+ }
291
+ // Build choice list from fit recommendations.
292
+ const recs = fitEnvelope.recommendations;
293
+ if (recs.length === 0) {
294
+ io.warn('No local model candidates fit this machine. Consider a cloud provider.');
295
+ const typed = (await io.prompt('Enter Ollama model tag manually (blank to skip):')).trim();
296
+ return typed || null;
297
+ }
298
+ io.info('\nRecommended local models (ranked by hardware fit):');
299
+ const choices = recs.map((r) => {
300
+ const tag = r.candidate.modelTag;
301
+ const pulled = r.alreadyPulled ? ' [pulled]' : '';
302
+ return `${tag}${pulled} (${r.fitTier})`;
303
+ });
304
+ // Always offer a manual-entry option so the user is never locked in.
305
+ choices.push('(enter manually)');
306
+ choices.push(SKIP_CHOICE);
307
+ const picked = await io.select('Choose a local model for Ollama:', choices);
308
+ if (picked === SKIP_CHOICE)
309
+ return null;
310
+ if (picked === '(enter manually)') {
311
+ const typed = (await io.prompt('Enter Ollama model tag (e.g. gemma4:e2b):')).trim();
312
+ return typed || null;
313
+ }
314
+ // Strip the suffix annotation to get the raw model tag.
315
+ const rawTag = picked.split(' ')[0] ?? picked;
316
+ return rawTag;
317
+ }
219
318
  //# sourceMappingURL=models-roles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"models-roles.js","sourceRoot":"","sources":["../../../src/setup/sections/models-roles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"models-roles.js","sourceRoot":"","sources":["../../../src/setup/sections/models-roles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Post-wizard whoami summary + TUI-offer helper (T11983).
3
+ *
4
+ * Called after a successful first-run setup completion. Prints a brief
5
+ * identity snapshot to the wizard's `io` surface and offers to launch the
6
+ * CLEO TUI.
7
+ *
8
+ * Lives in `packages/core/src/setup/` alongside the other wizard section
9
+ * modules so the CLI command (`packages/cleo/src/cli/commands/setup.ts`)
10
+ * can import it without violating the CLI-boundary gate (ADR Gate 6 /
11
+ * T9837e / T10076).
12
+ *
13
+ * @module setup/whoami-summary
14
+ * @task T11983
15
+ */
16
+ import type { WizardIO } from './wizard.js';
17
+ /**
18
+ * Print a whoami-style summary to the wizard IO surface and offer to launch
19
+ * the TUI.
20
+ *
21
+ * Called after a successful first-run completion. Output goes to `io.info()`
22
+ * (which routes to stderr in the CLI) so the LAFS envelope already written to
23
+ * stdout is never corrupted.
24
+ *
25
+ * The TUI offer uses `io.confirm()` — if the user accepts, launches
26
+ * `cleo tui` via a child_process spawn (non-blocking fire-and-forget so the
27
+ * wizard process exits cleanly regardless of TUI lifetime).
28
+ *
29
+ * @param io - Wizard I/O surface (for the TUI offer prompt).
30
+ *
31
+ * @task T11983
32
+ */
33
+ export declare function printWhoamiSummaryAndOfferTui(io: WizardIO): Promise<void>;
34
+ //# sourceMappingURL=whoami-summary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoami-summary.d.ts","sourceRoot":"","sources":["../../src/setup/whoami-summary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AA8C5C;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,6BAA6B,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAqC/E"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Post-wizard whoami summary + TUI-offer helper (T11983).
3
+ *
4
+ * Called after a successful first-run setup completion. Prints a brief
5
+ * identity snapshot to the wizard's `io` surface and offers to launch the
6
+ * CLEO TUI.
7
+ *
8
+ * Lives in `packages/core/src/setup/` alongside the other wizard section
9
+ * modules so the CLI command (`packages/cleo/src/cli/commands/setup.ts`)
10
+ * can import it without violating the CLI-boundary gate (ADR Gate 6 /
11
+ * T9837e / T10076).
12
+ *
13
+ * @module setup/whoami-summary
14
+ * @task T11983
15
+ */
16
+ // ---------------------------------------------------------------------------
17
+ // Internal helpers
18
+ // ---------------------------------------------------------------------------
19
+ /**
20
+ * Read a best-effort CLEO identity snapshot for the whoami-style summary.
21
+ *
22
+ * Never throws — returns partial data on any config/credential error.
23
+ *
24
+ * @internal
25
+ */
26
+ async function _readWhoamiSnapshot() {
27
+ try {
28
+ const { loadConfig, getConfigValue } = await import('../config.js');
29
+ const { getCredentialPool } = await import('../llm/credential-pool.js');
30
+ const cfg = await loadConfig();
31
+ const nameResult = await getConfigValue('agent.name').catch(() => null);
32
+ const agentName = typeof nameResult?.value === 'string' && nameResult.value ? nameResult.value : 'cleo-agent';
33
+ const provider = cfg?.llm?.default?.provider ?? '';
34
+ const model = cfg?.llm?.default?.model ?? '';
35
+ let credentialCount = 0;
36
+ try {
37
+ const pool = getCredentialPool();
38
+ const entries = await pool.list();
39
+ credentialCount = entries.length;
40
+ }
41
+ catch {
42
+ // best-effort
43
+ }
44
+ return { agentName, provider, model, credentialCount };
45
+ }
46
+ catch {
47
+ return { agentName: 'cleo-agent', provider: '', model: '', credentialCount: 0 };
48
+ }
49
+ }
50
+ // ---------------------------------------------------------------------------
51
+ // Public API
52
+ // ---------------------------------------------------------------------------
53
+ /**
54
+ * Print a whoami-style summary to the wizard IO surface and offer to launch
55
+ * the TUI.
56
+ *
57
+ * Called after a successful first-run completion. Output goes to `io.info()`
58
+ * (which routes to stderr in the CLI) so the LAFS envelope already written to
59
+ * stdout is never corrupted.
60
+ *
61
+ * The TUI offer uses `io.confirm()` — if the user accepts, launches
62
+ * `cleo tui` via a child_process spawn (non-blocking fire-and-forget so the
63
+ * wizard process exits cleanly regardless of TUI lifetime).
64
+ *
65
+ * @param io - Wizard I/O surface (for the TUI offer prompt).
66
+ *
67
+ * @task T11983
68
+ */
69
+ export async function printWhoamiSummaryAndOfferTui(io) {
70
+ const snap = await _readWhoamiSnapshot();
71
+ const lines = [
72
+ '',
73
+ '─────────────────────────────────────────',
74
+ 'CLEO Setup Complete',
75
+ '─────────────────────────────────────────',
76
+ ` Agent name : ${snap.agentName}`,
77
+ ` Provider : ${snap.provider || '(not set)'}`,
78
+ ` Model : ${snap.model || '(not set)'}`,
79
+ ` Credentials: ${snap.credentialCount} in pool`,
80
+ '',
81
+ "Run 'cleo whoami' for full identity details.",
82
+ "Run 'cleo llm health' to verify your credentials.",
83
+ '─────────────────────────────────────────',
84
+ '',
85
+ ];
86
+ for (const line of lines) {
87
+ io.info(line);
88
+ }
89
+ // Offer to launch the TUI — non-blocking (fire-and-forget spawn).
90
+ try {
91
+ const launch = await io.confirm('Launch the CLEO TUI now?', false);
92
+ if (launch) {
93
+ io.info("Launching 'cleo tui'…");
94
+ const { spawn } = await import('node:child_process');
95
+ // Detach so the wizard process exits cleanly regardless of TUI lifetime.
96
+ spawn('cleo', ['tui'], {
97
+ stdio: 'inherit',
98
+ detached: false,
99
+ });
100
+ }
101
+ }
102
+ catch {
103
+ // If the prompt fails (non-TTY or stdin closed), skip silently.
104
+ }
105
+ }
106
+ //# sourceMappingURL=whoami-summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoami-summary.js","sourceRoot":"","sources":["../../src/setup/whoami-summary.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cleocode/core",
3
- "version": "2026.6.15",
3
+ "version": "2026.6.18",
4
4
  "description": "CLEO core business logic kernel — tasks, sessions, memory, orchestration, lifecycle, with bundled SQLite store",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -446,16 +446,16 @@
446
446
  "write-file-atomic": "^7.0.1",
447
447
  "yaml": "^2.8.3",
448
448
  "zod": "^4.3.6",
449
- "@cleocode/adapters": "2026.6.15",
450
- "@cleocode/caamp": "2026.6.15",
451
- "@cleocode/contracts": "2026.6.15",
452
- "@cleocode/git-shim": "2026.6.15",
453
- "@cleocode/agents": "2026.6.15",
454
- "@cleocode/lafs": "2026.6.15",
455
- "@cleocode/nexus": "2026.6.15",
456
- "@cleocode/skills": "2026.6.15",
457
- "@cleocode/worktree": "2026.6.15",
458
- "@cleocode/paths": "2026.6.15"
449
+ "@cleocode/adapters": "2026.6.18",
450
+ "@cleocode/caamp": "2026.6.18",
451
+ "@cleocode/git-shim": "2026.6.18",
452
+ "@cleocode/contracts": "2026.6.18",
453
+ "@cleocode/agents": "2026.6.18",
454
+ "@cleocode/lafs": "2026.6.18",
455
+ "@cleocode/nexus": "2026.6.18",
456
+ "@cleocode/paths": "2026.6.18",
457
+ "@cleocode/skills": "2026.6.18",
458
+ "@cleocode/worktree": "2026.6.18"
459
459
  },
460
460
  "engines": {
461
461
  "node": ">=24.16.0"
@@ -490,7 +490,7 @@
490
490
  },
491
491
  "optionalDependencies": {
492
492
  "llmtxt": "^2026.5.15",
493
- "@cleocode/studio": "^2026.6.15"
493
+ "@cleocode/studio": "^2026.6.18"
494
494
  },
495
495
  "scripts": {
496
496
  "build": "tsc && node scripts/copy-selfimprove-fixtures.mjs",