@cleocode/core 2026.3.48 → 2026.3.49
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/bootstrap.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +3 -3
- package/dist/init.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/bootstrap.ts +18 -9
- package/src/init.ts +11 -4
package/dist/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AA8BH,sCAAsC;AACtC,MAAM,WAAW,WAAW;IAC1B,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yCAAyC;IACzC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,oCAAoC;AACpC,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAaD;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AA8BH,sCAAsC;AACtC,MAAM,WAAW,WAAW;IAC1B,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yCAAyC;IACzC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,oCAAoC;AACpC,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAaD;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqE9F;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EAAE,EACjB,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,IAAI,CAAC,CA0Cf;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+FzF;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EAAE,EACjB,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,IAAI,CAAC,CAuBf;AAID;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,IAAI,CAAC,CAiDf;AAID;;;;;GAKG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,CAwBtD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,WAAW,CAAC,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CA2R7E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,WAAW,EAAE,OAAO,CAAA;CAAE,CAAC,CAiB/F;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAyBnF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cleocode/core",
|
|
3
|
-
"version": "2026.3.
|
|
3
|
+
"version": "2026.3.49",
|
|
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",
|
|
@@ -36,10 +36,10 @@
|
|
|
36
36
|
"write-file-atomic": "^6.0.0",
|
|
37
37
|
"yaml": "^2.8.2",
|
|
38
38
|
"zod": "^3.25.76",
|
|
39
|
-
"@cleocode/
|
|
40
|
-
"@cleocode/
|
|
41
|
-
"@cleocode/
|
|
42
|
-
"@cleocode/skills": "2026.3.
|
|
39
|
+
"@cleocode/contracts": "2026.3.49",
|
|
40
|
+
"@cleocode/adapters": "2026.3.49",
|
|
41
|
+
"@cleocode/agents": "2026.3.49",
|
|
42
|
+
"@cleocode/skills": "2026.3.49"
|
|
43
43
|
},
|
|
44
44
|
"engines": {
|
|
45
45
|
"node": ">=24.0.0"
|
package/src/bootstrap.ts
CHANGED
|
@@ -53,6 +53,14 @@ export async function bootstrapGlobalCleo(options?: BootstrapOptions): Promise<B
|
|
|
53
53
|
isDryRun: options?.dryRun ?? false,
|
|
54
54
|
};
|
|
55
55
|
|
|
56
|
+
// Step 0: Ensure global home structure and clean stale artifacts
|
|
57
|
+
try {
|
|
58
|
+
const { ensureGlobalHome } = await import('./scaffold.js');
|
|
59
|
+
await ensureGlobalHome();
|
|
60
|
+
} catch {
|
|
61
|
+
// Best-effort — don't fail bootstrap if cleanup fails
|
|
62
|
+
}
|
|
63
|
+
|
|
56
64
|
// Step 1: Ensure global templates
|
|
57
65
|
await ensureGlobalTemplatesBootstrap(ctx, options?.packageRoot);
|
|
58
66
|
|
|
@@ -135,19 +143,20 @@ async function injectAgentsHub(ctx: BootstrapContext): Promise<void> {
|
|
|
135
143
|
if (!ctx.isDryRun) {
|
|
136
144
|
await mkdir(globalAgentsDir, { recursive: true });
|
|
137
145
|
|
|
138
|
-
//
|
|
146
|
+
// Consolidate: strip ALL legacy CLEO blocks AND duplicate CAAMP blocks,
|
|
147
|
+
// then inject a single clean block. CAAMP 1.8.0 idempotency doesn't
|
|
148
|
+
// consolidate pre-existing duplicates — it only prevents new ones.
|
|
139
149
|
if (existsSync(globalAgentsMd)) {
|
|
140
150
|
const content = await readFile(globalAgentsMd, 'utf8');
|
|
141
|
-
const stripped = content
|
|
142
|
-
/\n?<!-- CLEO:START[^>]*-->[\s\S]*?<!-- CLEO:END -->\n?/g,
|
|
143
|
-
''
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
}
|
|
151
|
+
const stripped = content
|
|
152
|
+
.replace(/\n?<!-- CLEO:START[^>]*-->[\s\S]*?<!-- CLEO:END -->\n?/g, '')
|
|
153
|
+
.replace(/\n?<!-- CAAMP:START -->[\s\S]*?<!-- CAAMP:END -->\n?/g, '')
|
|
154
|
+
.trim();
|
|
155
|
+
// Write clean file (empty or user content only)
|
|
156
|
+
await writeFile(globalAgentsMd, stripped ? `${stripped}\n` : '', 'utf8');
|
|
148
157
|
}
|
|
149
158
|
|
|
150
|
-
//
|
|
159
|
+
// Single inject call on a clean file — no duplicates possible
|
|
151
160
|
const expectedContent = '@~/.cleo/templates/CLEO-INJECTION.md';
|
|
152
161
|
const action = await inject(globalAgentsMd, expectedContent);
|
|
153
162
|
ctx.created.push(`~/.agents/AGENTS.md (${action})`);
|
package/src/init.ts
CHANGED
|
@@ -130,12 +130,19 @@ export async function initAgentDefinition(created: string[], warnings: string[])
|
|
|
130
130
|
await mkdir(dirname(globalAgentsDir), { recursive: true });
|
|
131
131
|
|
|
132
132
|
try {
|
|
133
|
-
// Check if symlink already exists
|
|
133
|
+
// Check if symlink already exists and points to correct target
|
|
134
134
|
try {
|
|
135
135
|
const stat = await lstat(globalAgentsDir);
|
|
136
|
-
if (stat.isSymbolicLink()
|
|
137
|
-
|
|
138
|
-
|
|
136
|
+
if (stat.isSymbolicLink()) {
|
|
137
|
+
const { readlink } = await import('node:fs/promises');
|
|
138
|
+
const currentTarget = await readlink(globalAgentsDir);
|
|
139
|
+
if (currentTarget === agentSourceDir) {
|
|
140
|
+
return; // Symlink intact and pointing to correct location
|
|
141
|
+
}
|
|
142
|
+
// Stale symlink — remove and recreate
|
|
143
|
+
await unlink(globalAgentsDir);
|
|
144
|
+
} else if (stat.isDirectory()) {
|
|
145
|
+
return; // Copied dir, leave as-is
|
|
139
146
|
}
|
|
140
147
|
} catch {
|
|
141
148
|
// Doesn't exist, proceed to create
|