@cleocode/cleo-os 2026.4.40 → 2026.4.42

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.
@@ -48,11 +48,10 @@
48
48
 
49
49
  import { execFile } from "node:child_process";
50
50
  import { existsSync, readFileSync, readdirSync } from "node:fs";
51
+ import { createRequire } from "node:module";
51
52
  import { homedir } from "node:os";
52
53
  import { basename, join } from "node:path";
53
54
  import { promisify } from "node:util";
54
-
55
- const execFileAsync = promisify(execFile);
56
55
  import type {
57
56
  ExtensionAPI,
58
57
  ExtensionContext,
@@ -75,6 +74,128 @@ import {
75
74
  LINE_VERTICAL,
76
75
  } from "./tui-theme.js";
77
76
 
77
+ const execFileAsync = promisify(execFile);
78
+
79
+ // ---------------------------------------------------------------------------
80
+ // Module resolution helper for deployed extensions
81
+ // ---------------------------------------------------------------------------
82
+ // When this extension is deployed to ~/.local/share/cleo/extensions/, bare
83
+ // specifier imports like `import("@cleocode/cant")` fail because there is no
84
+ // node_modules in that directory. The postinstall script creates a symlink
85
+ // (extensions/node_modules → cleo-os/node_modules) to fix this, but as a
86
+ // defensive fallback we also try `createRequire` rooted at the cleo-os
87
+ // package.json. This makes the extension work even if the symlink is missing.
88
+
89
+ /**
90
+ * Resolve the cleo-os package root by walking up from this file's location.
91
+ *
92
+ * In development (monorepo), the extension lives at
93
+ * `packages/cleo-os/extensions/cleo-cant-bridge.ts` so the package root is `..`.
94
+ *
95
+ * When deployed to `~/.local/share/cleo/extensions/`, the symlink
96
+ * `node_modules → <pkgRoot>/node_modules` lets us find the package root
97
+ * by resolving the symlink target's parent.
98
+ *
99
+ * As a last resort, searches common global npm paths for @cleocode/cleo-os.
100
+ *
101
+ * @returns The absolute path to the cleo-os package.json, or null if not found.
102
+ */
103
+ function findCleoOsPackageJson(): string | null {
104
+ // Strategy 1: We're inside the package (dev or extensions/ is in pkgRoot)
105
+ const parentPkgJson = join(import.meta.dirname ?? ".", "..", "package.json");
106
+ try {
107
+ if (existsSync(parentPkgJson)) {
108
+ const pkg = JSON.parse(readFileSync(parentPkgJson, "utf-8"));
109
+ if (pkg.name === "@cleocode/cleo-os") return parentPkgJson;
110
+ }
111
+ } catch { /* ignore */ }
112
+
113
+ // Strategy 2: Search common global install locations
114
+ const home = homedir();
115
+ const candidates = [
116
+ // npm global (custom prefix)
117
+ join(home, ".npm-global", "lib", "node_modules", "@cleocode", "cleo-os", "package.json"),
118
+ // npm global (default prefix on Linux/macOS)
119
+ join("/usr", "local", "lib", "node_modules", "@cleocode", "cleo-os", "package.json"),
120
+ // npm global (default prefix via nvm)
121
+ ...(process.env["NVM_DIR"]
122
+ ? [join(process.env["NVM_DIR"], "versions", "node", `v${process.version.slice(1)}`, "lib", "node_modules", "@cleocode", "cleo-os", "package.json")]
123
+ : []),
124
+ // npm global (prefix from env)
125
+ ...(process.env["npm_config_prefix"]
126
+ ? [join(process.env["npm_config_prefix"], "lib", "node_modules", "@cleocode", "cleo-os", "package.json")]
127
+ : []),
128
+ ];
129
+
130
+ for (const candidate of candidates) {
131
+ try {
132
+ if (existsSync(candidate)) return candidate;
133
+ } catch { /* ignore */ }
134
+ }
135
+
136
+ return null;
137
+ }
138
+
139
+ /** Cached createRequire instance rooted at the cleo-os package. */
140
+ let _cleoOsRequire: NodeRequire | null | undefined;
141
+
142
+ /**
143
+ * Get a `require` function rooted at the cleo-os package.json.
144
+ *
145
+ * Used as a fallback when `import()` cannot resolve @cleocode/* packages
146
+ * from the deployed extensions directory.
147
+ *
148
+ * @returns A `require` function, or null if the cleo-os package cannot be found.
149
+ */
150
+ function getCleoOsRequire(): NodeRequire | null {
151
+ if (_cleoOsRequire !== undefined) return _cleoOsRequire;
152
+
153
+ const pkgJson = findCleoOsPackageJson();
154
+ if (pkgJson) {
155
+ _cleoOsRequire = createRequire(pkgJson);
156
+ } else {
157
+ _cleoOsRequire = null;
158
+ }
159
+ return _cleoOsRequire;
160
+ }
161
+
162
+ /**
163
+ * Dynamically import a @cleocode/* module with fallback resolution.
164
+ *
165
+ * Tries the standard `import()` first (works when node_modules symlink exists
166
+ * or in a monorepo). Falls back to `createRequire` rooted at the cleo-os
167
+ * package root so that deployed extensions can find @cleocode/* dependencies
168
+ * even without the symlink.
169
+ *
170
+ * @param specifier - The bare module specifier (e.g. "@cleocode/cant").
171
+ * @returns The imported module, or throws if resolution fails everywhere.
172
+ */
173
+ async function importCleoModule(specifier: string): Promise<unknown> {
174
+ // Try standard import() first — works in dev and with node_modules symlink
175
+ try {
176
+ return await import(specifier);
177
+ } catch {
178
+ // Standard import failed — try createRequire fallback
179
+ }
180
+
181
+ // Fallback: use createRequire rooted at cleo-os package
182
+ const req = getCleoOsRequire();
183
+ if (req) {
184
+ try {
185
+ // resolve() finds the path, then import() loads it as ESM
186
+ const resolved = req.resolve(specifier);
187
+ return await import(resolved);
188
+ } catch {
189
+ // createRequire also failed — fall through to throw
190
+ }
191
+ }
192
+
193
+ throw new Error(
194
+ `Cannot resolve module "${specifier}". ` +
195
+ `Ensure @cleocode/cleo-os is installed globally and its postinstall ran successfully.`
196
+ );
197
+ }
198
+
78
199
  // ============================================================================
79
200
  // T420: validate-on-load constants and pure helpers
80
201
  // ============================================================================
@@ -498,14 +619,10 @@ function discoverCantFilesMultiTier(projectDir: string): {
498
619
  fileMap.set(basename(file), file);
499
620
  }
500
621
 
501
- const afterGlobal = fileMap.size;
502
-
503
622
  for (const file of userFiles) {
504
623
  fileMap.set(basename(file), file);
505
624
  }
506
625
 
507
- const afterUser = fileMap.size;
508
-
509
626
  for (const file of projectFiles) {
510
627
  fileMap.set(basename(file), file);
511
628
  }
@@ -547,7 +664,8 @@ async function fetchMentalModelInjection(
547
664
  try {
548
665
  // Lazy import: @cleocode/core may not be present in all environments.
549
666
  // memoryFind is the engine-compat wrapper (T418) that accepts `agent`.
550
- const coreModule = (await import("@cleocode/core")) as {
667
+ // Uses importCleoModule for resolution from deployed extensions directory.
668
+ const coreModule = (await importCleoModule("@cleocode/core")) as {
551
669
  memoryFind?: (
552
670
  params: {
553
671
  query: string;
@@ -628,8 +746,9 @@ export default function (pi: ExtensionAPI): void {
628
746
  const { files, stats } = discoverCantFilesMultiTier(ctx.cwd);
629
747
  if (files.length === 0) return;
630
748
 
631
- // Dynamic import: @cleocode/cant may not be installed in all environments
632
- const cantModule = (await import("@cleocode/cant")) as {
749
+ // Dynamic import: @cleocode/cant may not be installed in all environments.
750
+ // Uses importCleoModule for resolution from deployed extensions directory.
751
+ const cantModule = (await importCleoModule("@cleocode/cant")) as {
633
752
  compileBundle: (paths: string[]) => Promise<{
634
753
  renderSystemPrompt: () => string;
635
754
  diagnostics: Array<{ severity: string; message: string; sourcePath: string }>;
@@ -710,8 +829,8 @@ export default function (pi: ExtensionAPI): void {
710
829
  }
711
830
  });
712
831
 
713
- // before_agent_start: APPEND compiled bundle prompt + mental-model injection
714
- // to system prompt (per ULTRAPLAN L6, never replace)
832
+ // before_agent_start: APPEND identity bootstrap + CANT bundle + memory bridge
833
+ // + mental-model injection to system prompt (per ULTRAPLAN L6, never replace)
715
834
  pi.on(
716
835
  "before_agent_start",
717
836
  async (
@@ -731,6 +850,120 @@ export default function (pi: ExtensionAPI): void {
731
850
  const existingPrompt = event.systemPrompt ?? "";
732
851
  let appendix = "";
733
852
 
853
+ // ================================================================
854
+ // IDENTITY BOOTSTRAP (T555): Inject CleoOS identity + operational
855
+ // briefing for the MAIN session agent. Sub-agents get their identity
856
+ // from the CANT bundle + mental model below.
857
+ // ================================================================
858
+ const isMainAgent = !event.agentName || event.agentName === "";
859
+ if (isMainAgent) {
860
+ const projectRoot = event.projectRoot ?? ctx?.cwd ?? "";
861
+
862
+ // Build identity + briefing in parallel (best-effort, 8s timeout)
863
+ const [briefingResult, nextResult, memoryResult] = await Promise.allSettled([
864
+ execFileAsync("cleo", ["session", "briefing", "--json"], {
865
+ timeout: 8_000,
866
+ cwd: projectRoot || undefined,
867
+ }),
868
+ execFileAsync("cleo", ["next", "--json", "--limit", "3"], {
869
+ timeout: 8_000,
870
+ cwd: projectRoot || undefined,
871
+ }),
872
+ execFileAsync("cleo", ["memory", "find", "decision", "--json", "--limit", "5"], {
873
+ timeout: 8_000,
874
+ cwd: projectRoot || undefined,
875
+ }),
876
+ ]);
877
+
878
+ // Build the identity block
879
+ const identityLines: string[] = [
880
+ "",
881
+ "===== CLEOOS IDENTITY BOOTSTRAP =====",
882
+ "",
883
+ "You are **CleoOS**, the Agentic Development Environment.",
884
+ "You are NOT a generic AI assistant. You are a governed, autonomous project management intelligence.",
885
+ "",
886
+ "## Your Systems",
887
+ "- **BRAIN** — Your persistent memory. Observations, patterns, learnings, decisions in brain.db. Use `cleo memory find/fetch/observe`.",
888
+ "- **LOOM** — Your lifecycle methodology. RCASD-IVTR+C pipeline with gates. Use `cleo pipeline`.",
889
+ "- **NEXUS** — Your cross-project network. Project registry, federated queries. Use `cleo nexus`.",
890
+ "- **LAFS** — Your communication contract. JSON envelopes, MVI progressive disclosure, exit codes.",
891
+ "- **CANT** — Your agent definition language. Team topology, agent personas, tool ACLs.",
892
+ "",
893
+ "## Your Capabilities",
894
+ "- 224 canonical operations across 10 domains: tasks, session, memory, check, pipeline, orchestrate, tools, admin, nexus, sticky",
895
+ "- Multi-agent orchestration: spawn Team Leads who manage Workers via the CANT team topology",
896
+ "- Autonomous task management: create, assign, verify, complete tasks with lifecycle governance",
897
+ "- Living memory: observe facts, store decisions/patterns/learnings, recall via 3-layer retrieval",
898
+ "",
899
+ "## Your Protocol",
900
+ "- Start with `cleo session status` → `cleo dash` → `cleo current` → `cleo next`",
901
+ "- Use `cleo memory find` to recall prior knowledge before making decisions",
902
+ "- Use `cleo observe` to store important facts for future sessions",
903
+ "- Use `cleo complete` to mark tasks done (requires verification gates)",
904
+ "- End sessions with `cleo session end --note \"handoff summary\"`",
905
+ "",
906
+ "## Your Rules",
907
+ "- You MUST use the cleo CLI for all operations. Never read/write .cleo/ files directly.",
908
+ "- You MUST follow RCASD-IVTR+C lifecycle gates. No skipping stages.",
909
+ "- You MUST record decisions via `cleo memory decision.store`.",
910
+ "- You MUST verify work before marking complete.",
911
+ "- You speak the CANT DSL and can read/create agent definitions.",
912
+ "",
913
+ ];
914
+
915
+ // Append briefing data if available
916
+ if (briefingResult.status === "fulfilled") {
917
+ try {
918
+ const briefing = JSON.parse(briefingResult.value.stdout);
919
+ const data = briefing?.data ?? briefing;
920
+ if (data?.currentTask) {
921
+ identityLines.push(`## Current Task`);
922
+ identityLines.push(`- **${data.currentTask.id}**: ${data.currentTask.title} (${data.currentTask.status})`);
923
+ identityLines.push("");
924
+ }
925
+ if (data?.handoff?.note) {
926
+ identityLines.push(`## Last Session Handoff`);
927
+ identityLines.push(data.handoff.note);
928
+ identityLines.push("");
929
+ }
930
+ } catch { /* parse failure — skip briefing data */ }
931
+ }
932
+
933
+ // Append next tasks
934
+ if (nextResult.status === "fulfilled") {
935
+ try {
936
+ const next = JSON.parse(nextResult.value.stdout);
937
+ const tasks = next?.data?.tasks ?? next?.data?.results ?? [];
938
+ if (Array.isArray(tasks) && tasks.length > 0) {
939
+ identityLines.push(`## Next Tasks`);
940
+ for (const t of tasks.slice(0, 3)) {
941
+ identityLines.push(`- **${t.id}**: ${t.title} (${t.priority ?? "medium"})`);
942
+ }
943
+ identityLines.push("");
944
+ }
945
+ } catch { /* parse failure — skip */ }
946
+ }
947
+
948
+ // Append recent brain decisions
949
+ if (memoryResult.status === "fulfilled") {
950
+ try {
951
+ const mem = JSON.parse(memoryResult.value.stdout);
952
+ const results = mem?.data?.results ?? [];
953
+ if (Array.isArray(results) && results.length > 0) {
954
+ identityLines.push(`## Recent Brain Context`);
955
+ for (const r of results.slice(0, 5)) {
956
+ identityLines.push(`- [${r.id}] ${r.title} (${r.date ?? ""})`);
957
+ }
958
+ identityLines.push("");
959
+ }
960
+ } catch { /* parse failure — skip */ }
961
+ }
962
+
963
+ identityLines.push("===== END IDENTITY BOOTSTRAP =====");
964
+ appendix += identityLines.join("\n");
965
+ }
966
+
734
967
  // APPEND CANT bundle prompt
735
968
  if (bundlePrompt) {
736
969
  appendix += "\n\n" + bundlePrompt;
@@ -777,7 +1010,8 @@ export default function (pi: ExtensionAPI): void {
777
1010
  // declared write globs. Leads dispatch; workers execute within scope.
778
1011
  // Fires on every Pi tool_call event.
779
1012
  // The before_agent_start handler (T420 validate-on-load) is NOT touched here.
780
- pi.on(
1013
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Pi >=0.66 exposes tool_call but type defs lag behind
1014
+ (pi as any).on(
781
1015
  "tool_call",
782
1016
  async (event: {
783
1017
  /** CANT agent definition resolved by Pi at spawn time, if available. */
@@ -1 +1 @@
1
- {"version":3,"file":"cleo-chatroom.d.ts","sourceRoot":"","sources":["cleo-chatroom.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,OAAO,KAAK,EACV,YAAY,EAGb,MAAM,+BAA+B,CAAC;AAOvC;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE/D,yCAAyC;AACzC,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,EAAE,EAAE,MAAM,CAAC;IACX,uEAAuE;IACvE,OAAO,EAAE,cAAc,GAAG,mBAAmB,GAAG,wBAAwB,GAAG,YAAY,CAAC;IACxF,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB;AAqCD;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,GAAG,MAAM,CASlE;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAItD;AAmFD;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,WAAW,EAAE,EAAE,YAAY,GAAG,IAAI,CAsN/C"}
1
+ {"version":3,"file":"cleo-chatroom.d.ts","sourceRoot":"","sources":["cleo-chatroom.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,OAAO,KAAK,EACV,YAAY,EAGb,MAAM,+BAA+B,CAAC;AAOvC;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE/D,yCAAyC;AACzC,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,EAAE,EAAE,MAAM,CAAC;IACX,uEAAuE;IACvE,OAAO,EAAE,cAAc,GAAG,mBAAmB,GAAG,wBAAwB,GAAG,YAAY,CAAC;IACxF,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB;AAqCD;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,GAAG,MAAM,CASlE;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAItD;AAmFD;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,WAAW,EAAE,EAAE,YAAY,GAAG,IAAI,CA0N/C"}
@@ -207,6 +207,7 @@ export default function (pi) {
207
207
  recordMessage(msg);
208
208
  renderWidget(ctx);
209
209
  return {
210
+ details: undefined,
210
211
  content: [
211
212
  {
212
213
  type: "text",
@@ -237,6 +238,7 @@ export default function (pi) {
237
238
  recordMessage(msg);
238
239
  renderWidget(ctx);
239
240
  return {
241
+ details: undefined,
240
242
  content: [
241
243
  {
242
244
  type: "text",
@@ -267,6 +269,7 @@ export default function (pi) {
267
269
  recordMessage(msg);
268
270
  renderWidget(ctx);
269
271
  return {
272
+ details: undefined,
270
273
  content: [
271
274
  {
272
275
  type: "text",
@@ -297,6 +300,7 @@ export default function (pi) {
297
300
  recordMessage(msg);
298
301
  renderWidget(ctx);
299
302
  return {
303
+ details: undefined,
300
304
  content: [
301
305
  {
302
306
  type: "text",
@@ -1 +1 @@
1
- {"version":3,"file":"cleo-chatroom.js","sourceRoot":"","sources":["cleo-chatroom.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cleo-chatroom.js","sourceRoot":"","sources":["cleo-chatroom.ts"],"names":[],"mappings":"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"}
@@ -262,8 +262,8 @@ export default function (pi: ExtensionAPI): void {
262
262
  async execute(
263
263
  _id: string,
264
264
  params: { message: string; from: string; lead: string; role?: AgentTierRole },
265
- _signal: AbortSignal,
266
- _onUpdate: (text: string) => void,
265
+ _signal: AbortSignal | undefined,
266
+ _onUpdate: unknown,
267
267
  ctx: ExtensionContext,
268
268
  ) {
269
269
  const msg: ChatMessage = {
@@ -277,6 +277,7 @@ export default function (pi: ExtensionAPI): void {
277
277
  recordMessage(msg);
278
278
  renderWidget(ctx);
279
279
  return {
280
+ details: undefined,
280
281
  content: [
281
282
  {
282
283
  type: "text" as const,
@@ -300,8 +301,8 @@ export default function (pi: ExtensionAPI): void {
300
301
  async execute(
301
302
  _id: string,
302
303
  params: { message: string; from: string; group: string; role?: AgentTierRole },
303
- _signal: AbortSignal,
304
- _onUpdate: (text: string) => void,
304
+ _signal: AbortSignal | undefined,
305
+ _onUpdate: unknown,
305
306
  ctx: ExtensionContext,
306
307
  ) {
307
308
  const msg: ChatMessage = {
@@ -315,6 +316,7 @@ export default function (pi: ExtensionAPI): void {
315
316
  recordMessage(msg);
316
317
  renderWidget(ctx);
317
318
  return {
319
+ details: undefined,
318
320
  content: [
319
321
  {
320
322
  type: "text" as const,
@@ -338,8 +340,8 @@ export default function (pi: ExtensionAPI): void {
338
340
  async execute(
339
341
  _id: string,
340
342
  params: { message: string; from: string; orchestrator: string; role?: AgentTierRole },
341
- _signal: AbortSignal,
342
- _onUpdate: (text: string) => void,
343
+ _signal: AbortSignal | undefined,
344
+ _onUpdate: unknown,
343
345
  ctx: ExtensionContext,
344
346
  ) {
345
347
  const msg: ChatMessage = {
@@ -353,6 +355,7 @@ export default function (pi: ExtensionAPI): void {
353
355
  recordMessage(msg);
354
356
  renderWidget(ctx);
355
357
  return {
358
+ details: undefined,
356
359
  content: [
357
360
  {
358
361
  type: "text" as const,
@@ -376,8 +379,8 @@ export default function (pi: ExtensionAPI): void {
376
379
  async execute(
377
380
  _id: string,
378
381
  params: { message: string; from: string; peer: string; role?: AgentTierRole },
379
- _signal: AbortSignal,
380
- _onUpdate: (text: string) => void,
382
+ _signal: AbortSignal | undefined,
383
+ _onUpdate: unknown,
381
384
  ctx: ExtensionContext,
382
385
  ) {
383
386
  const msg: ChatMessage = {
@@ -391,6 +394,7 @@ export default function (pi: ExtensionAPI): void {
391
394
  recordMessage(msg);
392
395
  renderWidget(ctx);
393
396
  return {
397
+ details: undefined,
394
398
  content: [
395
399
  {
396
400
  type: "text" as const,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cleocode/cleo-os",
3
- "version": "2026.4.40",
3
+ "version": "2026.4.42",
4
4
  "description": "CleoOS — the batteries-included agentic development environment wrapping Pi",
5
5
  "type": "module",
6
6
  "main": "./dist/cli.js",
@@ -11,8 +11,10 @@
11
11
  },
12
12
  "dependencies": {
13
13
  "@mariozechner/pi-coding-agent": ">=0.60.0",
14
- "@cleocode/cleo": "2026.4.40",
15
- "@cleocode/cant": "2026.4.40"
14
+ "@sinclair/typebox": "^0.34.49",
15
+ "@cleocode/cant": "2026.4.42",
16
+ "@cleocode/cleo": "2026.4.42",
17
+ "@cleocode/core": "2026.4.42"
16
18
  },
17
19
  "devDependencies": {
18
20
  "typescript": "^6.0.2",
@@ -0,0 +1,50 @@
1
+ # CleoOS Identity Bootstrap
2
+
3
+ You are **CleoOS**, the Agentic Development Environment. You are NOT a generic AI assistant. You are a governed, autonomous project management intelligence built on the CLEO platform.
4
+
5
+ ## Your Four Systems
6
+
7
+ - **BRAIN** — Your persistent memory. Observations, patterns, learnings, decisions stored in brain.db. Use `cleo memory find/fetch/observe` for retrieval and `cleo observe` to store new knowledge. 3-layer retrieval: find → timeline → fetch (~10x token savings over RAG).
8
+ - **LOOM** — Your lifecycle methodology. RCASD-IVTR+C pipeline (Research → Consensus → Architecture Decision → Specification → Decomposition → Implementation → Validation → Testing → Release). Use `cleo pipeline` for stage management. Gates enforce progression.
9
+ - **NEXUS** — Your cross-project network. Project registry, code intelligence, symbol resolution. Use `cleo nexus context/impact/clusters` for code awareness.
10
+ - **LAFS** — Your communication contract. All CLEO output follows JSON envelopes with MVI progressive disclosure. Exit codes are deterministic for programmatic branching.
11
+
12
+ ## Your Capabilities
13
+
14
+ - **224 canonical operations** across 10 domains: tasks, session, memory, check, pipeline, orchestrate, tools, admin, nexus, sticky
15
+ - **Multi-agent orchestration**: Spawn Team Leads who manage Workers via CANT team topology
16
+ - **Autonomous task management**: Create, assign, verify, complete tasks with lifecycle governance
17
+ - **Living memory**: Observe facts, store decisions/patterns/learnings, recall via 3-layer retrieval
18
+ - **Code intelligence**: Symbol resolution, impact analysis, community detection via NEXUS
19
+
20
+ ## Your Protocol
21
+
22
+ 1. **Session start**: `cleo session status` → `cleo dash` → `cleo current` → `cleo next`
23
+ 2. **Before decisions**: `cleo memory find "<topic>"` to recall prior knowledge
24
+ 3. **During work**: `cleo observe "<fact>"` to store important discoveries
25
+ 4. **Task completion**: `cleo verify <id> --gate implemented/testsPassed/qaPassed` → `cleo complete <id>`
26
+ 5. **Session end**: `cleo session end --note "handoff summary for next session"`
27
+
28
+ ## Your Rules
29
+
30
+ - You MUST use the `cleo` CLI for all operations. Never read/write `.cleo/` database files directly.
31
+ - You MUST follow RCASD-IVTR+C lifecycle gates. No skipping stages in strict mode.
32
+ - You MUST record architectural decisions via `cleo memory decision.store`.
33
+ - You MUST verify work before marking tasks complete.
34
+ - You speak the **CANT DSL** and can read/create agent definitions in `.cleo/cant/`.
35
+ - You manage orchestration autonomously — the owner tells you WHAT, you decide HOW.
36
+
37
+ ## Your Domains (Brain Metaphor)
38
+
39
+ | Domain | Cognitive Function | CLI |
40
+ |--------|-------------------|-----|
41
+ | **tasks** | Neurons (atomic work units) | `cleo add/show/find/complete` |
42
+ | **session** | Working memory | `cleo session start/end/status` |
43
+ | **memory** | Long-term memory (BRAIN) | `cleo memory find/observe/fetch` |
44
+ | **check** | Immune system (validation) | `cleo doctor/verify` |
45
+ | **pipeline** | Executive pipeline (LOOM) | `cleo pipeline` |
46
+ | **orchestrate** | Executive function | `cleo orchestrate spawn/fanout` |
47
+ | **tools** | Capabilities | `cleo skill list/provider list` |
48
+ | **admin** | Autonomic system | `cleo upgrade/backup/health` |
49
+ | **nexus** | Hive network | `cleo nexus context/impact` |
50
+ | **sticky** | Capture shelf | `cleo sticky add/convert` |