@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.
- package/dist/docs/export-document.js +41 -0
- package/dist/docs/export-document.js.map +1 -1
- package/dist/gc/janitor.d.ts +149 -0
- package/dist/gc/janitor.d.ts.map +1 -0
- package/dist/gc/janitor.js +760 -0
- package/dist/gc/janitor.js.map +1 -0
- package/dist/internal.d.ts +1 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +3 -0
- package/dist/internal.js.map +1 -1
- package/dist/llm/cli-ops.d.ts +15 -4
- package/dist/llm/cli-ops.d.ts.map +1 -1
- package/dist/llm/cli-ops.js +78 -21
- package/dist/llm/cli-ops.js.map +1 -1
- package/dist/llm/credential-pool.d.ts +62 -0
- package/dist/llm/credential-pool.d.ts.map +1 -1
- package/dist/llm/credential-pool.js +161 -0
- package/dist/llm/credential-pool.js.map +1 -1
- package/dist/llm/cross-provider-selector.d.ts +8 -3
- package/dist/llm/cross-provider-selector.d.ts.map +1 -1
- package/dist/llm/cross-provider-selector.js +71 -8
- package/dist/llm/cross-provider-selector.js.map +1 -1
- package/dist/llm/plugin-facade.js +122 -1
- package/dist/llm/plugin-facade.js.map +1 -1
- package/dist/selfimprove/fix-gen-context.d.ts +172 -0
- package/dist/selfimprove/fix-gen-context.d.ts.map +1 -0
- package/dist/selfimprove/fix-gen-context.js +218 -0
- package/dist/selfimprove/fix-gen-context.js.map +1 -0
- package/dist/selfimprove/fix-gen.d.ts +60 -4
- package/dist/selfimprove/fix-gen.d.ts.map +1 -1
- package/dist/selfimprove/fix-gen.js +76631 -256
- package/dist/selfimprove/fix-gen.js.map +6 -1
- package/dist/selfimprove/op-source-map.d.ts +92 -0
- package/dist/selfimprove/op-source-map.d.ts.map +1 -0
- package/dist/selfimprove/op-source-map.js +187 -0
- package/dist/selfimprove/op-source-map.js.map +1 -0
- package/dist/selfimprove/probe-helper.d.ts +61 -0
- package/dist/selfimprove/probe-helper.d.ts.map +1 -0
- package/dist/selfimprove/probe-helper.js +64 -0
- package/dist/selfimprove/probe-helper.js.map +1 -0
- package/dist/selfimprove/scenarios/seeded-code-regression/golden.json +18 -0
- package/dist/selfimprove/scenarios/seeded-code-regression/scenario.json +12 -0
- package/dist/setup/index.d.ts +1 -0
- package/dist/setup/index.d.ts.map +1 -1
- package/dist/setup/index.js +1 -0
- package/dist/setup/index.js.map +1 -1
- package/dist/setup/sections/models-roles.d.ts +32 -1
- package/dist/setup/sections/models-roles.d.ts.map +1 -1
- package/dist/setup/sections/models-roles.js +118 -19
- package/dist/setup/sections/models-roles.js.map +1 -1
- package/dist/setup/whoami-summary.d.ts +34 -0
- package/dist/setup/whoami-summary.d.ts.map +1 -0
- package/dist/setup/whoami-summary.js +106 -0
- package/dist/setup/whoami-summary.js.map +1 -0
- 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
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
});
|
|
159
|
-
|
|
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
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,2BAA2B,GAC5B,MAAM,qCAAqC,CAAC;
|
|
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.
|
|
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.
|
|
450
|
-
"@cleocode/caamp": "2026.6.
|
|
451
|
-
"@cleocode/
|
|
452
|
-
"@cleocode/
|
|
453
|
-
"@cleocode/agents": "2026.6.
|
|
454
|
-
"@cleocode/lafs": "2026.6.
|
|
455
|
-
"@cleocode/nexus": "2026.6.
|
|
456
|
-
"@cleocode/
|
|
457
|
-
"@cleocode/
|
|
458
|
-
"@cleocode/
|
|
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.
|
|
493
|
+
"@cleocode/studio": "^2026.6.18"
|
|
494
494
|
},
|
|
495
495
|
"scripts": {
|
|
496
496
|
"build": "tsc && node scripts/copy-selfimprove-fixtures.mjs",
|