@cleocode/cleo-os 2026.4.18 → 2026.4.20
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/bin/postinstall.js +61 -2
- package/bin/postinstall.js.map +1 -1
- package/dist/cli.js +4 -0
- package/dist/cli.js.map +1 -1
- package/dist/postinstall.js +61 -2
- package/dist/postinstall.js.map +1 -1
- package/dist/xdg.d.ts +2 -0
- package/dist/xdg.d.ts.map +1 -1
- package/dist/xdg.js +1 -0
- package/dist/xdg.js.map +1 -1
- package/extensions/cleo-agent-monitor.d.ts +141 -0
- package/extensions/cleo-agent-monitor.d.ts.map +1 -0
- package/extensions/cleo-agent-monitor.js +423 -0
- package/extensions/cleo-agent-monitor.js.map +1 -0
- package/extensions/cleo-agent-monitor.ts +611 -0
- package/extensions/cleo-cant-bridge.d.ts +36 -10
- package/extensions/cleo-cant-bridge.d.ts.map +1 -1
- package/extensions/cleo-cant-bridge.js +148 -22
- package/extensions/cleo-cant-bridge.js.map +1 -1
- package/extensions/cleo-cant-bridge.ts +238 -22
- package/extensions/tui-theme.d.ts +235 -0
- package/extensions/tui-theme.d.ts.map +1 -0
- package/extensions/tui-theme.js +276 -0
- package/extensions/tui-theme.js.map +1 -0
- package/extensions/tui-theme.ts +323 -0
- package/package.json +5 -4
- package/starter-bundle/README.md +48 -0
- package/starter-bundle/agents/cleo-orchestrator.cant +49 -0
- package/starter-bundle/agents/code-worker.cant +51 -0
- package/starter-bundle/agents/dev-lead.cant +54 -0
- package/starter-bundle/agents/docs-worker.cant +51 -0
- package/starter-bundle/team.cant +20 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* CleoOS CANT bridge — Wave 2 Pi extension.
|
|
2
|
+
* CleoOS CANT bridge — Wave 2 + Wave 5 Pi extension.
|
|
3
3
|
*
|
|
4
4
|
* CANONICAL LOCATION: `packages/cleo-os/extensions/cleo-cant-bridge.ts`
|
|
5
5
|
*
|
|
@@ -12,16 +12,17 @@
|
|
|
12
12
|
* Installed to: $XDG_DATA_HOME/cleo/extensions/cleo-cant-bridge.js
|
|
13
13
|
* Loaded by: Pi via `--extension <path>` injected by CleoOS cli.ts
|
|
14
14
|
*
|
|
15
|
-
* This bridge discovers `.cant` files
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* protocol text.
|
|
15
|
+
* This bridge discovers `.cant` files across the 3-tier hierarchy at
|
|
16
|
+
* session start, compiles them via `@cleocode/cant`'s `compileBundle()`,
|
|
17
|
+
* and appends the compiled declarations to Pi's system prompt on
|
|
18
|
+
* `before_agent_start`. This gives the LLM awareness of all declared
|
|
19
|
+
* agents, teams, and tools without hand-authored protocol text.
|
|
21
20
|
*
|
|
22
|
-
*
|
|
23
|
-
* -
|
|
24
|
-
* -
|
|
21
|
+
* 3-tier resolution (T438, ULTRAPLAN Section 2.4):
|
|
22
|
+
* - Global: `~/.local/share/cleo/cant/` (lowest precedence)
|
|
23
|
+
* - User: `~/.config/cleo/cant/`
|
|
24
|
+
* - Project: `<cwd>/.cleo/cant/` (highest precedence)
|
|
25
|
+
* - Override semantics: project > user > global, matched by basename
|
|
25
26
|
* - Prompt strategy: APPEND (per ULTRAPLAN L6, never replace)
|
|
26
27
|
*
|
|
27
28
|
* Wave 8 additions (T420):
|
|
@@ -44,8 +45,10 @@
|
|
|
44
45
|
*
|
|
45
46
|
* @packageDocumentation
|
|
46
47
|
*/
|
|
47
|
-
import {
|
|
48
|
-
import {
|
|
48
|
+
import { readdirSync } from "node:fs";
|
|
49
|
+
import { homedir } from "node:os";
|
|
50
|
+
import { basename, join } from "node:path";
|
|
51
|
+
import { accentPrimary, bold, textSecondary, BOX_HORIZONTAL, BOX_VERTICAL, BOX_TOP_LEFT, BOX_TOP_RIGHT, BOX_BOTTOM_LEFT, BOX_BOTTOM_RIGHT, BOX_LEFT_T, BOX_RIGHT_T, ICON_FORGE, ICON_DIAMOND, ICON_TRIANGLE, LINE_VERTICAL, } from "./tui-theme.js";
|
|
49
52
|
// ============================================================================
|
|
50
53
|
// T420: validate-on-load constants and pure helpers
|
|
51
54
|
// ============================================================================
|
|
@@ -205,6 +208,47 @@ function extractTargetPath(toolName, toolInput) {
|
|
|
205
208
|
}
|
|
206
209
|
return null;
|
|
207
210
|
}
|
|
211
|
+
/** Cached bundle counts, set during session_start. */
|
|
212
|
+
let lastBundleCounts = null;
|
|
213
|
+
/**
|
|
214
|
+
* Build the CleoOS branded session banner lines.
|
|
215
|
+
*
|
|
216
|
+
* Renders a box-drawing banner with the forge aesthetic using purple
|
|
217
|
+
* ANSI accents and the compiled CANT bundle counts.
|
|
218
|
+
*
|
|
219
|
+
* @param counts - Agent, team, and tool counts from the CANT bundle.
|
|
220
|
+
* @param sessionId - The current session ID, if available.
|
|
221
|
+
* @returns An array of pre-formatted ANSI lines for the widget.
|
|
222
|
+
*/
|
|
223
|
+
export function buildSessionBanner(counts, sessionId) {
|
|
224
|
+
const WIDTH = 44;
|
|
225
|
+
const hBar = BOX_HORIZONTAL.repeat(WIDTH);
|
|
226
|
+
// Build the content strings (plain, without ANSI, for padding calculation)
|
|
227
|
+
const titleText = ` ${ICON_FORGE} C L E O O S ${ICON_FORGE}`;
|
|
228
|
+
const subtitleText = " The Agentic Development Forge";
|
|
229
|
+
const statsText = ` Agents: ${counts.agents} ${LINE_VERTICAL} Teams: ${counts.teams} ${LINE_VERTICAL} Tools: ${counts.tools}`;
|
|
230
|
+
const sessionText = ` Session: ${sessionId.length > 20 ? sessionId.slice(0, 20) + "..." : sessionId}`;
|
|
231
|
+
/**
|
|
232
|
+
* Pad content to fill the banner width.
|
|
233
|
+
*
|
|
234
|
+
* @param content - The visible content string.
|
|
235
|
+
* @param styledContent - The ANSI-styled version of the content.
|
|
236
|
+
* @returns The padded line with box-drawing border characters.
|
|
237
|
+
*/
|
|
238
|
+
function padLine(content, styledContent) {
|
|
239
|
+
const pad = Math.max(0, WIDTH - content.length);
|
|
240
|
+
return accentPrimary(` ${BOX_VERTICAL}`) + styledContent + " ".repeat(pad) + accentPrimary(BOX_VERTICAL);
|
|
241
|
+
}
|
|
242
|
+
return [
|
|
243
|
+
accentPrimary(` ${BOX_TOP_LEFT}${hBar}${BOX_TOP_RIGHT}`),
|
|
244
|
+
padLine(titleText, bold(accentPrimary(titleText))),
|
|
245
|
+
padLine(subtitleText, textSecondary(subtitleText)),
|
|
246
|
+
accentPrimary(` ${BOX_LEFT_T}${hBar}${BOX_RIGHT_T}`),
|
|
247
|
+
padLine(statsText, textSecondary(statsText)),
|
|
248
|
+
padLine(sessionText, textSecondary(sessionText)),
|
|
249
|
+
accentPrimary(` ${BOX_BOTTOM_LEFT}${hBar}${BOX_BOTTOM_RIGHT}`),
|
|
250
|
+
];
|
|
251
|
+
}
|
|
208
252
|
// ============================================================================
|
|
209
253
|
// Internal state
|
|
210
254
|
// ============================================================================
|
|
@@ -235,6 +279,66 @@ function discoverCantFiles(dir) {
|
|
|
235
279
|
return [];
|
|
236
280
|
}
|
|
237
281
|
}
|
|
282
|
+
/**
|
|
283
|
+
* Resolve XDG-compliant paths for the 3-tier CANT hierarchy.
|
|
284
|
+
*
|
|
285
|
+
* Respects `XDG_DATA_HOME` and `XDG_CONFIG_HOME` environment variables.
|
|
286
|
+
* Falls back to XDG defaults (`~/.local/share/` and `~/.config/`).
|
|
287
|
+
*
|
|
288
|
+
* @param projectDir - The project root directory (for the project tier).
|
|
289
|
+
* @returns An object with `global`, `user`, and `project` CANT directory paths.
|
|
290
|
+
*/
|
|
291
|
+
function resolveThreeTierPaths(projectDir) {
|
|
292
|
+
const home = homedir();
|
|
293
|
+
const xdgData = process.env["XDG_DATA_HOME"] ?? join(home, ".local", "share");
|
|
294
|
+
const xdgConfig = process.env["XDG_CONFIG_HOME"] ?? join(home, ".config");
|
|
295
|
+
return {
|
|
296
|
+
global: join(xdgData, "cleo", "cant"),
|
|
297
|
+
user: join(xdgConfig, "cleo", "cant"),
|
|
298
|
+
project: join(projectDir, ".cleo", "cant"),
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Discover `.cant` files across all three tiers with override semantics.
|
|
303
|
+
*
|
|
304
|
+
* Scans global, user, and project tiers. Files in higher-precedence tiers
|
|
305
|
+
* override files in lower-precedence tiers that share the same basename.
|
|
306
|
+
* The precedence order is: project > user > global.
|
|
307
|
+
*
|
|
308
|
+
* @param projectDir - The project root directory.
|
|
309
|
+
* @returns An object containing the merged file list and per-tier statistics.
|
|
310
|
+
*/
|
|
311
|
+
function discoverCantFilesMultiTier(projectDir) {
|
|
312
|
+
const paths = resolveThreeTierPaths(projectDir);
|
|
313
|
+
const globalFiles = discoverCantFiles(paths.global);
|
|
314
|
+
const userFiles = discoverCantFiles(paths.user);
|
|
315
|
+
const projectFiles = discoverCantFiles(paths.project);
|
|
316
|
+
// Build basename-keyed map; lowest precedence first so higher tiers override
|
|
317
|
+
const fileMap = new Map();
|
|
318
|
+
for (const file of globalFiles) {
|
|
319
|
+
fileMap.set(basename(file), file);
|
|
320
|
+
}
|
|
321
|
+
const afterGlobal = fileMap.size;
|
|
322
|
+
for (const file of userFiles) {
|
|
323
|
+
fileMap.set(basename(file), file);
|
|
324
|
+
}
|
|
325
|
+
const afterUser = fileMap.size;
|
|
326
|
+
for (const file of projectFiles) {
|
|
327
|
+
fileMap.set(basename(file), file);
|
|
328
|
+
}
|
|
329
|
+
const totalUniqueInputs = globalFiles.length + userFiles.length + projectFiles.length;
|
|
330
|
+
const overrides = totalUniqueInputs - fileMap.size;
|
|
331
|
+
return {
|
|
332
|
+
files: Array.from(fileMap.values()),
|
|
333
|
+
stats: {
|
|
334
|
+
global: globalFiles.length,
|
|
335
|
+
user: userFiles.length,
|
|
336
|
+
project: projectFiles.length,
|
|
337
|
+
overrides,
|
|
338
|
+
merged: fileMap.size,
|
|
339
|
+
},
|
|
340
|
+
};
|
|
341
|
+
}
|
|
238
342
|
// ============================================================================
|
|
239
343
|
// T420: mental-model injection helper (async, calls memoryFind)
|
|
240
344
|
// ============================================================================
|
|
@@ -288,15 +392,14 @@ async function fetchMentalModelInjection(agentName, projectRoot) {
|
|
|
288
392
|
* @param pi - The Pi extension API instance.
|
|
289
393
|
*/
|
|
290
394
|
export default function (pi) {
|
|
291
|
-
// session_start: discover and compile .cant files from
|
|
395
|
+
// session_start: discover and compile .cant files from all 3 tiers
|
|
396
|
+
// T438: 3-tier resolution — global, user, project (project wins)
|
|
292
397
|
pi.on("session_start", async (_event, ctx) => {
|
|
293
398
|
bundlePrompt = null;
|
|
294
399
|
lastDiagnosticSummary = null;
|
|
400
|
+
lastBundleCounts = null;
|
|
295
401
|
try {
|
|
296
|
-
const
|
|
297
|
-
if (!existsSync(cantDir))
|
|
298
|
-
return;
|
|
299
|
-
const files = discoverCantFiles(cantDir);
|
|
402
|
+
const { files, stats } = discoverCantFilesMultiTier(ctx.cwd);
|
|
300
403
|
if (files.length === 0)
|
|
301
404
|
return;
|
|
302
405
|
// Dynamic import: @cleocode/cant may not be installed in all environments
|
|
@@ -306,11 +409,22 @@ export default function (pi) {
|
|
|
306
409
|
if (prompt.length > 0) {
|
|
307
410
|
bundlePrompt = prompt;
|
|
308
411
|
}
|
|
309
|
-
//
|
|
412
|
+
// T442: Cache bundle counts for banner and status bar
|
|
413
|
+
const teamName = bundle.teams.length > 0
|
|
414
|
+
? bundle.teams[0].name
|
|
415
|
+
: "none";
|
|
416
|
+
lastBundleCounts = {
|
|
417
|
+
agents: bundle.agents.length,
|
|
418
|
+
teams: bundle.teams.length,
|
|
419
|
+
tools: bundle.tools.length,
|
|
420
|
+
teamName,
|
|
421
|
+
};
|
|
422
|
+
// Build diagnostic summary with per-tier counts
|
|
310
423
|
const errorDiags = bundle.diagnostics.filter((d) => d.severity === "error");
|
|
311
424
|
const warnDiags = bundle.diagnostics.filter((d) => d.severity === "warning");
|
|
312
425
|
lastDiagnosticSummary = [
|
|
313
|
-
`Files: ${files.length}`,
|
|
426
|
+
`Files: ${files.length} (global: ${stats.global}, user: ${stats.user}, project: ${stats.project})`,
|
|
427
|
+
`Overrides: ${stats.overrides}`,
|
|
314
428
|
`Agents: ${bundle.agents.length}`,
|
|
315
429
|
`Teams: ${bundle.teams.length}`,
|
|
316
430
|
`Tools: ${bundle.tools.length}`,
|
|
@@ -320,11 +434,22 @@ export default function (pi) {
|
|
|
320
434
|
].join(", ");
|
|
321
435
|
// Notify on errors
|
|
322
436
|
if (errorDiags.length > 0 && ctx.hasUI) {
|
|
323
|
-
ctx.ui.notify(`CleoOS CANT bridge: ${errorDiags.length} validation error(s) in
|
|
437
|
+
ctx.ui.notify(`CleoOS CANT bridge: ${errorDiags.length} validation error(s) in CANT files`, "warning");
|
|
324
438
|
}
|
|
325
|
-
//
|
|
439
|
+
// T442: Render branded session banner and status bar entries
|
|
326
440
|
if (ctx.hasUI) {
|
|
327
|
-
|
|
441
|
+
// Derive a session ID from the session manager or use a fallback
|
|
442
|
+
const sessionId = ctx.sessionManager?.getSessionId?.()
|
|
443
|
+
?? `ses_${new Date().toISOString().replace(/[:.T-]/g, "").slice(0, 14)}`;
|
|
444
|
+
// Render the CleoOS banner widget above the editor
|
|
445
|
+
const bannerLines = buildSessionBanner(lastBundleCounts, sessionId);
|
|
446
|
+
ctx.ui.setWidget("cleo-banner", bannerLines, { placement: "aboveEditor" });
|
|
447
|
+
// Set persistent status bar entries using design system icons
|
|
448
|
+
ctx.ui.setStatus("cleo-agents", `${ICON_FORGE} ${bundle.agents.length} agents`);
|
|
449
|
+
ctx.ui.setStatus("cleo-team", `${ICON_DIAMOND} ${teamName}`);
|
|
450
|
+
ctx.ui.setStatus("cleo-tier", `${ICON_TRIANGLE} high`);
|
|
451
|
+
// Keep the existing CANT bridge status
|
|
452
|
+
ctx.ui.setStatus("cleo-cant-bridge", `CANT: ${bundle.agents.length} agent(s), ${files.length} file(s) [G:${stats.global} U:${stats.user} P:${stats.project}]`);
|
|
328
453
|
}
|
|
329
454
|
}
|
|
330
455
|
catch (err) {
|
|
@@ -446,6 +571,7 @@ export default function (pi) {
|
|
|
446
571
|
pi.on("session_shutdown", async () => {
|
|
447
572
|
bundlePrompt = null;
|
|
448
573
|
lastDiagnosticSummary = null;
|
|
574
|
+
lastBundleCounts = null;
|
|
449
575
|
});
|
|
450
576
|
}
|
|
451
577
|
//# sourceMappingURL=cleo-cant-bridge.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleo-cant-bridge.js","sourceRoot":"","sources":["cleo-cant-bridge.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cleo-cant-bridge.js","sourceRoot":"","sources":["cleo-cant-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* CleoOS CANT bridge — Wave 2 Pi extension.
|
|
2
|
+
* CleoOS CANT bridge — Wave 2 + Wave 5 Pi extension.
|
|
3
3
|
*
|
|
4
4
|
* CANONICAL LOCATION: `packages/cleo-os/extensions/cleo-cant-bridge.ts`
|
|
5
5
|
*
|
|
@@ -12,16 +12,17 @@
|
|
|
12
12
|
* Installed to: $XDG_DATA_HOME/cleo/extensions/cleo-cant-bridge.js
|
|
13
13
|
* Loaded by: Pi via `--extension <path>` injected by CleoOS cli.ts
|
|
14
14
|
*
|
|
15
|
-
* This bridge discovers `.cant` files
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* protocol text.
|
|
15
|
+
* This bridge discovers `.cant` files across the 3-tier hierarchy at
|
|
16
|
+
* session start, compiles them via `@cleocode/cant`'s `compileBundle()`,
|
|
17
|
+
* and appends the compiled declarations to Pi's system prompt on
|
|
18
|
+
* `before_agent_start`. This gives the LLM awareness of all declared
|
|
19
|
+
* agents, teams, and tools without hand-authored protocol text.
|
|
21
20
|
*
|
|
22
|
-
*
|
|
23
|
-
* -
|
|
24
|
-
* -
|
|
21
|
+
* 3-tier resolution (T438, ULTRAPLAN Section 2.4):
|
|
22
|
+
* - Global: `~/.local/share/cleo/cant/` (lowest precedence)
|
|
23
|
+
* - User: `~/.config/cleo/cant/`
|
|
24
|
+
* - Project: `<cwd>/.cleo/cant/` (highest precedence)
|
|
25
|
+
* - Override semantics: project > user > global, matched by basename
|
|
25
26
|
* - Prompt strategy: APPEND (per ULTRAPLAN L6, never replace)
|
|
26
27
|
*
|
|
27
28
|
* Wave 8 additions (T420):
|
|
@@ -45,12 +46,30 @@
|
|
|
45
46
|
* @packageDocumentation
|
|
46
47
|
*/
|
|
47
48
|
|
|
48
|
-
import {
|
|
49
|
-
import {
|
|
49
|
+
import { readdirSync } from "node:fs";
|
|
50
|
+
import { homedir } from "node:os";
|
|
51
|
+
import { basename, join } from "node:path";
|
|
50
52
|
import type {
|
|
51
53
|
ExtensionAPI,
|
|
52
54
|
ExtensionContext,
|
|
53
55
|
} from "@mariozechner/pi-coding-agent";
|
|
56
|
+
import {
|
|
57
|
+
accentPrimary,
|
|
58
|
+
bold,
|
|
59
|
+
textSecondary,
|
|
60
|
+
BOX_HORIZONTAL,
|
|
61
|
+
BOX_VERTICAL,
|
|
62
|
+
BOX_TOP_LEFT,
|
|
63
|
+
BOX_TOP_RIGHT,
|
|
64
|
+
BOX_BOTTOM_LEFT,
|
|
65
|
+
BOX_BOTTOM_RIGHT,
|
|
66
|
+
BOX_LEFT_T,
|
|
67
|
+
BOX_RIGHT_T,
|
|
68
|
+
ICON_FORGE,
|
|
69
|
+
ICON_DIAMOND,
|
|
70
|
+
ICON_TRIANGLE,
|
|
71
|
+
LINE_VERTICAL,
|
|
72
|
+
} from "./tui-theme.js";
|
|
54
73
|
|
|
55
74
|
// ============================================================================
|
|
56
75
|
// T420: validate-on-load constants and pure helpers
|
|
@@ -248,6 +267,84 @@ function extractTargetPath(
|
|
|
248
267
|
return null;
|
|
249
268
|
}
|
|
250
269
|
|
|
270
|
+
// ============================================================================
|
|
271
|
+
// T442: ANSI color helpers — imported from shared tui-theme.ts
|
|
272
|
+
// ============================================================================
|
|
273
|
+
// All color constants and styling functions are imported from tui-theme.ts
|
|
274
|
+
// at the top of this file. The design tokens map to:
|
|
275
|
+
// accentPrimary → #a855f7 (ANSI 135) — banner chrome, headers
|
|
276
|
+
// textSecondary → #94a3b8 (ANSI 245) — dim/muted text
|
|
277
|
+
// bold → ANSI bold escape — headings, emphasis
|
|
278
|
+
|
|
279
|
+
// ============================================================================
|
|
280
|
+
// T442: Session banner rendering
|
|
281
|
+
// ============================================================================
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Cached bundle counts from the last session_start compilation.
|
|
285
|
+
* Used by the banner and status bar entries.
|
|
286
|
+
*/
|
|
287
|
+
export interface BundleCounts {
|
|
288
|
+
/** Number of agents declared in the CANT bundle. */
|
|
289
|
+
agents: number;
|
|
290
|
+
/** Number of teams declared in the CANT bundle. */
|
|
291
|
+
teams: number;
|
|
292
|
+
/** Number of tools declared in the CANT bundle. */
|
|
293
|
+
tools: number;
|
|
294
|
+
/** Name of the first team in the bundle, or "none" if no teams. */
|
|
295
|
+
teamName: string;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
/** Cached bundle counts, set during session_start. */
|
|
299
|
+
let lastBundleCounts: BundleCounts | null = null;
|
|
300
|
+
|
|
301
|
+
/**
|
|
302
|
+
* Build the CleoOS branded session banner lines.
|
|
303
|
+
*
|
|
304
|
+
* Renders a box-drawing banner with the forge aesthetic using purple
|
|
305
|
+
* ANSI accents and the compiled CANT bundle counts.
|
|
306
|
+
*
|
|
307
|
+
* @param counts - Agent, team, and tool counts from the CANT bundle.
|
|
308
|
+
* @param sessionId - The current session ID, if available.
|
|
309
|
+
* @returns An array of pre-formatted ANSI lines for the widget.
|
|
310
|
+
*/
|
|
311
|
+
export function buildSessionBanner(
|
|
312
|
+
counts: BundleCounts,
|
|
313
|
+
sessionId: string,
|
|
314
|
+
): string[] {
|
|
315
|
+
const WIDTH = 44;
|
|
316
|
+
const hBar = BOX_HORIZONTAL.repeat(WIDTH);
|
|
317
|
+
|
|
318
|
+
// Build the content strings (plain, without ANSI, for padding calculation)
|
|
319
|
+
const titleText = ` ${ICON_FORGE} C L E O O S ${ICON_FORGE}`;
|
|
320
|
+
const subtitleText = " The Agentic Development Forge";
|
|
321
|
+
const statsText =
|
|
322
|
+
` Agents: ${counts.agents} ${LINE_VERTICAL} Teams: ${counts.teams} ${LINE_VERTICAL} Tools: ${counts.tools}`;
|
|
323
|
+
const sessionText = ` Session: ${sessionId.length > 20 ? sessionId.slice(0, 20) + "..." : sessionId}`;
|
|
324
|
+
|
|
325
|
+
/**
|
|
326
|
+
* Pad content to fill the banner width.
|
|
327
|
+
*
|
|
328
|
+
* @param content - The visible content string.
|
|
329
|
+
* @param styledContent - The ANSI-styled version of the content.
|
|
330
|
+
* @returns The padded line with box-drawing border characters.
|
|
331
|
+
*/
|
|
332
|
+
function padLine(content: string, styledContent: string): string {
|
|
333
|
+
const pad = Math.max(0, WIDTH - content.length);
|
|
334
|
+
return accentPrimary(` ${BOX_VERTICAL}`) + styledContent + " ".repeat(pad) + accentPrimary(BOX_VERTICAL);
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
return [
|
|
338
|
+
accentPrimary(` ${BOX_TOP_LEFT}${hBar}${BOX_TOP_RIGHT}`),
|
|
339
|
+
padLine(titleText, bold(accentPrimary(titleText))),
|
|
340
|
+
padLine(subtitleText, textSecondary(subtitleText)),
|
|
341
|
+
accentPrimary(` ${BOX_LEFT_T}${hBar}${BOX_RIGHT_T}`),
|
|
342
|
+
padLine(statsText, textSecondary(statsText)),
|
|
343
|
+
padLine(sessionText, textSecondary(sessionText)),
|
|
344
|
+
accentPrimary(` ${BOX_BOTTOM_LEFT}${hBar}${BOX_BOTTOM_RIGHT}`),
|
|
345
|
+
];
|
|
346
|
+
}
|
|
347
|
+
|
|
251
348
|
// ============================================================================
|
|
252
349
|
// Internal state
|
|
253
350
|
// ============================================================================
|
|
@@ -281,6 +378,99 @@ function discoverCantFiles(dir: string): string[] {
|
|
|
281
378
|
}
|
|
282
379
|
}
|
|
283
380
|
|
|
381
|
+
// ============================================================================
|
|
382
|
+
// T438: 3-tier CANT discovery (global > user > project, project wins)
|
|
383
|
+
// ============================================================================
|
|
384
|
+
|
|
385
|
+
/** Per-tier file counts for diagnostic reporting. */
|
|
386
|
+
interface TierDiscoveryStats {
|
|
387
|
+
global: number;
|
|
388
|
+
user: number;
|
|
389
|
+
project: number;
|
|
390
|
+
overrides: number;
|
|
391
|
+
merged: number;
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
/**
|
|
395
|
+
* Resolve XDG-compliant paths for the 3-tier CANT hierarchy.
|
|
396
|
+
*
|
|
397
|
+
* Respects `XDG_DATA_HOME` and `XDG_CONFIG_HOME` environment variables.
|
|
398
|
+
* Falls back to XDG defaults (`~/.local/share/` and `~/.config/`).
|
|
399
|
+
*
|
|
400
|
+
* @param projectDir - The project root directory (for the project tier).
|
|
401
|
+
* @returns An object with `global`, `user`, and `project` CANT directory paths.
|
|
402
|
+
*/
|
|
403
|
+
function resolveThreeTierPaths(projectDir: string): {
|
|
404
|
+
global: string;
|
|
405
|
+
user: string;
|
|
406
|
+
project: string;
|
|
407
|
+
} {
|
|
408
|
+
const home = homedir();
|
|
409
|
+
const xdgData =
|
|
410
|
+
process.env["XDG_DATA_HOME"] ?? join(home, ".local", "share");
|
|
411
|
+
const xdgConfig = process.env["XDG_CONFIG_HOME"] ?? join(home, ".config");
|
|
412
|
+
|
|
413
|
+
return {
|
|
414
|
+
global: join(xdgData, "cleo", "cant"),
|
|
415
|
+
user: join(xdgConfig, "cleo", "cant"),
|
|
416
|
+
project: join(projectDir, ".cleo", "cant"),
|
|
417
|
+
};
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
/**
|
|
421
|
+
* Discover `.cant` files across all three tiers with override semantics.
|
|
422
|
+
*
|
|
423
|
+
* Scans global, user, and project tiers. Files in higher-precedence tiers
|
|
424
|
+
* override files in lower-precedence tiers that share the same basename.
|
|
425
|
+
* The precedence order is: project > user > global.
|
|
426
|
+
*
|
|
427
|
+
* @param projectDir - The project root directory.
|
|
428
|
+
* @returns An object containing the merged file list and per-tier statistics.
|
|
429
|
+
*/
|
|
430
|
+
function discoverCantFilesMultiTier(projectDir: string): {
|
|
431
|
+
files: string[];
|
|
432
|
+
stats: TierDiscoveryStats;
|
|
433
|
+
} {
|
|
434
|
+
const paths = resolveThreeTierPaths(projectDir);
|
|
435
|
+
|
|
436
|
+
const globalFiles = discoverCantFiles(paths.global);
|
|
437
|
+
const userFiles = discoverCantFiles(paths.user);
|
|
438
|
+
const projectFiles = discoverCantFiles(paths.project);
|
|
439
|
+
|
|
440
|
+
// Build basename-keyed map; lowest precedence first so higher tiers override
|
|
441
|
+
const fileMap = new Map<string, string>();
|
|
442
|
+
|
|
443
|
+
for (const file of globalFiles) {
|
|
444
|
+
fileMap.set(basename(file), file);
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
const afterGlobal = fileMap.size;
|
|
448
|
+
|
|
449
|
+
for (const file of userFiles) {
|
|
450
|
+
fileMap.set(basename(file), file);
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
const afterUser = fileMap.size;
|
|
454
|
+
|
|
455
|
+
for (const file of projectFiles) {
|
|
456
|
+
fileMap.set(basename(file), file);
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
const totalUniqueInputs = globalFiles.length + userFiles.length + projectFiles.length;
|
|
460
|
+
const overrides = totalUniqueInputs - fileMap.size;
|
|
461
|
+
|
|
462
|
+
return {
|
|
463
|
+
files: Array.from(fileMap.values()),
|
|
464
|
+
stats: {
|
|
465
|
+
global: globalFiles.length,
|
|
466
|
+
user: userFiles.length,
|
|
467
|
+
project: projectFiles.length,
|
|
468
|
+
overrides,
|
|
469
|
+
merged: fileMap.size,
|
|
470
|
+
},
|
|
471
|
+
};
|
|
472
|
+
}
|
|
473
|
+
|
|
284
474
|
// ============================================================================
|
|
285
475
|
// T420: mental-model injection helper (async, calls memoryFind)
|
|
286
476
|
// ============================================================================
|
|
@@ -359,16 +549,15 @@ async function fetchMentalModelInjection(
|
|
|
359
549
|
* @param pi - The Pi extension API instance.
|
|
360
550
|
*/
|
|
361
551
|
export default function (pi: ExtensionAPI): void {
|
|
362
|
-
// session_start: discover and compile .cant files from
|
|
552
|
+
// session_start: discover and compile .cant files from all 3 tiers
|
|
553
|
+
// T438: 3-tier resolution — global, user, project (project wins)
|
|
363
554
|
pi.on("session_start", async (_event: unknown, ctx: ExtensionContext) => {
|
|
364
555
|
bundlePrompt = null;
|
|
365
556
|
lastDiagnosticSummary = null;
|
|
557
|
+
lastBundleCounts = null;
|
|
366
558
|
|
|
367
559
|
try {
|
|
368
|
-
const
|
|
369
|
-
if (!existsSync(cantDir)) return;
|
|
370
|
-
|
|
371
|
-
const files = discoverCantFiles(cantDir);
|
|
560
|
+
const { files, stats } = discoverCantFilesMultiTier(ctx.cwd);
|
|
372
561
|
if (files.length === 0) return;
|
|
373
562
|
|
|
374
563
|
// Dynamic import: @cleocode/cant may not be installed in all environments
|
|
@@ -390,11 +579,23 @@ export default function (pi: ExtensionAPI): void {
|
|
|
390
579
|
bundlePrompt = prompt;
|
|
391
580
|
}
|
|
392
581
|
|
|
393
|
-
//
|
|
582
|
+
// T442: Cache bundle counts for banner and status bar
|
|
583
|
+
const teamName = bundle.teams.length > 0
|
|
584
|
+
? bundle.teams[0].name
|
|
585
|
+
: "none";
|
|
586
|
+
lastBundleCounts = {
|
|
587
|
+
agents: bundle.agents.length,
|
|
588
|
+
teams: bundle.teams.length,
|
|
589
|
+
tools: bundle.tools.length,
|
|
590
|
+
teamName,
|
|
591
|
+
};
|
|
592
|
+
|
|
593
|
+
// Build diagnostic summary with per-tier counts
|
|
394
594
|
const errorDiags = bundle.diagnostics.filter((d) => d.severity === "error");
|
|
395
595
|
const warnDiags = bundle.diagnostics.filter((d) => d.severity === "warning");
|
|
396
596
|
lastDiagnosticSummary = [
|
|
397
|
-
`Files: ${files.length}`,
|
|
597
|
+
`Files: ${files.length} (global: ${stats.global}, user: ${stats.user}, project: ${stats.project})`,
|
|
598
|
+
`Overrides: ${stats.overrides}`,
|
|
398
599
|
`Agents: ${bundle.agents.length}`,
|
|
399
600
|
`Teams: ${bundle.teams.length}`,
|
|
400
601
|
`Tools: ${bundle.tools.length}`,
|
|
@@ -406,16 +607,30 @@ export default function (pi: ExtensionAPI): void {
|
|
|
406
607
|
// Notify on errors
|
|
407
608
|
if (errorDiags.length > 0 && ctx.hasUI) {
|
|
408
609
|
ctx.ui.notify(
|
|
409
|
-
`CleoOS CANT bridge: ${errorDiags.length} validation error(s) in
|
|
610
|
+
`CleoOS CANT bridge: ${errorDiags.length} validation error(s) in CANT files`,
|
|
410
611
|
"warning",
|
|
411
612
|
);
|
|
412
613
|
}
|
|
413
614
|
|
|
414
|
-
//
|
|
615
|
+
// T442: Render branded session banner and status bar entries
|
|
415
616
|
if (ctx.hasUI) {
|
|
617
|
+
// Derive a session ID from the session manager or use a fallback
|
|
618
|
+
const sessionId = ctx.sessionManager?.getSessionId?.()
|
|
619
|
+
?? `ses_${new Date().toISOString().replace(/[:.T-]/g, "").slice(0, 14)}`;
|
|
620
|
+
|
|
621
|
+
// Render the CleoOS banner widget above the editor
|
|
622
|
+
const bannerLines = buildSessionBanner(lastBundleCounts, sessionId);
|
|
623
|
+
ctx.ui.setWidget("cleo-banner", bannerLines, { placement: "aboveEditor" });
|
|
624
|
+
|
|
625
|
+
// Set persistent status bar entries using design system icons
|
|
626
|
+
ctx.ui.setStatus("cleo-agents", `${ICON_FORGE} ${bundle.agents.length} agents`);
|
|
627
|
+
ctx.ui.setStatus("cleo-team", `${ICON_DIAMOND} ${teamName}`);
|
|
628
|
+
ctx.ui.setStatus("cleo-tier", `${ICON_TRIANGLE} high`);
|
|
629
|
+
|
|
630
|
+
// Keep the existing CANT bridge status
|
|
416
631
|
ctx.ui.setStatus(
|
|
417
632
|
"cleo-cant-bridge",
|
|
418
|
-
`CANT: ${bundle.agents.length} agent(s), ${files.length} file(s)`,
|
|
633
|
+
`CANT: ${bundle.agents.length} agent(s), ${files.length} file(s) [G:${stats.global} U:${stats.user} P:${stats.project}]`,
|
|
419
634
|
);
|
|
420
635
|
}
|
|
421
636
|
} catch (err: unknown) {
|
|
@@ -594,5 +809,6 @@ export default function (pi: ExtensionAPI): void {
|
|
|
594
809
|
pi.on("session_shutdown", async () => {
|
|
595
810
|
bundlePrompt = null;
|
|
596
811
|
lastDiagnosticSummary = null;
|
|
812
|
+
lastBundleCounts = null;
|
|
597
813
|
});
|
|
598
814
|
}
|